c++/2690: complex<double> segfault with -g and -O
khan@nanotech.wisc.edu
khan@nanotech.wisc.edu
Sun Apr 29 13:56:00 GMT 2001
>Number: 2690
>Category: c++
>Synopsis: complex<double> segfault with -g and -O
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Apr 29 13:56:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: khan@nanotech.wisc.edu
>Release: gcc mainline and 3.0 branch
>Organization:
>Environment:
i686-pc-linux-gnu
>Description:
When compiling with both -g and -O2 (and -O in some cases),
the following code will crash the compiler (both mainline
and 3.0 branch, CVS updated 2001-04-29):
#include <complex>
struct
foo
{
foo(std::complex<double>);
};
foo::foo(std::complex<double> in)
{
std::complex<double> tmp;
tmp = in;
}
Note that defining foo::foo(std::complex<double>) inline
will not crash the compiler.
Preprocessed file attached.
$ gcc -v
Reading specs from /homes/khan/local/gcc-3.0/lib/gcc-lib/i686-pc-linux-gnu/3.0/specs
Configured with: ../../gcc3-cvs/configure --enable-shared --enable-threads --enable-languages=c++,f77 --prefix=/homes/khan/local/gcc-3.0 --with-system-zlib -v
Thread model: posix
gcc version 3.0 20010428 (prerelease)
The backtrace shows the following:
$ gdb cc1plus
(gdb) run -fpreprocessed xx.ii -quiet -dumpbase xx.cc -g -O -version -o xx.s
Starting program: /homes/khan/src/gnu/BUILD/gcc-cvs/gcc/cc1plus -fpreprocessed xx.ii -quiet -dumpbase xx.cc -g -O -version -o xx.s
Breakpoint 1 at 0x400411d2: file exit.c, line 40.
Breakpoint 3 at 0x40040008: file ../sysdeps/generic/abort.c, line 55.
GNU CPP version 3.1 20010428 (experimental) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.1 20010428 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 3.1 20010428 (experimental).
Program received signal SIGSEGV, Segmentation fault.
dbxout_type (type=0x0, full=0, show_arg_types=0)
at ../../../gcc-cvs/gcc/dbxout.c:1022
1022 if (TREE_CODE (type) == VECTOR_TYPE)
(gdb) bt
#0 dbxout_type (type=0x0, full=0, show_arg_types=0)
at ../../../gcc-cvs/gcc/dbxout.c:1022
#1 0x83311c8 in dbxout_symbol_location (decl=0x4040b548, type=0x0,
suffix=0x842387c "$real", home=0x403e4920)
at ../../../gcc-cvs/gcc/dbxout.c:2211
#2 0x8331237 in dbxout_symbol_location (decl=0x4040b548, type=0x4039a958,
suffix=0x0, home=0x403e4940) at ../../../gcc-cvs/gcc/dbxout.c:2183
#3 0x8332a75 in dbxout_reg_parms (parms=0x4040b4e0)
at ../../../gcc-cvs/gcc/dbxout.c:2591
#4 0x8332dab in dbxout_block (block=0x4040d160, depth=0, args=0x4040b4e0)
at ../../../gcc-cvs/gcc/dbxout.c:2686
#5 0x8333228 in dbxout_function (decl=0x4040b478)
at ../../../gcc-cvs/gcc/dbxout.c:2802
#6 0x82df58c in rest_of_compilation (decl=0x4040b478)
at ../../../gcc-cvs/gcc/toplev.c:3754
#7 0x8117a1f in genrtl_finish_function (fn=0x4040b478)
at ../../../gcc-cvs/gcc/cp/semantics.c:2689
#8 0x8117021 in expand_body (fn=0x4040b478)
at ../../../gcc-cvs/gcc/cp/semantics.c:2475
#9 0x8126982 in maybe_clone_body (fn=0x40407958)
at ../../../gcc-cvs/gcc/cp/optimize.c:1164
#10 0x8116e93 in expand_body (fn=0x40407958)
at ../../../gcc-cvs/gcc/cp/semantics.c:2396
#11 0x80d6c93 in yyparse_1 () at /usr/lib/bison.simple:765
#12 0x82dd638 in compile_file (name=0xbffff88b "xx.ii")
at ../../../gcc-cvs/gcc/toplev.c:2324
#13 0x82e1f6b in toplev_main (argc=11, argv=0xbffff6d4)
at ../../../gcc-cvs/gcc/toplev.c:4936
#14 0x400389cb in __libc_start_main (main=0x8147150 <main>, argc=11,
argv=0xbffff6d4, init=0x80491a4 <_init>, fini=0x838196c <_fini>,
rtld_fini=0x4000aea0 <_dl_fini>, stack_end=0xbffff6cc)
at ../sysdeps/generic/libc-start.c:92
(gdb)
>How-To-Repeat:
Compile with -g and -O[123456]
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="xx.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xx.ii"
IyAxICJ4eC5jYyIKIyAxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYz
L2NvbXBsZXgiIDEgMwoKIyAxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RkX2NvbXBsZXguaCIgMSAzCiMgNDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0z
LjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY29tcGxleC5oIiAzCgojIDEgIi9ob21lcy9raGFu
L2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9jKytj
b25maWcuaCIgMSAzCiMgMzQgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKyst
djMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwojIDEgIi9ob21lcy9raGFu
L2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9vc19k
ZWZpbmVzLmgiIDEgMwojIDM3ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysr
LXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMvb3NfZGVmaW5lcy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI1MCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDI1MSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDIgMwojIDI3OCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZ251L3N0dWJzLmgiIDEgMwojIDI3OSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIg
MwojIDM4ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2k2ODYtcGMt
bGludXgtZ251L2JpdHMvb3NfZGVmaW5lcy5oIiAyIDMKIyAzNSAiL2hvbWVzL2toYW4vbG9jYWwv
Z2NjLTMuMS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5o
IiAyIDMKIyA0MyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRz
L3N0ZF9jb21wbGV4LmgiIDIgMwojIDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMSAzCiMgMzkgIi9ob21lcy9raGFuL2xvY2FsL2dj
Yy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwojIDEgIi9ob21lcy9raGFu
L2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9jKytj
b25maWcuaCIgMSAzCiMgNDAgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKyst
djMvYml0cy9zdGRfY21hdGguaCIgMiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9p
bmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkbGliLmgiIDEgMwojIDM5ICIvaG9tZXMva2hhbi9s
b2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMwojIDEgIi9o
b21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUv
Yml0cy9jKytjb25maWcuaCIgMSAzCiMgNDAgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5j
bHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGxpYi5oIiAyIDMKIyAxICIvaG9tZXMva2hhbi9sb2Nh
bC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMSAzCiMgNDAgIi9o
b21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGRlZi5o
IiAzCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICJpbmNsdWRlL3N0ZGRlZi5oIiAz
CnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAxOTkgImluY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB1
c2luZyA6OnB0cmRpZmZfdDsKICB1c2luZyA6OnNpemVfdDsKfQojIDQxICIvaG9tZXMva2hhbi9s
b2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMiAzCiMgNDMg
Ii9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGxp
Yi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCmV4dGVybiAiQyIgewoKCgoKCnR5cGVk
ZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5
cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9
IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBs
b25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90OwojIDgwICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJf
bWF4ICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRy
KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikg
dGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9f
Y29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgaW50
IHN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRocm93ICgpOwoKCmV4dGVybiB1bnNpZ25lZCBsb25n
IGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgoKCgoKX19leHRlbnNpb25f
XwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsK
CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKIyAxMzIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KSB0aHJvdyAoKTsKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CiMgMTU3ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9p
bmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewogIHN0
cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzZdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQg
aW50ICpfX2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50
ICpfX2N0eXBlX3RvdXBwZXI7Cn0gKl9fbG9jYWxlX3Q7CiMgMTU4ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDIgMwoKCgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us
IF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQg
X19zdHJ0b3VsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4
dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Us
IF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2Rf
bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBfX3N0cnRv
Zl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CiMgMTk2ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xk
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGlu
dCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAo
KTsKCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCgoKCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwg
aW50IF9fZ3JvdXApIHRocm93ICgpOwoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICogX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKiogX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgaW50
IF9fZ3JvdXApIHRocm93ICgpOwojIDI0MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewogIHJldHVybiBfX3N0cnRv
ZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcg
aW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBf
X3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4g
X19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jh
c2UpIHRocm93ICgpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRo
cm93ICgpCnsKICByZXR1cm4gX19zdHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDAp
Owp9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkKewog
IHJldHVybiBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CgoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu
bGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19i
YXNlKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9u
ZyBsb25nIGludApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewog
IHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7
Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApz
dHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKewogIHJldHVybiBf
X3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkK
ewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCk7Cn0KZXh0ZXJuIF9f
aW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewogIHJldHVy
biAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CmV4dGVybiBf
X2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkKewog
IHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopIF9fbnVsbCwgMTApOwp9CgoKX19leHRl
bnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikg
X19udWxsLCAxMCk7Cn0KIyAzMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hh
ciAqbDY0YSAobG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAo
X19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpOwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK
ZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgojIDEgImluY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3No
b3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsK
IyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9f
aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBz
aG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90
Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vp
bnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50
NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50
NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBf
X2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7
CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBl
ZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYg
X19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3Np
emVfdDsKdHlwZWRlZiBsb25nIGludCBfX3JsaW1fdDsKdHlwZWRlZiBfX3F1YWRfdCBfX3JsaW02
NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQg
X192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYg
Y2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIGxvbmcg
aW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgdW5z
aWduZWQgbG9uZyBpbnQgX19mZF9tYXNrOwojIDEwMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0IC8g
KDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgogIH0gX19mZF9zZXQ7CgoKdHlwZWRlZiBp
bnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoK
Cgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2
NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3Qg
X19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYg
X191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9faW5vNjRfdDsK
Cgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2Fs
YXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYg
aW50IF9faW50cHRyX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5o
IiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQu
aCIgMwpzdHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9
OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0IF9w
dGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9jazsK
fTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNj
cjsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2No
ZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2lu
aGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9f
c3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7
Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVh
ZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2Nv
bmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsKICBpbnQgX19tX2NvdW50OwogIF9wdGhy
ZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tpbmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zh
c3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewog
IGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBw
dGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBz
dHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAg
X3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dh
aXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tp
bmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9j
a2F0dHJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE1MSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMiAzCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVf
c2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5
cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVk
ZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVm
IF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7CgoKCgp0eXBl
ZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVm
IF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBl
ZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0eXBl
ZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlw
ZWRlZiBfX2lkX3QgaWRfdDsKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVk
ZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVk
ZWYgX19rZXlfdCBrZXlfdDsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1
NyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMwojIDU4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xvY2tfdCBj
bG9ja190OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2OSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMgMTIz
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMTI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTY5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkp
Owp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkp
Owp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp
Owp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkp
OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBp
bnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDE5
MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM1ICIvdXNy
L2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAz
CiMgMzYgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgMTkyICIvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjUg
Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5o
IiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19z
aWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50
IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9f
c2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgojIDEgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVj
dCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7
CiAgfTsKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgpleHRlcm4gIkMiIHsK
CgoKCgpzdHJ1Y3QgdGltZXZhbDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKdHlwZWRl
ZiBfX2ZkX3NldCBmZF9zZXQ7CiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0
ZXJuIGludCBfX3NlbGVjdCAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywgX19mZF9z
ZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywgc3RydWN0IHRpbWV2YWwgKl9f
dGltZW91dCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIF9fZmRf
c2V0ICpfX3JlYWRmZHMsIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRm
ZHMsIHN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpIHRocm93ICgpOwojIDg3ICIvdXNyL2luY2x1
ZGUvc3lzL3NlbGVjdC5oIiAzCmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZkcywgX19mZF9z
ZXQgKl9fcmVhZGZkcywgX19mZF9zZXQgKl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZk
cywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RpbWVvdXQsIGNvbnN0IF9fc2lnc2V0X3QgKl9f
c2lnbWFzaykgdGhyb3cgKCk7CgoKCgoKfQojIDE5NSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDE5OCAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250
X3Q7CnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CnR5cGVkZWYgX19mc2ZpbGNudF90
IGZzZmlsY250X3Q7CgoKCgoKCgp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBl
ZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBm
c2ZpbGNudDY0X3Q7CgoKfQojIDM0MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoK
ZXh0ZXJuIGludDMyX3QgcmFuZG9tICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCBzcmFu
ZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gdm9pZCAqIGlu
aXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqIF9fc3RhdGVidWYsIHNpemVfdCBf
X3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkICogc2V0c3RhdGUgKHZvaWQgKiBf
X3N0YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGlu
dDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBp
bnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50
MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmLCBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0
IHJhbmRvbV9kYXRhICpfX2J1ZikgdGhyb3cgKCk7CgpleHRlcm4gaW50IGluaXRzdGF0ZV9yICh1
bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lkICogX19yZXN0cmljdCBfX3N0YXRlYnVmLCBzaXplX3Qg
X19zdGF0ZWxlbiwgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAo
KTsKCgoKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAodm9pZCAqIF9fcmVzdHJpY3QgX19zdGF0ZWJ1
Ziwgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKCgoK
ZXh0ZXJuIGludCByYW5kICh2b2lkKSB0aHJvdyAoKTsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNp
Z25lZCBpbnQgX19zZWVkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVk
IGludCAqX19zZWVkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9p
ZCkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9f
eHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSB0aHJv
dyAoKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7
CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJv
dyAoKTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBp
bnQgX19zZWVkMTZ2WzNdKSB0aHJvdyAoKTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQg
c2hvcnQgaW50IF9fcGFyYW1bN10pIHRocm93ICgpOwoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNd
OwogICAgdW5zaWduZWQgc2hvcnQgaW50IGM7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgb2xkX3hb
M107CiAgICBpbnQgaW5pdDsKICB9OwoKCgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRy
YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwgZG91
YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgbHJhbmQ0
OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLCBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4gaW50IG5yYW5kNDhfciAodW5z
aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJp
Y3QgX19idWZmZXIsIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCgoK
CmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLCBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2
YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQg
c2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sIHN0cnVjdCBkcmFuZDQ4
X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWdu
ZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0
aHJvdyAoKTsKIyA0NzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqIG1h
bGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCAqIGNhbGxvYyAoc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICog
cmVhbGxvYyAodm9pZCAqIF9fcHRyLCBzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCmV4dGVybiB2
b2lkIGZyZWUgKHZvaWQgKiBfX3B0cikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2
b2lkICogX19wdHIpIHRocm93ICgpOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAz
CiMgMjIgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgImluY2x1ZGUv
c3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKZXh0ZXJuICJD
IiB7CgoKCgoKZXh0ZXJuIHZvaWQgKiBhbGxvY2EgKHNpemVfdCBfX3NpemUpIHRocm93ICgpOwoK
CgoKCn0KIyA0OTMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgpleHRlcm4gdm9pZCAq
IHZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBhYm9ydCAo
dm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4g
aW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgX19vbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogX19hcmcp
LCB2b2lkICogX19hcmcpIHRocm93ICgpOwoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19m
dW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogX19hcmcpLCB2b2lkICogX19hcmcpIHRocm93ICgp
OwoKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0
dXMpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBj
aGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNo
YXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJu
IGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUs
IGludCBfX3JlcGxhY2UpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCB1bnNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lk
KSB0aHJvdyAoKTsKIyA1NjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
bWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBta3N0
ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChf
X2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBjaGFyICpjYW5v
bmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CiMgNTk1
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLCBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIHRo
cm93ICgpOwoKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19jb25zdCB2b2lk
ICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9m
bl90OwoKCgoKCmV4dGVybiB2b2lkICogYnNlYXJjaCAoX19jb25zdCB2b2lkICogX19rZXksIF9f
Y29uc3Qgdm9pZCAqIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29t
cGFyX2ZuX3QgX19jb21wYXIpOwoKCgoKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICogX19iYXNl
LCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7
CgoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxv
bmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBp
bnQgX19kZW5vbSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g
bGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pIHRocm93ICgp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4g
bGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLCBsb25nIGxvbmcgaW50IF9fZGVu
b20pIHRocm93ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA2NTEgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hhciAqcWVjdnQg
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnFmY3Z0
IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpxZ2N2
dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZmN2
dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw
dCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90
IF9fbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgcWZjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0
LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAq
X19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKTsKIyA2OTUgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6
ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19wd2MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93
ICgpOwoKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIHRo
cm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
cHdjcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7
CgoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
d2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pIHRocm93ICgpOwojIDcxOCAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFy
ICpfX3Jlc3BvbnNlKSB0aHJvdyAoKTsKIyA3MjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpl
eHRlcm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLCBfX2NvbnN0
IGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
dmFsdWVwKSB0aHJvdyAoKTsKIyA3MzggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
dm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu
IGludCBncmFudHB0IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQg
KGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFyICpwdHNuYW1lIChpbnQgX19mZCkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19i
dWYsIHNpemVfdCBfX2J1ZmxlbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkg
dGhyb3cgKCk7CgoKCgoKfQojIDQ0ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RkX2NzdGRsaWIuaCIgMiAzCiMgODMgIi9ob21lcy9raGFuL2xvY2FsL2dj
Yy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGxpYi5oIiAzCm5hbWVzcGFjZSBzdGQK
ewogIHVzaW5nIDo6ZGl2X3Q7CiAgdXNpbmcgOjpsZGl2X3Q7CgogIGV4dGVybiAiQyIgZG91Ymxl
IGF0b2YoY29uc3QgY2hhciopOwogIGV4dGVybiAiQyIgaW50IGF0b2koY29uc3QgY2hhciopOwog
IGV4dGVybiAiQyIgbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBkb3Vi
bGUgc3RydG9kKGNvbnN0IGNoYXIqLCBjaGFyKiopOwogIGV4dGVybiAiQyIgZmxvYXQgc3RydG9m
KGNvbnN0IGNoYXIqLCBjaGFyKiopOwogIGV4dGVybiAiQyIgbG9uZyBpbnQgc3RydG9sKGNvbnN0
IGNoYXIqLCBjaGFyKiosIGludCk7CiAgZXh0ZXJuICJDIiB1bnNpZ25lZCBsb25nIGludCBzdHJ0
b3VsKGNvbnN0IGNoYXIqLCBjaGFyKiosIGludCk7CiAgZXh0ZXJuICJDIiBpbnQgcmFuZCh2b2lk
KTsKICBleHRlcm4gIkMiIHZvaWQgc3JhbmQodW5zaWduZWQgaW50KTsKICBleHRlcm4gIkMiIHZv
aWQqIGNhbGxvYyhzaXplX3QsIHNpemVfdCk7CiAgZXh0ZXJuICJDIiB2b2lkIGZyZWUodm9pZCop
OwogIGV4dGVybiAiQyIgdm9pZCogbWFsbG9jKHNpemVfdCk7CiAgZXh0ZXJuICJDIiB2b2lkKiBy
ZWFsbG9jKHZvaWQqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgdm9pZCBhYm9ydCh2b2lkKTsKICBl
eHRlcm4gIkMiIGludCBhdGV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKICBleHRlcm4gIkMiIHZv
aWQgZXhpdChpbnQpOwogIGV4dGVybiAiQyIgdm9pZCBfRXhpdChpbnQpOwogIGV4dGVybiAiQyIg
Y2hhcipnZXRlbnYoY29uc3QgY2hhciopOwogIGV4dGVybiAiQyIgaW50IHN5c3RlbShjb25zdCBj
aGFyKik7CiAgZXh0ZXJuICJDIiB2b2lkKiBic2VhcmNoKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lk
Kiwgc2l6ZV90LCBzaXplX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmNvbXAp
KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CiAgZXh0ZXJuICJDIiB2b2lkIHFzb3J0KHZv
aWQqLCBzaXplX3QsIHNpemVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqY29tcCko
Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKICBleHRlcm4gIkMiIGludCBhYnMoaW50KTsK
ICBleHRlcm4gIkMiIGxvbmcgaW50IGxhYnMobG9uZyBpbnQpOwogIGV4dGVybiAiQyIgZGl2X3Qg
ZGl2KGludCwgaW50KTsKICBleHRlcm4gIkMiIGxkaXZfdCBsZGl2KGxvbmcgaW50LCBsb25nIGlu
dCk7CiAgZXh0ZXJuICJDIiBpbnQgbWJsZW4oY29uc3QgY2hhciosIHNpemVfdCk7CiAgZXh0ZXJu
ICJDIiBpbnQgbWJ0b3djKHdjaGFyX3QqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKICBleHRlcm4g
IkMiIGludCB3Y3RvbWIoY2hhciosIHdjaGFyX3QpOwogIGV4dGVybiAiQyIgc2l6ZV90IG1ic3Rv
d2NzKHdjaGFyX3QqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKICBleHRlcm4gIkMiIHNpemVfdCB3
Y3N0b21icyhjaGFyKiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7CgogIGlubGluZSBsb25nCiAg
YWJzKGxvbmcgX19pKSB7IHJldHVybiA6OmxhYnMoX19pKTsgfQoKICBpbmxpbmUgbGRpdl90CiAg
ZGl2KGxvbmcgX19pLCBsb25nIF9faikgeyByZXR1cm4gOjpsZGl2KF9faSwgX19qKTsgfQp9CgoK
bmFtZXNwYWNlIGM5OQp7CiAgdXNpbmcgOjpsbGRpdl90OwoKICBpbmxpbmUgbG9uZyBsb25nCiAg
YWJzKGxvbmcgbG9uZyBfX3gpIHsgcmV0dXJuIF9feCA+PSAwID8gX194IDogLV9feDsgfQoKICBp
bmxpbmUgbG9uZyBsb25nCiAgbGxhYnMobG9uZyBsb25nIF9feCkgeyByZXR1cm4gX194ID49IDAg
PyBfX3ggOiAtX194OyB9CgogIGlubGluZSBsbGRpdl90CiAgZGl2KGxvbmcgbG9uZyBfX24sIGxv
bmcgbG9uZyBfX2QpCiAgeyBsbGRpdl90IF9fcTsgX19xLnF1b3QgPSBfX24gLyBfX2Q7IF9fcS5y
ZW0gPSBfX24gJSBfX2Q7IHJldHVybiBfX3E7IH0KCiAgaW5saW5lIGxsZGl2X3QKICBsbGRpdihs
b25nIGxvbmcgX19uLCBsb25nIGxvbmcgX19kKQogIHsgbGxkaXZfdCBfX3E7IF9fcS5xdW90ID0g
X19uIC8gX19kOyBfX3EucmVtID0gX19uICUgX19kOyByZXR1cm4gX19xOyB9CgogIGV4dGVybiAi
QyIgbG9uZyBsb25nIGludCBhdG9sbChjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBsb25nIGxv
bmcgaW50IHN0cnRvbGwoY29uc3QgY2hhciosIGNoYXIqKiwgaW50KTsKICBleHRlcm4gIkMiIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwoY29uc3QgY2hhciosIGNoYXIqKiwgaW50KTsK
CgogIGV4dGVybiAiQyIgbG9uZyBkb3VibGUgc3RydG9sZChjb25zdCBjaGFyKiwgY2hhcioqKTsK
Cn0KCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIGM5OTo6bGxkaXZfdDsKICB1c2luZyBjOTk6OmFi
czsKCiAgdXNpbmcgYzk5OjpkaXY7CiAgdXNpbmcgYzk5OjpsbGRpdjsKICB1c2luZyBjOTk6OmF0
b2xsOwogIHVzaW5nIGM5OTo6c3RydG9sbDsKICB1c2luZyBjOTk6OnN0cnRvdWxsOwoKICB1c2lu
ZyBjOTk6OnN0cnRvbGQ7Cgp9CiMgNDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVk
ZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMiAzCiMgNDMgIi9ob21lcy9raGFuL2xvY2FsL2dj
Yy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCmV4dGVy
biAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEgMwojIDI1ICIv
dXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAyIDMKIyAzNCAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbmFuLmgiIDEg
MwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMwp0eXBl
ZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRvdWJsZV90Owoj
IDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3VibGUgX194KTsg
ZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChk
b3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRv
dWJsZSBhdGFuIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBfX3gp
OwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCk7IGV4dGVybiBk
b3VibGUgX19hdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBj
b3MgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KTsKCmV4dGVy
biBkb3VibGUgc2luIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAoZG91YmxlIF9f
eCk7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX190YW4g
KGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAq
X19zaW54LCBkb3VibGUgKl9fY29zeCk7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194
LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpOwoKCgoKCgpleHRlcm4gZG91YmxlIGNv
c2ggKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91YmxlIF9feCk7CgpleHRl
cm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91Ymxl
IF9feCk7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
dGFuaCAoZG91YmxlIF9feCk7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpOyBl
eHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAo
ZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCk7CgpleHRlcm4g
ZG91YmxlIGF0YW5oIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUg
X194KTsKCgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUg
X19leHAgKGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KTsg
ZXh0ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KTsKCmV4dGVybiBkb3VibGUgcG93MTAg
KGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcG93MTAgKGRvdWJsZSBfX3gpOwoKCgpleHRl
cm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpOyBleHRlcm4gZG91
YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7CgoKZXh0ZXJuIGRvdWJs
ZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9fbGRl
eHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91
YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3Vi
bGUgbG9nMTAgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gp
OwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpOyBleHRl
cm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpOwoKCgpleHRlcm4g
ZG91YmxlIGV4cG0xIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUg
X194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBf
X2xvZzFwIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpOyBl
eHRlcm4gZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCk7CgoKCgpleHRlcm4gZG91YmxlIGV4cDIg
KGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9feCk7CgoKZXh0ZXJu
IGRvdWJsZSBsb2cyIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBf
X3gpOwoKCgoKCgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4
dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCmV4dGVybiBkb3Vi
bGUgc3FydCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KTsK
CgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBk
b3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gZG91Ymxl
IGNicnQgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9feCk7CgoK
CgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jZWls
IChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJsZSBfX3gpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29yIChkb3VibGUg
X194KTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91Ymxl
IGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9fZm1vZCAoZG91
YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3Zh
bHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAo
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBp
bnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGluZm5hbiAoaW50IF9fZXJyb3IpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2luZm5hbiAoaW50IF9fZXJyb3Ip
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGRyZW0gKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9fZHJlbSAoZG91YmxlIF9feCwgZG91
YmxlIF9feSk7CgoKCmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpOyBleHRl
cm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJuIGRvdWJsZSBj
b3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgbmFuIChfX2NvbnN0
IGNoYXIgKl9fdGFnYikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91Ymxl
IF9fbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgoKZXh0ZXJuIGludCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSk7IGV4dGVy
biBkb3VibGUgX19qMCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsgZXh0ZXJu
IGRvdWJsZSBfX2oxIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSk7IGV4
dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3VibGUpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUp
OyBleHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSk7
IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3Vi
bGUpOyBleHRlcm4gZG91YmxlIF9feW4gKGludCwgZG91YmxlKTsKCgoKCgpleHRlcm4gZG91Ymxl
IGVyZiAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSBlcmZjIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBsZ2FtbWEgKGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19sZ2FtbWEgKGRvdWJsZSk7CmV4
dGVybiBkb3VibGUgdGdhbW1hIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fdGdhbW1hIChkb3Vi
bGUpOwoKCgoKZXh0ZXJuIGRvdWJsZSBnYW1tYSAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2dh
bW1hIChkb3VibGUpOwoKCgoKCgpleHRlcm4gZG91YmxlIGxnYW1tYV9yIChkb3VibGUsIGludCAq
X19zaWduZ2FtcCk7IGV4dGVybiBkb3VibGUgX19sZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2ln
bmdhbXApOwoKCgoKCgpleHRlcm4gZG91YmxlIHJpbnQgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91
YmxlIF9fcmludCAoZG91YmxlIF9feCk7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX25leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJkIChkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBf
X25leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91
YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpOwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKTsgZXh0
ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKTsKCgoKZXh0ZXJuIGRv
dWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pOyBleHRlcm4gZG91YmxlIF9fc2NhbGJu
IChkb3VibGUgX194LCBpbnQgX19uKTsKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KTsg
ZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KTsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJs
biAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRv
dWJsZSBfX3gsIGxvbmcgaW50IF9fbik7CgoKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3Vi
bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX25lYXJieWludCAoZG91YmxlIF9feCk7CgoKCmV4dGVy
biBkb3VibGUgcm91bmQgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fcm91bmQgKGRvdWJs
ZSBfX3gpOwoKCgpleHRlcm4gZG91YmxlIHRydW5jIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91YmxlIF9feCkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSByZW1xdW8gKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pOyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChkb3Vi
bGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
aW50IChkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpOwpl
eHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBsb25n
IGludCBfX2xscmludCAoZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGludCBscm91bmQgKGRv
dWJsZSBfX3gpOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmQgKGRvdWJsZSBfX3gpOwpleHRlcm4g
bG9uZyBsb25nIGludCBsbHJvdW5kIChkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
X19sbHJvdW5kIChkb3VibGUgX194KTsKCgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194
LCBkb3VibGUgX195KTsgZXh0ZXJuIGRvdWJsZSBfX2ZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpOwoKCmV4dGVybiBkb3VibGUgZm1heCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4dGVy
biBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KTsKCgpleHRlcm4gZG91Ymxl
IGZtaW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9fZm1pbiAoZG91
YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUg
X192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBf
X3NpZ25iaXQgKGRvdWJsZSBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBf
X3opOyBleHRlcm4gZG91YmxlIF9fZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUg
X196KTsKIyA2NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQg
X194KTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNp
bmYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpOwoKZXh0ZXJu
IGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194
KTsKCmV4dGVybiBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2Yg
KGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxv
YXQgc2luZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KTsKCmV4
dGVybiBmbG9hdCB0YW5mIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBf
X3gpOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZs
b2F0ICpfX2Nvc3gpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9f
c2lueCwgZmxvYXQgKl9fY29zeCk7CgoKCgoKCmV4dGVybiBmbG9hdCBjb3NoZiAoZmxvYXQgX194
KTsgZXh0ZXJuIGZsb2F0IF9fY29zaGYgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2luaGYg
KGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZs
b2F0IHRhbmhmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KTsK
CgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYWNvc2hm
IChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194
KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbmhmIChmbG9hdCBfX3gpOwoKCgoKCmV4dGVybiBmbG9hdCBl
eHBmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHBmIChmbG9hdCBfX3gpOwoKCgpleHRl
cm4gZmxvYXQgZXhwMTBmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0
IF9feCk7CgpleHRlcm4gZmxvYXQgcG93MTBmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19w
b3cxMGYgKGZsb2F0IF9feCk7CgoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50
ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19l
eHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVu
dCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCk7CgoK
ZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0
IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9f
bG9nMTBmIChmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9h
dCAqX19pcHRyKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0
cik7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2V4
cG0xZiAoZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpOyBleHRl
cm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2JmIChmbG9h
dCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KTsKCgoKCmV4dGVybiBmbG9h
dCBleHAyZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCk7CgoK
ZXh0ZXJuIGZsb2F0IGxvZzJmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxv
YXQgX194KTsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQgX195KTsg
ZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCmV4dGVybiBmbG9h
dCBzcXJ0ZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCk7CgoK
CmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0
IF9faHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSk7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYg
KGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpOwoKCgoKCgpleHRl
cm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBf
X3gpOwoKCmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9f
eSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVm
IChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRl
cm4gZmxvYXQgaW5mbmFuZiAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGZsb2F0IF9faW5mbmFuZiAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsg
ZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGZs
b2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fc2lnbmlmaWNhbmRm
IChmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194LCBmbG9h
dCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fY29weXNp
Z25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hhciAqX190YWdi
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5mIChm
bG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQg
aXNuYW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0
ZXJuIGZsb2F0IGowZiAoZmxvYXQpOyBleHRlcm4gZmxvYXQgX19qMGYgKGZsb2F0KTsKZXh0ZXJu
IGZsb2F0IGoxZiAoZmxvYXQpOyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KTsKZXh0ZXJuIGZs
b2F0IGpuZiAoaW50LCBmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCk7CmV4
dGVybiBmbG9hdCB5MGYgKGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9feTBmIChmbG9hdCk7CmV4dGVy
biBmbG9hdCB5MWYgKGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCk7CmV4dGVybiBm
bG9hdCB5bmYgKGludCwgZmxvYXQpOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpOwoK
CgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmYgKGZsb2F0
KTsKZXh0ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChmbG9h
dCk7CmV4dGVybiBmbG9hdCBsZ2FtbWFmIChmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYg
KGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHRnYW1tYWYgKGZsb2F0KTsgZXh0ZXJuIGZsb2F0IF9fdGdh
bW1hZiAoZmxvYXQpOwoKCgoKZXh0ZXJuIGZsb2F0IGdhbW1hZiAoZmxvYXQpOyBleHRlcm4gZmxv
YXQgX19nYW1tYWYgKGZsb2F0KTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQs
IGludCAqX19zaWduZ2FtcCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWZfciAoZmxvYXQsIGludCAq
X19zaWduZ2FtcCk7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KTsgZXh0ZXJu
IGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBm
bG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgpleHRlcm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBk
b3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25l
eHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSk7CgoK
CmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0
IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbik7CgoKCmV4dGVybiBmbG9hdCBzY2FsYm5m
IChmbG9hdCBfX3gsIGludCBfX24pOyBleHRlcm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gs
IGludCBfX24pOwoKCmV4dGVybiBpbnQgaWxvZ2JmIChmbG9hdCBfX3gpOyBleHRlcm4gaW50IF9f
aWxvZ2JmIChmbG9hdCBfX3gpOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gs
IGxvbmcgaW50IF9fbik7IGV4dGVybiBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcg
aW50IF9fbik7CgoKCmV4dGVybiBmbG9hdCBuZWFyYnlpbnRmIChmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19uZWFyYnlpbnRmIChmbG9hdCBfX3gpOwoKCgpleHRlcm4gZmxvYXQgcm91bmRmIChm
bG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9feCk7CgoKCmV4dGVybiBm
bG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX190cnVuY2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgoKZXh0ZXJuIGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9f
cXVvKTsgZXh0ZXJuIGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAq
X19xdW8pOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpOyBleHRlcm4g
bG9uZyBpbnQgX19scmludGYgKGZsb2F0IF9feCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmlu
dGYgKGZsb2F0IF9feCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQgX194
KTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0IF9feCk7IGV4dGVybiBsb25nIGlu
dCBfX2xyb3VuZGYgKGZsb2F0IF9feCk7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmRmIChm
bG9hdCBfX3gpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9hdCBfX3gpOwoK
CgpleHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0
IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KTsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KTsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsgZXh0
ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KTsKCgoKZXh0ZXJuIGludCBf
X2ZwY2xhc3NpZnlmIChmbG9hdCBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgZm1hZiAoZmxvYXQgX194LCBm
bG9hdCBfX3ksIGZsb2F0IF9feik7IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9feCwgZmxv
YXQgX195LCBmbG9hdCBfX3opOwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAi
L3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcg
ZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29z
bCAobG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3Vi
bGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCk7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4y
bCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29z
bCAobG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJs
ZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCk7IGV4
dGVybiB2b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54
LCBsb25nIGRvdWJsZSAqX19jb3N4KTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChs
b25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUg
X194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChs
b25nIGRvdWJsZSBfX3gpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2hsIChsb25nIGRvdWJs
ZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKGxvbmcgZG91YmxlIF9feCk7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBk
b3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRh
bmhsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcg
ZG91YmxlIF9feCk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9f
eCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVy
biBsb25nIGRvdWJsZSBleHAxMGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2V4cDEwbCAobG9uZyBkb3VibGUgX194KTsKCmV4dGVybiBsb25nIGRvdWJsZSBwb3cxMGwg
KGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3BvdzEwbCAobG9uZyBkb3Vi
bGUgX194KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBp
bnQgKl9fZXhwb25lbnQpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91Ymxl
IF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25n
IGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBs
IChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bG9nbCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBk
b3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIp
OyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSAqX19pcHRyKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwg
KGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJs
ZSBfX3gpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xv
ZzJsIChsb25nIGRvdWJsZSBfX3gpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcG93bCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOyBleHRlcm4gbG9uZyBkb3VibGUgX19wb3ds
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNxcnRsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9u
ZyBkb3VibGUgX194KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0
bCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91
YmxlIF9feCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxv
bmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Zsb29ybCAobG9uZyBkb3VibGUg
X194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KTsKCgoKCmV4dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRl
bCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
ZXh0ZXJuIGludCBpc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBpbmZu
YW5sIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19pbmZuYW5sIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpOyBleHRlcm4gbG9uZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZpY2FuZGwgKGxvbmcgZG91
YmxlIF9feCk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY29weXNpZ25sIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19jb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgbmFu
bCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fbmFubCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmwg
KGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl
cm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ow
bCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
am5sIChpbnQsIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxv
bmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9uZyBkb3VibGUpOyBleHRlcm4g
bG9uZyBkb3VibGUgX195MGwgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAo
bG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX195MWwgKGxvbmcgZG91YmxlKTsKZXh0
ZXJuIGxvbmcgZG91YmxlIHlubCAoaW50LCBsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJs
ZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSk7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmwg
KGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmbCAobG9uZyBkb3VibGUpOwpl
eHRlcm4gbG9uZyBkb3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZXJmY2wgKGxvbmcgZG91YmxlKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcg
ZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpOwpleHRl
cm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUg
X190Z2FtbWFsIChsb25nIGRvdWJsZSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChs
b25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2dhbW1hbCAobG9uZyBkb3VibGUpOwoK
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3Np
Z25nYW1wKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50
ICpfX3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChsb25nIGRvdWJs
ZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUgX194KTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
bmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dG93YXJkbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk
b3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25nIGRv
dWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX24pOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX19uKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibmwgKGxvbmcg
ZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibmwgKGxvbmcg
ZG91YmxlIF9feCwgaW50IF9fbik7CgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9f
eCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCk7CgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKTsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKTsK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3JvdW5kbCAobG9uZyBkb3VibGUgX194KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAo
bG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8pOyBleHRlcm4gbG9uZyBkb3VibGUgX19yZW1xdW9s
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1byk7CgoKCgoKCmV4
dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGludCBf
X2xyaW50bCAobG9uZyBkb3VibGUgX194KTsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAo
bG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRsIChsb25nIGRv
dWJsZSBfX3gpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUgX194KTsg
ZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kbCAobG9uZyBkb3VibGUgX194KTsKZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGxvbmcgaW50
IF9fbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGlt
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mZGltbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBmbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9fdmFs
dWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWdu
Yml0bCAobG9uZyBkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSwgbG9uZyBkb3VibGUgX196KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feik7CiMgMTAwICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0
ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCiAgewog
ICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBfU1VCTk9S
TUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwojIDIzNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwp0
eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAogIF9QT1NJ
WF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9WRVJTSU9O
X1RZUEUgX0xJQl9WRVJTSU9OOwojIDI1OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpzdHJ1Y3Qg
X19leGNlcHRpb24KCgoKICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3Vi
bGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCmV4dGVy
biBpbnQgbWF0aGVyciAoc3RydWN0IF9fZXhjZXB0aW9uICpfX2V4YykgdGhyb3cgKCk7CiMgMjg5
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiaW5jbHVkZS9mbG9hdC5oIiAxIDMKIyAyOTAg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMSAzCiMgMTE3ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgaW50Cl9fc2lnbmJpdGYgKGZsb2F0IF9f
eCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0g
eyBfX2Y6IF9feCB9OwogIHJldHVybiBfX3UuX19pIDwgMDsKfQpfX2lubGluZSBpbnQKX19zaWdu
Yml0IChkb3VibGUgX194KQp7CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGRvdWJsZSBfX2Q7IGlu
dCBfX2lbMl07IH0gX191ID0geyBfX2Q6IF9feCB9OwogIHJldHVybiBfX3UuX19pWzFdIDwgMDsK
fQpfX2lubGluZSBpbnQKX19zaWduYml0bCAobG9uZyBkb3VibGUgX194KQp7CiAgX19leHRlbnNp
b25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9fbDsgaW50IF9faVszXTsgfSBfX3UgPSB7IF9fbDog
X194IH07CiAgcmV0dXJuIChfX3UuX19pWzJdICYgMHg4MDAwKSAhPSAwOwp9CiMgMjM0ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3Vi
bGUpOyBfX2lubGluZSBkb3VibGUgX19zZ24gKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9feCA9PSAw
LjAgPyAwLjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gX19pbmxpbmUgZmxvYXQgX19z
Z25mIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBf
X3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IF9faW5saW5lIGxv
bmcgZG91YmxlIF9fc2dubCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBfX3Nn
bmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAw
LjAgPyAxLjAgOiAtMS4wKTsgfQoKCl9faW5saW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSk7IF9f
aW5saW5lIGRvdWJsZSBfX3BvdzIgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBs
b25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcg
ZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhj
aFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0
KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAo
X194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBf
X3BvdzJmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9f
cCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91YmxlKSBfX3ApIHsg
X19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiICgxLjAp
LCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJ
JSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUl
c3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6
ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUg
Kz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxp
bmUgbG9uZyBkb3VibGUgX19wb3cybCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJs
ZSBfX3BvdzJsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxv
bmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3ggPT0gKGxvbmcgZG91Ymxl
KSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClcblx0IiAiZnhjaFxuXHQi
ICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHgpKSAt
IDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7
IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7
IH0KIyAyODMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSB2b2lk
IF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gpOwpf
X2lubGluZSB2b2lkCl9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91Ymxl
ICpfX2Nvc3gpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fc2lucjsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0c3cJ
JSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBpXG5c
dCIgImZhZGQJJSVzdCgwKVxuXHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5cdCIg
ImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5cdCIg
ImZzdHAJJSVzdCgxKVxuXHQiICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciksICI9
dSIgKF9fc2lucikgOiAiMCIgKF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0gX19j
b3NyOwp9CgpfX2lubGluZSB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54
LCBmbG9hdCAqX19jb3N4KTsKX19pbmxpbmUgdm9pZApfX3NpbmNvc2YgKGZsb2F0IF9feCwgZmxv
YXQgKl9fc2lueCwgZmxvYXQgKl9fY29zeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fY29z
cjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2lu
Y29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAianoJ
MWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4Y2gJJSVzdCgxKVxuXHQi
ICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxu
XHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5jb3Ncblx0IiAiMToiIDog
Ij10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7ICpfX3NpbnggPSBfX3Np
bnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KCl9faW5saW5lIHZvaWQgX19zaW5jb3NsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgZG91YmxlICpfX2Nvc3gpOwpfX2lubGluZSB2b2lkCl9fc2luY29zbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KQp7CiAg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3NpbnI7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVz
dGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxuXHQiICJmYWRkCSUlc3Qo
MClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQiICJmc3RwCSUlc3QoMSlc
blx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDog
IjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9fY29zcjsKfQojIDMyOCAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGxvbmcgZG91YmxlIF9f
ZXhwbTFsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5c
dCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJm
cm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIo
ZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxv
ZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChf
X3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlc
blx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3Rl
bXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZTsgfQojIDM0OCAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGlubGluZS5oIiAzCl9faW5saW5lIGRvdWJsZSBleHAgKGRvdWJsZSk7IF9faW5s
aW5lIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHgg
KiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9n
MihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkp
XG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAo
X192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192
YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9h
dCBleHBmIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQi
ICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJu
ZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJ
IyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUp
KSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9f
eCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIg
KF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3Zh
bHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUg
bG9uZyBkb3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJJSVzdCgx
KQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQo
eCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBs
b2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiA6
ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUg
Kz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KX19pbmxp
bmUgbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91Ymxl
IF9fZXhwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICog
bG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIo
ZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxu
XHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIgKF9f
dmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFs
dWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgpfX2lubGluZSBkb3Vi
bGUgdGFuIChkb3VibGUpOyBfX2lubGluZSBkb3VibGUgdGFuIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9f
YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6
ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192
YWx1ZTsgfSBfX2lubGluZSBmbG9hdCB0YW5mIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IHRhbmYg
KGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmcHRhbiIgOiAiPXQiIChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9u
ZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTIgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsgX19hc20gX192b2xhdGlsZV9fICgiZnB0
YW4iIDogIj10IiAoX192YWx1ZTIpLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVy
biBfX3ZhbHVlOyB9CiMgMzY3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19p
bmxpbmUgZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7IF9faW5saW5lIGRvdWJsZSBhdGFu
MiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9h
dCBhdGFuMmYgKGZsb2F0LCBmbG9hdCk7IF9faW5saW5lIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195
LCBmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xh
dGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkg
OiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJs
IChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuMmwg
KGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9Cl9faW5s
aW5lIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBfX2lu
bGluZSBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgi
ZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSki
KTsgcmV0dXJuIF9fdmFsdWU7IH0KCgpfX2lubGluZSBkb3VibGUgZm1vZCAoZG91YmxlLCBkb3Vi
bGUpOyBfX2lubGluZSBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxu
XHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
X19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7IF9faW5saW5lIGZsb2F0IGZtb2Rm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhm
XG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAi
YXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZm1vZGwg
KGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIGZtb2RsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyAzODIgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3VibGUgcG93IChkb3VibGUsIGRvdWJs
ZSk7IF9faW5saW5lIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsg
X19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7IGlm
IChfX3ggPT0gMC4wICYmIF9feSA+IDAuMCkgcmV0dXJuIDAuMDsgaWYgKF9feSA9PSAoZG91Ymxl
KSBfX3ApIHsgbG9uZyBkb3VibGUgX19yID0gMS4wOyBpZiAoX19wID09IDApIHJldHVybiAxLjA7
IGlmIChfX3AgPCAwKSB7IF9fcCA9IC1fX3A7IF9feCA9IDEuMCAvIF9feDsgfSB3aGlsZSAoMSkg
eyBpZiAoX19wICYgMSkgX19yICo9IF9feDsgX19wID4+PSAxOyBpZiAoX19wID09IDApIHJldHVy
biBfX3I7IF9feCAqPSBfX3g7IH0gfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeWwyeCIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiICJmc3QJJSVzdCgxKVxu
XHQiICJmcm5kaW50CQkJIyBpbnQoeSAqIGxvZzIoeCkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1Ygkl
JXN0KDEpCQkjIGZyYWN0KHkgKiBsb2cyKHgpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeSAq
IGxvZzIoeCkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9f
ZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgZmxvYXQgcG93ZiAoZmxvYXQs
IGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVu
dDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7
IGlmIChfX3ggPT0gMC4wICYmIF9feSA+IDAuMCkgcmV0dXJuIDAuMDsgaWYgKF9feSA9PSAoZG91
YmxlKSBfX3ApIHsgbG9uZyBkb3VibGUgX19yID0gMS4wOyBpZiAoX19wID09IDApIHJldHVybiAx
LjA7IGlmIChfX3AgPCAwKSB7IF9fcCA9IC1fX3A7IF9feCA9IDEuMCAvIF9feDsgfSB3aGlsZSAo
MSkgeyBpZiAoX19wICYgMSkgX19yICo9IF9feDsgX19wID4+PSAxOyBpZiAoX19wID09IDApIHJl
dHVybiBfX3I7IF9feCAqPSBfX3g7IH0gfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeWwyeCIgOiAi
PXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiICJmc3QJJSVzdCgx
KVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeSAqIGxvZzIoeCkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1
YgklJXN0KDEpCQkjIGZyYWN0KHkgKiBsb2cyKHgpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3Qo
eSAqIGxvZzIoeCkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50
KSA6ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIg
KF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgcG93
bCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgcG93bCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRlbnNpb25fXyBs
b25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3k7IGlmIChfX3ggPT0gMC4wICYm
IF9feSA+IDAuMCkgcmV0dXJuIDAuMDsgaWYgKF9feSA9PSAoZG91YmxlKSBfX3ApIHsgbG9uZyBk
b3VibGUgX19yID0gMS4wOyBpZiAoX19wID09IDApIHJldHVybiAxLjA7IGlmIChfX3AgPCAwKSB7
IF9fcCA9IC1fX3A7IF9feCA9IDEuMCAvIF9feDsgfSB3aGlsZSAoMSkgeyBpZiAoX19wICYgMSkg
X19yICo9IF9feDsgX19wID4+PSAxOyBpZiAoX19wID09IDApIHJldHVybiBfX3I7IF9feCAqPSBf
X3g7IH0gfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeWwyeCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZtdWwJ
JSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ
IyBpbnQoeSAqIGxvZzIoeCkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0
KHkgKiBsb2cyKHgpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeSAqIGxvZzIoeCkpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX195KSwgIjEi
IChfX3ZhbHVlKSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0
dXJuIF9fdmFsdWU7IH0KIyA0MjYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpf
X2lubGluZSBkb3VibGUgc3FydCAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJs
ZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
c3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0g
X19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0
IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNx
cnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9f
aW5saW5lIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91
YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1
bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAo
X194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lubGluZSBsb25nIGRvdWJsZSBfX3NxcnRsIChs
b25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgi
ZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9
CgoKX19pbmxpbmUgZG91YmxlIGZhYnMgKGRvdWJsZSk7IF9faW5saW5lIGRvdWJsZSBmYWJzIChk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsgfQpfX2lubGluZSBmbG9h
dCBmYWJzZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVy
biBfX2J1aWx0aW5fZmFic2YgKF9feCk7IH0KX19pbmxpbmUgbG9uZyBkb3VibGUgZmFic2wgKGxv
bmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgZmFic2wgKGxvbmcgZG91YmxlIF9feCkg
eyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9Cl9faW5saW5lIGxvbmcgZG91YmxlIF9f
ZmFic2wgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KCgoKCgoKX19pbmxp
bmUgZG91YmxlIHNpbiAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIHNpbiAoZG91YmxlIF9feCkg
eyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5l
IGZsb2F0IHNpbmYgKGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgc2luZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luIiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25n
IGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIHNpbmwgKGxv
bmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192
b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4g
X19yZXN1bHQ7IH0KCl9faW5saW5lIGRvdWJsZSBjb3MgKGRvdWJsZSk7IF9faW5saW5lIGRvdWJs
ZSBjb3MgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBf
X3Jlc3VsdDsgfSBfX2lubGluZSBmbG9hdCBjb3NmIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IGNv
c2YgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGls
ZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1
bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBs
b25nIGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZjb3MiIDogIj10IiAoX19yZXN1bHQpIDog
IjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpfX2lubGluZSBkb3VibGUgYXRhbiAoZG91
YmxlKTsgX19pbmxpbmUgZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91Ymxl
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGlu
ZSBmbG9hdCBhdGFuZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0
YW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jl
c3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUpOyBfX2lubGlu
ZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAo
X19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lu
bGluZSBkb3VibGUgbG9nIChkb3VibGUpOyBfX2lubGluZSBkb3VibGUgbG9nIChkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4y
OyBmeGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fcmVzdWx0OyB9IF9faW5saW5lIGZsb2F0IGxvZ2YgKGZsb2F0KTsgX19pbmxpbmUg
ZmxvYXQgbG9nZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsbjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgbG9nbCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dsIChsb25nIGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gp
IDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQpfX2lubGluZSBkb3VibGUgbG9nMTAgKGRv
dWJsZSk7IF9faW5saW5lIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3Vi
bGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxnMjsgZnhjaDsgZnlsMngiIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsg
fSBfX2lubGluZSBmbG9hdCBsb2cxMGYgKGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgbG9nMTBmIChm
bG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0
KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxv
bmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEp
Iik7IHJldHVybiBfX3Jlc3VsdDsgfQoKX19pbmxpbmUgZG91YmxlIGFzaW4gKGRvdWJsZSk7IF9f
aW5saW5lIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBf
X3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBfX2lubGluZSBmbG9hdCBhc2luZiAoZmxvYXQp
OyBfX2lubGluZSBmbG9hdCBhc2luZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX194
LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lu
bCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUg
X194KSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsg
fQpfX2lubGluZSBkb3VibGUgYWNvcyAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIGFjb3MgKGRv
dWJsZSBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBf
X3gpOyB9IF9faW5saW5lIGZsb2F0IGFjb3NmIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IGFjb3Nm
IChmbG9hdCBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gp
LCBfX3gpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSk7IF9faW5s
aW5lIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYXRhbjJs
IChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpLCBfX3gpOyB9CgpfX2lubGluZSBsb25nIGRvdWJs
ZSBfX3NnbjFsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxv
bmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID49IDAuMCA/IDEuMCA6IC0xLjA7IH0KCgoKX19p
bmxpbmUgZG91YmxlIHNpbmggKGRvdWJsZSk7IF9faW5saW5lIGRvdWJsZSBzaW5oIChkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChf
X3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXhtMSkgKiBf
X3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCk7IF9faW5saW5lIGZs
b2F0IHNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19l
eHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAx
LjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgc2lu
aGwgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAo
X194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICog
X19zZ24xbCAoX194KTsgfQoKCgpfX2lubGluZSBkb3VibGUgY29zaCAoZG91YmxlKTsgX19pbmxp
bmUgZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9
IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAqIChfX2V4ICsgMS4wIC8gX19leCk7IH0gX19pbmxp
bmUgZmxvYXQgY29zaGYgKGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgY29zaGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gpOyByZXR1cm4gMC41ICog
KF9fZXggKyAxLjAgLyBfX2V4KTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBk
b3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUgKiAoX19l
eCArIDEuMCAvIF9fZXgpOyB9CgoKCl9faW5saW5lIGRvdWJsZSB0YW5oIChkb3VibGUpOyBfX2lu
bGluZSBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4
bTEgPSBfX2V4cG0xbCAoLV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9f
ZXhtMSArIDIuMCkgKiBfX3NnbjFsICgtX194KTsgfSBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxv
YXQpOyBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194ICsgX194KSk7IHJldHVybiBfX2V4
bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gpOyB9IF9faW5saW5lIGxvbmcgZG91
YmxlIHRhbmhsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIHRhbmhsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKC1f
X2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChfX2V4bTEgKyAyLjApICogX19z
Z24xbCAoLV9feCk7IH0KCgoKCl9faW5saW5lIGRvdWJsZSBmbG9vciAoZG91YmxlKTsgX19pbmxp
bmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUg
ZmxvYXQgZmxvb3JmIChmbG9hdCk7IF9faW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
aW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAw
eGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9f
Y3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsg
cmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJs
ZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYp
IHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXAp
KTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJu
IF9fdmFsdWU7IH0KIyA0NzkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lu
bGluZSBkb3VibGUgY2VpbCAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19h
c20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19j
dyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19j
dykpOyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBmbG9hdCBjZWlsZiAoZmxvYXQpOyBfX2lu
bGluZSBmbG9hdCBjZWlsZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1t
IiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAo
ImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19pbmxpbmUg
bG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgY2Vp
bGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cp
KTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAo
ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgNDk3ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIGxkZXhwIChkb3VibGUgX194
LCBpbnQgX195KTsKX19pbmxpbmUgZG91YmxlCmxkZXhwIChkb3VibGUgX194LCBpbnQgX195KQp7
CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNj
YWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195
KSk7IHJldHVybiBfX3ZhbHVlOwp9CgoKCgoKX19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUp
OyBfX2lubGluZSBkb3VibGUgZXhwbTEgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX190ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEg
PSAyXih4ICogbG9nMihlKSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxu
XHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIg
ImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnht
MQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICog
bG9nMihlKSkgLSAyXihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9
dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxl
CQkJIyAyXmludCh4ICogbG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCks
ICJ1IiAoX19leHBvbmVudCkpOyBfX3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1
ZTsgfSBfX2lubGluZSBmbG9hdCBleHBtMWYgKGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgZXhwbTFm
IChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5c
dCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJm
cm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIo
ZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxv
ZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChf
X3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlc
blx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3Rl
bXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJs
ZSBleHBtMWwgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbTFsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAxXG5c
dCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJm
cm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEp
CQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIo
ZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAqIGxv
ZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChf
X3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihlKSlc
blx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBfX3Rl
bXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZTsgfQoKCgoKCl9faW5saW5lIGRvdWJs
ZSBsb2cxcCAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIGxvZzFwIChkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAu
NSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsg
ZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAx
IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVl
OyB9IF9faW5saW5lIGZsb2F0IGxvZzFwZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBsb2cxcGYg
KGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAo
X194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxv
Z2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4
Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIp
OyByZXR1cm4gX192YWx1ZTsgfSBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91
YmxlKTsgX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41
ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBl
bHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7
IH0KIyA1MjggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBkb3Vi
bGUgYXNpbmggKGRvdWJsZSk7IF9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAo
X195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9f
c2duMWwgKF9feCkpOyB9IF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQpOyBfX2lubGluZSBm
bG9hdCBhc2luaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2Zh
YnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9f
eSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IF9faW5saW5lIGxvbmcg
ZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBhc2luaGwg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChf
X3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEu
MCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9CgoKCgpfX2lubGluZSBkb3VibGUg
YWNvc2ggKGRvdWJsZSk7IF9faW5saW5lIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCkgeyByZXR1
cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkp
OyB9IF9faW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBhY29zaGYg
KGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9f
c3FydGwgKF9feCArIDEuMCkpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBk
b3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZXR1cm4gbG9nbCAoX194ICsgX19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEu
MCkpOyB9CgoKX19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUpOyBfX2lubGluZSBkb3VibGUg
YXRhbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAo
X194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAq
IF9fc2duMWwgKF9feCk7IH0gX19pbmxpbmUgZmxvYXQgYXRhbmhmIChmbG9hdCk7IF9faW5saW5l
IGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9f
ZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsg
X195KSkgKiBfX3NnbjFsIChfX3gpOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGF0YW5obCAobG9u
ZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAq
IGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoK
CgoKX19pbmxpbmUgZG91YmxlIGh5cG90IChkb3VibGUsIGRvdWJsZSk7IF9faW5saW5lIGRvdWJs
ZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICog
X194ICsgX195ICogX195KTsgfSBfX2lubGluZSBmbG9hdCBoeXBvdGYgKGZsb2F0LCBmbG9hdCk7
IF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9f
c3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlw
b3RsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBoeXBv
dGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiBfX3NxcnRsIChf
X3ggKiBfX3ggKyBfX3kgKiBfX3kpOyB9CgpfX2lubGluZSBkb3VibGUgbG9nYiAoZG91YmxlKTsg
X19pbmxpbmUgZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9hdCk7IF9faW5s
aW5lIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRy
YWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJl
dHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSk7
IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTU0ICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKX19pbmxpbmUgZG91YmxlIGxvZzIgKGRvdWJsZSk7IF9faW5saW5l
IGRvdWJsZSBsb2cyIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19h
c20gX192b2xhdGlsZV9fICgiZmxkMTsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDog
IjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBfX2lubGluZSBmbG9hdCBs
b2cyZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBsb2cyZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVy
IGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmeGNoOyBmeWwyeCIg
OiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0
OyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxv
bmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCl9f
aW5saW5lIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX195KTsKX19pbmxpbmUgZmxvYXQK
bGRleHBmIChmbG9hdCBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KCl9faW5s
aW5lIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX195KTsKX19pbmxp
bmUgbG9uZyBkb3VibGUKbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0
dXJuIF9fdmFsdWU7Cn0KCl9faW5saW5lIGRvdWJsZSBmbWEgKGRvdWJsZSwgZG91YmxlLCBkb3Vi
bGUpOyBfX2lubGluZSBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUg
X196KSB7IHJldHVybiAoX194ICogX195KSArIF9fejsgfSBfX2lubGluZSBmbG9hdCBmbWFmIChm
bG9hdCwgZmxvYXQsIGZsb2F0KTsgX19pbmxpbmUgZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9h
dCBfX3ksIGZsb2F0IF9feikgeyByZXR1cm4gKF9feCAqIF9feSkgKyBfX3o7IH0gX19pbmxpbmUg
bG9uZyBkb3VibGUgZm1hbCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7
IF9faW5saW5lIGxvbmcgZG91YmxlIGZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195LCBsb25nIGRvdWJsZSBfX3opIHsgcmV0dXJuIChfX3ggKiBfX3kpICsgX196OyB9CgpfX2lu
bGluZSBkb3VibGUgcmludCAoZG91YmxlKTsgX19pbmxpbmUgZG91YmxlIHJpbnQgKGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcm5k
aW50IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBf
X2lubGluZSBmbG9hdCByaW50ZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCByaW50ZiAoZmxvYXQg
X194KSB7IHJlZ2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcm5k
aW50IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBf
X2lubGluZSBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRv
dWJsZSByaW50bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcm5kaW50IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKCgoKCgoKX19pbmxpbmUgbG9uZyBpbnQKbHJp
bnRmIChmbG9hdCBfX3gpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImZpc3RwbCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIp
OyByZXR1cm4gX19scmludHJlczsKfQpfX2lubGluZSBsb25nIGludApscmludCAoZG91YmxlIF9f
eCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBs
ICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xy
aW50cmVzOwp9Cl9faW5saW5lIGxvbmcgaW50CmxyaW50bCAobG9uZyBkb3VibGUgX194KQp7CiAg
bG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAiIDog
Ij1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRyZXM7
Cn0KIyA2MDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpfX2lubGluZSBsb25n
IGxvbmcgaW50CmxscmludGYgKGZsb2F0IF9feCkKewogIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRy
ZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsbCAlMCIgOiAiPW0iIChfX2xscmludHJl
cykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbGxyaW50cmVzOwp9Cl9faW5saW5lIGxv
bmcgbG9uZyBpbnQKbGxyaW50IChkb3VibGUgX194KQp7CiAgbG9uZyBsb25nIGludCBfX2xscmlu
dHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50
cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KX19pbmxpbmUg
bG9uZyBsb25nIGludApsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpCnsKICBsb25nIGxvbmcgaW50
IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAo
X19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQoK
CgoKCgoKX19pbmxpbmUgZG91YmxlIGRyZW0gKGRvdWJsZSwgZG91YmxlKTsgX19pbmxpbmUgZG91
YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFs
dWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnBy
ZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3Zh
bHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7
IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGZsb2F0IGRyZW1mIChmbG9hdCwgZmxvYXQpOyBf
X2lubGluZSBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0ZXIgZG91
YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9f
ICgiMToJZnByZW0xXG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAi
PXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChs
b25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBfX2lubGluZSBsb25nIGRvdWJsZSBkcmVtbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7
IHJlZ2lzdGVyIGludCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0x
XG5cdCIgImZzdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVl
KSwgIj0mYSIgKF9fY2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJl
dHVybiBfX3ZhbHVlOyB9CiMgNjM4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMK
X19pbmxpbmUgaW50IF9fZmluaXRlIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7Cl9faW5saW5lIGludApfX2Zpbml0ZSAoZG91YmxlIF9feCkKewogIHJldHVybiAoX19l
eHRlbnNpb25fXwogICAgICAgICAgKCgoKCh1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBfX2lbMl07
IH0pIHtfX2Q6IF9feH0pLl9faVsxXQogICAgICAgICAgICAgfCAweDgwMGZmZmZmdSkgKyAxKSA+
PiAzMSkpOwp9CgoKCl9faW5saW5lIGRvdWJsZSBfX2Nvc2htMSAoZG91YmxlKTsgX19pbmxpbmUg
ZG91YmxlIF9fY29zaG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXht
MSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19l
eG0xICsgMS4wKSkgKiBfX2V4bTE7IH0gX19pbmxpbmUgZmxvYXQgX19jb3NobTFmIChmbG9hdCk7
IF9faW5saW5lIGZsb2F0IF9fY29zaG0xZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4
bTEgLyAoX19leG0xICsgMS4wKSkgKiBfX2V4bTE7IH0gX19pbmxpbmUgbG9uZyBkb3VibGUgX19j
b3NobTFsIChsb25nIGRvdWJsZSk7IF9faW5saW5lIGxvbmcgZG91YmxlIF9fY29zaG0xbCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChf
X2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBf
X2V4bTE7IH0KCgoKX19pbmxpbmUgZG91YmxlIF9fYWNvc2gxcCAoZG91YmxlKTsgX19pbmxpbmUg
ZG91YmxlIF9fYWNvc2gxcCAoZG91YmxlIF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3Nx
cnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0gX19pbmxpbmUgZmxvYXQgX19hY29z
aDFwZiAoZmxvYXQpOyBfX2lubGluZSBmbG9hdCBfX2Fjb3NoMXBmIChmbG9hdCBfX3gpIHsgcmV0
dXJuIGxvZzFwbCAoX194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCArIDIuMCkpOyB9
IF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxvbmcgZG91YmxlKTsgX19pbmxpbmUg
bG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2cxcGwg
KF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3ggKyAyLjApKTsgfQojIDM0OSAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzCiMgNDA5ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCn0KIyA0
NCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jbWF0
aC5oIiAyIDMKIyA3MCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9i
aXRzL3N0ZF9jbWF0aC5oIiAzCm5hbWVzcGFjZSBzdGQKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPiBfVHAgX19jbWF0aF9wb3dlcihfVHAsIHVuc2lnbmVkIGludCk7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICBpbmxpbmUgX1RwCiAgICBfX2NtYXRoX2FicyhfVHAgX194KQogICAgewog
ICAgICByZXR1cm4gX194IDwgX1RwKCkgPyAtX194IDogX194OwogICAgfQoKCiAgaW5saW5lIGZs
b2F0CiAgYWJzKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmKF9feCk7IH0KIyA5
NSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jbWF0
aC5oIiAzCiAgaW5saW5lIGZsb2F0CiAgYWNvcyhmbG9hdCBfX3gpIHsgcmV0dXJuIDo6YWNvc2Yo
X194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGFzaW4oZmxvYXQgX194KSB7IHJldHVybiA6
OmFzaW5mKF9feCk7IH0KCgoKCgoKICBpbmxpbmUgZmxvYXQKICBhdGFuKGZsb2F0IF9feCkgeyBy
ZXR1cm4gOjphdGFuZihfX3gpOyB9CgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgYXRhbjIoZmxvYXQg
X195LCBmbG9hdCBfX3gpIHsgcmV0dXJuIDo6YXRhbjJmKF9feSwgX194KTsgfQoKCgoKCgoKICBp
bmxpbmUgZmxvYXQKICBjZWlsKGZsb2F0IF9feCkgeyByZXR1cm4gOjpjZWlsZihfX3gpOyB9CiMg
MTM5ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2Nt
YXRoLmgiIDMKICBpbmxpbmUgZmxvYXQKICBjb3MoZmxvYXQgX194KSB7IHJldHVybiA6OmNvc2Yo
X194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGNvc2goZmxvYXQgX194KSB7IHJldHVybiA6
OmNvc2hmKF9feCk7IH0KCgoKCgoKICBpbmxpbmUgZmxvYXQKICBleHAoZmxvYXQgX194KSB7IHJl
dHVybiA6OmV4cGYoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGZhYnMoZmxvYXQgX194
KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YoX194KTsgfQojIDE3NCAiL2hvbWVzL2toYW4vbG9j
YWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jbWF0aC5oIiAzCiAgaW5saW5lIGZs
b2F0CiAgZmxvb3IoZmxvYXQgX194KSB7IHJldHVybiA6OmZsb29yZihfX3gpOyB9CgoKCgoKCiAg
aW5saW5lIGZsb2F0CiAgZm1vZChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gOjpmbW9k
ZihfX3gsIF9feSk7IH0KCgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgZnJleHAoZmxvYXQgX194LCBp
bnQqIF9fZXhwKSB7IHJldHVybiA6OmZyZXhwZihfX3gsIF9fZXhwKTsgfQoKCgoKCgogIGlubGlu
ZSBmbG9hdAogIGxkZXhwKGZsb2F0IF9feCwgaW50IF9fZXhwKSB7IHJldHVybiA6OmxkZXhwZihf
X3gsIF9fZXhwKTsgfQoKCgoKCgoKICBpbmxpbmUgZmxvYXQKICBsb2coZmxvYXQgX194KSB7IHJl
dHVybiA6OmxvZ2YoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGxvZzEwKGZsb2F0IF9f
eCkgeyByZXR1cm4gOjpsb2cxMGYoX194KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIG1vZGYo
ZmxvYXQgX194LCBmbG9hdCogX19pcHRyKSB7IHJldHVybiA6Om1vZGZmKF9feCwgX19pcHRyKTsg
fQojIDIzNyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0
ZF9jbWF0aC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAg
X19wb3dfaGVscGVyKF9UcCBfX3gsIGludCBfX24pCiAgICB7CiAgICAgIHJldHVybiBfX24gPCAw
CiAgICAgICAgPyBfVHAoMSkvX19jbWF0aF9wb3dlcihfX3gsIC1fX24pCiAgICAgICAgOiBfX2Nt
YXRoX3Bvd2VyKF9feCwgX19uKTsKICAgIH0KCgogIGlubGluZSBmbG9hdAogIHBvdyhmbG9hdCBf
X3gsIGZsb2F0IF9feSkgeyByZXR1cm4gOjpwb3dmKF9feCwgX195KTsgfQoKCgoKCgogIGlubGlu
ZSBmbG9hdAogIHBvdyhmbG9hdCBfX3gsIGludCBfX24pCiAgewogICAgcmV0dXJuIF9fcG93X2hl
bHBlcihfX3gsIF9fbik7CiAgfQoKCgoKCiAgaW5saW5lIGZsb2F0CiAgc2luKGZsb2F0IF9feCkg
eyByZXR1cm4gOjpzaW5mKF9feCk7IH0KCgoKCgoKICBpbmxpbmUgZmxvYXQKICBzaW5oKGZsb2F0
IF9feCkgeyByZXR1cm4gOjpzaW5oZihfX3gpOyB9CiMgMjg0ICIvaG9tZXMva2hhbi9sb2NhbC9n
Y2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDMKICBpbmxpbmUgZmxvYXQK
ICBzcXJ0KGZsb2F0IF9feCkgeyByZXR1cm4gOjpzcXJ0ZihfX3gpOyB9CgoKCgoKCiAgaW5saW5l
IGZsb2F0CiAgdGFuKGZsb2F0IF9feCkgeyByZXR1cm4gOjp0YW5mKF9feCk7IH0KCgoKCgoKICBp
bmxpbmUgZmxvYXQKICB0YW5oKGZsb2F0IF9feCkgeyByZXR1cm4gOjp0YW5oZihfX3gpOyB9CgoK
CgoKCiAgZXh0ZXJuICJDIiBkb3VibGUgYWNvcyhkb3VibGUgX194KTsKCiAgZXh0ZXJuICJDIiBk
b3VibGUgYXNpbihkb3VibGUgX194KTsKCiAgZXh0ZXJuICJDIiBkb3VibGUgYXRhbihkb3VibGUg
X194KTsKCiAgZXh0ZXJuICJDIiBkb3VibGUgYXRhbjIoZG91YmxlIF9feSwgZG91YmxlIF9feCk7
CgogIGV4dGVybiAiQyIgZG91YmxlIGNlaWwoZG91YmxlIF9feCk7CgoKCgoKICBleHRlcm4gIkMi
IGRvdWJsZSBjb3MoZG91YmxlIF9feCk7CgoKICBleHRlcm4gIkMiIGRvdWJsZSBjb3NoKGRvdWJs
ZSBfX3gpOwoKICBleHRlcm4gIkMiIGRvdWJsZSBleHAoZG91YmxlIF9feCk7CgoKICBpbmxpbmUg
ZG91YmxlCiAgZmFicyhkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyhfX3gpOyB9
CgoKCgoKICBpbmxpbmUgZG91YmxlCiAgYWJzKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRp
bl9mYWJzKF9feCk7IH0KCgoKCgogIGV4dGVybiAiQyIgZG91YmxlIGZsb29yKGRvdWJsZSBfX3gp
OwoKICBleHRlcm4gIkMiIGRvdWJsZSBmbW9kKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKICBl
eHRlcm4gIkMiIGRvdWJsZSBmcmV4cChkb3VibGUgX194LCBpbnQqIF9fZXhwKTsKCiAgZXh0ZXJu
ICJDIiBkb3VibGUgbGRleHAoZG91YmxlIF9feCwgaW50IF9fZXhwKTsKCiAgZXh0ZXJuICJDIiBk
b3VibGUgbG9nKGRvdWJsZSBfX3gpOwoKICBleHRlcm4gIkMiIGRvdWJsZSBsb2cxMChkb3VibGUg
X194KTsKCiAgZXh0ZXJuICJDIiBkb3VibGUgbW9kZihkb3VibGUgX194LCBkb3VibGUqIF9faXB0
cik7CgogIGV4dGVybiAiQyIgZG91YmxlIHBvdyhkb3VibGUgX194LCBkb3VibGUgX195KTsKCiAg
aW5saW5lIGRvdWJsZQogIHBvdyhkb3VibGUgX194LCBpbnQgX19pKQogIHsKICAgIHJldHVybiBf
X3Bvd19oZWxwZXIoX194LCBfX2kpOwogIH0KCgoKCgogIGV4dGVybiAiQyIgZG91YmxlIHNpbihk
b3VibGUgX194KTsKCgogIGV4dGVybiAiQyIgZG91YmxlIHNpbmgoZG91YmxlIF9feCk7CgoKCgoK
ICBleHRlcm4gIkMiIGRvdWJsZSBzcXJ0KGRvdWJsZSBfX3gpOwoKCiAgZXh0ZXJuICJDIiBkb3Vi
bGUgdGFuKGRvdWJsZSBfX3gpOwoKICBleHRlcm4gIkMiIGRvdWJsZSB0YW5oKGRvdWJsZSBfX3gp
OwoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGFicyhsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJu
IF9fYnVpbHRpbl9mYWJzbChfX3gpOyB9CiMgMzk5ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4x
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDMKICBpbmxpbmUgbG9uZyBkb3VibGUK
ICBhY29zKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjphY29zbChfX3gpOyB9CgoKCgoKCiAg
aW5saW5lIGxvbmcgZG91YmxlCiAgYXNpbihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6YXNp
bmwoX194KTsgfQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGF0YW4obG9uZyBkb3VibGUg
X194KSB7IHJldHVybiA6OmF0YW5sKF9feCk7IH0KCgoKCgoKICBpbmxpbmUgbG9uZyBkb3VibGUK
ICBhdGFuMihsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjphdGFu
MmwoX195LCBfX3gpOyB9CgoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGNlaWwobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiA6OmNlaWxsKF9feCk7IH0KIyA0NDMgIi9ob21lcy9raGFuL2xv
Y2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwogIGlubGluZSBs
b25nIGRvdWJsZQogIGNvcyhsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6Y29zbChfX3gpOyB9
CgoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgY29zaChsb25nIGRvdWJsZSBfX3gpIHsgcmV0
dXJuIDo6Y29zaGwoX194KTsgfQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGV4cChsb25n
IGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6ZXhwbChfX3gpOyB9CgoKCgoKCiAgaW5saW5lIGxvbmcg
ZG91YmxlCiAgZmFicyhsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChf
X3gpOyB9CiMgNDc4ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2Jp
dHMvc3RkX2NtYXRoLmgiIDMKICBpbmxpbmUgbG9uZyBkb3VibGUKICBmbG9vcihsb25nIGRvdWJs
ZSBfX3gpIHsgcmV0dXJuIDo6Zmxvb3JsKF9feCk7IH0KCgoKCgoKICBpbmxpbmUgbG9uZyBkb3Vi
bGUKICBmbW9kKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiA6OmZt
b2RsKF9feCwgX195KTsgfQoKCgoKCgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBmcmV4cChsb25n
IGRvdWJsZSBfX3gsIGludCogX19leHApIHsgcmV0dXJuIDo6ZnJleHBsKF9feCwgX19leHApOyB9
CgoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGxkZXhwKGxvbmcgZG91YmxlIF9feCwgaW50
IF9fZXhwKSB7IHJldHVybiA6OmxkZXhwbChfX3gsIF9fZXhwKTsgfQoKCgoKCgoKICBpbmxpbmUg
bG9uZyBkb3VibGUKICBsb2cobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmxvZ2woX194KTsg
fQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIGxvZzEwKGxvbmcgZG91YmxlIF9feCkgeyBy
ZXR1cm4gOjpsb2cxMGwoX194KTsgfQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIG1vZGYo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSogX19pcHRyKSB7IHJldHVybiA6Om1vZGZsKF9f
eCwgX19pcHRyKTsgfQojIDU0MyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0ZF9jbWF0aC5oIiAzCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgcG93KGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJldHVybiA6OnBvd2woX194LCBfX3kpOyB9
CgoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgcG93KGxvbmcgZG91YmxlIF9feCwgaW50IF9f
bikKICB7CiAgICByZXR1cm4gX19wb3dfaGVscGVyKF9feCwgX19uKTsKICB9CgoKCgoKICBpbmxp
bmUgbG9uZyBkb3VibGUKICBzaW4obG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnNpbmwoX194
KTsgfQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIHNpbmgobG9uZyBkb3VibGUgX194KSB7
IHJldHVybiA6OnNpbmhsKF9feCk7IH0KIyA1ODAgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEv
aW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwogIGlubGluZSBsb25nIGRvdWJsZQog
IHNxcnQobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnNxcnRsKF9feCk7IH0KCgoKCgoKICBp
bmxpbmUgbG9uZyBkb3VibGUKICB0YW4obG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnRhbmwo
X194KTsgfQoKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIHRhbmgobG9uZyBkb3VibGUgX194
KSB7IHJldHVybiA6OnRhbmhsKF9feCk7IH0KCgoKCn0KCgoKCgoKbmFtZXNwYWNlIGM5OQp7CiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBfX2NhcHR1cmVfZnBjbGFzc2lmeShf
VHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8gX19mcGNs
YXNzaWZ5ZiAoX19mKSA6IHNpemVvZiAoX19mKSA9PSBzaXplb2YgKGRvdWJsZSkgPyBfX2ZwY2xh
c3NpZnkgKF9fZikgOiBfX2ZwY2xhc3NpZnlsIChfX2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc2Zpbml0ZShfVHAgX19mKSB7IHJldHVybiAo
c2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8gX19maW5pdGVmIChfX2YpIDogc2l6ZW9m
IChfX2YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fZmluaXRlIChfX2YpIDogX19maW5pdGVsIChf
X2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9p
c2luZihfVHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZmxvYXQpID8g
X19pc2luZmYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19pc2lu
ZiAoX19mKSA6IF9faXNpbmZsIChfX2YpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBpbnQKICAgIF9fY2FwdHVyZV9pc25hbihfVHAgX19mKSB7IHJldHVybiAoc2l6ZW9mIChfX2Yp
ID09IHNpemVvZiAoZmxvYXQpID8gX19pc25hbmYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6
ZW9mIChkb3VibGUpID8gX19pc25hbiAoX19mKSA6IF9faXNuYW5sIChfX2YpKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc25vcm1hbChfVHAgX19m
KSB7IHJldHVybiAoKHNpemVvZiAoX19mKSA9PSBzaXplb2YgKGZsb2F0KSA/IF9fZnBjbGFzc2lm
eWYgKF9fZikgOiBzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChkb3VibGUpID8gX19mcGNsYXNzaWZ5
IChfX2YpIDogX19mcGNsYXNzaWZ5bCAoX19mKSkgPT0gRlBfTk9STUFMKTsgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9zaWduYml0KF9UcCBfX2YpIHsg
cmV0dXJuIChzaXplb2YgKF9fZikgPT0gc2l6ZW9mIChmbG9hdCkgPyBfX3NpZ25iaXRmIChfX2Yp
IDogc2l6ZW9mIChfX2YpID09IHNpemVvZiAoZG91YmxlKSA/IF9fc2lnbmJpdCAoX19mKSA6IF9f
c2lnbmJpdGwgKF9fZikpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAg
X19jYXB0dXJlX2lzZ3JlYXRlcihfVHAgX19mMSwgX1RwIF9fZjIpIHsgcmV0dXJuICh7IHJlZ2lz
dGVyIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gKCJmdWNvbXBwOyBmbnN0c3c7IHRlc3RiICQweDQ1
LCAlJWFoOyBzZXR6ICUlYWwiIDogIj1hIiAoX19yZXN1bHQpIDogInUiIChfX2YyKSwgInQiIChf
X2YxKSA6ICJjYyIsICJzdCIsICJzdCgxKSIpOyBfX3Jlc3VsdDsgfSk7IH0KCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc2dyZWF0ZXJlcXVhbChfVHAgX19m
MSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiAoeyByZWdpc3RlciBjaGFyIF9fcmVzdWx0OyBfX2Fz
bV9fICgiZnVjb21wcDsgZm5zdHN3OyB0ZXN0YiAkMHgwNSwgJSVhaDsgc2V0eiAlJWFsIiA6ICI9
YSIgKF9fcmVzdWx0KSA6ICJ1IiAoX19mMiksICJ0IiAoX19mMSkgOiAiY2MiLCAic3QiLCAic3Qo
MSkiKTsgX19yZXN1bHQ7IH0pOyB9CgogdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAg
ICBfX2NhcHR1cmVfaXNsZXNzKF9UcCBfX2YxLCBfVHAgX19mMikgeyByZXR1cm4gKHsgcmVnaXN0
ZXIgY2hhciBfX3Jlc3VsdDsgX19hc21fXyAoImZ1Y29tcHA7IGZuc3RzdzsgdGVzdGIgJDB4NDUs
ICUlYWg7IHNldHogJSVhbCIgOiAiPWEiIChfX3Jlc3VsdCkgOiAidSIgKF9fZjEpLCAidCIgKF9f
ZjIpIDogImNjIiwgInN0IiwgInN0KDEpIik7IF9fcmVzdWx0OyB9KTsgfQoKIHRlbXBsYXRlPHR5
cGVuYW1lIF9UcD4KICAgIGludAogICAgX19jYXB0dXJlX2lzbGVzc2VxdWFsKF9UcCBfX2YxLCBf
VHAgX19mMikKICAgIHsgcmV0dXJuICh7IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18g
KCJmdWNvbXBwOyBmbnN0c3c7IHRlc3RiICQweDA1LCAlJWFoOyBzZXR6ICUlYWwiIDogIj1hIiAo
X19yZXN1bHQpIDogInUiIChfX2YxKSwgInQiIChfX2YyKSA6ICJjYyIsICJzdCIsICJzdCgxKSIp
OyBfX3Jlc3VsdDsgfSk7IH0KCiB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9f
Y2FwdHVyZV9pc2xlc3NncmVhdGVyKF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsgcmV0dXJuICh7
IHJlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gKCJmdWNvbXBwOyBmbnN0c3c7IHRlc3Ri
ICQweDQ0LCAlJWFoOyBzZXR6ICUlYWwiIDogIj1hIiAoX19yZXN1bHQpIDogInUiIChfX2YyKSwg
InQiIChfX2YxKSA6ICJjYyIsICJzdCIsICJzdCgxKSIpOyBfX3Jlc3VsdDsgfSk7IH0KCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIF9fY2FwdHVyZV9pc3Vub3JkZXJlZChfVHAg
X19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiAoeyByZWdpc3RlciBjaGFyIF9fcmVzdWx0OyBf
X2FzbV9fICgiZnVjb21wcDsgZm5zdHN3OyBzYWhmOyBzZXRwICUlYWwiIDogIj1hIiAoX19yZXN1
bHQpIDogInUiIChfX2YyKSwgInQiIChfX2YxKSA6ICJjYyIsICJzdCIsICJzdCgxKSIpOyBfX3Jl
c3VsdDsgfSk7IH0KfQojIDY3OSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0ZF9jbWF0aC5oIiAzCm5hbWVzcGFjZSBjOTkKewogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGludAogICAgZnBjbGFzc2lmeShfVHAgX19mKSB7IHJldHVybiBfX2NhcHR1
cmVfZnBjbGFzc2lmeShfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAog
ICAgaXNmaW5pdGUoX1RwIF9fZikgeyByZXR1cm4gX19jYXB0dXJlX2lzZmluaXRlKF9fZik7IH0K
CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBpc2luZihfVHAgX19mKSB7IHJl
dHVybiBfX2NhcHR1cmVfaXNpbmYoX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBpbnQKICAgIGlzbmFuKF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9pc25hbihfX2YpOyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNub3JtYWwoX1RwIF9fZikg
eyByZXR1cm4gX19jYXB0dXJlX2lzbm9ybWFsKF9fZik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW50CiAgICBzaWduYml0KF9UcCBfX2YpIHsgcmV0dXJuIF9fY2FwdHVyZV9zaWdu
Yml0KF9fZik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW50CiAgICBpc2dyZWF0
ZXIoX1RwIF9fZjEsIF9UcCBfX2YyKSB7IHJldHVybiBfX2NhcHR1cmVfaXNncmVhdGVyKF9fZjEs
IF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAogICAgaXNncmVhdGVy
ZXF1YWwoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gX19jYXB0dXJlX2lzZ3JlYXRl
cmVxdWFsKF9fZjEsIF9fZjIpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGludAog
ICAgaXNsZXNzKF9UcCBfX2YxLCBfVHAgX19mMikgeyByZXR1cm4gX19jYXB0dXJlX2lzbGVzcyhf
X2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAgIGlzbGVz
c2VxdWFsKF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsgcmV0dXJuIF9fY2FwdHVyZV9pc2xlc3Nl
cXVhbChfX2YxLCBfX2YyKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbnQKICAg
IGlzbGVzc2dyZWF0ZXIoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgeyByZXR1cm4gX19jYXB0dXJl
X2lzbGVzc2dyZWF0ZXIoX19mMSwgX19mMik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgaW50CiAgICBpc3Vub3JkZXJlZChfVHAgX19mMSwgX1RwIF9fZjIpCiAgICB7IHJldHVybiBf
X2NhcHR1cmVfaXN1bm9yZGVyZWQoX19mMSwgX19mMik7IH0KfQoKbmFtZXNwYWNlIHN0ZAp7CiAg
dXNpbmcgYzk5OjpmcGNsYXNzaWZ5OwogIHVzaW5nIGM5OTo6aXNmaW5pdGU7CiAgdXNpbmcgYzk5
Ojppc2luZjsKICB1c2luZyBjOTk6OmlzbmFuOwogIHVzaW5nIGM5OTo6aXNub3JtYWw7CiAgdXNp
bmcgYzk5OjpzaWduYml0OwogIHVzaW5nIGM5OTo6aXNncmVhdGVyOwogIHVzaW5nIGM5OTo6aXNn
cmVhdGVyZXF1YWw7CiAgdXNpbmcgYzk5Ojppc2xlc3M7CiAgdXNpbmcgYzk5Ojppc2xlc3NlcXVh
bDsKICB1c2luZyBjOTk6OmlzbGVzc2dyZWF0ZXI7CiAgdXNpbmcgYzk5Ojppc3Vub3JkZXJlZDsK
fQoKCgoKIyAxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMv
Y21hdGgudGNjIiAxIDMKIyAzNSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9iaXRzL2NtYXRoLnRjYyIgMwpuYW1lc3BhY2Ugc3RkIHsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgX1RwCiAgICBfX2NtYXRoX3Bvd2VyKF9UcCBfX3gsIHVuc2lnbmVk
IGludCBfX24pCiAgICB7CiAgICAgIF9UcCBfX3kgPSBfX24gJSAyID8gX194IDogMTsKCiAgICAg
IHdoaWxlIChfX24gPj49IDEpCiAgICAgICAgewogICAgICAgICAgX194ID0gX194ICogX194Owog
ICAgICAgICAgaWYgKF9fbiAlIDIpCiAgICAgICAgICAgIF9feSA9IF9feSAqIF9feDsKICAgICAg
ICB9CgogICAgICByZXR1cm4gX195OwogICAgfQp9CiMgNzU0ICIvaG9tZXMva2hhbi9sb2NhbC9n
Y2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDIgMwojIDQ0ICIvaG9tZXMv
a2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NvbXBsZXguaCIgMiAz
CiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9p
b3Nmd2QuaCIgMSAzCiMgMzggIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKyst
djMvYml0cy9zdGRfaW9zZndkLmgiIDMKCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9p
bmNsdWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAxIDMKIyA0
MCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9pb3Nm
d2QuaCIgMiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9i
aXRzL3N0cmluZ2Z3ZC5oIiAxIDMKIyAzOCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNs
dWRlL2crKy12My9iaXRzL3N0cmluZ2Z3ZC5oIiAzCgojIDEgIi9ob21lcy9raGFuL2xvY2FsL2dj
Yy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIg
MSAzCiMgNDAgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9z
dHJpbmdmd2QuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQ+
CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7CgogIHRlbXBsYXRlPD4gY2xhc3MgY2hhcl90cmFpdHM8
Y2hhcj47CgogIHRlbXBsYXRlPD4gY2xhc3MgY2hhcl90cmFpdHM8d2NoYXJfdD47CgoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfQWxsb2M+CiAgICBjbGFzcyBhbGxvY2F0b3I7CgogIHRlbXBsYXRlPHR5
cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAg
ICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3Mg
YmFzaWNfc3RyaW5nOwoKICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBzdHJpbmc7CgogIHR5
cGVkZWYgYmFzaWNfc3RyaW5nPHdjaGFyX3Q+IHdzdHJpbmc7Cgp9CiMgNDEgIi9ob21lcy9raGFu
L2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfaW9zZndkLmgiIDIgMwojIDEg
Ii9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9mcG9zLmgiIDEg
MwojIDM4ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvZnBv
cy5oIiAzCgojIDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4
Ni1wYy1saW51eC1nbnUvYml0cy9jKytpby5oIiAxIDMKIyAzNSAiL2hvbWVzL2toYW4vbG9jYWwv
Z2NjLTMuMS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2lvLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgpleHRlcm4gIkMiIHsKCgoKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKIyAxICJpbmNsdWRlL3N0ZGFyZy5o
IiAxIDMKIyA0MyAiaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0
IF9fZ251Y192YV9saXN0OwojIDExMCAiaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251
Y192YV9saXN0IHZhX2xpc3Q7CiMgMzkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNTcgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMwICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMg
OSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgImlu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxNCAiaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVu
c2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMg
MzUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwp0eXBlZGVmIGludCBfR19pbnQxNl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJ
X18pKSk7CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA0OCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKIyAxICJpbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMwojIDE1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19q
dW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNjQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5
cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3Qg
X0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3Bv
czsKIyAxODcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewog
IGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9l
bmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFy
KiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9i
YXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIg
Kl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFy
a2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5v
OwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNo
b3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3No
b3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDIzMyAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoK
CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9f
Ml8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKIyAyNjIgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAq
IF9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKIyAyNzEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKiBf
X2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbik7CiMgMjgwICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKiBfX2Nvb2tp
ZSwgX19vZmZfdCBfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAo
dm9pZCAqIF9fY29va2llKTsKCgoKCnR5cGVkZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1
bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsK
dHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lv
X2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBf
X2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2Zu
ICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25z
X3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25z
X3Q7CgoKc3RydWN0IF9JT19jb29raWVfZmlsZQp7CiAgc3RydWN0IF9JT19GSUxFIF9fZmlsZTsK
ICBjb25zdCB2b2lkICpfX3Z0YWJsZTsKICB2b2lkICpfX2Nvb2tpZTsKICBfSU9fY29va2llX2lv
X2Z1bmN0aW9uc190IF9faW9fZnVuY3Rpb25zOwp9OwoKCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJu
IGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX191Zmxv
dyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUg
KiwgaW50KSB0aHJvdyAoKTsKIyAzMzcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBp
bnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0
YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9m
IChfSU9fRklMRSAqX19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJ
TEUgKl9fZnApIHRocm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklM
RSAqX19mcCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJ
TEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikg
dGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cg
KCk7CiMgMzYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5m
IChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBfX2dudWNf
dmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgX0lPX3ZmcHJp
bnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwgX19nbnVj
X3ZhX2xpc3QpIHRocm93ICgpOwoKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUg
KiwgaW50LCBfX3NzaXplX3QpIHRocm93ICgpOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lP
X0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIHRocm93ICgpOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9f
c2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgdGhyb3cgKCk7CmV4dGVy
biBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSB0aHJv
dyAoKTsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSB0aHJv
dyAoKTsKCgp9CiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRlZiBfX29m
Zl90IGZwb3NfdDsKCgoKCnR5cGVkZWYgX19vZmY2NF90IGZwb3M2NF90OwojIDExMCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAz
CiMgMTExICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsK
ZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKCmV4dGVybiBp
bnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIHRocm93ICgpOwoKZXh0ZXJuIGlu
dCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIHRocm93
ICgpOwoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIHRocm93ICgpOwojIDE0MCAiL3Vz
ci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkgdGhyb3cg
KCk7CgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSB0aHJvdyAoKTsKCgoKCmV4dGVy
biBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSB0aHJvdyAoKTsKIyAxNjAgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBf
X2NvbnN0IGNoYXIgKl9fcGZ4KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIHRocm93ICgpOwoKCgoK
CmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSB0aHJvdyAoKTsKCgpleHRlcm4gRklM
RSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv
dyAoKTsKIyAyMDMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbjY0
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu
IEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7
CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNf
Y29va2llLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywgX0lPX2Nvb2tpZV9pb19m
dW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5f
bWVtc3RyZWFtIChjaGFyICoqX19yZXN0cmljdCBfX2J1ZmxvYywgc2l6ZV90ICpfX3Jlc3RyaWN0
IF9fc2l6ZWxvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCmV4dGVy
biB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIHNldGxp
bmVidWYgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHNwcmludGYgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u
LikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGlu
dCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpCgogICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3Zz
bnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgdGhyb3cgKCkK
CgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpl
eHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxl
biwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykgdGhyb3cgKCkKCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBf
X3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
IHRocm93ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAy
LCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikgdGhyb3cgKCkKCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw
cmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mbXQsIC4uLikgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgp
CgogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpl
eHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
bXQsIC4uLikgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmlu
dGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsK
CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIHRocm93ICgpCgoK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCmV4
dGVybiBpbnQgdnNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f
IChfX3NjYW5mX18sIDEsIDApKSk7CgoKZXh0ZXJuIGludCB2c3NjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQoKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3Ry
ZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQg
Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IGdldGNo
YXJfdW5sb2NrZWQgKHZvaWQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIHRo
cm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19j
LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFy
ICpmZ2V0c191bmxvY2tlZCAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFy
ICpfX3MpIHRocm93ICgpOwojIDQxMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIF9f
c3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsIHNpemVfdCAq
X19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJp
Y3QgX19saW5lcHRyLCBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9fc3NpemVfdCBn
ZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsIHNpemVfdCAqX19yZXN0cmljdCBf
X24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50
IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBzaXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUs
IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgpOwoKCmV4dGVy
biBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSB0aHJvdyAoKTsKCgoKCmV4
dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVf
dCBfX3NpemUsIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRocm93ICgp
OwoKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBs
b25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGludCBm
dGVsbCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CiMgNDkzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5j
ZSkgdGhyb3cgKCk7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBm
cG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZnNldHBvcyAo
RklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTI3ICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVh
bSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRlcm4gX19vZmY2
NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZnZXRw
b3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19w
b3MpIHRocm93ICgpOwoKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2Nv
bnN0IGZwb3M2NF90ICpfX3BvcykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChG
SUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpl
eHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRl
cm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0
W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qg
X3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1h
bmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2Ug
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hh
ciAqX19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSB0
aHJvdyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYg
KHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKZXh0ZXJuIGludCBvYnN0YWNrX3Zwcmlu
dGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIHRocm93ICgpOwojIDYx
NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0
cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKIyA2MzUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMgMzIgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMK
aW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251
Y192YV9saXN0IF9fYXJnKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9f
Zm10LCBfX2FyZyk7Cn0KCgppbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpIHRocm93ICgpCnsKICBy
ZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKaW5saW5lIGludApnZXRjX3VubG9ja2VkIChG
SUxFICpfX2ZwKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAo
X19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICop
IChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKaW5saW5lIGludApnZXRjaGFyX3VubG9ja2Vk
ICh2b2lkKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0
ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICop
IChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKaW5saW5lIGludApwdXRjaGFyIChpbnQg
X19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmlu
bGluZSBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAo
KQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5f
SU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9f
YykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9f
YykpKTsKfQoKCgoKCmlubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19z
dHJlYW0pIHRocm93ICgpCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49
IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNp
Z25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3Jp
dGVfcHRyKysgPSAoX19jKSkpOwp9CgoKaW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQg
X19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0
ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hh
cikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9
IChfX2MpKSk7Cn0KCgoKCgppbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVw
dHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiBfX2dl
dGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKaW5saW5lIGlu
dApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKaW5saW5lIGludApmZXJyb3JfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+
X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2MzYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMK
Cgp9CiMgMzYgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1w
Yy1saW51eC1nbnUvYml0cy9jKytpby5oIiAyIDMKIyAxICJpbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAzNyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxp
bnV4LWdudS9iaXRzL2MrK2lvLmgiIDIgMwojIDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEv
aW5jbHVkZS9nKystdjMvaTY4Ni1wYy1saW51eC1nbnUvYml0cy9jKyt0aHJlYWRzLmgiIDEgMwoj
IDM5ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGlu
dXgtZ251L2JpdHMvYysrdGhyZWFkcy5oIiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMu
MS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAxIDMK
IyA0MCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxp
bnV4LWdudS9iaXRzL2MrK3RocmVhZHMuaCIgMiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9wdGhy
ZWFkLmgiIDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL3NjaGVkLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3Nj
aGVkLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjcgIi91
c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwoj
IDMwICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9z
Y2hlZC5oIiAxIDMKIyA0NyAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwpzdHJ1Y3Qgc2No
ZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsKCmV4dGVybiAiQyIgewoK
CgpleHRlcm4gaW50IGNsb25lIChpbnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lkICpfX2No
aWxkX3N0YWNrLCBpbnQgX19mbGFncywgdm9pZCAqX19hcmcpIHRocm93ICgpOwoKCgp9CiMgMzMg
Ii91c3IvaW5jbHVkZS9zY2hlZC5oIiAyIDMKCmV4dGVybiAiQyIgewoKCmV4dGVybiBpbnQgX19z
Y2hlZF9zZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
Kl9fcGFyYW0pIHRocm93ICgpOwoKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJhbSAoX19waWRfdCBf
X3BpZCwgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IF9fc2NoZWRfZ2V0cGFyYW0gKF9fcGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9w
YXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgc2NoZWRfZ2V0cGFyYW0gKF9fcGlk
X3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBfX3NjaGVkX3NldHNjaGVkdWxlciAoX19waWRfdCBfX3BpZCwgaW50IF9fcG9saWN5LCBf
X2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNjaGVkX3NldHNjaGVkdWxlciAoX19waWRfdCBfX3BpZCwgaW50IF9fcG9saWN5LCBfX2NvbnN0
IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgX19z
Y2hlZF9nZXRzY2hlZHVsZXIgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwpleHRlcm4gaW50IHNj
aGVkX2dldHNjaGVkdWxlciAoX19waWRfdCBfX3BpZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBf
X3NjaGVkX3lpZWxkICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzY2hlZF95aWVsZCAodm9p
ZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9tYXggKGludCBf
X2FsZ29yaXRobSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCAo
aW50IF9fYWxnb3JpdGhtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IF9fc2NoZWRfZ2V0X3ByaW9y
aXR5X21pbiAoaW50IF9fYWxnb3JpdGhtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzY2hlZF9nZXRf
cHJpb3JpdHlfbWluIChpbnQgX19hbGdvcml0aG0pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgX19z
Y2hlZF9ycl9nZXRfaW50ZXJ2YWwgKF9fcGlkX3QgX19waWQsIHN0cnVjdCB0aW1lc3BlYyAqX190
KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgKF9fcGlkX3QgX19w
aWQsIHN0cnVjdCB0aW1lc3BlYyAqX190KSB0aHJvdyAoKTsKCn0KIyAyMSAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMjggIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKCgojIDEgImluY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy
IDMKIyA5NSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7
CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9u
OwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9p
c2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoK
Cgp9OwoKCgoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB0
aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGRp
ZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApIHRocm93ICgpCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChzdHJ1Y3Qg
dG0gKl9fdHApIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpOwoK
CgoKCgpleHRlcm4gY2hhciAqc3RycHRpbWUgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNo
YXIgKl9fZm10LCBzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCgoKCgpleHRlcm4gc3RydWN0
IHRtICpnbXRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgoKZXh0ZXJu
IHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCk7
CgoKCgpleHRlcm4gc3RydWN0IHRtICpfX2dtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgdGhyb3cgKCk7CgpleHRl
cm4gc3RydWN0IHRtICpnbXRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1l
ciwgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpOwoKCgoKZXh0ZXJuIHN0cnVj
dCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsIHN0
cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqYXNj
dGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpj
dGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gY2hh
ciAqYXNjdGltZV9yIChfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLCBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29u
c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIHRo
cm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxp
Z2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVb
Ml07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lkKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBk
YXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgoKCmV4dGVybiBpbnQgc3RpbWUg
KF9fY29uc3QgdGltZV90ICpfX3doZW4pIHRocm93ICgpOwojIDIyOCAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwpleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRtICpfX3RwKSB0aHJvdyAoKTsK
CgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSB0aHJvdyAoKTsKCgpl
eHRlcm4gaW50IGR5c2l6ZSAoaW50IF9feWVhcikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBu
YW5vc2xlZXAgKF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLCBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSB0aHJvdyAoKTsKIyAyNTcgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpn
ZXRkYXRlIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKIyAyNzIgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX3N0cmluZywgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fcmVzYnVmcCkgdGhyb3cgKCk7
CgoKCgp9CiMgMjIgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNs
dWRlL3NpZ25hbC5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIg
MwoKZXh0ZXJuICJDIiB7CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAz
NCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3NpZ25hbC5o
IiAzCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKIyAzNjIgIi91c3IvaW5jbHVkZS9zaWdu
YWwuaCIgMwp9CiMgMjUgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3B0aHJlYWQu
aCIgMiAzCgoKZXh0ZXJuICJDIiB7CiMgNDkgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZW51
bQp7CiAgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUsCgogIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVE
Cgp9OwoKZW51bQp7CiAgUFRIUkVBRF9JTkhFUklUX1NDSEVELAoKICBQVEhSRUFEX0VYUExJQ0lU
X1NDSEVECgp9OwoKZW51bQp7CiAgUFRIUkVBRF9TQ09QRV9TWVNURU0sCgogIFBUSFJFQURfU0NP
UEVfUFJPQ0VTUwoKfTsKCmVudW0KewogIFBUSFJFQURfTVVURVhfRkFTVF9OUCwKICBQVEhSRUFE
X01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tfTlAKCiAgLAog
IFBUSFJFQURfTVVURVhfTk9STUFMID0gUFRIUkVBRF9NVVRFWF9GQVNUX05QLAogIFBUSFJFQURf
TVVURVhfUkVDVVJTSVZFID0gUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9N
VVRFWF9FUlJPUkNIRUNLID0gUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QLAogIFBUSFJFQURf
TVVURVhfREVGQVVMVCA9IFBUSFJFQURfTVVURVhfTk9STUFMCgp9OwoKZW51bQp7CiAgUFRIUkVB
RF9QUk9DRVNTX1BSSVZBVEUsCgogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKCn07CgoKZW51bQp7
CiAgUFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1JFQURFUl9OUCwKICBQVEhSRUFEX1JXTE9DS19QUkVG
RVJfV1JJVEVSX05QLAogIFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9OUkVDVVJTSVZF
X05QLAogIFBUSFJFQURfUldMT0NLX0RFRkFVTFRfTlAgPSBQVEhSRUFEX1JXTE9DS19QUkVGRVJf
V1JJVEVSX05QCn07CgoKCgoKCnN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlcgp7CiAgdm9p
ZCAoKl9fcm91dGluZSkgKHZvaWQgKik7CiAgdm9pZCAqX19hcmc7CiAgaW50IF9fY2FuY2VsdHlw
ZTsKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fcHJldjsKfTsKCgoKZW51bQp7
CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAoKICBQVEhSRUFEX0NBTkNFTF9ESVNBQkxFCgp9Owpl
bnVtCnsKICBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRCwKCiAgUFRIUkVBRF9DQU5DRUxfQVNZTkNI
Uk9OT1VTCgp9OwojIDE0MSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IHB0
aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fdGhyZWFkLCBfX2NvbnN0IHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsIHZvaWQgKigqX19zdGFydF9yb3V0aW5lKSAodm9pZCAqKSwgdm9pZCAqX19hcmcp
IHRocm93ICgpOwoKCgoKCmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmICh2b2lkKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfZXF1YWwgKHB0aHJlYWRfdCBfX3RocmVhZDEsIHB0
aHJlYWRfdCBfX3RocmVhZDIpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHB0aHJlYWRfZXhpdCAo
dm9pZCAqX19yZXR2YWwpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK
CgoKCmV4dGVybiBpbnQgcHRocmVhZF9qb2luIChwdGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhy
ZWFkX3JldHVybikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2RldGFjaCAocHRo
cmVhZF90IF9fdGgpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfaW5p
dCAocHRocmVhZF9hdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZGVzdHJveSAocHRocmVhZF9hdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfc2V0ZGV0YWNoc3RhdGUgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIs
IGludCBfX2RldGFjaHN0YXRlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJf
Z2V0ZGV0YWNoc3RhdGUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgaW50ICpfX2Rl
dGFjaHN0YXRlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRw
YXJhbSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
Kl9fcGFyYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBh
cmFtIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIHN0cnVjdCBzY2hlZF9wYXJhbSAq
X19wYXJhbSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNjaGVkcG9s
aWN5IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19wb2xpY3kpIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzY2hlZHBvbGljeSAoX19jb25zdCBwdGhyZWFkX2F0
dHJfdCAqX19hdHRyLCBpbnQgKl9fcG9saWN5KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19p
bmhlcml0KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNj
aGVkIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIGludCAqX19pbmhlcml0KSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUgKHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIsIGludCBfX3Njb3BlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0
cl9nZXRzY29wZSAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgKl9fc2NvcGUp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplIChwdGhy
ZWFkX2F0dHJfdCAqX19hdHRyLCBzaXplX3QgX19ndWFyZHNpemUpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IHB0aHJlYWRfYXR0cl9nZXRndWFyZHNpemUgKF9fY29uc3QgcHRocmVhZF9hdHRyX3Qg
Kl9fYXR0ciwgc2l6ZV90ICpfX2d1YXJkc2l6ZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50
IHB0aHJlYWRfYXR0cl9zZXRzdGFja2FkZHIgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIHZvaWQg
Kl9fc3RhY2thZGRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3Rh
Y2thZGRyIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsIHZvaWQgKipfX3N0YWNrYWRk
cikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplIChw
dGhyZWFkX2F0dHJfdCAqX19hdHRyLCBzaXplX3QgX19zdGFja3NpemUpIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzdGFja3NpemUgKF9fY29uc3QgcHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwgc2l6ZV90ICpfX3N0YWNrc2l6ZSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBp
bnQgcHRocmVhZF9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQg
X19wb2xpY3ksIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldHNjaGVkcGFyYW0gKHB0aHJlYWRfdCBfX3RhcmdldF90
aHJlYWQsIGludCAqX19wb2xpY3ksIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5ICh2b2lkKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y29uY3VycmVuY3kgKGludCBfX2xldmVsKSB0aHJv
dyAoKTsKCgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfaW5pdCAocHRocmVhZF9tdXRl
eF90ICpfX211dGV4LCBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fbXV0ZXhfYXR0cikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfaW5pdCAocHRocmVhZF9tdXRleF90
ICpfX211dGV4LCBfX2NvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fbXV0ZXhfYXR0cikgdGhy
b3cgKCk7CgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4X2Rlc3Ryb3kgKHB0aHJlYWRfbXV0
ZXhfdCAqX19tdXRleCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9kZXN0cm95
IChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgX19wdGhy
ZWFkX211dGV4X3RyeWxvY2sgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgp
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgX19wdGhyZWFkX211dGV4X2xvY2sgKHB0aHJlYWRfbXV0
ZXhfdCAqX19tdXRleCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9sb2NrIChw
dGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgX19wdGhyZWFk
X211dGV4X3VubG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSB0aHJvdyAoKTsKZXh0ZXJu
IGludCBwdGhyZWFkX211dGV4X3VubG9jayAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSB0aHJv
dyAoKTsKCgoKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQgKHB0aHJlYWRf
bXV0ZXhhdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0
dHJfaW5pdCAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IF9fcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAocHRocmVhZF9tdXRleGF0dHJfdCAqX19h
dHRyKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95IChwdGhy
ZWFkX211dGV4YXR0cl90ICpfX2F0dHIpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgX19wdGhy
ZWFkX211dGV4YXR0cl9zZXR0eXBlIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsIGludCBf
X2tpbmQpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlIChw
dGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIsIGludCBfX2tpbmQpIHRocm93ICgpOwoKCgpleHRl
cm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHR5cGUgKF9fY29uc3QgcHRocmVhZF9tdXRleGF0
dHJfdCAqX19hdHRyLCBpbnQgKl9fa2luZCkgdGhyb3cgKCk7CiMgMzIzICIvdXNyL2luY2x1ZGUv
cHRocmVhZC5oIiAzCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2luaXQgKHB0aHJlYWRfY29uZF90
ICpfX2NvbmQsIF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICpfX2NvbmRfYXR0cikgdGhyb3cg
KCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ryb3kgKHB0aHJlYWRfY29uZF90ICpf
X2NvbmQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX3NpZ25hbCAocHRocmVh
ZF9jb25kX3QgKl9fY29uZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfYnJv
YWRjYXN0IChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBw
dGhyZWFkX2NvbmRfd2FpdCAocHRocmVhZF9jb25kX3QgKl9fY29uZCwgcHRocmVhZF9tdXRleF90
ICpfX211dGV4KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3
YWl0IChwdGhyZWFkX2NvbmRfdCAqX19jb25kLCBwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsIF9f
Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX2Fic3RpbWUpIHRocm93ICgpOwoKCgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95IChwdGhyZWFkX2Nv
bmRhdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcnds
b2NrX2luaXQgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrLCBfX2NvbnN0IHB0aHJlYWRfcnds
b2NrYXR0cl90ICpfX2F0dHIpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2Nr
X2Rlc3Ryb3kgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSB0aHJvdyAoKTsKCgpleHRlcm4g
aW50IHB0aHJlYWRfcndsb2NrX3JkbG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrIChwdGhyZWFkX3J3
bG9ja190ICpfX3J3bG9jaykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja193
cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50
IHB0aHJlYWRfcndsb2NrX3RyeXdybG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spIHRo
cm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfdW5sb2NrIChwdGhyZWFkX3J3bG9j
a190ICpfX3J3bG9jaykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0
dHJfaW5pdCAocHRocmVhZF9yd2xvY2thdHRyX3QgKl9fYXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJu
IGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZGVzdHJveSAocHRocmVhZF9yd2xvY2thdHRyX3QgKl9f
YXR0cikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZ2V0cHNoYXJl
ZCAoX19jb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLCBpbnQgKl9fcHNoYXJlZCkg
dGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRwc2hhcmVkIChw
dGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyLCBpbnQgX19wc2hhcmVkKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBwdGhyZWFkX3J3bG9ja2F0dHJfZ2V0a2luZF9ucCAoX19jb25zdCBwdGhyZWFk
X3J3bG9ja2F0dHJfdCAqX19hdHRyLCBpbnQgKl9fcHJlZikgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHB0aHJlYWRfcndsb2NrYXR0cl9zZXRraW5kX25wIChwdGhyZWFkX3J3bG9ja2F0dHJfdCAq
X19hdHRyLCBpbnQgX19wcmVmKSB0aHJvdyAoKTsKIyA0MjAgIi91c3IvaW5jbHVkZS9wdGhyZWFk
LmgiIDMKZXh0ZXJuIGludCBfX3B0aHJlYWRfa2V5X2NyZWF0ZSAocHRocmVhZF9rZXlfdCAqX19r
ZXksIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgdGhyb3cgKCk7CgpleHRlcm4g
aW50IHB0aHJlYWRfa2V5X2NyZWF0ZSAocHRocmVhZF9rZXlfdCAqX19rZXksIHZvaWQgKCpfX2Rl
c3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9r
ZXlfZGVsZXRlIChwdGhyZWFkX2tleV90IF9fa2V5KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IF9f
cHRocmVhZF9zZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tleSwgX19jb25zdCB2b2lkICpf
X3BvaW50ZXIpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNwZWNpZmljIChwdGhy
ZWFkX2tleV90IF9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fcG9pbnRlcikgdGhyb3cgKCk7CgoKCmV4
dGVybiB2b2lkICpfX3B0aHJlYWRfZ2V0c3BlY2lmaWMgKHB0aHJlYWRfa2V5X3QgX19rZXkpIHRo
cm93ICgpOwpleHRlcm4gdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBf
X2tleSkgdGhyb3cgKCk7CiMgNDQ1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiBp
bnQgX19wdGhyZWFkX29uY2UgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwgdm9pZCAo
Kl9faW5pdF9yb3V0aW5lKSAodm9pZCkpIHRocm93ICgpOwoKZXh0ZXJuIGludCBwdGhyZWFkX29u
Y2UgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29udHJvbCwgdm9pZCAoKl9faW5pdF9yb3V0aW5l
KSAodm9pZCkpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3NldGNhbmNlbHN0
YXRlIChpbnQgX19zdGF0ZSwgaW50ICpfX29sZHN0YXRlKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX3NldGNhbmNlbHR5cGUgKGludCBfX3R5cGUsIGludCAqX19vbGR0eXBlKSB0aHJv
dyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfY2FuY2VsIChwdGhyZWFkX3QgX190aHJlYWQpIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgcHRocmVhZF90ZXN0Y2FuY2VsICh2b2lkKSB0aHJvdyAo
KTsKIyA0ODEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZXh0ZXJuIHZvaWQgX3B0aHJlYWRf
Y2xlYW51cF9wdXNoIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLCB2
b2lkICgqX19yb3V0aW5lKSAodm9pZCAqKSwgdm9pZCAqX19hcmcpIHRocm93ICgpOwojIDQ5MSAi
L3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3Bv
cCAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyICpfX2J1ZmZlciwgaW50IF9fZXhlY3V0
ZSkgdGhyb3cgKCk7CiMgNTAyICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCmV4dGVybiB2b2lk
IF9wdGhyZWFkX2NsZWFudXBfcHVzaF9kZWZlciAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVm
ZmVyICpfX2J1ZmZlciwgdm9pZCAoKl9fcm91dGluZSkgKHZvaWQgKiksIHZvaWQgKl9fYXJnKSB0
aHJvdyAoKTsKIyA1MTMgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZXh0ZXJuIHZvaWQgX3B0
aHJlYWRfY2xlYW51cF9wb3BfcmVzdG9yZSAoc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVy
ICpfX2J1ZmZlciwgaW50IF9fZXhlY3V0ZSkgdGhyb3cgKCk7CgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3NpZ3RocmVhZC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lndGhyZWFk
LmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgKGludCBfX2hvdywgX19jb25zdCBfX3Np
Z3NldF90ICpfX25ld21hc2ssIF9fc2lnc2V0X3QgKl9fb2xkbWFzaykgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgcHRocmVhZF9raWxsIChwdGhyZWFkX3QgX190aHJlYWQsIGludCBfX3NpZ25vKSB0
aHJvdyAoKTsKIyA1MTkgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwojIDUzNCAiL3Vzci9p
bmNsdWRlL3B0aHJlYWQuaCIgMwpleHRlcm4gaW50IF9fcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpf
X3ByZXBhcmUpICh2b2lkKSwgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksIHZvaWQgKCpfX2NoaWxk
KSAodm9pZCkpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpf
X3ByZXBhcmUpICh2b2lkKSwgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksIHZvaWQgKCpfX2NoaWxk
KSAodm9pZCkpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gdm9pZCBwdGhyZWFkX2tpbGxfb3RoZXJf
dGhyZWFkc19ucCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIF9fcHRocmVhZF9pbml0
aWFsaXplICh2b2lkKSB0aHJvdyAoKTsKCn0KIyA0NSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMu
MS9pbmNsdWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK3RocmVhZHMuaCIgMiAz
CiMgNjQgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvaTY4Ni1wYy1s
aW51eC1nbnUvYml0cy9jKyt0aHJlYWRzLmgiIDMKbmFtZXNwYWNlIHN0ZCB7CiAgdHlwZWRlZiBw
dGhyZWFkX211dGV4X3QgX19tdXRleHRfdHlwZTsKfQojIDM4ICIvaG9tZXMva2hhbi9sb2NhbC9n
Y2MtMy4xL2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMvYysraW8uaCIgMiAz
CgpuYW1lc3BhY2Ugc3RkCnsKCiAgdHlwZWRlZiBsb25nIHN0cmVhbW9mZjsKICB0eXBlZGVmIHB0
cmRpZmZfdCBzdHJlYW1zaXplOwoKICB0eXBlZGVmIHB0cmRpZmZfdCB3c3RyZWFtc2l6ZTsKCiAg
dHlwZWRlZiBmcG9zX3QgX19jX3N0cmVhbXBvczsKCgogIHR5cGVkZWYgX19tdXRleHRfdHlwZSBf
X2NfbG9jazsKCgoKCgoKCiAgdHlwZWRlZiBGSUxFIF9fY19maWxlX3R5cGU7CgoKICBzdHJ1Y3Qg
X19pb3NfZmxhZ3MKICB7CiAgICB0eXBlZGVmIHNob3J0IF9faW50X3R5cGU7CgogICAgc3RhdGlj
IGNvbnN0IF9faW50X3R5cGUgX1NfYm9vbGFscGhhID0gMHgwMDAxOwogICAgc3RhdGljIGNvbnN0
IF9faW50X3R5cGUgX1NfZGVjID0gMHgwMDAyOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUg
X1NfZml4ZWQgPSAweDAwMDQ7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19oZXggPSAw
eDAwMDg7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19pbnRlcm5hbCA9IDB4MDAxMDsK
ICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2xlZnQgPSAweDAwMjA7CiAgICBzdGF0aWMg
Y29uc3QgX19pbnRfdHlwZSBfU19vY3QgPSAweDAwNDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRf
dHlwZSBfU19yaWdodCA9IDB4MDA4MDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nj
aWVudGlmaWMgPSAweDAxMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19zaG93YmFz
ZSA9IDB4MDIwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3dwb2ludCA9IDB4
MDQwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3dwb3MgPSAweDA4MDA7CiAg
ICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19za2lwd3MgPSAweDEwMDA7CiAgICBzdGF0aWMg
Y29uc3QgX19pbnRfdHlwZSBfU191bml0YnVmID0gMHgyMDAwOwogICAgc3RhdGljIGNvbnN0IF9f
aW50X3R5cGUgX1NfdXBwZXJjYXNlID0gMHg0MDAwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5
cGUgX1NfYWRqdXN0ZmllbGQgPSAweDAwMjAgfCAweDAwODAgfCAweDAwMTA7CiAgICBzdGF0aWMg
Y29uc3QgX19pbnRfdHlwZSBfU19iYXNlZmllbGQgPSAweDAwMDIgfCAweDAwNDAgfCAweDAwMDg7
CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19mbG9hdGZpZWxkID0gMHgwMTAwIHwgMHgw
MDA0OwoKCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19iYWRiaXQgPSAweDAxOwogICAg
c3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfZW9mYml0ID0gMHgwMjsKICAgIHN0YXRpYyBjb25z
dCBfX2ludF90eXBlIF9TX2ZhaWxiaXQgPSAweDA0OwoKCiAgICBzdGF0aWMgY29uc3QgX19pbnRf
dHlwZSBfU19hcHAgPSAweDAxOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfYXRlID0g
MHgwMjsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2JpbiA9IDB4MDQ7CiAgICBzdGF0
aWMgY29uc3QgX19pbnRfdHlwZSBfU19pbiA9IDB4MDg7CiAgICBzdGF0aWMgY29uc3QgX19pbnRf
dHlwZSBfU19vdXQgPSAweDEwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1NfdHJ1bmMg
PSAweDIwOwogIH07Cn0KIyA0MCAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9iaXRzL2Zwb3MuaCIgMiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNs
dWRlL2crKy12My9iaXRzL3N0ZF9jd2NoYXIuaCIgMSAzCiMgMzkgIi9ob21lcy9raGFuL2xvY2Fs
L2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3djaGFyLmgiIDMKIyAxICIvaG9tZXMv
a2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2k2ODYtcGMtbGludXgtZ251L2JpdHMv
YysrY29uZmlnLmgiIDEgMwojIDQwICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUv
ZysrLXYzL2JpdHMvc3RkX2N3Y2hhci5oIiAyIDMKIyAxICIvaG9tZXMva2hhbi9sb2NhbC9nY2Mt
My4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMSAzCiMgNDEgIi9ob21lcy9r
aGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3djaGFyLmgiIDIgMwoj
IDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0
ZGlvLmgiIDEgMwojIDM5ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYz
L2JpdHMvc3RkX2NzdGRpby5oIiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNs
dWRlL2crKy12My9pNjg2LXBjLWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAxIDMKIyA0MCAi
L2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkaW8u
aCIgMiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRz
L3N0ZF9jc3RkYXJnLmgiIDEgMwojIDQwICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1
ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRhcmcuaCIgMwojIDEgImluY2x1ZGUvc3RkYXJnLmgiIDEg
MwojIDQxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3Rk
X2NzdGRhcmcuaCIgMiAzCgoKCgoKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6dmFfbGlzdDsK
fQojIDQxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3Rk
X2NzdGRpby5oIiAyIDMKIyAxICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysr
LXYzL2JpdHMvc3RkX2NzdGRkZWYuaCIgMSAzCiMgNDIgIi9ob21lcy9raGFuL2xvY2FsL2djYy0z
LjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGlvLmgiIDIgMwojIDQ0ICIvaG9tZXMva2hh
bi9sb2NhbC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRpby5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDQ1ICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4x
L2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NzdGRpby5oIiAyIDMKIyA5NCAiL2hvbWVzL2toYW4v
bG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jc3RkaW8uaCIgMwpuYW1lc3Bh
Y2Ugc3RkCnsKICB1c2luZyA6OkZJTEU7CiAgdXNpbmcgOjpmcG9zX3Q7CgogIGV4dGVybiAiQyIg
aW50IHJlbW92ZShjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBpbnQgcmVuYW1lKGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBGSUxFKiB0bXBmaWxlKHZvaWQpOwogIGV4
dGVybiAiQyIgY2hhciogdG1wbmFtKGNoYXIqKTsKICBleHRlcm4gIkMiIGludCBmY2xvc2UoRklM
RSopOwogIGV4dGVybiAiQyIgaW50IGZmbHVzaChGSUxFKik7CiAgZXh0ZXJuICJDIiBGSUxFKiBm
b3Blbihjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogIGV4dGVybiAiQyIgRklMRSogZnJlb3Bl
bihjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIEZJTEUqKTsKICBleHRlcm4gIkMiIHZvaWQgc2V0
YnVmKEZJTEUqLCBjaGFyKik7CiAgZXh0ZXJuICJDIiBpbnQgc2V0dmJ1ZihGSUxFKiwgY2hhcios
IGludCwgc2l6ZV90KTsKICBleHRlcm4gIkMiIGludCBmcHJpbnRmKEZJTEUqLCBjb25zdCBjaGFy
KiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBmc2NhbmYoRklMRSosIGNvbnN0IGNoYXIqLCAuLi4p
OwogIGV4dGVybiAiQyIgaW50IHByaW50Zihjb25zdCBjaGFyKiwgLi4uKTsKICBleHRlcm4gIkMi
IGludCBzY2FuZihjb25zdCBjaGFyKiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBzbnByaW50Zihj
aGFyICosIHNpemVfdCwgY29uc3QgY2hhciosIC4uLik7CiAgZXh0ZXJuICJDIiBpbnQgc3ByaW50
ZihjaGFyICosIGNvbnN0IGNoYXIqLCAuLi4pOwogIGV4dGVybiAiQyIgaW50IHNzY2FuZihjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIC4uLik7CiAgZXh0ZXJuICJDIiBpbnQgdmZwcmludGYoRklM
RSosIGNvbnN0IGNoYXIqLCB2YV9saXN0KTsKICBleHRlcm4gIkMiIGludCB2ZnNjYW5mKEZJTEUq
LCBjb25zdCBjaGFyKiwgdmFfbGlzdCk7CiAgZXh0ZXJuICJDIiBpbnQgdnByaW50Zihjb25zdCBj
aGFyKiwgdmFfbGlzdCk7CiAgZXh0ZXJuICJDIiBpbnQgdnNjYW5mKGNvbnN0IGNoYXIqLCB2YV9s
aXN0KTsKICBleHRlcm4gIkMiIGludCB2c25wcmludGYoY2hhciosIHNpemVfdCwgY29uc3QgY2hh
ciosIHZhX2xpc3QpOwogIGV4dGVybiAiQyIgaW50IHZzcHJpbnRmKGNoYXIqLCBjb25zdCBjaGFy
KiwgdmFfbGlzdCk7CiAgZXh0ZXJuICJDIiBpbnQgdnNzY2FuZihjb25zdCBjaGFyKiwgY29uc3Qg
Y2hhciosIHZhX2xpc3QpOwogIGV4dGVybiAiQyIgaW50IGZnZXRjKEZJTEUgKik7CiAgZXh0ZXJu
ICJDIiBjaGFyICpmZ2V0cyhjaGFyKiwgaW50LCBGSUxFKik7CiAgZXh0ZXJuICJDIiBpbnQgZnB1
dGMoaW50LCBGSUxFKik7CiAgZXh0ZXJuICJDIiBpbnQgZnB1dHMoY29uc3QgY2hhciosIEZJTEUq
KTsKICBleHRlcm4gIkMiIGludCBnZXRjKEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBnZXRjaGFy
KHZvaWQpOwogIGV4dGVybiAiQyIgY2hhciAqZ2V0cyhjaGFyKik7CiAgZXh0ZXJuICJDIiBpbnQg
cHV0YyhpbnQsIEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBwdXRjaGFyKGludCk7CiAgZXh0ZXJu
ICJDIiBpbnQgcHV0cyhjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBpbnQgdW5nZXRjKGludCwg
RklMRSopOwogIGV4dGVybiAiQyIgc2l6ZV90IGZyZWFkKHZvaWQqLCBzaXplX3QsIHNpemVfdCwg
RklMRSopOwogIGV4dGVybiAiQyIgc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkKiwgc2l6ZV90LCBz
aXplX3QsIEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBmZ2V0cG9zKEZJTEUqLCBmcG9zX3QqKTsK
ICBleHRlcm4gIkMiIGludCBmc2VlayhGSUxFKiwgbG9uZyBpbnQsIGludCk7CiAgZXh0ZXJuICJD
IiBpbnQgZnNldHBvcyhGSUxFKiwgY29uc3QgZnBvc190Kik7CiAgZXh0ZXJuICJDIiBsb25nIGlu
dCBmdGVsbChGSUxFKik7CiAgZXh0ZXJuICJDIiB2b2lkIHJld2luZChGSUxFKik7CiAgZXh0ZXJu
ICJDIiB2b2lkIGNsZWFyZXJyKEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBmZW9mKEZJTEUqKTsK
ICBleHRlcm4gIkMiIGludCBmZXJyb3IoRklMRSopOwogIGV4dGVybiAiQyIgdm9pZCBwZXJyb3Io
Y29uc3QgY2hhciopOwp9CiMgNDIgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9n
KystdjMvYml0cy9zdGRfY3djaGFyLmgiIDIgMwojIDEgIi9ob21lcy9raGFuL2xvY2FsL2djYy0z
LjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3N0ZGFyZy5oIiAxIDMKIyA0MyAiL2hvbWVzL2to
YW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jd2NoYXIuaCIgMiAzCiMg
NDYgIi9ob21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3dj
aGFyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4ICIvdXNy
L2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwoj
IDMyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKCgoKCiMgMSAiaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA1MyAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBjb3VudDsKICB3aW50X3QgdmFsdWU7
Cn0gbWJzdGF0ZV90OwojIDc3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwpzdHJ1Y3QgdG07CgoK
ZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIHdjaGFyX3QgKndjc2NweSAod2NoYXJfdCAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYykgdGhyb3cgKCk7CgoK
ZXh0ZXJuIHdjaGFyX3QgKndjc25jcHkgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2Nv
bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpl
eHRlcm4gd2NoYXJfdCAqd2NzY2F0ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSB0aHJvdyAoKTsKCgpleHRlcm4gd2NoYXJfdCAq
d2NzbmNhdCAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgd2NoYXJfdCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgd2NzY21w
IChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMikgdGhyb3cgKCk7
CgpleHRlcm4gaW50IHdjc25jbXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hh
cl90ICpfX3MyLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgd2NzY2FzZWNt
cCAoX19jb25zdCB3Y2hhcl90ICpfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fczIpIHRocm93ICgp
OwoKCmV4dGVybiBpbnQgd2NzbmNhc2VjbXAgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25z
dCB3Y2hhcl90ICpfX3MyLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3hsb2NhbGUuaCIgMSAzCiMgMTEzICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgpleHRl
cm4gaW50IF9fd2NzY2FzZWNtcF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2No
YXJfdCAqX19zMiwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBfX3dj
c25jYXNlY21wX2wgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3My
LCBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50
IHdjc2NvbGwgKF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyKSB0
aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCB3Y3N4ZnJtICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
czEsIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MyLCBzaXplX3QgX19uKSB0aHJvdyAo
KTsKIyAxMzYgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCmV4dGVybiBpbnQgX193Y3Njb2xsX2wg
KF9fY29uc3Qgd2NoYXJfdCAqX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3MyLCBfX2xvY2FsZV90
IF9fbG9jKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3QgX193Y3N4ZnJtX2wgKHdjaGFyX3Qg
Kl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xv
YykgdGhyb3cgKCk7CgoKCmV4dGVybiB3Y2hhcl90ICp3Y3NkdXAgKF9fY29uc3Qgd2NoYXJfdCAq
X19zKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHdjaGFyX3QgKndjc2NociAoX19jb25zdCB3Y2hhcl90
ICpfX3djcywgd2NoYXJfdCBfX3djKSB0aHJvdyAoKTsKCmV4dGVybiB3Y2hhcl90ICp3Y3NyY2hy
IChfX2NvbnN0IHdjaGFyX3QgKl9fd2NzLCB3Y2hhcl90IF9fd2MpIHRocm93ICgpOwoKCgpleHRl
cm4gc2l6ZV90IHdjc2NzcG4gKF9fY29uc3Qgd2NoYXJfdCAqX193Y3MsIF9fY29uc3Qgd2NoYXJf
dCAqX19yZWplY3QpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IHdjc3NwbiAoX19jb25zdCB3
Y2hhcl90ICpfX3djcywgX19jb25zdCB3Y2hhcl90ICpfX2FjY2VwdCkgdGhyb3cgKCk7CgpleHRl
cm4gd2NoYXJfdCAqd2NzcGJyayAoX19jb25zdCB3Y2hhcl90ICpfX3djcywgX19jb25zdCB3Y2hh
cl90ICpfX2FjY2VwdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHdjaGFyX3QgKndjc3N0ciAoX19jb25z
dCB3Y2hhcl90ICpfX2hheXN0YWNrLCBfX2NvbnN0IHdjaGFyX3QgKl9fbmVlZGxlKSB0aHJvdyAo
KTsKIyAxNzQgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCmV4dGVybiB3Y2hhcl90ICp3Y3N0b2sg
KHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19k
ZWxpbSwgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19wdHIpIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNp
emVfdCBfX3djc2xlbiAoX19jb25zdCB3Y2hhcl90ICpfX3MpIHRocm93ICgpOwpleHRlcm4gc2l6
ZV90IHdjc2xlbiAoX19jb25zdCB3Y2hhcl90ICpfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6
ZV90IHdjc25sZW4gKF9fY29uc3Qgd2NoYXJfdCAqX19zLCBzaXplX3QgX19tYXhsZW4pIHRocm93
ICgpOwoKCgoKZXh0ZXJuIHdjaGFyX3QgKndtZW1jaHIgKF9fY29uc3Qgd2NoYXJfdCAqX19zLCB3
Y2hhcl90IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCB3bWVtY21wIChf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zMSwgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fczIsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAqd21lbWNw
eSAod2NoYXJfdCAqX19yZXN0cmljdCBfX3MxLCBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3Qg
X19zMiwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gd2NoYXJfdCAqd21lbW1vdmUg
KHdjaGFyX3QgKl9fczEsIF9fY29uc3Qgd2NoYXJfdCAqX19zMiwgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKCmV4dGVybiB3Y2hhcl90ICp3bWVtc2V0ICh3Y2hhcl90ICpfX3MsIHdjaGFyX3QgX19j
LCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB3aW50X3QgYnRvd2MgKGludCBfX2Mp
IHRocm93ICgpOwoKCgpleHRlcm4gaW50IHdjdG9iICh3aW50X3QgX19jKSB0aHJvdyAoKTsKCgoK
ZXh0ZXJuIGludCBtYnNpbml0IChfX2NvbnN0IG1ic3RhdGVfdCAqX19wcykgdGhyb3cgKCk7CgoK
CmV4dGVybiBzaXplX3QgbWJydG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwgbWJzdGF0ZV90ICpfX3ApIHRocm93
ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCB3Y3J0b21iIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgd2No
YXJfdCBfX3djLCBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCmV4dGVy
biBzaXplX3QgX19tYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf
X24sIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCmV4dGVybiBzaXplX3Qg
bWJybGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLCBtYnN0YXRl
X3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIF9faW5saW5lIHNpemVf
dCBtYnJsZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYnN0YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhy
b3cgKCkKeyByZXR1cm4gKF9fcHMgIT0gX19udWxsCiAgICAgICAgICA/IG1icnRvd2MgKF9fbnVs
bCwgX19zLCBfX24sIF9fcHMpIDogX19tYnJsZW4gKF9fcywgX19uLCBfX251bGwpKTsgfQoKCgoK
ZXh0ZXJuIHNpemVfdCBtYnNydG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19kc3QsIF9fY29u
c3QgY2hhciAqKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX2xlbiwgbWJzdGF0ZV90ICpfX3Jl
c3RyaWN0IF9fcHMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBzaXplX3Qgd2NzcnRvbWJzIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZHN0LCBfX2NvbnN0IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fc3JjLCBz
aXplX3QgX19sZW4sIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgoK
CmV4dGVybiBzaXplX3QgbWJzbnJ0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwgX19j
b25zdCBjaGFyICoqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbm1jLCBzaXplX3QgX19sZW4s
IG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gc2l6ZV90
IHdjc25ydG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19kc3QsIF9fY29uc3Qgd2NoYXJfdCAqKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX253Yywgc2l6ZV90IF9fbGVuLCBtYnN0YXRlX3QgKl9f
cmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CiMgMjc3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwpl
eHRlcm4gaW50IHdjd2lkdGggKHdpbnRfdCBfX2MpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHdj
c3dpZHRoIChfX2NvbnN0IHdjaGFyX3QgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoK
ZXh0ZXJuIGRvdWJsZSB3Y3N0b2QgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIs
IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBmbG9h
dCB3Y3N0b2YgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSB3Y3N0b2xk
IChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqX19yZXN0cmlj
dCBfX2VuZHB0cikgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGludCB3Y3N0b2wgKF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCB3
Y3N0b3VsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgoKCgoKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgd2NzdG9xIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJp
Y3QgX19ucHRyLCB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhy
b3cgKCk7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHdj
c3RvdXEgKF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCgoKCgoKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgd2NzdG9sbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIHRo
cm93ICgpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3
Y3N0b3VsbCAoX19jb25zdCB3Y2hhcl90ICogX19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKIyAzNTUgIi91c3IvaW5j
bHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMzU2ICIv
dXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKCmV4dGVybiBsb25nIGludCBfX3djc3RvbF9sIChf
X2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGludCBfX3djc3RvdWxfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIF9f
bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fd2NzdG9sbF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3
Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xv
YykgdGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX193Y3N0b3VsbF9sIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hh
cl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykg
dGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBfX3djc3RvZF9sIChfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2Nh
bGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBfX3djc3RvZl9sIChfX2NvbnN0
IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBfX3dj
c3RvbGRfbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwgd2NoYXJfdCAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgoKCgoKZXh0
ZXJuIGRvdWJsZSBfX3djc3RvZF9pbnRlcm5hbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0
IF9fbnB0ciwgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSB0aHJv
dyAoKTsKCgpleHRlcm4gZmxvYXQgX193Y3N0b2ZfaW50ZXJuYWwgKF9fY29uc3Qgd2NoYXJfdCAq
X19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19n
cm91cCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fd2NzdG9sZF9pbnRlcm5hbCAo
X19jb25zdCB3Y2hhcl90ICogX19yZXN0cmljdCBfX25wdHIsIHdjaGFyX3QgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGxvbmcgaW50IF9f
d2NzdG9sX2ludGVybmFsIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLCB3Y2hh
cl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93
ICgpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3djc3RvdWxfaW50ZXJuYWwgKF9f
Y29uc3Qgd2NoYXJfdCAqIF9fcmVzdHJpY3QgX19ucHRyLCB3Y2hhcl90ICoqIF9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCgoKCl9fZXh0
ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsIChfX2NvbnN0
IHdjaGFyX3QgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKCgoKCgoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3djc3RvdWxsX2ludGVybmFsIChfX2Nv
bnN0IHdjaGFyX3QgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgd2NoYXJfdCAqKiBfX3Jlc3RyaWN0IF9f
ZW5kcHRyLCBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CiMgNDQzICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHdjc3RvZCAoX19jb25zdCB3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKQp7IHJldHVybiBfX3djc3Rv
ZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcg
aW50IHdjc3RvbCAoX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UpIHRocm93ICgpCnsgcmV0
dXJuIF9fd2NzdG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9CmV4
dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludCB3Y3N0b3VsIChfX2NvbnN0IHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7IHJldHVybiBfX3dj
c3RvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7IH0KCgpleHRlcm4g
X19pbmxpbmUgZmxvYXQgd2NzdG9mIChfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2Vu
ZHB0cikgdGhyb3cgKCkKeyByZXR1cm4gX193Y3N0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIDApOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSB3Y3N0b2xkIChfX2NvbnN0IHdj
aGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKQp7IHJldHVy
biBfX3djc3RvbGRfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOyB9CgoKX19leHRlbnNp
b25fXwpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludCB3Y3N0b3EgKF9fY29uc3Qgd2NoYXJf
dCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSkgdGhyb3cgKCkKeyByZXR1cm4gX193Y3N0b2xsX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9Cl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91cSAoX19jb25zdCB3Y2hh
cl90ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlKSB0aHJvdyAoKQp7IHJldHVy
biBfX3djc3RvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOyB9CgoK
CgoKCgpleHRlcm4gd2NoYXJfdCAqd2NwY3B5ICh3Y2hhcl90ICpfX2Rlc3QsIF9fY29uc3Qgd2No
YXJfdCAqX19zcmMpIHRocm93ICgpOwoKCgpleHRlcm4gd2NoYXJfdCAqd2NwbmNweSAod2NoYXJf
dCAqX19kZXN0LCBfX2NvbnN0IHdjaGFyX3QgKl9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsK
IyA1MDIgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCn0KIyA0NyAiL2hvbWVzL2toYW4vbG9jYWwv
Z2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL3N0ZF9jd2NoYXIuaCIgMiAzCiMgNjEgIi9ob21l
cy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3djaGFyLmgiIDMK
bmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjptYnN0YXRlX3Q7Cn0KIyAxMTMgIi9ob21lcy9raGFu
L2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY3djaGFyLmgiIDMKbmFtZXNw
YWNlIHN0ZAp7CiAgdXNpbmcgOjp3aW50X3Q7CgogIGV4dGVybiAiQyIgd2ludF90IGJ0b3djKGlu
dCk7CiAgZXh0ZXJuICJDIiBpbnQgd2N0b2Iod2ludF90KTsKICBleHRlcm4gIkMiIHdpbnRfdCBm
Z2V0d2MoRklMRSopOwogIGV4dGVybiAiQyIgd2NoYXJfdCogZmdldHdzKHdjaGFyX3QqLCBpbnQs
IEZJTEUqKTsKICBleHRlcm4gIkMiIHdpbnRfdCBmcHV0d2Mod2NoYXJfdCwgRklMRSopOwogIGV4
dGVybiAiQyIgaW50IGZwdXR3cyhjb25zdCB3Y2hhcl90KiwgRklMRSopOwogIGV4dGVybiAiQyIg
aW50IGZ3aWRlKEZJTEUqLCBpbnQpOwogIGV4dGVybiAiQyIgaW50IGZ3cHJpbnRmKEZJTEUqLCBj
b25zdCB3Y2hhcl90KiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBmd3NjYW5mKEZJTEUqLCBjb25z
dCB3Y2hhcl90KiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBzd3ByaW50Zih3Y2hhcl90Kiwgc2l6
ZV90LCBjb25zdCB3Y2hhcl90KiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBzd3NjYW5mKGNvbnN0
IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90KiwgLi4uKTsKICBleHRlcm4gIkMiIGludCB2Zndwcmlu
dGYoRklMRSosIGNvbnN0IHdjaGFyX3QqLCB2YV9saXN0KTsKICBleHRlcm4gIkMiIGludCB2Zndz
Y2FuZihGSUxFKiwgY29uc3Qgd2NoYXJfdCosIHZhX2xpc3QpOwogIGV4dGVybiAiQyIgaW50IHZz
d3ByaW50Zih3Y2hhcl90Kiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90KiwgdmFfbGlzdCk7CiAgZXh0
ZXJuICJDIiBpbnQgdnN3c2NhbmYoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCB2YV9s
aXN0KTsKICBleHRlcm4gIkMiIGludCB2d3ByaW50Zihjb25zdCB3Y2hhcl90KiwgdmFfbGlzdCk7
CiAgZXh0ZXJuICJDIiBpbnQgdndzY2FuZihjb25zdCB3Y2hhcl90KiwgdmFfbGlzdCk7CiAgZXh0
ZXJuICJDIiBpbnQgd3ByaW50Zihjb25zdCB3Y2hhcl90KiwgLi4uKTsKICBleHRlcm4gIkMiIGlu
dCB3c2NhbmYoY29uc3Qgd2NoYXJfdCosIC4uLik7CiAgZXh0ZXJuICJDIiB3aW50X3QgZ2V0d2Mo
RklMRSogc3RyZWFtKTsKICBleHRlcm4gIkMiIHdpbnRfdCBnZXR3Y2hhcih2b2lkKTsKICBleHRl
cm4gIkMiIGludCBtYnNpbml0KGNvbnN0IG1ic3RhdGVfdCopOwogIGV4dGVybiAiQyIgc2l6ZV90
IG1icmxlbihjb25zdCBjaGFyKiwgc2l6ZV90LCBtYnN0YXRlX3QqKTsKICBleHRlcm4gIkMiIHNp
emVfdCBtYnJ0b3djKHdjaGFyX3QqLCBjb25zdCBjaGFyKiwgc2l6ZV90LCBtYnN0YXRlX3QqKTsK
ICBleHRlcm4gIkMiIHNpemVfdCBtYnNydG93Y3Mod2NoYXJfdCosIGNvbnN0IGNoYXIqKiwgc2l6
ZV90LCBtYnN0YXRlX3QqKTsKICBleHRlcm4gIkMiIHNpemVfdCB3Y3NydG9tYnMoY2hhciosIGNv
bnN0IHdjaGFyX3QgKiosIHNpemVfdCwgbWJzdGF0ZV90Kik7CiAgZXh0ZXJuICJDIiB3aW50X3Qg
cHV0d2Mod2NoYXJfdCwgRklMRSopOwogIGV4dGVybiAiQyIgd2ludF90IHB1dHdjaGFyKHdjaGFy
X3QpOwogIGV4dGVybiAiQyIgd2ludF90IHVuZ2V0d2Mod2ludF90LCBGSUxFKik7CiAgZXh0ZXJu
ICJDIiBzaXplX3Qgd2NydG9tYihjaGFyKiwgd2NoYXJfdCwgbWJzdGF0ZV90Kik7CiAgZXh0ZXJu
ICJDIiBkb3VibGUgd2NzdG9kKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90KiopOwogIGV4dGVybiAi
QyIgZmxvYXQgd2NzdG9mKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90KiopOwogIGV4dGVybiAiQyIg
bG9uZyBpbnQgd2NzdG9sKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90KiosIGludCk7CiAgZXh0ZXJu
ICJDIiB1bnNpZ25lZCBsb25nIGludCB3Y3N0b3VsKGNvbnN0IHdjaGFyX3QqLCB3Y2hhcl90Kios
IGludCk7CiAgZXh0ZXJuICJDIiB3Y2hhcl90KiB3Y3NjcHkod2NoYXJfdCogczEsIGNvbnN0IHdj
aGFyX3QqKTsKICBleHRlcm4gIkMiIHdjaGFyX3QqIHdjc25jcHkod2NoYXJfdCosIGNvbnN0IHdj
aGFyX3QqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgd2NoYXJfdCogd2NzY2F0KHdjaGFyX3QqLCBj
b25zdCB3Y2hhcl90Kik7CiAgZXh0ZXJuICJDIiB3Y2hhcl90KiB3Y3NuY2F0KHdjaGFyX3QqLCBj
b25zdCB3Y2hhcl90Kiwgc2l6ZV90KTsKICBleHRlcm4gIkMiIGludCB3Y3NjbXAoY29uc3Qgd2No
YXJfdCosIGNvbnN0IHdjaGFyX3QqKTsKICBleHRlcm4gIkMiIGludCB3Y3Njb2xsKGNvbnN0IHdj
aGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7CiAgZXh0ZXJuICJDIiBpbnQgd2NzbmNtcChjb25zdCB3
Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7CiAgZXh0ZXJuICJDIiBzaXplX3Qgd2Nz
eGZybSh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7CiAgZXh0ZXJuICJDIiBjb25z
dCB3Y2hhcl90KiB3Y3NjaHIoY29uc3Qgd2NoYXJfdCosIHdjaGFyX3QpOwogIGlubGluZSB3Y2hh
cl90KgogIHdjc2Nocih3Y2hhcl90KiBfX3AsIHdjaGFyX3QgX19jKQogIHsKICAgIHJldHVybiBj
b25zdF9jYXN0PHdjaGFyX3QqPih3Y3NjaHIoY29uc3RfY2FzdDxjb25zdCB3Y2hhcl90Kj4oX19w
KSwgX19jKSk7CiAgfQogIGV4dGVybiAiQyIgc2l6ZV90IHdjc2NzcG4oY29uc3Qgd2NoYXJfdCos
IGNvbnN0IHdjaGFyX3QqKTsKICBleHRlcm4gIkMiIHNpemVfdCB3Y3NsZW4oY29uc3Qgd2NoYXJf
dCopOwogIGV4dGVybiAiQyIgY29uc3Qgd2NoYXJfdCogd2NzcGJyayhjb25zdCB3Y2hhcl90Kiwg
Y29uc3Qgd2NoYXJfdCopOwogIGlubGluZSB3Y2hhcl90KgogIHdjc3Bicmsod2NoYXJfdCogX19z
MSwgd2NoYXJfdCogX19zMikKICB7CiAgICByZXR1cm4gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2Nz
cGJyayhjb25zdF9jYXN0PGNvbnN0IHdjaGFyX3QqPihfX3MxKSwgX19zMikpOwogIH0KICBleHRl
cm4gIkMiIGNvbnN0IHdjaGFyX3QqIHdjc3JjaHIoY29uc3Qgd2NoYXJfdCosIHdjaGFyX3QpOwog
IGlubGluZSB3Y2hhcl90KgogIHdjc3JjaHIod2NoYXJfdCogX19wLCB3Y2hhcl90IF9fYykKICB7
CiAgICByZXR1cm4gY29uc3RfY2FzdDx3Y2hhcl90Kj4od2NzcmNocihjb25zdF9jYXN0PGNvbnN0
IHdjaGFyX3QqPihfX3ApLCBfX2MpKTsKICB9CiAgZXh0ZXJuICJDIiBzaXplX3Qgd2Nzc3BuKGNv
bnN0IHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kik7CiAgZXh0ZXJuICJDIiBjb25zdCB3Y2hhcl90
KiB3Y3NzdHIoY29uc3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqKTsKICBpbmxpbmUgd2NoYXJf
dCoKICB3Y3NzdHIod2NoYXJfdCogX19zMSwgd2NoYXJfdCogX19zMikKICB7CiAgICByZXR1cm4g
Y29uc3RfY2FzdDx3Y2hhcl90Kj4od2Nzc3RyKGNvbnN0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KF9f
czEpLCBfX3MyKSk7CiAgfQogIGV4dGVybiAiQyIgd2NoYXJfdCogd2NzdG9rKHdjaGFyX3QqLCBj
b25zdCB3Y2hhcl90Kiwgd2NoYXJfdCoqKTsKICBleHRlcm4gIkMiIGNvbnN0IHdjaGFyX3QqIHdt
ZW1jaHIoY29uc3Qgd2NoYXJfdCosIHdjaGFyX3QsIHNpemVfdCk7CiAgaW5saW5lIHdjaGFyX3Qq
CiAgd21lbWNocih3Y2hhcl90KiBfX3AsIHdjaGFyX3QgX19jLCBzaXplX3QgX19uKQogIHsKICAg
IHJldHVybiBjb25zdF9jYXN0PHdjaGFyX3QqPih3bWVtY2hyKGNvbnN0X2Nhc3Q8Y29uc3Qgd2No
YXJfdCo+KF9fcCksIF9fYywgX19uKSk7CiAgfQogIGV4dGVybiAiQyIgaW50IHdtZW1jbXAoY29u
c3Qgd2NoYXJfdCosIGNvbnN0IHdjaGFyX3QqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgd2NoYXJf
dCogd21lbWNweSh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7CiAgZXh0ZXJuICJD
IiB3Y2hhcl90KiB3bWVtbW92ZSh3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCosIHNpemVfdCk7CiAg
ZXh0ZXJuICJDIiB3Y2hhcl90KiB3bWVtc2V0KHdjaGFyX3QqLCB3Y2hhcl90LCBzaXplX3QpOwog
IGV4dGVybiAiQyIgc2l6ZV90IHdjc2Z0aW1lKHdjaGFyX3QqLCBzaXplX3QsIGNvbnN0IHdjaGFy
X3QqLCBjb25zdCBzdHJ1Y3QgdG0qKTsKfQoKCm5hbWVzcGFjZSBjOTkKewogIGV4dGVybiAiQyIg
bG9uZyBkb3VibGUgd2NzdG9sZChjb25zdCB3Y2hhcl90Kiwgd2NoYXJfdCoqKTsKICBleHRlcm4g
IkMiIGxvbmcgbG9uZyBpbnQgd2NzdG9sbChjb25zdCB3Y2hhcl90Kiwgd2NoYXJfdCoqLCBpbnQp
OwogIGV4dGVybiAiQyIgdW5zaWduZWQgbG9uZyBsb25nIGludCB3Y3N0b3VsbChjb25zdCB3Y2hh
cl90Kiwgd2NoYXJfdCoqLCBpbnQpOwp9CgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyBjOTk6Ondj
c3RvbGQ7CiAgdXNpbmcgYzk5Ojp3Y3N0b2xsOwogIHVzaW5nIGM5OTo6d2NzdG91bGw7Cn0KIyA0
MSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9iaXRzL2Zwb3MuaCIg
MiAzCgpuYW1lc3BhY2Ugc3RkCnsKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgogICAg
Y2xhc3MgZnBvcwogICAgewogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBfU3RhdGVUIF9fc3Rh
dGVfdHlwZTsKCiAgICBwcml2YXRlOgogICAgICBfX3N0YXRlX3R5cGUgX01fc3Q7CiAgICAgIHN0
cmVhbW9mZiBfTV9vZmY7CgogICAgcHVibGljOgogICAgICBfX3N0YXRlX3R5cGUKICAgICAgc3Rh
dGUoKSBjb25zdCB7IHJldHVybiBfTV9zdDsgfQoKICAgICAgdm9pZAogICAgICBzdGF0ZShfX3N0
YXRlX3R5cGUgX19zdCkgeyBfTV9zdCA9IF9fc3Q7IH0KCgoKICAgICAgZnBvcygpOiBfTV9zdChf
X3N0YXRlX3R5cGUoKSksIF9NX29mZihzdHJlYW1vZmYoKSkgeyB9CgogICAgICBmcG9zKHN0cmVh
bW9mZiBfX29mZiwgX19zdGF0ZV90eXBlIF9fc3QgPSBfX3N0YXRlX3R5cGUoKSkKICAgICAgOiBf
TV9zdChfX3N0KSwgX01fb2ZmKF9fb2ZmKSB7IH0KCiAgICAgIG9wZXJhdG9yIHN0cmVhbW9mZigp
IGNvbnN0IHsgcmV0dXJuIF9NX29mZjsgfQoKICAgICAgZnBvcyYKICAgICAgb3BlcmF0b3IrPShz
dHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmICs9IF9fb2ZmOyByZXR1cm4gKnRoaXM7IH0KCiAgICAg
IGZwb3MmCiAgICAgIG9wZXJhdG9yLT0oc3RyZWFtb2ZmIF9fb2ZmKSB7IF9NX29mZiAtPSBfX29m
ZjsgcmV0dXJuICp0aGlzOyB9CgogICAgICBmcG9zJgogICAgICBvcGVyYXRvcisoc3RyZWFtb2Zm
IF9fb2ZmKQogICAgICB7CiAgICAgICAgZnBvcyB0KCp0aGlzKTsKICAgICAgICByZXR1cm4gdCAr
PSBfX29mZjsKICAgICAgfQoKICAgICAgZnBvcyYKICAgICAgb3BlcmF0b3ItKHN0cmVhbW9mZiBf
X29mZikKICAgICAgewogICAgICAgIGZwb3MgdCgqdGhpcyk7CiAgICAgICAgcmV0dXJuIHQgLT0g
X19vZmY7CiAgICAgIH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBmcG9zJiBf
X3BvcykgY29uc3QKICAgICAgeyByZXR1cm4gX01fb2ZmID09IF9fcG9zLl9NX29mZjsgfQoKICAg
ICAgYm9vbAogICAgICBvcGVyYXRvciE9KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdAogICAgICB7
IHJldHVybiBfTV9vZmYgIT0gX19wb3MuX01fb2ZmOyB9CgogICAgICBzdHJlYW1vZmYKICAgICAg
X01fcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBfTV9vZmY7IH0KCiAgICAgIHZvaWQKICAgICAg
X01fcG9zaXRpb24oc3RyZWFtb2ZmIF9fb2ZmKSB7IF9NX29mZiA9IF9fb2ZmOyB9CiAgICB9OwoK
CiAgdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gc3RyZWFtcG9zOwoKICB0eXBlZGVmIGZwb3M8bWJz
dGF0ZV90PiB3c3RyZWFtcG9zOwoKfQojIDQyICIvaG9tZXMva2hhbi9sb2NhbC9nY2MtMy4xL2lu
Y2x1ZGUvZysrLXYzL2JpdHMvc3RkX2lvc2Z3ZC5oIiAyIDMKIyAxICIvaG9tZXMva2hhbi9sb2Nh
bC9nY2MtMy4xL2luY2x1ZGUvZysrLXYzL2JpdHMvZnVuY3RleGNlcHQuaCIgMSAzCiMgMzQgIi9o
b21lcy9raGFuL2xvY2FsL2djYy0zLjEvaW5jbHVkZS9nKystdjMvYml0cy9mdW5jdGV4Y2VwdC5o
IiAzCiMgMSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12My9leGNlcHRp
b25fZGVmaW5lcy5oIiAxIDMKIyAzNSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRl
L2crKy12My9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgogIHZvaWQK
ICBfX3Rocm93X2JhZF9leGNlcHRpb24odm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfYWxs
b2Modm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKTsKCiAgdm9pZAogIF9f
dGhyb3dfYmFkX3R5cGVpZCh2b2lkKTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNv
bnN0IGNoYXIqIF9fcyk7CgogIHZvaWQKICBfX3Rocm93X2RvbWFpbl9lcnJvcihjb25zdCBjaGFy
KiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19pbnZhbGlkX2FyZ3VtZW50KGNvbnN0IGNoYXIqIF9f
cyk7CgogIHZvaWQKICBfX3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2
b2lkCiAgX190aHJvd19vdXRfb2ZfcmFuZ2UoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9f
dGhyb3dfcnVudGltZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19y
YW5nZV9lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19vdmVyZmxvd19l
cnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd191bmRlcmZsb3dfZXJyb3Io
Y29uc3QgY2hhciogX19zKTsKCgogIHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNo
YXIqIF9fcyk7Cn0KIyA0MyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2crKy12
My9iaXRzL3N0ZF9pb3Nmd2QuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAg
IGNsYXNzIGJhc2ljX2lvczsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf
VHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWY7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJh
aXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBj
bGFzcyBiYXNpY19vc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1l
IF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lvc3RyZWFt
OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3Ry
YWl0czxfQ2hhclQ+LAogICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0No
YXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmdidWY7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgICAgICAg
dHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfaXN0
cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz
ID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxv
Y2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vc3RyaW5nc3RyZWFtOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+
LAogICAgICAgICAgIHR5cGVuYW1lIF9BbGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNs
YXNzIGJhc2ljX3N0cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19maWxl
YnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFy
X3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lmc3RyZWFtOwoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4K
ICAgIGNsYXNzIGJhc2ljX29mc3RyZWFtOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5
cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2Zz
dHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNo
YXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgaXN0cmVhbWJ1Zl9pdGVyYXRvcjsKCiAgdGVt
cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0No
YXJUPiA+CiAgICBjbGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yOwoKCgogIGNsYXNzIGlvc19iYXNl
OwoKCiAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhcj4gaW9zOwogIHR5cGVkZWYgYmFzaWNfc3RyZWFt
YnVmPGNoYXI+IHN0cmVhbWJ1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhcj4gaXN0cmVh
bTsKICB0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcj4gb3N0cmVhbTsKICB0eXBlZGVmIGJhc2lj
X2lvc3RyZWFtPGNoYXI+IGlvc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+
IHN0cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcj4gaXN0cmluZ3N0
cmVhbTsKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcj4gb3N0cmluZ3N0cmVhbTsK
ICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBzdHJpbmdzdHJlYW07CiAgdHlwZWRl
ZiBiYXNpY19maWxlYnVmPGNoYXI+IGZpbGVidWY7CiAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbTxj
aGFyPiBpZnN0cmVhbTsKICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtPGNoYXI+IG9mc3RyZWFtOwog
IHR5cGVkZWYgYmFzaWNfZnN0cmVhbTxjaGFyPiBmc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19p
b3M8d2NoYXJfdD4gd2lvczsKICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiB3c3Ry
ZWFtYnVmOwogIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiB3aXN0cmVhbTsKICB0eXBl
ZGVmIGJhc2ljX29zdHJlYW08d2NoYXJfdD4gd29zdHJlYW07CiAgdHlwZWRlZiBiYXNpY19pb3N0
cmVhbTx3Y2hhcl90PiB3aW9zdHJlYW07CiAgdHlwZWRlZiBiYXNpY19zdHJpbmdidWY8d2NoYXJf
dD4gd3N0cmluZ2J1ZjsKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08d2NoYXJfdD4gd2lz
dHJpbmdzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19vc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdvc3Ry
aW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nc3RyZWFtPHdjaGFyX3Q+IHdzdHJpbmdz
dHJlYW07CiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPHdjaGFyX3Q+IHdmaWxlYnVmOwogIHR5cGVk
ZWYgYmFzaWNfaWZzdHJlYW08d2NoYXJfdD4gd2lmc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb2Zz
dHJlYW08d2NoYXJfdD4gd29mc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfZnN0cmVhbTx3Y2hhcl90
PiB3ZnN0cmVhbTsKCn0KIyA0NSAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0ZF9jb21wbGV4LmgiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IGNsYXNzIGNvbXBsZXg7CiAgdGVtcGxhdGU8PiBjbGFzcyBjb21wbGV4
PGZsb2F0PjsKICB0ZW1wbGF0ZTw+IGNsYXNzIGNvbXBsZXg8ZG91YmxlPjsKICB0ZW1wbGF0ZTw+
IGNsYXNzIGNvbXBsZXg8bG9uZyBkb3VibGU+OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IF9U
cCBhYnMoY29uc3QgY29tcGxleDxfVHA+Jik7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBfVHAg
YXJnKGNvbnN0IGNvbXBsZXg8X1RwPiYpOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gX1RwIG5v
cm0oY29uc3QgY29tcGxleDxfVHA+Jik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY29tcGxl
eDxfVHA+IGNvbmooY29uc3QgY29tcGxleDxfVHA+Jik7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PiBjb21wbGV4PF9UcD4gcG9sYXIoY29uc3QgX1RwJiwgY29uc3QgX1RwJik7CgoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+IGNvbXBsZXg8X1RwPiBjb3MoY29uc3QgY29tcGxleDxfVHA+Jik7CiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBjb21wbGV4PF9UcD4gY29zaChjb25zdCBjb21wbGV4PF9U
cD4mKTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNvbXBsZXg8X1RwPiBleHAoY29uc3QgY29t
cGxleDxfVHA+Jik7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPiBjb21wbGV4PF9UcD4gbG9nKGNv
bnN0IGNvbXBsZXg8X1RwPiYpOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY29tcGxleDxfVHA+
IGxvZzEwKGNvbnN0IGNvbXBsZXg8X1RwPiYpOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY29t
cGxleDxfVHA+IHBvdyhjb25zdCBjb21wbGV4PF9UcD4mLCBpbnQpOwogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4gY29tcGxleDxfVHA+IHBvdyhjb25zdCBjb21wbGV4PF9UcD4mLCBjb25zdCBfVHAm
KTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNvbXBsZXg8X1RwPiBwb3coY29uc3QgY29tcGxl
eDxfVHA+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNvbXBsZXg8X1RwPiYpOwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY29tcGxleDxfVHA+IHBv
dyhjb25zdCBfVHAmLCBjb25zdCBjb21wbGV4PF9UcD4mKTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+IGNvbXBsZXg8X1RwPiBzaW4oY29uc3QgY29tcGxleDxfVHA+Jik7CiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPiBjb21wbGV4PF9UcD4gc2luaChjb25zdCBjb21wbGV4PF9UcD4mKTsKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+IGNvbXBsZXg8X1RwPiBzcXJ0KGNvbnN0IGNvbXBsZXg8X1RwPiYp
OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gY29tcGxleDxfVHA+IHRhbihjb25zdCBjb21wbGV4
PF9UcD4mKTsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+IGNvbXBsZXg8X1RwPiB0YW5oKGNvbnN0
IGNvbXBsZXg8X1RwPiYpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGNv
bXBsZXgKICAgIHsKICAgIHB1YmxpYzoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKCiAg
ICAgIGNvbXBsZXgoY29uc3QgX1RwJiA9IF9UcCgpLCBjb25zdCBfVHAgJiA9IF9UcCgpKTsKCgoK
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAgIGNvbXBsZXgoY29uc3QgY29tcGxl
eDxfVXA+Jik7CgogICAgICBfVHAgcmVhbCgpIGNvbnN0OwogICAgICBfVHAgaW1hZygpIGNvbnN0
OwoKICAgICAgY29tcGxleDxfVHA+JiBvcGVyYXRvcj0oY29uc3QgX1RwJik7CiAgICAgIGNvbXBs
ZXg8X1RwPiYgb3BlcmF0b3IrPShjb25zdCBfVHAmKTsKICAgICAgY29tcGxleDxfVHA+JiBvcGVy
YXRvci09KGNvbnN0IF9UcCYpOwogICAgICBjb21wbGV4PF9UcD4mIG9wZXJhdG9yKj0oY29uc3Qg
X1RwJik7CiAgICAgIGNvbXBsZXg8X1RwPiYgb3BlcmF0b3IvPShjb25zdCBfVHAmKTsKCgoKCiAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgICAgICBjb21wbGV4PF9UcD4mIG9wZXJhdG9y
PShjb25zdCBjb21wbGV4PF9VcD4mKTsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAg
ICAgIGNvbXBsZXg8X1RwPiYgb3BlcmF0b3IrPShjb25zdCBjb21wbGV4PF9VcD4mKTsKICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAgIGNvbXBsZXg8X1RwPiYgb3BlcmF0b3ItPShj
b25zdCBjb21wbGV4PF9VcD4mKTsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAg
IGNvbXBsZXg8X1RwPiYgb3BlcmF0b3IqPShjb25zdCBjb21wbGV4PF9VcD4mKTsKICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgX1VwPgogICAgICAgIGNvbXBsZXg8X1RwPiYgb3BlcmF0b3IvPShjb25z
dCBjb21wbGV4PF9VcD4mKTsKCiAgICBwcml2YXRlOgogICAgICBfVHAgX01fcmVhbCwgX01faW1h
ZzsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAgIGNv
bXBsZXg8X1RwPjo6cmVhbCgpIGNvbnN0IHsgcmV0dXJuIF9NX3JlYWw7IH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAgY29tcGxleDxfVHA+OjppbWFnKCkgY29u
c3QgeyByZXR1cm4gX01faW1hZzsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxp
bmUKICAgIGNvbXBsZXg8X1RwPjo6Y29tcGxleChjb25zdCBfVHAmIF9fciwgY29uc3QgX1RwJiBf
X2kpCiAgICA6IF9NX3JlYWwoX19yKSwgX01faW1hZyhfX2kpIHsgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+CiAgICBpbmxpbmUKICAgIGNvbXBs
ZXg8X1RwPjo6Y29tcGxleChjb25zdCBjb21wbGV4PF9VcD4mIF9feikKICAgIDogX01fcmVhbChf
X3oucmVhbCgpKSwgX01faW1hZyhfX3ouaW1hZygpKSB7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxleDxfVHA+OjpvcGVyYXRvcj0oY29uc3Qg
X1RwJiBfX3QpCiAgICB7CiAgICAgX01fcmVhbCA9IF9fdDsKICAgICBfTV9pbWFnID0gX1RwKCk7
CiAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg
aW5saW5lIGNvbXBsZXg8X1RwPiYKICAgIGNvbXBsZXg8X1RwPjo6b3BlcmF0b3IrPShjb25zdCBf
VHAmIF9fdCkKICAgIHsKICAgICAgX01fcmVhbCArPSBfX3Q7CiAgICAgIHJldHVybiAqdGhpczsK
ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PF9UcD4m
CiAgICBjb21wbGV4PF9UcD46Om9wZXJhdG9yLT0oY29uc3QgX1RwJiBfX3QpCiAgICB7CiAgICAg
IF9NX3JlYWwgLT0gX190OwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoKICB0ZW1wbGF0ZTx0
eXBlbmFtZSBfVHA+CiAgICBjb21wbGV4PF9UcD4mCiAgICBjb21wbGV4PF9UcD46Om9wZXJhdG9y
Kj0oY29uc3QgX1RwJiBfX3QpCiAgICB7CiAgICAgIF9NX3JlYWwgKj0gX190OwogICAgICBfTV9p
bWFnICo9IF9fdDsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxleDxfVHA+OjpvcGVyYXRvci89KGNv
bnN0IF9UcCYgX190KQogICAgewogICAgICBfTV9yZWFsIC89IF9fdDsKICAgICAgX01faW1hZyAv
PSBfX3Q7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw
PgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1VwPgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxl
eDxfVHA+OjpvcGVyYXRvcj0oY29uc3QgY29tcGxleDxfVXA+JiBfX3opCiAgICB7CiAgICAgIF9N
X3JlYWwgPSBfX3oucmVhbCgpOwogICAgICBfTV9pbWFnID0gX196LmltYWcoKTsKICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VwPgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxleDxfVHA+OjpvcGVyYXRv
cis9KGNvbnN0IGNvbXBsZXg8X1VwPiYgX196KQogICAgewogICAgICBfTV9yZWFsICs9IF9fei5y
ZWFsKCk7CiAgICAgIF9NX2ltYWcgKz0gX196LmltYWcoKTsKICAgICAgcmV0dXJuICp0aGlzOwog
ICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1Vw
PgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxleDxfVHA+OjpvcGVyYXRvci09KGNvbnN0IGNv
bXBsZXg8X1VwPiYgX196KQogICAgewogICAgICBfTV9yZWFsIC09IF9fei5yZWFsKCk7CiAgICAg
IF9NX2ltYWcgLT0gX196LmltYWcoKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4KICAgIGNvbXBs
ZXg8X1RwPiYKICAgIGNvbXBsZXg8X1RwPjo6b3BlcmF0b3IqPShjb25zdCBjb21wbGV4PF9VcD4m
IF9feikKICAgIHsKICAgICAgY29uc3QgX1RwIF9fciA9IF9NX3JlYWwgKiBfX3oucmVhbCgpIC0g
X01faW1hZyAqIF9fei5pbWFnKCk7CiAgICAgIF9NX2ltYWcgPSBfTV9yZWFsICogX196LmltYWco
KSArIF9NX2ltYWcgKiBfX3oucmVhbCgpOwogICAgICBfTV9yZWFsID0gX19yOwogICAgICByZXR1
cm4gKnRoaXM7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgdGVtcGxhdGU8
dHlwZW5hbWUgX1VwPgogICAgY29tcGxleDxfVHA+JgogICAgY29tcGxleDxfVHA+OjpvcGVyYXRv
ci89KGNvbnN0IGNvbXBsZXg8X1VwPiYgX196KQogICAgewogICAgICBjb25zdCBfVHAgX19yID0g
X01fcmVhbCAqIF9fei5yZWFsKCkgKyBfTV9pbWFnICogX196LmltYWcoKTsKICAgICAgY29uc3Qg
X1RwIF9fbiA9IG5vcm0oX196KTsKICAgICAgX01faW1hZyA9IChfTV9yZWFsICogX196LmltYWco
KSAtIF9NX2ltYWcgKiBfX3oucmVhbCgpKSAvIF9fbjsKICAgICAgX01fcmVhbCA9IF9fciAvIF9f
bjsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3IrKGNvbnN0IGNvbXBsZXg8X1RwPiYg
X194LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAo
X194KSArPSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBs
ZXg8X1RwPgogICAgb3BlcmF0b3IrKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBfVHAm
IF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSArPSBfX3k7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3IrKGNv
bnN0IF9UcCYgX194LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBs
ZXg8X1RwPiAoX195KSArPSBfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5s
aW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3ItKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBj
b25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAt
PSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1Rw
PgogICAgb3BlcmF0b3ItKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBfVHAmIF9feSkK
ICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAtPSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3ItKGNvbnN0IF9U
cCYgX194LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1Rw
PiAoX194KSAtPSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNv
bXBsZXg8X1RwPgogICAgb3BlcmF0b3IqKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBj
b21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAqPSBfX3k7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAg
b3BlcmF0b3IqKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBfVHAmIF9feSkKICAgIHsg
cmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAqPSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3IqKGNvbnN0IF9UcCYgX194
LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX195
KSAqPSBfX3g7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8
X1RwPgogICAgb3BlcmF0b3IvKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBjb21wbGV4
PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAvPSBfX3k7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0
b3IvKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBfVHAmIF9feSkKICAgIHsgcmV0dXJu
IGNvbXBsZXg8X1RwPiAoX194KSAvPSBfX3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgb3BlcmF0b3IvKGNvbnN0IF9UcCYgX194LCBjb25z
dCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPiAoX194KSAvPSBf
X3k7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgog
ICAgb3BlcmF0b3IrKGNvbnN0IGNvbXBsZXg8X1RwPiYgX194KQogICAgeyByZXR1cm4gX194OyB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PF9UcD4KICAgIG9w
ZXJhdG9yLShjb25zdCBjb21wbGV4PF9UcD4mIF9feCkKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1Rw
PigtX194LnJlYWwoKSwgLV9feC5pbWFnKCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBj
b25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5yZWFsKCkgPT0gX195LnJl
YWwoKSAmJiBfX3guaW1hZygpID09IF9feS5pbWFnKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPT0oY29uc3QgY29tcGxleDxfVHA+JiBf
X3gsIGNvbnN0IF9UcCYgX195KQogICAgeyByZXR1cm4gX194LnJlYWwoKSA9PSBfX3kgJiYgX194
LmltYWcoKSA9PSBfVHAoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUg
Ym9vbAogICAgb3BlcmF0b3I9PShjb25zdCBfVHAmIF9feCwgY29uc3QgY29tcGxleDxfVHA+JiBf
X3kpCiAgICB7IHJldHVybiBfX3ggPT0gX195LnJlYWwoKSAmJiBfVHAoKSA9PSBfX3kuaW1hZygp
OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRv
ciE9KGNvbnN0IGNvbXBsZXg8X1RwPiYgX194LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAg
IHsgcmV0dXJuIF9feC5yZWFsKCkgIT0gX195LnJlYWwoKSB8fCBfX3guaW1hZygpICE9IF9feS5p
bWFnKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGJvb2wKICAgIG9w
ZXJhdG9yIT0oY29uc3QgY29tcGxleDxfVHA+JiBfX3gsIGNvbnN0IF9UcCYgX195KQogICAgeyBy
ZXR1cm4gX194LnJlYWwoKSAhPSBfX3kgfHwgX194LmltYWcoKSAhPSBfVHAoKTsgfQoKICB0ZW1w
bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBf
VHAmIF9feCwgY29uc3QgY29tcGxleDxfVHA+JiBfX3kpCiAgICB7IHJldHVybiBfX3ggIT0gX195
LnJlYWwoKSB8fCBfVHAoKSAhPSBfX3kuaW1hZygpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U
cCwgdHlwZW5hbWUgX0NoYXJULCBjbGFzcyBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hh
clQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0
cz4mLCBjb21wbGV4PF9UcD4mKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf
Q2hhclQsIGNsYXNzIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m
CiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYsIGNvbnN0IGNv
bXBsZXg8X1RwPiYpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAog
ICAgcmVhbChjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsgcmV0dXJuIF9fei5yZWFsKCk7
IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAgaW1hZyhjb25z
dCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsgcmV0dXJuIF9fei5pbWFnKCk7IH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcAogICAgYWJzKGNvbnN0IGNvbXBsZXg8X1Rw
PiYgX196KQogICAgewogICAgICBfVHAgX194ID0gX196LnJlYWwoKTsKICAgICAgX1RwIF9feSA9
IF9fei5pbWFnKCk7CiAgICAgIGNvbnN0IF9UcCBfX3MgPSBhYnMoX194KSArIGFicyhfX3kpOwog
ICAgICBpZiAoX19zID09IF9UcCgpKQogICAgICAgIHJldHVybiBfX3M7CiAgICAgIF9feCAvPSBf
X3M7CiAgICAgIF9feSAvPSBfX3M7CiAgICAgIHJldHVybiBfX3MgKiBzcXJ0KF9feCAqIF9feCAr
IF9feSAqIF9feSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBf
VHAKICAgIGFyZyhjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsgcmV0dXJuIGF0YW4yKF9f
ei5pbWFnKCksIF9fei5yZWFsKCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlu
bGluZSBfVHAKICAgIG5vcm0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAgICAgIF9U
cCBfX3JlcyA9IGFicyhfX3opOwogICAgICByZXR1cm4gX19yZXMgKiBfX3JlczsKICAgIH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgcG9sYXIo
Y29uc3QgX1RwJiBfX3JobywgY29uc3QgX1RwJiBfX3RoZXRhKQogICAgeyByZXR1cm4gY29tcGxl
eDxfVHA+KF9fcmhvICogY29zKF9fdGhldGEpLCBfX3JobyAqIHNpbihfX3RoZXRhKSk7IH0KCiAg
dGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgY29uaihj
b25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsgcmV0dXJuIGNvbXBsZXg8X1RwPihfX3oucmVh
bCgpLCAtX196LmltYWcoKSk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSBjb21wbGV4PF9UcD4KICAgIGNvcyhjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAg
ICAgY29uc3QgX1RwIF9feCA9IF9fei5yZWFsKCk7CiAgICAgIGNvbnN0IF9UcCBfX3kgPSBfX3ou
aW1hZygpOwogICAgICByZXR1cm4gY29tcGxleDxfVHA+KGNvcyhfX3gpICogY29zaChfX3kpLCAt
c2luKF9feCkgKiBzaW5oKF9feSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg
ICBpbmxpbmUgY29tcGxleDxfVHA+CiAgICBjb3NoKGNvbnN0IGNvbXBsZXg8X1RwPiYgX196KQog
ICAgewogICAgICBjb25zdCBfVHAgX194ID0gX196LnJlYWwoKTsKICAgICAgY29uc3QgX1RwIF9f
eSA9IF9fei5pbWFnKCk7CiAgICAgIHJldHVybiBjb21wbGV4PF9UcD4oY29zaChfX3gpICogY29z
KF9feSksIHNpbmgoX194KSAqIHNpbihfX3kpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgZXhwKGNvbnN0IGNvbXBsZXg8X1RwPiYg
X196KQogICAgeyByZXR1cm4gcG9sYXIoZXhwKF9fei5yZWFsKCkpLCBfX3ouaW1hZygpKTsgfQoK
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxfVHA+CiAgICBsb2co
Y29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7IHJldHVybiBjb21wbGV4PF9UcD4obG9nKGFi
cyhfX3opKSwgYXJnKF9feikpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGlu
ZSBjb21wbGV4PF9UcD4KICAgIGxvZzEwKGNvbnN0IGNvbXBsZXg8X1RwPiYgX196KQogICAgeyBy
ZXR1cm4gbG9nKF9feikgLyBsb2coX1RwKDEwLjApKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
VHA+CiAgICBpbmxpbmUgY29tcGxleDxfVHA+CiAgICBzaW4oY29uc3QgY29tcGxleDxfVHA+JiBf
X3opCiAgICB7CiAgICAgIGNvbnN0IF9UcCBfX3ggPSBfX3oucmVhbCgpOwogICAgICBjb25zdCBf
VHAgX195ID0gX196LmltYWcoKTsKICAgICAgcmV0dXJuIGNvbXBsZXg8X1RwPihzaW4oX194KSAq
IGNvc2goX195KSwgY29zKF9feCkgKiBzaW5oKF9feSkpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxfVHA+CiAgICBzaW5oKGNvbnN0IGNvbXBsZXg8
X1RwPiYgX196KQogICAgewogICAgICBjb25zdCBfVHAgX194ID0gX196LnJlYWwoKTsKICAgICAg
Y29uc3QgX1RwIF9feSA9IF9fei5pbWFnKCk7CiAgICAgIHJldHVybiBjb21wbGV4PF9UcD4oc2lu
aChfX3gpICogY29zKF9feSksIGNvc2goX194KSAqIHNpbihfX3kpKTsKICAgIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgY29tcGxleDxfVHA+CiAgICBzcXJ0KGNvbnN0IGNvbXBsZXg8
X1RwPiYgX196KQogICAgewogICAgICBfVHAgX194ID0gX196LnJlYWwoKTsKICAgICAgX1RwIF9f
eSA9IF9fei5pbWFnKCk7CgogICAgICBpZiAoX194ID09IF9UcCgpKQogICAgICAgIHsKICAgICAg
ICAgIF9UcCBfX3QgPSBzcXJ0KGFicyhfX3kpIC8gMik7CiAgICAgICAgICByZXR1cm4gY29tcGxl
eDxfVHA+KF9fdCwgX195IDwgX1RwKCkgPyAtX190IDogX190KTsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICB7CiAgICAgICAgICBfVHAgX190ID0gc3FydCgyICogKGFicyhfX3opICsgYWJz
KF9feCkpKTsKICAgICAgICAgIF9UcCBfX3UgPSBfX3QgLyAyOwogICAgICAgICAgcmV0dXJuIF9f
eCA+IF9UcCgpCiAgICAgICAgICAgID8gY29tcGxleDxfVHA+KF9fdSwgX195IC8gX190KQogICAg
ICAgICAgICA6IGNvbXBsZXg8X1RwPihhYnMoX195KSAvIF9fdCwgX195IDwgX1RwKCkgPyAtX191
IDogX191KTsKICAgICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlu
bGluZSBjb21wbGV4PF9UcD4KICAgIHRhbihjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsK
ICAgICAgcmV0dXJuIHNpbihfX3opIC8gY29zKF9feik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu
YW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PF9UcD4KICAgIHRhbmgoY29uc3QgY29tcGxleDxf
VHA+JiBfX3opCiAgICB7CiAgICAgIHJldHVybiBzaW5oKF9feikgLyBjb3NoKF9feik7CiAgICB9
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PF9UcD4KICAgIHBv
dyhjb25zdCBjb21wbGV4PF9UcD4mIF9feiwgaW50IF9fbikKICAgIHsKICAgICAgcmV0dXJuIF9f
cG93X2hlbHBlcihfX3osIF9fbik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg
IGlubGluZSBjb21wbGV4PF9UcD4KICAgIHBvdyhjb25zdCBjb21wbGV4PF9UcD4mIF9feCwgY29u
c3QgX1RwJiBfX3kpCiAgICB7CiAgICAgIHJldHVybiBleHAoX195ICogbG9nKF9feCkpOwogICAg
fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxfVHA+CiAgICBw
b3coY29uc3QgY29tcGxleDxfVHA+JiBfX3gsIGNvbnN0IGNvbXBsZXg8X1RwPiYgX195KQogICAg
ewogICAgICByZXR1cm4gZXhwKF9feSAqIGxvZyhfX3gpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8X1RwPgogICAgcG93KGNvbnN0IF9UcCYgX194
LCBjb25zdCBjb21wbGV4PF9UcD4mIF9feSkKICAgIHsKICAgICAgcmV0dXJuIGV4cChfX3kgKiBs
b2coX194KSk7CiAgICB9CgoKCiAgdGVtcGxhdGU8PiBjbGFzcyBjb21wbGV4PGZsb2F0PgogIHsK
ICBwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IHZhbHVlX3R5cGU7CgogICAgY29tcGxleChmbG9h
dCA9IDAuMGYsIGZsb2F0ID0gMC4wZik7CgoKCiAgICBleHBsaWNpdCBjb21wbGV4KGNvbnN0IGNv
bXBsZXg8ZG91YmxlPiYpOwogICAgZXhwbGljaXQgY29tcGxleChjb25zdCBjb21wbGV4PGxvbmcg
ZG91YmxlPiYpOwoKICAgIGZsb2F0IHJlYWwoKSBjb25zdDsKICAgIGZsb2F0IGltYWcoKSBjb25z
dDsKCiAgICBjb21wbGV4PGZsb2F0PiYgb3BlcmF0b3I9KGZsb2F0KTsKICAgIGNvbXBsZXg8Zmxv
YXQ+JiBvcGVyYXRvcis9KGZsb2F0KTsKICAgIGNvbXBsZXg8ZmxvYXQ+JiBvcGVyYXRvci09KGZs
b2F0KTsKICAgIGNvbXBsZXg8ZmxvYXQ+JiBvcGVyYXRvcio9KGZsb2F0KTsKICAgIGNvbXBsZXg8
ZmxvYXQ+JiBvcGVyYXRvci89KGZsb2F0KTsKCgoKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+
CiAgICAgIGNvbXBsZXg8ZmxvYXQ+Jm9wZXJhdG9yPShjb25zdCBjb21wbGV4PF9UcD4mKTsKICAg
IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgY29tcGxleDxmbG9hdD4mIG9wZXJhdG9yKz0o
Y29uc3QgY29tcGxleDxfVHA+Jik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBfVHA+CiAgICAgIGNvbXBs
ZXg8ZmxvYXQ+JiBvcGVyYXRvci09KGNvbnN0IGNvbXBsZXg8X1RwPiYpOwogICAgdGVtcGxhdGU8
Y2xhc3MgX1RwPgogICAgICBjb21wbGV4PGZsb2F0PiYgb3BlcmF0b3IqPShjb25zdCBjb21wbGV4
PF9UcD4mKTsKICAgIHRlbXBsYXRlPGNsYXNzIF9UcD4KICAgICAgY29tcGxleDxmbG9hdD4mb3Bl
cmF0b3IvPShjb25zdCBjb21wbGV4PF9UcD4mKTsKCiAgcHJpdmF0ZToKICAgIHR5cGVkZWYgX19j
b21wbGV4X18gZmxvYXQgX0NvbXBsZXhUOwogICAgX0NvbXBsZXhUIF9NX3ZhbHVlOwoKICAgIGNv
bXBsZXgoX0NvbXBsZXhUIF9feikgOiBfTV92YWx1ZShfX3opIHsgfQoKICAgIGZyaWVuZCBjbGFz
cyBjb21wbGV4PGRvdWJsZT47CiAgICBmcmllbmQgY2xhc3MgY29tcGxleDxsb25nIGRvdWJsZT47
CiAgfTsKCiAgaW5saW5lIGZsb2F0CiAgY29tcGxleDxmbG9hdD46OnJlYWwoKSBjb25zdAogIHsg
cmV0dXJuIF9fcmVhbF9fIF9NX3ZhbHVlOyB9CgogIGlubGluZSBmbG9hdAogIGNvbXBsZXg8Zmxv
YXQ+OjppbWFnKCkgY29uc3QKICB7IHJldHVybiBfX2ltYWdfXyBfTV92YWx1ZTsgfQoKICBpbmxp
bmUKICBjb21wbGV4PGZsb2F0Pjo6Y29tcGxleChmbG9hdCByLCBmbG9hdCBpKQogIHsKICAgIF9f
cmVhbF9fIF9NX3ZhbHVlID0gcjsKICAgIF9faW1hZ19fIF9NX3ZhbHVlID0gaTsKICB9CgogIGlu
bGluZSBjb21wbGV4PGZsb2F0PiYKICBjb21wbGV4PGZsb2F0Pjo6b3BlcmF0b3I9KGZsb2F0IF9f
ZikKICB7CiAgICBfX3JlYWxfXyBfTV92YWx1ZSA9IF9fZjsKICAgIF9faW1hZ19fIF9NX3ZhbHVl
ID0gMC4wZjsKICAgIHJldHVybiAqdGhpczsKICB9CgogIGlubGluZSBjb21wbGV4PGZsb2F0PiYK
ICBjb21wbGV4PGZsb2F0Pjo6b3BlcmF0b3IrPShmbG9hdCBfX2YpCiAgewogICAgX19yZWFsX18g
X01fdmFsdWUgKz0gX19mOwogICAgcmV0dXJuICp0aGlzOwogIH0KCiAgaW5saW5lIGNvbXBsZXg8
ZmxvYXQ+JgogIGNvbXBsZXg8ZmxvYXQ+OjpvcGVyYXRvci09KGZsb2F0IF9fZikKICB7CiAgICBf
X3JlYWxfXyBfTV92YWx1ZSAtPSBfX2Y7CiAgICByZXR1cm4gKnRoaXM7CiAgfQoKICBpbmxpbmUg
Y29tcGxleDxmbG9hdD4mCiAgY29tcGxleDxmbG9hdD46Om9wZXJhdG9yKj0oZmxvYXQgX19mKQog
IHsKICAgIF9NX3ZhbHVlICo9IF9fZjsKICAgIHJldHVybiAqdGhpczsKICB9CgogIGlubGluZSBj
b21wbGV4PGZsb2F0PiYKICBjb21wbGV4PGZsb2F0Pjo6b3BlcmF0b3IvPShmbG9hdCBfX2YpCiAg
ewogICAgX01fdmFsdWUgLz0gX19mOwogICAgcmV0dXJuICp0aGlzOwogIH0KCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX1RwPgogIGlubGluZSBjb21wbGV4PGZsb2F0PiYKICBjb21wbGV4PGZsb2F0Pjo6
b3BlcmF0b3I9KGNvbnN0IGNvbXBsZXg8X1RwPiYgX196KQogIHsKICAgIF9fcmVhbF9fIF9NX3Zh
bHVlID0gX196LnJlYWwoKTsKICAgIF9faW1hZ19fIF9NX3ZhbHVlID0gX196LmltYWcoKTsKICAg
IHJldHVybiAqdGhpczsKICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICBpbmxpbmUgY29t
cGxleDxmbG9hdD4mCiAgY29tcGxleDxmbG9hdD46Om9wZXJhdG9yKz0oY29uc3QgY29tcGxleDxf
VHA+JiBfX3opCiAgewogICAgX19yZWFsX18gX01fdmFsdWUgKz0gX196LnJlYWwoKTsKICAgIF9f
aW1hZ19fIF9NX3ZhbHVlICs9IF9fei5pbWFnKCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQoKICB0
ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxmbG9hdD4mCiAgICBjb21w
bGV4PGZsb2F0Pjo6b3BlcmF0b3ItPShjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAg
ICBfX3JlYWxfXyBfTV92YWx1ZSAtPSBfX3oucmVhbCgpOwogICAgIF9faW1hZ19fIF9NX3ZhbHVl
IC09IF9fei5pbWFnKCk7CiAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxmbG9hdD4mCiAgICBjb21wbGV4PGZsb2F0Pjo6
b3BlcmF0b3IqPShjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAgICAgX0NvbXBsZXhU
IF9fdDsKICAgICAgX19yZWFsX18gX190ID0gX196LnJlYWwoKTsKICAgICAgX19pbWFnX18gX190
ID0gX196LmltYWcoKTsKICAgICAgX01fdmFsdWUgKj0gX190OwogICAgICByZXR1cm4gKnRoaXM7
CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PGZsb2F0
PiYKICAgIGNvbXBsZXg8ZmxvYXQ+OjpvcGVyYXRvci89KGNvbnN0IGNvbXBsZXg8X1RwPiYgX196
KQogICAgewogICAgICBfQ29tcGxleFQgX190OwogICAgICBfX3JlYWxfXyBfX3QgPSBfX3oucmVh
bCgpOwogICAgICBfX2ltYWdfXyBfX3QgPSBfX3ouaW1hZygpOwogICAgICBfTV92YWx1ZSAvPSBf
X3Q7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgoKICB0ZW1wbGF0ZTw+IGNsYXNzIGNvbXBs
ZXg8ZG91YmxlPgogIHsKICBwdWJsaWM6CiAgICB0eXBlZGVmIGRvdWJsZSB2YWx1ZV90eXBlOwoK
ICAgIGNvbXBsZXgoZG91YmxlID0wLjAsIGRvdWJsZSA9MC4wKTsKCgoKICAgIGNvbXBsZXgoY29u
c3QgY29tcGxleDxmbG9hdD4mKTsKICAgIGV4cGxpY2l0IGNvbXBsZXgoY29uc3QgY29tcGxleDxs
b25nIGRvdWJsZT4mKTsKCiAgICBkb3VibGUgcmVhbCgpIGNvbnN0OwogICAgZG91YmxlIGltYWco
KSBjb25zdDsKCiAgICBjb21wbGV4PGRvdWJsZT4mIG9wZXJhdG9yPShkb3VibGUpOwogICAgY29t
cGxleDxkb3VibGU+JiBvcGVyYXRvcis9KGRvdWJsZSk7CiAgICBjb21wbGV4PGRvdWJsZT4mIG9w
ZXJhdG9yLT0oZG91YmxlKTsKICAgIGNvbXBsZXg8ZG91YmxlPiYgb3BlcmF0b3IqPShkb3VibGUp
OwogICAgY29tcGxleDxkb3VibGU+JiBvcGVyYXRvci89KGRvdWJsZSk7CgoKCiAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfVHA+CiAgICAgIGNvbXBsZXg8ZG91YmxlPiYgb3BlcmF0b3I9KGNvbnN0IGNv
bXBsZXg8X1RwPiYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgICBjb21wbGV4PGRv
dWJsZT4mIG9wZXJhdG9yKz0oY29uc3QgY29tcGxleDxfVHA+Jik7CiAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfVHA+CiAgICAgIGNvbXBsZXg8ZG91YmxlPiYgb3BlcmF0b3ItPShjb25zdCBjb21wbGV4
PF9UcD4mKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgY29tcGxleDxkb3VibGU+
JiBvcGVyYXRvcio9KGNvbnN0IGNvbXBsZXg8X1RwPiYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgICBjb21wbGV4PGRvdWJsZT4mIG9wZXJhdG9yLz0oY29uc3QgY29tcGxleDxfVHA+
Jik7CgogIHByaXZhdGU6CiAgICB0eXBlZGVmIF9fY29tcGxleF9fIGRvdWJsZSBfQ29tcGxleFQ7
CiAgICBfQ29tcGxleFQgX01fdmFsdWU7CgogICAgY29tcGxleChfQ29tcGxleFQgX196KSA6IF9N
X3ZhbHVlKF9feikgeyB9CgogICAgZnJpZW5kIGNsYXNzIGNvbXBsZXg8ZmxvYXQ+OwogICAgZnJp
ZW5kIGNsYXNzIGNvbXBsZXg8bG9uZyBkb3VibGU+OwogIH07CgogIGlubGluZSBkb3VibGUKICBj
b21wbGV4PGRvdWJsZT46OnJlYWwoKSBjb25zdAogIHsgcmV0dXJuIF9fcmVhbF9fIF9NX3ZhbHVl
OyB9CgogIGlubGluZSBkb3VibGUKICBjb21wbGV4PGRvdWJsZT46OmltYWcoKSBjb25zdAogIHsg
cmV0dXJuIF9faW1hZ19fIF9NX3ZhbHVlOyB9CgogIGlubGluZQogIGNvbXBsZXg8ZG91YmxlPjo6
Y29tcGxleChkb3VibGUgX19yLCBkb3VibGUgX19pKQogIHsKICAgIF9fcmVhbF9fIF9NX3ZhbHVl
ID0gX19yOwogICAgX19pbWFnX18gX01fdmFsdWUgPSBfX2k7CiAgfQoKICBpbmxpbmUgY29tcGxl
eDxkb3VibGU+JgogIGNvbXBsZXg8ZG91YmxlPjo6b3BlcmF0b3I9KGRvdWJsZSBfX2QpCiAgewog
ICAgX19yZWFsX18gX01fdmFsdWUgPSBfX2Q7CiAgICBfX2ltYWdfXyBfTV92YWx1ZSA9IDAuMDsK
ICAgIHJldHVybiAqdGhpczsKICB9CgogIGlubGluZSBjb21wbGV4PGRvdWJsZT4mCiAgY29tcGxl
eDxkb3VibGU+OjpvcGVyYXRvcis9KGRvdWJsZSBfX2QpCiAgewogICAgX19yZWFsX18gX01fdmFs
dWUgKz0gX19kOwogICAgcmV0dXJuICp0aGlzOwogIH0KCiAgaW5saW5lIGNvbXBsZXg8ZG91Ymxl
PiYKICBjb21wbGV4PGRvdWJsZT46Om9wZXJhdG9yLT0oZG91YmxlIF9fZCkKICB7CiAgICBfX3Jl
YWxfXyBfTV92YWx1ZSAtPSBfX2Q7CiAgICByZXR1cm4gKnRoaXM7CiAgfQoKICBpbmxpbmUgY29t
cGxleDxkb3VibGU+JgogIGNvbXBsZXg8ZG91YmxlPjo6b3BlcmF0b3IqPShkb3VibGUgX19kKQog
IHsKICAgIF9NX3ZhbHVlICo9IF9fZDsKICAgIHJldHVybiAqdGhpczsKICB9CgogIGlubGluZSBj
b21wbGV4PGRvdWJsZT4mCiAgY29tcGxleDxkb3VibGU+OjpvcGVyYXRvci89KGRvdWJsZSBfX2Qp
CiAgewogICAgX01fdmFsdWUgLz0gX19kOwogICAgcmV0dXJuICp0aGlzOwogIH0KCiAgdGVtcGxh
dGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8ZG91YmxlPiYKICAgIGNvbXBsZXg8
ZG91YmxlPjo6b3BlcmF0b3I9KGNvbnN0IGNvbXBsZXg8X1RwPiYgX196KQogICAgewogICAgICBf
X3JlYWxfXyBfTV92YWx1ZSA9IF9fei5yZWFsKCk7CiAgICAgIF9faW1hZ19fIF9NX3ZhbHVlID0g
X196LmltYWcoKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBfVHA+CiAgICBpbmxpbmUgY29tcGxleDxkb3VibGU+JgogICAgY29tcGxleDxkb3VibGU+Ojpv
cGVyYXRvcis9KGNvbnN0IGNvbXBsZXg8X1RwPiYgX196KQogICAgewogICAgICBfX3JlYWxfXyBf
TV92YWx1ZSArPSBfX3oucmVhbCgpOwogICAgICBfX2ltYWdfXyBfTV92YWx1ZSArPSBfX3ouaW1h
ZygpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K
ICAgIGlubGluZSBjb21wbGV4PGRvdWJsZT4mCiAgICBjb21wbGV4PGRvdWJsZT46Om9wZXJhdG9y
LT0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAgICAgIF9fcmVhbF9fIF9NX3ZhbHVl
IC09IF9fei5yZWFsKCk7CiAgICAgIF9faW1hZ19fIF9NX3ZhbHVlIC09IF9fei5pbWFnKCk7CiAg
ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5s
aW5lIGNvbXBsZXg8ZG91YmxlPiYKICAgIGNvbXBsZXg8ZG91YmxlPjo6b3BlcmF0b3IqPShjb25z
dCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAgICAgX0NvbXBsZXhUIF9fdDsKICAgICAgX19y
ZWFsX18gX190ID0gX196LnJlYWwoKTsKICAgICAgX19pbWFnX18gX190ID0gX196LmltYWcoKTsK
ICAgICAgX01fdmFsdWUgKj0gX190OwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBjb21wbGV4PGRvdWJsZT4mCiAgICBjb21wbGV4
PGRvdWJsZT46Om9wZXJhdG9yLz0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAgICAg
IF9Db21wbGV4VCBfX3Q7CiAgICAgIF9fcmVhbF9fIF9fdCA9IF9fei5yZWFsKCk7CiAgICAgIF9f
aW1hZ19fIF9fdCA9IF9fei5pbWFnKCk7CiAgICAgIF9NX3ZhbHVlIC89IF9fdDsKICAgICAgcmV0
dXJuICp0aGlzOwogICAgfQoKCgogIHRlbXBsYXRlPD4gY2xhc3MgY29tcGxleDxsb25nIGRvdWJs
ZT4KICB7CiAgcHVibGljOgogICAgdHlwZWRlZiBsb25nIGRvdWJsZSB2YWx1ZV90eXBlOwoKICAg
IGNvbXBsZXgobG9uZyBkb3VibGUgPSAwLjBMLCBsb25nIGRvdWJsZSA9IDAuMEwpOwoKCgogICAg
Y29tcGxleChjb25zdCBjb21wbGV4PGZsb2F0PiYpOwogICAgY29tcGxleChjb25zdCBjb21wbGV4
PGRvdWJsZT4mKTsKCiAgICBsb25nIGRvdWJsZSByZWFsKCkgY29uc3Q7CiAgICBsb25nIGRvdWJs
ZSBpbWFnKCkgY29uc3Q7CgogICAgY29tcGxleDxsb25nIGRvdWJsZT4mIG9wZXJhdG9yPSAobG9u
ZyBkb3VibGUpOwogICAgY29tcGxleDxsb25nIGRvdWJsZT4mIG9wZXJhdG9yKz0gKGxvbmcgZG91
YmxlKTsKICAgIGNvbXBsZXg8bG9uZyBkb3VibGU+JiBvcGVyYXRvci09IChsb25nIGRvdWJsZSk7
CiAgICBjb21wbGV4PGxvbmcgZG91YmxlPiYgb3BlcmF0b3IqPSAobG9uZyBkb3VibGUpOwogICAg
Y29tcGxleDxsb25nIGRvdWJsZT4mIG9wZXJhdG9yLz0gKGxvbmcgZG91YmxlKTsKCgoKICAgIHRl
bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgY29tcGxleDxsb25nIGRvdWJsZT4mIG9wZXJhdG9y
PShjb25zdCBjb21wbGV4PF9UcD4mKTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAg
Y29tcGxleDxsb25nIGRvdWJsZT4mIG9wZXJhdG9yKz0oY29uc3QgY29tcGxleDxfVHA+Jik7CiAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICAgIGNvbXBsZXg8bG9uZyBkb3VibGU+JiBvcGVy
YXRvci09KGNvbnN0IGNvbXBsZXg8X1RwPiYpOwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog
ICAgICBjb21wbGV4PGxvbmcgZG91YmxlPiYgb3BlcmF0b3IqPShjb25zdCBjb21wbGV4PF9UcD4m
KTsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgICAgY29tcGxleDxsb25nIGRvdWJsZT4m
IG9wZXJhdG9yLz0oY29uc3QgY29tcGxleDxfVHA+Jik7CgogIHByaXZhdGU6CiAgICB0eXBlZGVm
IF9fY29tcGxleF9fIGxvbmcgZG91YmxlIF9Db21wbGV4VDsKICAgIF9Db21wbGV4VCBfTV92YWx1
ZTsKCiAgICBjb21wbGV4KF9Db21wbGV4VCBfX3opIDogX01fdmFsdWUoX196KSB7IH0KCiAgICBm
cmllbmQgY2xhc3MgY29tcGxleDxmbG9hdD47CiAgICBmcmllbmQgY2xhc3MgY29tcGxleDxkb3Vi
bGU+OwogIH07CgogIGlubGluZQogIGNvbXBsZXg8bG9uZyBkb3VibGU+Ojpjb21wbGV4KGxvbmcg
ZG91YmxlIF9fciwgbG9uZyBkb3VibGUgX19pKQogIHsKICAgIF9fcmVhbF9fIF9NX3ZhbHVlID0g
X19yOwogICAgX19pbWFnX18gX01fdmFsdWUgPSBfX2k7CiAgfQoKICBpbmxpbmUgbG9uZyBkb3Vi
bGUKICBjb21wbGV4PGxvbmcgZG91YmxlPjo6cmVhbCgpIGNvbnN0CiAgeyByZXR1cm4gX19yZWFs
X18gX01fdmFsdWU7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgY29tcGxleDxsb25nIGRvdWJs
ZT46OmltYWcoKSBjb25zdAogIHsgcmV0dXJuIF9faW1hZ19fIF9NX3ZhbHVlOyB9CgogIGlubGlu
ZSBjb21wbGV4PGxvbmcgZG91YmxlPiYKICBjb21wbGV4PGxvbmcgZG91YmxlPjo6b3BlcmF0b3I9
KGxvbmcgZG91YmxlIF9fcikKICB7CiAgICBfX3JlYWxfXyBfTV92YWx1ZSA9IF9fcjsKICAgIF9f
aW1hZ19fIF9NX3ZhbHVlID0gMC4wTDsKICAgIHJldHVybiAqdGhpczsKICB9CgogIGlubGluZSBj
b21wbGV4PGxvbmcgZG91YmxlPiYKICBjb21wbGV4PGxvbmcgZG91YmxlPjo6b3BlcmF0b3IrPShs
b25nIGRvdWJsZSBfX3IpCiAgewogICAgX19yZWFsX18gX01fdmFsdWUgKz0gX19yOwogICAgcmV0
dXJuICp0aGlzOwogIH0KCiAgaW5saW5lIGNvbXBsZXg8bG9uZyBkb3VibGU+JgogIGNvbXBsZXg8
bG9uZyBkb3VibGU+OjpvcGVyYXRvci09KGxvbmcgZG91YmxlIF9fcikKICB7CiAgICBfX3JlYWxf
XyBfTV92YWx1ZSAtPSBfX3I7CiAgICByZXR1cm4gKnRoaXM7CiAgfQoKICBpbmxpbmUgY29tcGxl
eDxsb25nIGRvdWJsZT4mCiAgY29tcGxleDxsb25nIGRvdWJsZT46Om9wZXJhdG9yKj0obG9uZyBk
b3VibGUgX19yKQogIHsKICAgIF9fcmVhbF9fIF9NX3ZhbHVlICo9IF9fcjsKICAgIHJldHVybiAq
dGhpczsKICB9CgogIGlubGluZSBjb21wbGV4PGxvbmcgZG91YmxlPiYKICBjb21wbGV4PGxvbmcg
ZG91YmxlPjo6b3BlcmF0b3IvPShsb25nIGRvdWJsZSBfX3IpCiAgewogICAgX19yZWFsX18gX01f
dmFsdWUgLz0gX19yOwogICAgcmV0dXJuICp0aGlzOwogIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGNvbXBsZXg8bG9uZyBkb3VibGU+JgogICAgY29tcGxleDxsb25nIGRv
dWJsZT46Om9wZXJhdG9yPShjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAgICAgX19y
ZWFsX18gX01fdmFsdWUgPSBfX3oucmVhbCgpOwogICAgICBfX2ltYWdfXyBfTV92YWx1ZSA9IF9f
ei5pbWFnKCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg
X1RwPgogICAgaW5saW5lIGNvbXBsZXg8bG9uZyBkb3VibGU+JgogICAgY29tcGxleDxsb25nIGRv
dWJsZT46Om9wZXJhdG9yKz0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAgICAgIF9f
cmVhbF9fIF9NX3ZhbHVlICs9IF9fei5yZWFsKCk7CiAgICAgIF9faW1hZ19fIF9NX3ZhbHVlICs9
IF9fei5pbWFnKCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h
bWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8bG9uZyBkb3VibGU+JgogICAgY29tcGxleDxsb25n
IGRvdWJsZT46Om9wZXJhdG9yLT0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAgICAg
IF9fcmVhbF9fIF9NX3ZhbHVlIC09IF9fei5yZWFsKCk7CiAgICAgIF9faW1hZ19fIF9NX3ZhbHVl
IC09IF9fei5pbWFnKCk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX1RwPgogICAgaW5saW5lIGNvbXBsZXg8bG9uZyBkb3VibGU+JgogICAgY29tcGxleDxs
b25nIGRvdWJsZT46Om9wZXJhdG9yKj0oY29uc3QgY29tcGxleDxfVHA+JiBfX3opCiAgICB7CiAg
ICAgIF9Db21wbGV4VCBfX3Q7CiAgICAgIF9fcmVhbF9fIF9fdCA9IF9fei5yZWFsKCk7CiAgICAg
IF9faW1hZ19fIF9fdCA9IF9fei5pbWFnKCk7CiAgICAgIF9NX3ZhbHVlICo9IF9fdDsKICAgICAg
cmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUg
Y29tcGxleDxsb25nIGRvdWJsZT4mCiAgICBjb21wbGV4PGxvbmcgZG91YmxlPjo6b3BlcmF0b3Iv
PShjb25zdCBjb21wbGV4PF9UcD4mIF9feikKICAgIHsKICAgICAgX0NvbXBsZXhUIF9fdDsKICAg
ICAgX19yZWFsX18gX190ID0gX196LnJlYWwoKTsKICAgICAgX19pbWFnX18gX190ID0gX196Lmlt
YWcoKTsKICAgICAgX01fdmFsdWUgLz0gX190OwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgoK
CgoKICBpbmxpbmUKICBjb21wbGV4PGZsb2F0Pjo6Y29tcGxleChjb25zdCBjb21wbGV4PGRvdWJs
ZT4mIF9feikKICA6IF9NX3ZhbHVlKF9Db21wbGV4VChfX3ouX01fdmFsdWUpKSB7IH0KCiAgaW5s
aW5lCiAgY29tcGxleDxmbG9hdD46OmNvbXBsZXgoY29uc3QgY29tcGxleDxsb25nIGRvdWJsZT4m
IF9feikKICA6IF9NX3ZhbHVlKF9Db21wbGV4VChfX3ouX01fdmFsdWUpKSB7IH0KCiAgaW5saW5l
CiAgY29tcGxleDxkb3VibGU+Ojpjb21wbGV4KGNvbnN0IGNvbXBsZXg8ZmxvYXQ+JiBfX3opCiAg
OiBfTV92YWx1ZShfQ29tcGxleFQoX196Ll9NX3ZhbHVlKSkgeyB9CgogIGlubGluZQogIGNvbXBs
ZXg8ZG91YmxlPjo6Y29tcGxleChjb25zdCBjb21wbGV4PGxvbmcgZG91YmxlPiYgX196KQogIHsK
ICAgIF9fcmVhbF9fIF9NX3ZhbHVlID0gX196LnJlYWwoKTsKICAgIF9faW1hZ19fIF9NX3ZhbHVl
ID0gX196LmltYWcoKTsKICB9CgogIGlubGluZQogIGNvbXBsZXg8bG9uZyBkb3VibGU+Ojpjb21w
bGV4KGNvbnN0IGNvbXBsZXg8ZmxvYXQ+JiBfX3opCiAgOiBfTV92YWx1ZShfQ29tcGxleFQoX196
Ll9NX3ZhbHVlKSkgeyB9CgogIGlubGluZQogIGNvbXBsZXg8bG9uZyBkb3VibGU+Ojpjb21wbGV4
KGNvbnN0IGNvbXBsZXg8ZG91YmxlPiYgX196KQogIDogX01fdmFsdWUoX0NvbXBsZXhUKF9fei5f
TV92YWx1ZSkpIHsgfQp9CiMgMyAiL2hvbWVzL2toYW4vbG9jYWwvZ2NjLTMuMS9pbmNsdWRlL2cr
Ky12My9jb21wbGV4IiAyIDMKIyAyICJ4eC5jYyIgMgpzdHJ1Y3QKZm9vCnsKICBmb28oc3RkOjpj
b21wbGV4PGRvdWJsZT4pOwp9OwoKZm9vOjpmb28oc3RkOjpjb21wbGV4PGRvdWJsZT4gaW4pCnsK
ICBzdGQ6OmNvbXBsZXg8ZG91YmxlPiB0bXA7CiAgdG1wID0gaW47Cn0K
More information about the Gcc-prs
mailing list