public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/2755: snapshot releases ICE on legal mozilla C code, gcc 2.95.3 does not
@ 2001-07-12 21:20 rodrigc
  0 siblings, 0 replies; 2+ messages in thread
From: rodrigc @ 2001-07-12 21:20 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, motrei, nobody

Synopsis: snapshot releases ICE on legal mozilla C code, gcc 2.95.3 does not

State-Changed-From-To: analyzed->closed
State-Changed-By: rodrigc
State-Changed-When: Thu Jul 12 21:20:44 2001
State-Changed-Why:
    Does not occur with gcc 3.0 (release)

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=2755&database=gcc


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c/2755: snapshot releases ICE on legal mozilla C code, gcc 2.95.3 does not
@ 2001-05-06 21:36 motrei
  0 siblings, 0 replies; 2+ messages in thread
From: motrei @ 2001-05-06 21:36 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2755
>Category:       c
>Synopsis:       snapshot releases ICE on legal mozilla C code, gcc 2.95.3 does not
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Sun May 06 21:36:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     What should I put here? (your instructions dont say)
>Release:        gcc version 3.1 20010506 (experimental)
>Organization:
>Environment:
Mandrake Linux 8.0, Linux x86 kernel 2.4.3, glibc v 2.2.2; gcc 3.1 compiled
with gcc 2.95.3 on a Pentium 3 933Mhz with 256Meg RAM, 30G disk,
I added /home/ajay/gcc/cvs/cvsrls/lib to LD_LIBRARY_PATH (the root of
my cvs gcc install is /home/ajay/gcc/cvs/cvsrls)
>Description:
When compiling Mozilla from CVS, one of the files needed to be compiled
is jsarray.c (part of Mozilla's javascript implementation, I believe). When
compiling it, the compiler crashes as follows:

/home/ajay/gcc/cvs/cvsrls/bin/gcc -o jsarray.o -c -DOSTYPE=\"Linux2.4\" -DOSARCH=\"Linux\" -DOJI -DEXPORT_JS_API  -DJS_USE_SAFE_ARENA   -I../../dist/include -I../../dist/include -I/home/ajay/moz/cvs/snapobjs/dist/include/nspr      -I/home/ajay/moz/cvs/mozilla/js/src -I/usr/X11R6/include   -fPIC -I/usr/X11R6/include -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -pedantic -Wno-long-long -O2 -march=pentiumpro -mcpu=pentiumpro -malign-double -ffast-math -Wl,--rpath=/home/ajay/gcc/cvs/cvsrls/lib -pipe -fshort-wchar -pthread -O2 -march=pentiumpro -mcpu=pentiumpro -malign-double -ffast-math -fno-exceptions -fno-rtti  -DNDEBUG -DTRIMMED -I/usr/X11R6/include -include ../../config-defs.h -DMOZILLA_CLIENT -Wp,-MD,.deps/jsarray.pp /home/ajay/moz/cvs/mozilla/js/src/jsarray.c
cc1: warning: Ignoring command line option '-fno-rtti'
cc1: warning: (It is valid for C++ but not the selected language)
/home/ajay/moz/cvs/mozilla/js/src/jsarray.c: In function `sort_compare':
/home/ajay/moz/cvs/mozilla/js/src/jsarray.c:744: Internal error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

This same code with even more aggressive optimizations (-funroll-loops -O3 -fexpensive-optimizations) doesnt crash with gcc 2.95.3. 

The following is the output of gcc -v :

Reading specs from /home/ajay/gcc/cvs/cvsrls/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs
Configured with: /home/ajay/gcc/cvs/gcc/configure --prefix=/home/ajay/gcc/cvs/cvsrls --with-gnu-as --with-gnu-ld --enable-languages=c++ --disable-libgcj --with-dwarf2
Thread model: single
gcc version 3.1 20010506 (experimental)
>How-To-Repeat:

Compile mozilla/js/src/jsarray.c from the mozilla distribution; alternatively,
I've attached the .i file as per your web page instructions
>Fix:

None that I'm aware of. Note that gcc 2.95.3 worked on this same source
file. Also, the standard Mandrake compiler worked on this file:

/usr/bin/gcc -v
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux/2.96/specs
gcc version 2.96 20000731 (Linux-Mandrake 8.0 2.96-0.49mdk)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="jsarray.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="jsarray.i"

IyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIgojIDEgIi4u
Ly4uL2NvbmZpZy1kZWZzLmgiIDEKIyAyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNhcnJheS5jIiAyCiMgMzggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c2FycmF5LmMiCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzc3RkZGVm
LmgiIDEKIyA3NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzc3RkZGVmLmgi
CiMgMSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvaG9tZS9hamF5L2djYy9jdnMv
Y3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAxOTkgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNy
bHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI4OCAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2
c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIg
Mwp0eXBlZGVmIHNob3J0IHVuc2lnbmVkIGludCB3Y2hhcl90OwojIDc3ICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNzdGRkZWYuaCIgMgojIDM5ICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDI4MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDIgMwojIDMxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Z251L3N0dWJzLmgiIDEgMwojIDMxMiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI2
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvaG9tZS9hamF5L2djYy9j
dnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA5NCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQg
cmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsK
ICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKIyAxMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIDsKCgoKZXh0
ZXJuIGRvdWJsZSBhdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIg
Kl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKIyAxNjMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwojIDE4
NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh
c2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91
bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFz
ZSkKICAgICAgICAgICAgOwojIDI1MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBk
b3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19ncm91cCkKICAgICAgICAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQog
ICAgICAgICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3Ry
dG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7
CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsK
CgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxs
X2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAgICAgICAgICA7CiMgMjk0ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJu
IF9fc3RydG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9f
c3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBf
X2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFz
ZSkKewogIHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFz
ZSwgMCk7Cn0KIyAzNDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpfX2V4dGVuc2lvbl9fIGV4
dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19i
YXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxv
bmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9f
c3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRl
cm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJu
IHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGlu
ZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9s
IChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBs
b25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9f
bnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVy
biBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewog
IHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMg
Mzg1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50
IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg
MwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5j
bHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hh
ciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0
ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVk
IGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBf
X3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYg
X191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9u
ZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25s
aW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZf
dDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9f
dV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBf
X3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0g
X19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJf
dDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vj
b25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQg
X19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiBpbnQgX19j
bG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGludCBfX2tl
eV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVm
IGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0
eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtj
bnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xv
bmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlw
ZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsK
Cgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX19zb2NrbGVuX3Q7CiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAz
CiMgNDIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fbG9mZl90IGxvZmZf
dDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDMKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoK
CgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190
OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsK
IyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRfdCBwaWRfdDsK
CgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90Owoj
IDExNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsK
IyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDEgMwojIDY3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYg
X190aW1lX3QgdGltZV90OwojIDc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgODAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoK
CnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDkxICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgOTIgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTI3ICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDE0MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
CiMgMSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQxICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTg0
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50
OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVk
IGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
CnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNi
bGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAzOTIgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQp
IDsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0
ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1
ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJu
IGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9t
X2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMy
X3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCBy
YW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3Ig
KHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3Ig
KHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVy
biBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3Qg
X19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1
ZikgOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYs
CiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAo
dW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50
ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4g
ZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJu
IGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZv
aWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVy
biB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2
dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3
XSkgOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
X194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2ln
bmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRy
YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1
Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4
X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpy
YW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50
IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1
ZmZlcikKICAgICAgICAgICAgOwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSA7CiMgNTI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKm1h
bGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVy
biB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxv
YyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpleHRlcm4gdm9pZCBjZnJl
ZSAodm9pZCAqX19wdHIpIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDIy
ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MSAzCiMgMjMgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKIyAxICIvaG9tZS9hamF5L2dj
Yy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVy
biB2b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIDsKIyA1NDggIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMiAzCiMgNTYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgYWJv
cnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBh
dGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2
b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQog
ICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgNTg4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMK
ZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNo
YXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4g
aW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKIyA2MTUgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNjI0ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCgoK
ZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CiMgNjU2ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSA7CiMgNjgxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBpbnQgKCpfX2NvbXBh
cl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKIyA2OTAgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tl
eSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19u
bWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2
b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAog
ICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBpbnQg
YWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGlu
dCBsYWJzIChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA3MTEg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwg
aW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4
dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyA3MjkgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUs
IGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAg
ICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpx
ZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAg
ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4
dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAg
ICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAg
ICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm
LAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3Ig
KGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAg
ICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJu
IGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAg
ICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3Np
Z24sCiAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
bGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3Qg
X19uKSA7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
KSA7CgoKZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSA7CgoK
CmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLAogICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19uKSA7CgpleHRlcm4gc2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywg
c2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNoIChfX2Nv
bnN0IGNoYXIgKl9fcmVzcG9uc2UpIDsKIyA0MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzYXJyYXkuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCgoKIyAxICIvaG9tZS9hamF5
L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJu
IHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVy
biB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVf
dCBfX24pCiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAg
ICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCmV4dGVy
biB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVy
biBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6
ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQog
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDc3ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJu
IGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0
ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNo
YXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMs
IHNpemVfdCBfX24pIDsKIyAxMjAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hh
ciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p
KTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgpl
eHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwojIDE2NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVy
biBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWpl
Y3QpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6
ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJw
YnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19j
b25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMTg3ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpf
X3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19y
IChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0s
CiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoj
IDIxOCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2Nv
bnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMjI5ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsK
CgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNp
emVfdCBfX2J1ZmxlbikgOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXpl
X3QgX19uKSA7CiMgMzU2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIyA1MiAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg
MwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5k
aWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3Iv
aW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMiAzCiMgMzcxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDMKZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwoj
IDM5NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNp
emVfdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVz
dCwKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0
XzIsCiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3Jj
NF80LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191
aW50MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191
YzsKICB9ICpfX3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBf
X3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAg
YnJlYWs7CiAgICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0g
X19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAg
ICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3Ut
Pl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hh
ciAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVhazsK
ICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBf
X3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lk
ICopKChjaGFyICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAg
YnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDg3MyAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MxIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJj
c3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNp
emVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3Nb
X19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7
Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX3JlamVjdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2Nv
bnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0
ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYm
IF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0g
X19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBf
X2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3Jl
amVjdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0
MiwgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMyAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAg
ICAgICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7
CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVq
ZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1
bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMg
OTI4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVf
dCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4g
X19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2Fj
Y2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19y
ZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBj
aGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBf
X2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6
ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8
IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hh
ciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVf
dApfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9f
YWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9
PSBfX2FjY2VwdDIKICAgICAgICAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDk4MyAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2Nl
cHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNo
YXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2Vw
dDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3aGls
ZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQy
CiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3Mg
PT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTA0NSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNo
YXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikw
KSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytfX3M7
CiAgaWYgKCpfX3MgPT0gJ1wwJykKICAgIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgZWxzZQog
ICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAq
X19zICE9IF9fc2VwKQogICAgICAgICsrX19zOwogICAgICBpZiAoKl9fcyA9PSAnXDAnKQogICAg
ICAgICpfX25leHRwID0gX19zOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgKl9fcyA9
ICdcMCc7CiAgICAgICAgICAqX19uZXh0cCA9IF9fcyArIDE7CiAgICAgICAgfQogICAgfQogIHJl
dHVybiBfX3Jlc3VsdDsKfQojIDEwOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWpl
Y3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3Jl
dHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYg
KCpfX3JldHZhbCA9PSBfX3JlamVjdCkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAg
aWYgKCgqX19zID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVj
dCkgJiYgKF9fcmVqZWN0KSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFs
LCBfX3JlamVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2b2lkICop
MCkpCiAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICBlbHNlCiAgICAgICpfX3MgPSAoKHZvaWQg
KikwKTsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNl
cF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEs
IGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlm
IChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7
CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MikK
ICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpf
X2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9f
cmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAo
Kl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKICAgICAgICAg
ICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgKl9fcyA9ICgo
dm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj
dDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVq
ZWN0MSwgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAq
X19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVy
biAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9f
cmV0dmFsID09IF9fcmVqZWN0MgogICAgICB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QzKQogICAg
KigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3Ag
PSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWpl
Y3QxICYmICpfX2NwICE9IF9fcmVqZWN0MgogICAgICAgICAgICAgJiYgKl9fY3AgIT0gX19yZWpl
Y3QzKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpfX2NwICE9ICdcMCcpCiAgICAgICAgewog
ICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgICAg
IH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0KICByZXR1cm4g
X19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNl
cF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fICh7IGNoYXIgX19h
MCwgX19hMSwgX19hMjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoKF9fcmVqZWN0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShfX3JlamVjdCkgPT0gMSkgPyAoKF9fYTAgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3Qp
KVswXSwgX19hMCA9PSAnXDAnKSA/ICgodm9pZCkgKF9fcmV0dmFsKSwgKCh2b2lkICopMCkpIDog
KChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMV0sIF9fYTEgPT0gJ1wwJykg
PyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fYTApICYmIChfX2EwKSA9
PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX2EwKSA6IHN0cmNociAo
X19yZXR2YWwsIF9fYTApKSkgOiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3Qp
KVsyXSwgX19hMiA9PSAnXDAnKSA/IF9fc3RycGJya19jMiAoX19yZXR2YWwsIF9fYTAsIF9fYTEp
IDogKCgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0cnBicmtf
YzMgKF9fcmV0dmFsLCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKF9fcmV0dmFsLCBfX3Jl
amVjdCkpKSkpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSk7IH0pKSAhPSAoKHZvaWQg
KikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMgMTE4OCAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAxIDMKIyAxMTg5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwoKCgoKZXh0ZXJu
IGNoYXIgKl9fc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwojIDEyMTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRl
cm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQog
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzNjAgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMiAzCiMgNDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc2FycmF5LmMiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0
eXBlcy5oIiAxCiMgNjMgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3R5cGVz
LmgiCiMgMSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNjQgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiIDIKIyAyMzUgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiCiMgMSAiLi4vLi4vZGlzdC9pbmNsdWRlL2pzYXV0b2Nm
Zy5oIiAxCiMgMjM2ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0eXBlcy5o
IiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzb3NkZXAuaCIgMQoj
IDQyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNvc2RlcC5oIgojIDEgIi4u
Ly4uL2Rpc3QvaW5jbHVkZS9wbGF0Zm9ybS5oIiAxCiMgNDMgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc29zZGVwLmgiIDIKIyAyMzcgIi9ob21lL2FqYXkvbW96L2N2cy9tb3pp
bGxhL2pzL3NyYy9qc3R5cGVzLmgiIDIKIyAyNTEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxh
L2pzL3NyYy9qc3R5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgY2hhciBKU1VpbnQ4Owp0eXBlZGVm
IHNpZ25lZCBjaGFyIEpTSW50ODsKIyAyNjQgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc3R5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgSlNVaW50MTY7CnR5cGVkZWYg
c2hvcnQgSlNJbnQxNjsKIyAyNzcgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c3R5cGVzLmgiCnR5cGVkZWYgdW5zaWduZWQgaW50IEpTVWludDMyOwp0eXBlZGVmIGludCBKU0lu
dDMyOwojIDMxMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzdHlwZXMuaCIK
dHlwZWRlZiBsb25nIGxvbmcgSlNJbnQ2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgSlNV
aW50NjQ7CiMgMzM1ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0eXBlcy5o
Igp0eXBlZGVmIGludCBKU0ludG47CnR5cGVkZWYgdW5zaWduZWQgaW50IEpTVWludG47CiMgMzQ2
ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0eXBlcy5oIgp0eXBlZGVmIGRv
dWJsZSBKU0Zsb2F0NjQ7CgoKCgoKCnR5cGVkZWYgc2l6ZV90IEpTU2l6ZTsKCgoKCgoKCnR5cGVk
ZWYgcHRyZGlmZl90IEpTUHRyZGlmZjsKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBKU1Vw
dHJkaWZmOwojIDM3OSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzdHlwZXMu
aCIKdHlwZWRlZiBKU0ludG4gSlNCb29sOwojIDM4OSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemls
bGEvanMvc3JjL2pzdHlwZXMuaCIKdHlwZWRlZiBKU1VpbnQ4IEpTUGFja2VkQm9vbDsKCgoKCnR5
cGVkZWYgbG9uZyBKU1dvcmQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBKU1V3b3JkOwoKIyAxICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNvdHlwZXMuaCIgMQojIDY3ICIvaG9t
ZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNvdHlwZXMuaCIKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDY4ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNvdHlwZXMuaCIgMgoKCgoKdHlwZWRlZiBKU1VpbnRuIHVpbnRuOwp0eXBlZGVmIEpTVWlu
dDY0IHVpbnQ2NDsKCnR5cGVkZWYgSlNVaW50MzIgdWludDMyOwoKCgp0eXBlZGVmIEpTVWludDE2
IHVpbnQxNjsKdHlwZWRlZiBKU1VpbnQ4IHVpbnQ4OwoKCnR5cGVkZWYgSlNJbnRuIGludG47CiMg
OTUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc290eXBlcy5oIgp0eXBlZGVm
IEpTSW50NjQgaW50NjQ7CgoKCgoKCnR5cGVkZWYgSlNJbnQzMiBpbnQzMjsKCgoKdHlwZWRlZiBK
U0ludDE2IGludDE2Owp0eXBlZGVmIEpTSW50OCBpbnQ4OwoKCgoKCnR5cGVkZWYgSlNGbG9hdDY0
IGZsb2F0NjQ7CiMgMzk4ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0eXBl
cy5oIiAyCiMgNDIgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmMi
IDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN1dGlsLmgiIDEKIyA5
NyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzdXRpbC5oIgpleHRlcm4gdm9p
ZCBKU19BYm9ydCh2b2lkKTsKIyA0MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzYXJyYXkuYyIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2Fw
aS5oIiAxCiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgoj
IDEgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQxICIvaG9tZS9hamF5L21vei9jdnMvbW96
aWxsYS9qcy9zcmMvanNhcGkuaCIgMgojIDEgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMzYg
Ii9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAzNyAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgojIDEgIi9ob21lL2FqYXkvZ2NjL2N2
cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDQzICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAxIDMKIyA0NSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA1MyAiL2hv
bWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjMgIi9o
b21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4x
L2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzMg
Ii9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAz
MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoK
IyAxICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTQgIi9ob21lL2FqYXkvZ2NjL2N2cy9j
dnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgi
IDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29u
ZmlnLmgiIDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL2hv
bWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hh
ci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewog
IGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3dj
aGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0
YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3Qg
X19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9p
bmNsdWRlL19HX2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI2
ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2No
YXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL2hvbWUvYWpheS9n
Y2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMK
IyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvaG9tZS9hamF5L2djYy9jdnMv
Y3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9fR0NP
TlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05P
TUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19H
Q09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09O
Vl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVt
CnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0g
MHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0
YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwg
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50
KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVw
ICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVw
ICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZf
c3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBj
aGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNf
cXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpf
X2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2
b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3Ry
YW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3Ry
YW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRf
ZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJh
bnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19n
Y29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9k
bmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190
b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9m
Y3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zy
b207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50
IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07
CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7
CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50
IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0
YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZv
CnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBf
X2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9fZ2Nv
bnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlvbgp7
CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2dj
b252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBf
X2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191
aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7
CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKIyAxICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL2hvbWUvYWpheS9nY2Mv
Y3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRh
cmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpz
dHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIg
ewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoK
CgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9f
Y29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBf
X2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBf
SU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3JlYWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7
CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX3B0cjsKICBjaGFyKiBf
SU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFzZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsK
CiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAq
X0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBf
SU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZf
dCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQg
Y2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190
ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAgX19vZmY2NF90IF9vZmZz
ZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21vZGU7Cgog
IGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lkICopXTsK
Cn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxF
X3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87CmV4dGVy
biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lP
X0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIg
Mwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFyICpf
X2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3Jp
dGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9faW9f
c2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoKCnR5
cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKIyAzOTQgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lP
X0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dv
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMgNDI0ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9J
T19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7
CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0
ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVu
bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9f
RklMRSAqKSA7CiMgNDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192
ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7
CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hh
ciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7
CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7
CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoK
ZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQs
IGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0
X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICop
IDsKIyA3NCAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA4OCAiL2hvbWUvYWpheS9nY2MvY3Zz
L2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5o
IiAzCnR5cGVkZWYgX0dfZnBvc190IGZwb3NfdDsKIyAxMzcgIi9ob21lL2FqYXkvZ2NjL2N2cy9j
dnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIyAxMzggIi9ob21lL2Fq
YXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1
ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91
dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgoKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3Qg
Y2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29uc3QgY2hhciAqX19v
bGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lk
KSA7CiMgMTY5ICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hh
ciAqX19zKSA7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDE4NiAi
L2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIg
Kl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoK
ZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNo
X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwojIDIwOSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2
c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs
CiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsK
CmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVz
LAogICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIz
OSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBf
X2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKIyAyNjIgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRl
cm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJp
Y3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21v
ZGVzLCBzaXplX3QgX19uKSA7CiMgMjgxICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHBy
aW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBp
bnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJp
bnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJu
IGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwojIDMzMyAiL2hvbWUvYWpheS9n
Y2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSA7CiMgMzU5ICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAq
X19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBp
bnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4
dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50
IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoK
CgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkg
OwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkg
OwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50
IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxF
ICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgaW50IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAgICAgOwojIDQy
NSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIDsK
IyA0NDkgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgICAgICAg
ICA7CiMgNDU5ICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0
IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6
ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5s
b2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
IDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnNl
ZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRl
cm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQg
KEZJTEUgKl9fc3RyZWFtKSA7CiMgNTAzICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmZ2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3Qg
X19wb3MpCiAgICAgICAgICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0s
IF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDUzOSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Js
cy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9mIChG
SUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4g
aW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVycm9yX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0
IGNoYXIgKl9fcykgOwojIDU3MCAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZmls
ZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpf
X2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNsb3NlIChG
SUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsK
IyA2MTcgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkg
OwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwojIDYzOCAiL2hv
bWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEv
aW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMg
MzkgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludAp2cHJp
bnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgpleHRlcm4g
X19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsK
fQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKQp7CiAg
cmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9f
dWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKysp
Owp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKQp7CiAgcmV0
dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191
ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisr
KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19jKQp7CiAgcmV0dXJu
IF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZnB1dGNf
dW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZs
b3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgq
KF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lu
bGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1
cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9l
bmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5z
aWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7CiAgcmV0dXJu
ICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8g
X19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNo
YXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KIyAxMTcgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludApmZW9mX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTAp
ICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9f
c3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0K
IyA2MzkgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNDIgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc2FwaS5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzcHVidGQuaCIgMQojIDQwICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNwdWJ0ZC5oIgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3R5
cGVzLmgiIDEKIyA0MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQu
aCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NvbXBhdC5oIiAx
CiMgNDQgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NvbXBhdC5oIgojIDEg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiIDEKIyA0NSAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzY29tcGF0LmgiIDIKIyAxICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNsb25nLmgiIDEKIyA0NiAiL2hvbWUvYWpheS9t
b3ovY3ZzL21vemlsbGEvanMvc3JjL2pzbG9uZy5oIgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiIDEKIyA0NyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemls
bGEvanMvc3JjL2pzbG9uZy5oIiAyCiMgNjYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc2xvbmcuaCIKZXh0ZXJuIEpTSW50NjQgSlNMTF9NYXhJbnQodm9pZCk7CmV4dGVybiBK
U0ludDY0IEpTTExfTWluSW50KHZvaWQpOwpleHRlcm4gSlNJbnQ2NCBKU0xMX1plcm8odm9pZCk7
CiMgNDYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NvbXBhdC5oIiAyCgp0
eXBlZGVmIEpTSW50biBpbnROOwp0eXBlZGVmIEpTVWludG4gdWludE47CnR5cGVkZWYgSlNVd29y
ZCBqc3V3b3JkOwp0eXBlZGVmIEpTV29yZCBqc3dvcmQ7CnR5cGVkZWYgZmxvYXQgZmxvYXQzMjsK
IyA0MiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIgMgoKCgoK
dHlwZWRlZiB1aW50MTYganNjaGFyOwp0eXBlZGVmIGludDMyIGpzaW50Owp0eXBlZGVmIHVpbnQz
MiBqc3VpbnQ7CnR5cGVkZWYgZmxvYXQ2NCBqc2RvdWJsZTsKdHlwZWRlZiBqc3dvcmQganN2YWw7
CnR5cGVkZWYganN3b3JkIGpzaWQ7CnR5cGVkZWYgaW50MzIganNyZWZjb3VudDsKCnR5cGVkZWYg
ZW51bSBKU1ZlcnNpb24gewogICAgSlNWRVJTSU9OXzFfMCA9IDEwMCwKICAgIEpTVkVSU0lPTl8x
XzEgPSAxMTAsCiAgICBKU1ZFUlNJT05fMV8yID0gMTIwLAogICAgSlNWRVJTSU9OXzFfMyA9IDEz
MCwKICAgIEpTVkVSU0lPTl8xXzQgPSAxNDAsCiAgICBKU1ZFUlNJT05fMV81ID0gMTUwLAogICAg
SlNWRVJTSU9OX0RFRkFVTFQgPSAwLAogICAgSlNWRVJTSU9OX1VOS05PV04gPSAtMQp9IEpTVmVy
c2lvbjsKCgoKCgp0eXBlZGVmIGVudW0gSlNUeXBlIHsKICAgIEpTVFlQRV9WT0lELAogICAgSlNU
WVBFX09CSkVDVCwKICAgIEpTVFlQRV9GVU5DVElPTiwKICAgIEpTVFlQRV9TVFJJTkcsCiAgICBK
U1RZUEVfTlVNQkVSLAogICAgSlNUWVBFX0JPT0xFQU4sCiAgICBKU1RZUEVfTElNSVQKfSBKU1R5
cGU7CgoKdHlwZWRlZiBlbnVtIEpTQWNjZXNzTW9kZSB7CiAgICBKU0FDQ19QUk9UTywKICAgIEpT
QUNDX1BBUkVOVCwKICAgIEpTQUNDX0lNUE9SVCwKICAgIEpTQUNDX1dBVENILAogICAgSlNBQ0Nf
TElNSVQKfSBKU0FjY2Vzc01vZGU7CgoKCgoKdHlwZWRlZiBlbnVtIEpTSXRlcmF0ZU9wIHsKICAg
IEpTRU5VTUVSQVRFX0lOSVQsCiAgICBKU0VOVU1FUkFURV9ORVhULAogICAgSlNFTlVNRVJBVEVf
REVTVFJPWQp9IEpTSXRlcmF0ZU9wOwoKCnR5cGVkZWYgc3RydWN0IEpTQ2xhc3MgSlNDbGFzczsK
dHlwZWRlZiBzdHJ1Y3QgSlNDb25zdERvdWJsZVNwZWMgSlNDb25zdERvdWJsZVNwZWM7CnR5cGVk
ZWYgc3RydWN0IEpTQ29udGV4dCBKU0NvbnRleHQ7CnR5cGVkZWYgc3RydWN0IEpTRXJyb3JSZXBv
cnQgSlNFcnJvclJlcG9ydDsKdHlwZWRlZiBzdHJ1Y3QgSlNGdW5jdGlvbiBKU0Z1bmN0aW9uOwp0
eXBlZGVmIHN0cnVjdCBKU0Z1bmN0aW9uU3BlYyBKU0Z1bmN0aW9uU3BlYzsKdHlwZWRlZiBzdHJ1
Y3QgSlNJZEFycmF5IEpTSWRBcnJheTsKdHlwZWRlZiBzdHJ1Y3QgSlNQcm9wZXJ0eSBKU1Byb3Bl
cnR5Owp0eXBlZGVmIHN0cnVjdCBKU1Byb3BlcnR5U3BlYyBKU1Byb3BlcnR5U3BlYzsKdHlwZWRl
ZiBzdHJ1Y3QgSlNPYmplY3QgSlNPYmplY3Q7CnR5cGVkZWYgc3RydWN0IEpTT2JqZWN0TWFwIEpT
T2JqZWN0TWFwOwp0eXBlZGVmIHN0cnVjdCBKU09iamVjdE9wcyBKU09iamVjdE9wczsKdHlwZWRl
ZiBzdHJ1Y3QgSlNSdW50aW1lIEpTUnVudGltZTsKdHlwZWRlZiBzdHJ1Y3QgSlNSdW50aW1lIEpT
VGFza1N0YXRlOwp0eXBlZGVmIHN0cnVjdCBKU1NjcmlwdCBKU1NjcmlwdDsKdHlwZWRlZiBzdHJ1
Y3QgSlNTdHJpbmcgSlNTdHJpbmc7CnR5cGVkZWYgc3RydWN0IEpTWERSU3RhdGUgSlNYRFJTdGF0
ZTsKdHlwZWRlZiBzdHJ1Y3QgSlNFeGNlcHRpb25TdGF0ZSBKU0V4Y2VwdGlvblN0YXRlOwp0eXBl
ZGVmIHN0cnVjdCBKU0xvY2FsZUNhbGxiYWNrcyBKU0xvY2FsZUNhbGxiYWNrczsKIyAxMjggIi9o
b21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNCb29s
CigqIEpTUHJvcGVydHlPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICp2cCk7CiMgMTU5ICIvaG9t
ZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAoo
KiBKU05ld0VudW1lcmF0ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNJdGVyYXRlT3AgZW51bV9vcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpzdGF0ZXAsIGpzaWQgKmlkcCk7
CgoKCgoKdHlwZWRlZiBKU0Jvb2wKKCogSlNFbnVtZXJhdGVPcCkoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaik7CiMgMTgzICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNw
dWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU1Jlc29sdmVPcCkoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQpOwojIDE5NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzcHVidGQuaCIKdHlwZWRlZiBKU0Jvb2wKKCogSlNOZXdSZXNvbHZlT3ApKEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnROIGZsYWdzLCBKU09iamVjdCAqKm9ianApOwoKCgoKCnR5cGVkZWYg
SlNCb29sCigqIEpTQ29udmVydE9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1R5
cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnApOwoKCgoK
Cgp0eXBlZGVmIHZvaWQKKCogSlNGaW5hbGl6ZU9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCgoKCgp0eXBlZGVmIHZvaWQKKCogSlNTdHJpbmdGaW5hbGl6ZU9wKShKU0NvbnRleHQg
KmN4LCBKU1N0cmluZyAqc3RyKTsKIyAyNDIgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc3B1YnRkLmgiCnR5cGVkZWYgSlNPYmplY3RPcHMgKgooKiBKU0dldE9iamVjdE9wcyko
SlNDb250ZXh0ICpjeCwgSlNDbGFzcyAqY2xhc3ApOwojIDI1NyAiL2hvbWUvYWpheS9tb3ovY3Zz
L21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIKdHlwZWRlZiBKU0Jvb2wKKCogSlNDaGVja0FjY2Vz
c09wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSlNBY2Nlc3NNb2RlIG1vZGUsIGpzdmFsICp2cCk7CgoK
CgoKdHlwZWRlZiBKU0Jvb2wKKCogSlNYRFJPYmplY3RPcCkoSlNYRFJTdGF0ZSAqeGRyLCBKU09i
amVjdCAqKm9ianApOwoKCgoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU0hhc0luc3RhbmNlT3ApKEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIHYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEpTQm9vbCAqYnApOwojIDI5MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzcHVidGQuaCIKdHlwZWRlZiB1aW50MzIKKCogSlNNYXJrT3ApKEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHZvaWQgKmFyZyk7CiMgMzA4ICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTT2JqZWN0TWFwICoKKCog
SlNOZXdPYmplY3RNYXBPcCkoSlNDb250ZXh0ICpjeCwganNyZWZjb3VudCBucmVmcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0T3BzICpvcHMsIEpTQ2xhc3Mg
KmNsYXNwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKm9i
aik7CgoKCgoKdHlwZWRlZiB2b2lkCigqIEpTT2JqZWN0TWFwT3ApKEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0TWFwICptYXApOwojIDMzNyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzcHVidGQuaCIKdHlwZWRlZiBKU0Jvb2wKKCogSlNMb29rdXBQcm9wT3ApKEpTQ29udGV4dCAq
Y3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNPYmplY3QgKipvYmpwLCBKU1Byb3BlcnR5ICoqcHJvcHAKCgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiMgMzU3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNwdWJ0ZC5oIgp0eXBlZGVmIEpTQm9vbAooKiBKU0RlZmluZVByb3BPcCkoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqc2lkIGlkLCBqc3ZhbCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU1Byb3BlcnR5T3AgZ2V0dGVyLCBKU1Byb3BlcnR5T3Agc2V0dGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROIGF0dHJzLCBKU1Byb3BlcnR5ICoqcHJvcHAp
OwojIDM3MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIKdHlw
ZWRlZiBKU0Jvb2wKKCogSlNQcm9wZXJ0eUlkT3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpv
YmosIGpzaWQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnZw
KTsKCgoKCgoKCnR5cGVkZWYgSlNCb29sCigqIEpTQXR0cmlidXRlc09wKShKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTUHJvcGVydHkgKnByb3AsIHVpbnROICphdHRyc3ApOwoKCgoKCgp0eXBlZGVmIEpTQm9v
bAooKiBKU0NoZWNrQWNjZXNzSWRPcCkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNp
ZCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0FjY2Vzc01vZGUg
bW9kZSwganN2YWwgKnZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnROICphdHRyc3ApOwoKCgoKCgp0eXBlZGVmIEpTT2JqZWN0ICoKKCogSlNPYmplY3RPcCkoSlND
b250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CgoKCgoKCgp0eXBlZGVmIHZvaWQKKCogSlNQcm9w
ZXJ0eVJlZk9wKShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5ICpwcm9wKTsKCgoKCgoKdHlwZWRlZiBKU0Jv
b2wKKCogSlNTZXRPYmplY3RTbG90T3ApKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyIHNsb3QsIEpTT2JqZWN0
ICpwb2JqKTsKIyA0MzUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3B1YnRk
LmgiCnR5cGVkZWYganN2YWwKKCogSlNHZXRSZXF1aXJlZFNsb3RPcCkoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMiBzbG90KTsKCnR5cGVkZWYgdm9pZAooKiBKU1NldFJlcXVpcmVkU2xvdE9wKShKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyIHNsb3QsIGpzdmFsIHYpOwoKCgp0eXBlZGVmIEpTQm9vbAooKiBKU05hdGl2
ZSkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpOwoKCgp0eXBlZGVmIGVu
dW0gSlNHQ1N0YXR1cyB7CiAgICBKU0dDX0JFR0lOLAogICAgSlNHQ19FTkQsCiAgICBKU0dDX01B
UktfRU5ELAogICAgSlNHQ19GSU5BTElaRV9FTkQKfSBKU0dDU3RhdHVzOwoKdHlwZWRlZiBKU0Jv
b2wKKCogSlNHQ0NhbGxiYWNrKShKU0NvbnRleHQgKmN4LCBKU0dDU3RhdHVzIHN0YXR1cyk7Cgp0
eXBlZGVmIEpTQm9vbAooKiBKU0JyYW5jaENhbGxiYWNrKShKU0NvbnRleHQgKmN4LCBKU1Njcmlw
dCAqc2NyaXB0KTsKCnR5cGVkZWYgdm9pZAooKiBKU0Vycm9yUmVwb3J0ZXIpKEpTQ29udGV4dCAq
Y3gsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTRXJyb3JSZXBvcnQgKnJlcG9ydCk7Cgp0eXBlZGVmIHN0cnVjdCBKU0Vycm9yRm9ybWF0
U3RyaW5nIHsKICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKICAgIHVpbnROIGFyZ0NvdW50Owp9IEpT
RXJyb3JGb3JtYXRTdHJpbmc7Cgp0eXBlZGVmIGNvbnN0IEpTRXJyb3JGb3JtYXRTdHJpbmcgKgoo
KiBKU0Vycm9yQ2FsbGJhY2spKHZvaWQgKnVzZXJSZWYsIGNvbnN0IGNoYXIgKmxvY2FsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludE4gZXJyb3JOdW1iZXIp
OwojIDQ4NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIKdHlw
ZWRlZiBKU0Jvb2wKKCogSlNMb2NhbGVUb1VwcGVyQ2FzZSkoSlNDb250ZXh0ICpjeCwgSlNTdHJp
bmcgKnNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdmFsICpy
dmFsKTsKCnR5cGVkZWYgSlNCb29sCigqIEpTTG9jYWxlVG9Mb3dlckNhc2UpKEpTQ29udGV4dCAq
Y3gsIEpTU3RyaW5nICpzcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqc3ZhbCAqcnZhbCk7Cgp0eXBlZGVmIEpTQm9vbAooKiBKU0xvY2FsZUNvbXBhcmUpKEpTQ29u
dGV4dCAqY3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTU3RyaW5nICpz
cmMxLCBKU1N0cmluZyAqc3JjMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
anN2YWwgKnJ2YWwpOwojIDQzICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNh
cGkuaCIgMgojIDE0NCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgi
CmV4dGVybiBqc3ZhbApKU19HZXROYU5WYWx1ZShKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBqc3Zh
bApKU19HZXROZWdhdGl2ZUluZmluaXR5VmFsdWUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4ganN2
YWwKSlNfR2V0UG9zaXRpdmVJbmZpbml0eVZhbHVlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIGpz
dmFsCkpTX0dldEVtcHR5U3RyaW5nVmFsdWUoSlNDb250ZXh0ICpjeCk7CiMgMTg5ICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19Db252
ZXJ0QXJndW1lbnRzKEpTQ29udGV4dCAqY3gsIHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LCBjb25z
dCBjaGFyICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgLi4uKTsKIyAyMDkgIi9ob21lL2Fq
YXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4ganN2YWwgKgpKU19QdXNo
QXJndW1lbnRzKEpTQ29udGV4dCAqY3gsIHZvaWQgKiptYXJrcCwgY29uc3QgY2hhciAqZm9ybWF0
LCAuLi4pOwoKCgoKCgpleHRlcm4gdm9pZApKU19Qb3BBcmd1bWVudHMoSlNDb250ZXh0ICpjeCwg
dm9pZCAqbWFyayk7CiMgMjcwICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNh
cGkuaCIKZXh0ZXJuIEpTQm9vbApKU19Db252ZXJ0VmFsdWUoSlNDb250ZXh0ICpjeCwganN2YWwg
diwgSlNUeXBlIHR5cGUsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCkpTX1ZhbHVlVG9PYmpl
Y3QoSlNDb250ZXh0ICpjeCwganN2YWwgdiwgSlNPYmplY3QgKipvYmpwKTsKCmV4dGVybiBKU0Z1
bmN0aW9uICoKSlNfVmFsdWVUb0Z1bmN0aW9uKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYpOwoKZXh0
ZXJuIEpTRnVuY3Rpb24gKgpKU19WYWx1ZVRvQ29uc3RydWN0b3IoSlNDb250ZXh0ICpjeCwganN2
YWwgdik7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19WYWx1ZVRvU3RyaW5nKEpTQ29udGV4dCAqY3gs
IGpzdmFsIHYpOwoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvTnVtYmVyKEpTQ29udGV4dCAqY3gs
IGpzdmFsIHYsIGpzZG91YmxlICpkcCk7CgoKCgoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvRUNN
QUludDMyKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIGludDMyICppcCk7CgoKCgoKZXh0ZXJuIEpT
Qm9vbApKU19WYWx1ZVRvRUNNQVVpbnQzMihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2LCB1aW50MzIg
KmlwKTsKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvSW50MzIoSlNDb250ZXh0ICpjeCwg
anN2YWwgdiwgaW50MzIgKmlwKTsKCgoKCmV4dGVybiBKU0Jvb2wKSlNfVmFsdWVUb1VpbnQxNihK
U0NvbnRleHQgKmN4LCBqc3ZhbCB2LCB1aW50MTYgKmlwKTsKCmV4dGVybiBKU0Jvb2wKSlNfVmFs
dWVUb0Jvb2xlYW4oSlNDb250ZXh0ICpjeCwganN2YWwgdiwgSlNCb29sICpicCk7CgpleHRlcm4g
SlNUeXBlCkpTX1R5cGVPZlZhbHVlKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYpOwoKZXh0ZXJuIGNv
bnN0IGNoYXIgKgpKU19HZXRUeXBlTmFtZShKU0NvbnRleHQgKmN4LCBKU1R5cGUgdHlwZSk7CiMg
MzM1ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIEpT
UnVudGltZSAqCkpTX0luaXQodWludDMyIG1heGJ5dGVzKTsKCmV4dGVybiB2b2lkCkpTX0Zpbmlz
aChKU1J1bnRpbWUgKnJ0KTsKCmV4dGVybiB2b2lkCkpTX1NodXREb3duKHZvaWQpOwoKdm9pZCAq
CkpTX0dldFJ1bnRpbWVQcml2YXRlKEpTUnVudGltZSAqcnQpOwoKdm9pZApKU19TZXRSdW50aW1l
UHJpdmF0ZShKU1J1bnRpbWUgKnJ0LCB2b2lkICpkYXRhKTsKCgoKZXh0ZXJuIHZvaWQKSlNfQmVn
aW5SZXF1ZXN0KEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfRW5kUmVxdWVzdChKU0Nv
bnRleHQgKmN4KTsKCgpleHRlcm4gdm9pZApKU19ZaWVsZFJlcXVlc3QoSlNDb250ZXh0ICpjeCk7
CgpleHRlcm4ganNyZWZjb3VudApKU19TdXNwZW5kUmVxdWVzdChKU0NvbnRleHQgKmN4KTsKCmV4
dGVybiB2b2lkCkpTX1Jlc3VtZVJlcXVlc3QoSlNDb250ZXh0ICpjeCwganNyZWZjb3VudCBzYXZl
RGVwdGgpOwoKCgpleHRlcm4gdm9pZApKU19Mb2NrKEpTUnVudGltZSAqcnQpOwoKZXh0ZXJuIHZv
aWQKSlNfVW5sb2NrKEpTUnVudGltZSAqcnQpOwoKZXh0ZXJuIEpTQ29udGV4dCAqCkpTX05ld0Nv
bnRleHQoSlNSdW50aW1lICpydCwgc2l6ZV90IHN0YWNrQ2h1bmtTaXplKTsKCmV4dGVybiB2b2lk
CkpTX0Rlc3Ryb3lDb250ZXh0KEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfRGVzdHJv
eUNvbnRleHROb0dDKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfRGVzdHJveUNvbnRl
eHRNYXliZUdDKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQgKgpKU19HZXRDb250ZXh0UHJp
dmF0ZShKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB2b2lkCkpTX1NldENvbnRleHRQcml2YXRlKEpT
Q29udGV4dCAqY3gsIHZvaWQgKmRhdGEpOwoKZXh0ZXJuIEpTUnVudGltZSAqCkpTX0dldFJ1bnRp
bWUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gSlNDb250ZXh0ICoKSlNfQ29udGV4dEl0ZXJhdG9y
KEpTUnVudGltZSAqcnQsIEpTQ29udGV4dCAqKml0ZXJwKTsKCmV4dGVybiBKU1ZlcnNpb24KSlNf
R2V0VmVyc2lvbihKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU1ZlcnNpb24KSlNfU2V0VmVyc2lv
bihKU0NvbnRleHQgKmN4LCBKU1ZlcnNpb24gdmVyc2lvbik7CgpleHRlcm4gY29uc3QgY2hhciAq
CkpTX1ZlcnNpb25Ub1N0cmluZyhKU1ZlcnNpb24gdmVyc2lvbik7CgpleHRlcm4gSlNWZXJzaW9u
CkpTX1N0cmluZ1RvVmVyc2lvbihjb25zdCBjaGFyICpzdHJpbmcpOwojIDQyNiAiL2hvbWUvYWph
eS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiB1aW50MzIKSlNfR2V0T3B0
aW9ucyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB1aW50MzIKSlNfU2V0T3B0aW9ucyhKU0NvbnRl
eHQgKmN4LCB1aW50MzIgb3B0aW9ucyk7CgpleHRlcm4gdWludDMyCkpTX1RvZ2dsZU9wdGlvbnMo
SlNDb250ZXh0ICpjeCwgdWludDMyIG9wdGlvbnMpOwoKZXh0ZXJuIGNvbnN0IGNoYXIgKgpKU19H
ZXRJbXBsZW1lbnRhdGlvblZlcnNpb24odm9pZCk7CgpleHRlcm4gSlNPYmplY3QgKgpKU19HZXRH
bG9iYWxPYmplY3QoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gdm9pZApKU19TZXRHbG9iYWxPYmpl
Y3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CiMgNDUxICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIEpTQm9vbApKU19Jbml0U3RhbmRhcmRD
bGFzc2VzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwojIDQ2NyAiL2hvbWUvYWpheS9t
b3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBKU0Jvb2wKSlNfUmVzb2x2ZVN0
YW5kYXJkQ2xhc3MoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIEpTQm9vbCAqcmVzb2x2ZWQpOwoKZXh0ZXJuIEpTQm9vbApKU19F
bnVtZXJhdGVTdGFuZGFyZENsYXNzZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7Cgpl
eHRlcm4gSlNPYmplY3QgKgpKU19HZXRTY29wZUNoYWluKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJu
IHZvaWQgKgpKU19tYWxsb2MoSlNDb250ZXh0ICpjeCwgc2l6ZV90IG5ieXRlcyk7CgpleHRlcm4g
dm9pZCAqCkpTX3JlYWxsb2MoSlNDb250ZXh0ICpjeCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcyk7
CgpleHRlcm4gdm9pZApKU19mcmVlKEpTQ29udGV4dCAqY3gsIHZvaWQgKnApOwoKZXh0ZXJuIGNo
YXIgKgpKU19zdHJkdXAoSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcyk7CgpleHRlcm4ganNk
b3VibGUgKgpKU19OZXdEb3VibGUoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7CgpleHRlcm4g
SlNCb29sCkpTX05ld0RvdWJsZVZhbHVlKEpTQ29udGV4dCAqY3gsIGpzZG91YmxlIGQsIGpzdmFs
ICpydmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfTmV3TnVtYmVyVmFsdWUoSlNDb250ZXh0ICpjeCwg
anNkb3VibGUgZCwganN2YWwgKnJ2YWwpOwojIDUxNCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemls
bGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBKU0Jvb2wKSlNfQWRkUm9vdChKU0NvbnRleHQgKmN4
LCB2b2lkICpycCk7CgpleHRlcm4gSlNCb29sCkpTX0FkZE5hbWVkUm9vdChKU0NvbnRleHQgKmN4
LCB2b2lkICpycCwgY29uc3QgY2hhciAqbmFtZSk7CgpleHRlcm4gSlNCb29sCkpTX0FkZE5hbWVk
Um9vdFJUKEpTUnVudGltZSAqcnQsIHZvaWQgKnJwLCBjb25zdCBjaGFyICpuYW1lKTsKCmV4dGVy
biBKU0Jvb2wKSlNfUmVtb3ZlUm9vdChKU0NvbnRleHQgKmN4LCB2b2lkICpycCk7CgpleHRlcm4g
SlNCb29sCkpTX1JlbW92ZVJvb3RSVChKU1J1bnRpbWUgKnJ0LCB2b2lkICpycCk7CiMgNTU4ICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKdHlwZWRlZiBpbnROCigq
IEpTR0NSb290TWFwRnVuKSh2b2lkICpycCwgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqZGF0YSk7
CgpleHRlcm4gdWludDMyCkpTX01hcEdDUm9vdHMoSlNSdW50aW1lICpydCwgSlNHQ1Jvb3RNYXBG
dW4gbWFwLCB2b2lkICpkYXRhKTsKCmV4dGVybiBKU0Jvb2wKSlNfTG9ja0dDVGhpbmcoSlNDb250
ZXh0ICpjeCwgdm9pZCAqdGhpbmcpOwoKZXh0ZXJuIEpTQm9vbApKU19VbmxvY2tHQ1RoaW5nKEpT
Q29udGV4dCAqY3gsIHZvaWQgKnRoaW5nKTsKIyA1ODMgIi9ob21lL2FqYXkvbW96L2N2cy9tb3pp
bGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19NYXJrR0NUaGluZyhKU0NvbnRleHQg
KmN4LCB2b2lkICp0aGluZywgY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYXJnKTsKCmV4dGVybiB2
b2lkCkpTX0dDKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfTWF5YmVHQyhKU0NvbnRl
eHQgKmN4KTsKCmV4dGVybiBKU0dDQ2FsbGJhY2sKSlNfU2V0R0NDYWxsYmFjayhKU0NvbnRleHQg
KmN4LCBKU0dDQ2FsbGJhY2sgY2IpOwoKZXh0ZXJuIEpTR0NDYWxsYmFjawpKU19TZXRHQ0NhbGxi
YWNrUlQoSlNSdW50aW1lICpydCwgSlNHQ0NhbGxiYWNrIGNiKTsKCmV4dGVybiBKU0Jvb2wKSlNf
SXNBYm91dFRvQmVGaW5hbGl6ZWQoSlNDb250ZXh0ICpjeCwgdm9pZCAqdGhpbmcpOwojIDYxMyAi
L2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBpbnROCkpT
X0FkZEV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVPcCBmaW5hbGl6ZXIp
OwojIDYyOSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVy
biBpbnROCkpTX1JlbW92ZUV4dGVybmFsU3RyaW5nRmluYWxpemVyKEpTU3RyaW5nRmluYWxpemVP
cCBmaW5hbGl6ZXIpOwoKCgoKCgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdFeHRlcm5hbFN0cmlu
ZyhKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoLCBpbnROIHR5cGUp
OwojIDY0NyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCnN0cnVj
dCBKU0NsYXNzIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB1aW50MzIgZmxhZ3M7CgoKICAg
IEpTUHJvcGVydHlPcCBhZGRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBkZWxQcm9wZXJ0eTsK
ICAgIEpTUHJvcGVydHlPcCBnZXRQcm9wZXJ0eTsKICAgIEpTUHJvcGVydHlPcCBzZXRQcm9wZXJ0
eTsKICAgIEpTRW51bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNSZXNvbHZlT3AgcmVzb2x2ZTsK
ICAgIEpTQ29udmVydE9wIGNvbnZlcnQ7CiAgICBKU0ZpbmFsaXplT3AgZmluYWxpemU7CgoKICAg
IEpTR2V0T2JqZWN0T3BzIGdldE9iamVjdE9wczsKICAgIEpTQ2hlY2tBY2Nlc3NPcCBjaGVja0Fj
Y2VzczsKICAgIEpTTmF0aXZlIGNhbGw7CiAgICBKU05hdGl2ZSBjb25zdHJ1Y3Q7CiAgICBKU1hE
Uk9iamVjdE9wIHhkck9iamVjdDsKICAgIEpTSGFzSW5zdGFuY2VPcCBoYXNJbnN0YW5jZTsKICAg
IEpTTWFya09wIG1hcms7CiAgICBqc3dvcmQgc3BhcmU7Cn07CiMgNjk2ICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKc3RydWN0IEpTT2JqZWN0T3BzIHsKCiAgICBK
U05ld09iamVjdE1hcE9wIG5ld09iamVjdE1hcDsKICAgIEpTT2JqZWN0TWFwT3AgZGVzdHJveU9i
amVjdE1hcDsKICAgIEpTTG9va3VwUHJvcE9wIGxvb2t1cFByb3BlcnR5OwogICAgSlNEZWZpbmVQ
cm9wT3AgZGVmaW5lUHJvcGVydHk7CiAgICBKU1Byb3BlcnR5SWRPcCBnZXRQcm9wZXJ0eTsKICAg
IEpTUHJvcGVydHlJZE9wIHNldFByb3BlcnR5OwogICAgSlNBdHRyaWJ1dGVzT3AgZ2V0QXR0cmli
dXRlczsKICAgIEpTQXR0cmlidXRlc09wIHNldEF0dHJpYnV0ZXM7CiAgICBKU1Byb3BlcnR5SWRP
cCBkZWxldGVQcm9wZXJ0eTsKICAgIEpTQ29udmVydE9wIGRlZmF1bHRWYWx1ZTsKICAgIEpTTmV3
RW51bWVyYXRlT3AgZW51bWVyYXRlOwogICAgSlNDaGVja0FjY2Vzc0lkT3AgY2hlY2tBY2Nlc3M7
CgoKICAgIEpTT2JqZWN0T3AgdGhpc09iamVjdDsKICAgIEpTUHJvcGVydHlSZWZPcCBkcm9wUHJv
cGVydHk7CiAgICBKU05hdGl2ZSBjYWxsOwogICAgSlNOYXRpdmUgY29uc3RydWN0OwogICAgSlNY
RFJPYmplY3RPcCB4ZHJPYmplY3Q7CiAgICBKU0hhc0luc3RhbmNlT3AgaGFzSW5zdGFuY2U7CiAg
ICBKU1NldE9iamVjdFNsb3RPcCBzZXRQcm90bzsKICAgIEpTU2V0T2JqZWN0U2xvdE9wIHNldFBh
cmVudDsKICAgIEpTTWFya09wIG1hcms7CiAgICBKU0ZpbmFsaXplT3AgY2xlYXI7CiAgICBKU0dl
dFJlcXVpcmVkU2xvdE9wIGdldFJlcXVpcmVkU2xvdDsKICAgIEpTU2V0UmVxdWlyZWRTbG90T3Ag
c2V0UmVxdWlyZWRTbG90Owp9OwojIDczNiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzYXBpLmgiCnN0cnVjdCBKU1Byb3BlcnR5IHsKICAgIGpzaWQgaWQ7Cn07CgpzdHJ1Y3Qg
SlNJZEFycmF5IHsKICAgIGpzaW50IGxlbmd0aDsKICAgIGpzaWQgdmVjdG9yWzFdOwp9OwoKZXh0
ZXJuIHZvaWQKSlNfRGVzdHJveUlkQXJyYXkoSlNDb250ZXh0ICpjeCwgSlNJZEFycmF5ICppZGEp
OwoKZXh0ZXJuIEpTQm9vbApKU19WYWx1ZVRvSWQoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNp
ZCAqaWRwKTsKCmV4dGVybiBKU0Jvb2wKSlNfSWRUb1ZhbHVlKEpTQ29udGV4dCAqY3gsIGpzaWQg
aWQsIGpzdmFsICp2cCk7CgoKCgpleHRlcm4gSlNCb29sCkpTX1Byb3BlcnR5U3R1YihKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3ZhbCBpZCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jv
b2wKSlNfRW51bWVyYXRlU3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVy
biBKU0Jvb2wKSlNfUmVzb2x2ZVN0dWIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2
YWwgaWQpOwoKZXh0ZXJuIEpTQm9vbApKU19Db252ZXJ0U3R1YihKU0NvbnRleHQgKmN4LCBKU09i
amVjdCAqb2JqLCBKU1R5cGUgdHlwZSwganN2YWwgKnZwKTsKCmV4dGVybiB2b2lkCkpTX0ZpbmFs
aXplU3R1YihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCnN0cnVjdCBKU0NvbnN0RG91
YmxlU3BlYyB7CiAgICBqc2RvdWJsZSBkdmFsOwogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHVp
bnQ4IGZsYWdzOwogICAgdWludDggc3BhcmVbM107Cn07CgoKCgoKCnN0cnVjdCBKU1Byb3BlcnR5
U3BlYyB7CiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgaW50OCB0aW55aWQ7CiAgICB1aW50OCBm
bGFnczsKICAgIEpTUHJvcGVydHlPcCBnZXR0ZXI7CiAgICBKU1Byb3BlcnR5T3Agc2V0dGVyOwp9
OwoKc3RydWN0IEpTRnVuY3Rpb25TcGVjIHsKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICBKU05h
dGl2ZSBjYWxsOwogICAgdWludDggbmFyZ3M7CiAgICB1aW50OCBmbGFnczsKICAgIHVpbnQxNiBl
eHRyYTsKfTsKCmV4dGVybiBKU09iamVjdCAqCkpTX0luaXRDbGFzcyhKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqLCBKU09iamVjdCAqcGFyZW50X3Byb3RvLAogICAgICAgICAgICAgSlNDbGFz
cyAqY2xhc3AsIEpTTmF0aXZlIGNvbnN0cnVjdG9yLCB1aW50TiBuYXJncywKICAgICAgICAgICAg
IEpTUHJvcGVydHlTcGVjICpwcywgSlNGdW5jdGlvblNwZWMgKmZzLAogICAgICAgICAgICAgSlNQ
cm9wZXJ0eVNwZWMgKnN0YXRpY19wcywgSlNGdW5jdGlvblNwZWMgKnN0YXRpY19mcyk7CgoKZXh0
ZXJuIEpTQ2xhc3MgKgpKU19HZXRDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsK
IyA4MTggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4g
SlNCb29sCkpTX0luc3RhbmNlT2YoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNDbGFz
cyAqY2xhc3AsIGpzdmFsICphcmd2KTsKCmV4dGVybiB2b2lkICoKSlNfR2V0UHJpdmF0ZShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UHJpdmF0ZShK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB2b2lkICpkYXRhKTsKCmV4dGVybiB2b2lkICoK
SlNfR2V0SW5zdGFuY2VQcml2YXRlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTQ2xh
c3MgKmNsYXNwLAogICAgICAgICAgICAgICAgICAgICAganN2YWwgKmFyZ3YpOwoKZXh0ZXJuIEpT
T2JqZWN0ICoKSlNfR2V0UHJvdG90eXBlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoK
ZXh0ZXJuIEpTQm9vbApKU19TZXRQcm90b3R5cGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwgSlNPYmplY3QgKnByb3RvKTsKCmV4dGVybiBKU09iamVjdCAqCkpTX0dldFBhcmVudChKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UGFyZW50KEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTT2JqZWN0ICpwYXJlbnQpOwoKZXh0ZXJuIEpT
T2JqZWN0ICoKSlNfR2V0Q29uc3RydWN0b3IoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKnByb3Rv
KTsKCmV4dGVybiBKU09iamVjdCAqCkpTX05ld09iamVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNz
ICpjbGFzcCwgSlNPYmplY3QgKnByb3RvLCBKU09iamVjdCAqcGFyZW50KTsKCmV4dGVybiBKU09i
amVjdCAqCkpTX0NvbnN0cnVjdE9iamVjdChKU0NvbnRleHQgKmN4LCBKU0NsYXNzICpjbGFzcCwg
SlNPYmplY3QgKnByb3RvLAogICAgICAgICAgICAgICAgICAgSlNPYmplY3QgKnBhcmVudCk7Cgpl
eHRlcm4gSlNPYmplY3QgKgpKU19EZWZpbmVPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3Qg
Km9iaiwgY29uc3QgY2hhciAqbmFtZSwgSlNDbGFzcyAqY2xhc3AsCiAgICAgICAgICAgICAgICBK
U09iamVjdCAqcHJvdG8sIHVpbnROIGF0dHJzKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVmaW5lQ29u
c3REb3VibGVzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTQ29uc3REb3VibGVTcGVj
ICpjZHMpOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVQcm9wZXJ0aWVzKEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosIEpTUHJvcGVydHlTcGVjICpwcyk7CgpleHRlcm4gSlNCb29sCkpTX0Rl
ZmluZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5h
bWUsIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAgICBKU1Byb3BlcnR5T3AgZ2V0dGVyLCBK
U1Byb3BlcnR5T3Agc2V0dGVyLCB1aW50TiBhdHRycyk7CgoKCgoKCgpleHRlcm4gSlNCb29sCkpT
X0dldFByb3BlcnR5QXR0cmlidXRlcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25z
dCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gKmF0dHJzcCwgSlNC
b29sICpmb3VuZHApOwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19TZXRQcm9wZXJ0eUF0dHJpYnV0
ZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnROIGF0dHJzLCBKU0Jvb2wgKmZvdW5kcCk7CgpleHRlcm4g
SlNCb29sCkpTX0RlZmluZVByb3BlcnR5V2l0aFRpbnlJZChKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
OCB0aW55aWQsIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcm9w
ZXJ0eU9wIGdldHRlciwgSlNQcm9wZXJ0eU9wIHNldHRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnROIGF0dHJzKTsKCmV4dGVybiBKU0Jvb2wKSlNfQWxpYXNQcm9wZXJ0eShKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmFsaWFzKTsKCmV4dGVybiBKU0Jvb2wKSlNfTG9va3VwUHJvcGVydHko
SlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwganN2YWwgKnZw
KTsKCmV4dGVybiBKU0Jvb2wKSlNfR2V0UHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3Qg
Km9iaiwgY29uc3QgY2hhciAqbmFtZSwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0
UHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwg
anN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVsZXRlUHJvcGVydHkoSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSk7CgpleHRlcm4gSlNCb29sCkpTX0Rl
bGV0ZVByb3BlcnR5MihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpu
YW1lLAogICAgICAgICAgICAgICAgICAganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19E
ZWZpbmVVQ1Byb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QganNjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwganN2YWwgdmFsdWUs
CiAgICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU9wIGdldHRlciwgSlNQcm9wZXJ0eU9wIHNl
dHRlciwKICAgICAgICAgICAgICAgICAgICB1aW50TiBhdHRycyk7CgoKCgoKCgpleHRlcm4gSlNC
b29sCkpTX0dldFVDUHJvcGVydHlBdHRyaWJ1dGVzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpv
YmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90
IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnROICphdHRyc3AsIEpTQm9v
bCAqZm91bmRwKTsKCgoKCgoKCmV4dGVybiBKU0Jvb2wKSlNfU2V0VUNQcm9wZXJ0eUF0dHJpYnV0
ZXMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QganNjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludE4gYXR0cnMsIEpTQm9vbCAqZm91bmRwKTsKCgpleHRlcm4gSlNCb29sCkpT
X0RlZmluZVVDUHJvcGVydHlXaXRoVGlueUlkKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqbmFtZSwgc2l6ZV90
IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDggdGlueWlkLCBqc3Zh
bCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU9wIGdldHRl
ciwgSlNQcm9wZXJ0eU9wIHNldHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dE4gYXR0cnMpOwoKZXh0ZXJuIEpTQm9vbApKU19Mb29rdXBVQ1Byb3BlcnR5KEpTQ29udGV4dCAq
Y3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpuYW1l
LCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqdnApOwoKZXh0ZXJu
IEpTQm9vbApKU19HZXRVQ1Byb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAg
ICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAg
ICAgICAgICAgICBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTQm9vbApKU19TZXRVQ1Byb3BlcnR5KEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosCiAgICAgICAgICAgICAgICAgY29uc3QganNjaGFy
ICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKICAgICAgICAgICAgICAgICBqc3ZhbCAqdnApOwoKZXh0
ZXJuIEpTQm9vbApKU19EZWxldGVVQ1Byb3BlcnR5MihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKm5hbWUsIHNpemVfdCBuYW1l
bGVuLAogICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNPYmplY3Qg
KgpKU19OZXdBcnJheU9iamVjdChKU0NvbnRleHQgKmN4LCBqc2ludCBsZW5ndGgsIGpzdmFsICp2
ZWN0b3IpOwoKZXh0ZXJuIEpTQm9vbApKU19Jc0FycmF5T2JqZWN0KEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmopOwoKZXh0ZXJuIEpTQm9vbApKU19HZXRBcnJheUxlbmd0aChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCBqc3VpbnQgKmxlbmd0aHApOwoKZXh0ZXJuIEpTQm9vbApKU19T
ZXRBcnJheUxlbmd0aChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3VpbnQgbGVuZ3Ro
KTsKCmV4dGVybiBKU0Jvb2wKSlNfSGFzQXJyYXlMZW5ndGgoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwganN1aW50ICpsZW5ndGhwKTsKCmV4dGVybiBKU0Jvb2wKSlNfRGVmaW5lRWxlbWVu
dChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2ludCBpbmRleCwganN2YWwgdmFsdWUs
CiAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eU9wIGdldHRlciwgSlNQcm9wZXJ0eU9wIHNldHRl
ciwgdWludE4gYXR0cnMpOwoKZXh0ZXJuIEpTQm9vbApKU19BbGlhc0VsZW1lbnQoSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwganNpbnQgYWxpYXMpOwoKZXh0
ZXJuIEpTQm9vbApKU19Mb29rdXBFbGVtZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IGpzaW50IGluZGV4LCBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTQm9vbApKU19HZXRFbGVtZW50KEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaW50IGluZGV4LCBqc3ZhbCAqdnApOwoKZXh0
ZXJuIEpTQm9vbApKU19TZXRFbGVtZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpz
aW50IGluZGV4LCBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTQm9vbApKU19EZWxldGVFbGVtZW50KEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaW50IGluZGV4KTsKCmV4dGVybiBKU0Jvb2wK
SlNfRGVsZXRlRWxlbWVudDIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNpbnQgaW5k
ZXgsIGpzdmFsICpydmFsKTsKCmV4dGVybiB2b2lkCkpTX0NsZWFyU2NvcGUoSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKm9iaik7CgpleHRlcm4gSlNJZEFycmF5ICoKSlNfRW51bWVyYXRlKEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0ZXJuIEpTQm9vbApKU19DaGVja0FjY2VzcyhK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLCBKU0FjY2Vzc01vZGUgbW9kZSwK
ICAgICAgICAgICAgICAganN2YWwgKnZwLCB1aW50TiAqYXR0cnNwKTsKCmV4dGVybiBKU0Jvb2wK
SlNfR2V0UmVzZXJ2ZWRTbG90KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnQzMiBp
bmRleCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKSlNfU2V0UmVzZXJ2ZWRTbG90KEpTQ29u
dGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnQzMiBpbmRleCwganN2YWwgdik7CgoKCgoKCnR5
cGVkZWYgc3RydWN0IEpTUHJpbmNpcGFscyB7CiAgICBjaGFyICpjb2RlYmFzZTsKICAgIHZvaWQg
KigqZ2V0UHJpbmNpcGFsQXJyYXkpKEpTQ29udGV4dCAqY3gsIHN0cnVjdCBKU1ByaW5jaXBhbHMg
Kik7CiAgICBKU0Jvb2wgKCpnbG9iYWxQcml2aWxlZ2VzRW5hYmxlZCkoSlNDb250ZXh0ICpjeCwg
c3RydWN0IEpTUHJpbmNpcGFscyAqKTsKCgogICAgdWludE4gcmVmY291bnQ7CiAgICB2b2lkICgq
ZGVzdHJveSkoSlNDb250ZXh0ICpjeCwgc3RydWN0IEpTUHJpbmNpcGFscyAqKTsKfSBKU1ByaW5j
aXBhbHM7CiMgMTA0OSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgi
CmV4dGVybiBKU0Z1bmN0aW9uICoKSlNfTmV3RnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNOYXRp
dmUgY2FsbCwgdWludE4gbmFyZ3MsIHVpbnROIGZsYWdzLAogICAgICAgICAgICAgICBKU09iamVj
dCAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lKTsKCmV4dGVybiBKU09iamVjdCAqCkpTX0dldEZ1
bmN0aW9uT2JqZWN0KEpTRnVuY3Rpb24gKmZ1bik7CgpleHRlcm4gY29uc3QgY2hhciAqCkpTX0dl
dEZ1bmN0aW9uTmFtZShKU0Z1bmN0aW9uICpmdW4pOwoKZXh0ZXJuIEpTQm9vbApKU19EZWZpbmVG
dW5jdGlvbnMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNGdW5jdGlvblNwZWMgKmZz
KTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKSlNfRGVmaW5lRnVuY3Rpb24oSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgSlNOYXRpdmUgY2FsbCwKICAgICAgICAg
ICAgICAgICAgdWludE4gbmFyZ3MsIHVpbnROIGF0dHJzKTsKCmV4dGVybiBKU09iamVjdCAqCkpT
X0Nsb25lRnVuY3Rpb25PYmplY3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKmZ1bm9iaiwgSlNP
YmplY3QgKnBhcmVudCk7CiMgMTA3NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzYXBpLmgiCmV4dGVybiBKU0Jvb2wKSlNfQnVmZmVySXNDb21waWxhYmxlVW5pdChKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIyAxMDg3ICIvaG9tZS9hamF5L21vei9jdnMvbW96
aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZVNjcmlwdChK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmJ5dGVzLCBzaXplX3QgbGVuZ3RoLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVu
YW1lLCB1aW50TiBsaW5lbm8pOwoKZXh0ZXJuIEpTU2NyaXB0ICoKSlNfQ29tcGlsZVNjcmlwdEZv
clByaW5jaXBhbHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywgc2l6ZV90IGxlbmd0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubyk7
CgpleHRlcm4gSlNTY3JpcHQgKgpKU19Db21waWxlVUNTY3JpcHQoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqY2hhcnMsIHNpemVf
dCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4g
bGluZW5vKTsKCmV4dGVybiBKU1NjcmlwdCAqCkpTX0NvbXBpbGVVQ1NjcmlwdEZvclByaW5jaXBh
bHMoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywgc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsK
CmV4dGVybiBKU1NjcmlwdCAqCkpTX0NvbXBpbGVGaWxlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmosIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKCmV4dGVybiBKU1NjcmlwdCAqCkpTX0NvbXBp
bGVGaWxlSGFuZGxlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmZp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBGSUxFICpmaCk7CgpleHRlcm4gSlNTY3JpcHQg
KgpKU19Db21waWxlRmlsZUhhbmRsZUZvclByaW5jaXBhbHMoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZp
bGVuYW1lLCBGSUxFICpmaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJp
bmNpcGFscyAqcHJpbmNpcGFscyk7CiMgMTEzNyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzYXBpLmgiCmV4dGVybiBKU09iamVjdCAqCkpTX05ld1NjcmlwdE9iamVjdChKU0Nv
bnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0KTsKCmV4dGVybiB2b2lkCkpTX0Rlc3Ryb3lTY3Jp
cHQoSlNDb250ZXh0ICpjeCwgSlNTY3JpcHQgKnNjcmlwdCk7CgpleHRlcm4gSlNGdW5jdGlvbiAq
CkpTX0NvbXBpbGVGdW5jdGlvbihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBjb25zdCBj
aGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiph
cmduYW1lcywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVu
byk7CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVGdW5jdGlvbkZvclByaW5jaXBhbHMo
SlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBKU1ByaW5jaXBhbHMgKnByaW5jaXBhbHMsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmduYW1l
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywgc2l6
ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpm
aWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKSlNfQ29tcGlsZVVD
RnVuY3Rpb24oSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmduYW1lcywK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpjaGFycywgc2l6ZV90IGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubyk7
CgpleHRlcm4gSlNGdW5jdGlvbiAqCkpTX0NvbXBpbGVVQ0Z1bmN0aW9uRm9yUHJpbmNpcGFscyhK
U0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludE4gbmFyZ3MsIGNvbnN0IGNoYXIgKiphcmdu
YW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzY2hhciAqY2hh
cnMsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vKTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX0Rl
Y29tcGlsZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU1NjcmlwdCAqc2NyaXB0LCBjb25zdCBjaGFy
ICpuYW1lLAogICAgICAgICAgICAgICAgICAgdWludE4gaW5kZW50KTsKCgoKCgoKCmV4dGVybiBK
U1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1bmN0aW9uKEpTQ29udGV4dCAqY3gsIEpTRnVuY3Rpb24g
KmZ1biwgdWludE4gaW5kZW50KTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX0RlY29tcGlsZUZ1bmN0
aW9uQm9keShKU0NvbnRleHQgKmN4LCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGluZGVudCk7CiMg
MTIyMCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBK
U0Jvb2wKSlNfRXhlY3V0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1Nj
cmlwdCAqc2NyaXB0LCBqc3ZhbCAqcnZhbCk7CgoKCgoKdHlwZWRlZiBlbnVtIEpTRXhlY1BhcnQg
eyBKU0VYRUNfUFJPTE9HLCBKU0VYRUNfTUFJTiB9IEpTRXhlY1BhcnQ7CgpleHRlcm4gSlNCb29s
CkpTX0V4ZWN1dGVTY3JpcHRQYXJ0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTU2Ny
aXB0ICpzY3JpcHQsCiAgICAgICAgICAgICAgICAgICAgIEpTRXhlY1BhcnQgcGFydCwganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApKU19FdmFsdWF0ZVNjcmlwdChKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpieXRlcywgdWludE4g
bGVuZ3RoLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGlu
ZW5vLAogICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0V2
YWx1YXRlU2NyaXB0Rm9yUHJpbmNpcGFscyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNQcmluY2lwYWxzICpwcmluY2lwYWxzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnl0ZXMsIHVpbnROIGxl
bmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1l
LCB1aW50TiBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZh
bCk7CgpleHRlcm4gSlNCb29sCkpTX0V2YWx1YXRlVUNTY3JpcHQoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwKICAgICAgICAgICAgICAgICAgICBjb25zdCBqc2NoYXIgKmNoYXJzLCB1aW50
TiBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnRO
IGxpbmVubywKICAgICAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29s
CkpTX0V2YWx1YXRlVUNTY3JpcHRGb3JQcmluY2lwYWxzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTUHJpbmNpcGFscyAqcHJp
bmNpcGFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNjaGFyICpj
aGFycywgdWludE4gbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpmaWxlbmFtZSwgdWludE4gbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqc3ZhbCAqcnZhbCk7CgpleHRlcm4gSlNCb29sCkpTX0NhbGxGdW5jdGlvbihKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU0Z1bmN0aW9uICpmdW4sIHVpbnROIGFyZ2MsCiAg
ICAgICAgICAgICAgICBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApK
U19DYWxsRnVuY3Rpb25OYW1lKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGNvbnN0IGNo
YXIgKm5hbWUsIHVpbnROIGFyZ2MsCiAgICAgICAgICAgICAgICAgICAganN2YWwgKmFyZ3YsIGpz
dmFsICpydmFsKTsKCmV4dGVybiBKU0Jvb2wKSlNfQ2FsbEZ1bmN0aW9uVmFsdWUoSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgZnZhbCwgdWludE4gYXJnYywKICAgICAgICAgICAg
ICAgICAgICAganN2YWwgKmFyZ3YsIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0JyYW5jaENhbGxi
YWNrCkpTX1NldEJyYW5jaENhbGxiYWNrKEpTQ29udGV4dCAqY3gsIEpTQnJhbmNoQ2FsbGJhY2sg
Y2IpOwoKZXh0ZXJuIEpTQm9vbApKU19Jc1J1bm5pbmcoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4g
SlNCb29sCkpTX0lzQ29uc3RydWN0aW5nKEpTQ29udGV4dCAqY3gpOwoKCgoKCgpleHRlcm4gSlNC
b29sCkpTX0lzQXNzaWduaW5nKEpTQ29udGV4dCAqY3gpOwojIDEyOTYgIi9ob21lL2FqYXkvbW96
L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19TZXRDYWxsUmV0dXJu
VmFsdWUyKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYpOwojIDEzMTAgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdTdHJpbmco
SlNDb250ZXh0ICpjeCwgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwoKZXh0ZXJuIEpTU3Ry
aW5nICoKSlNfTmV3U3RyaW5nQ29weU4oSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqcywgc2l6
ZV90IG4pOwoKZXh0ZXJuIEpTU3RyaW5nICoKSlNfTmV3U3RyaW5nQ29weVooSlNDb250ZXh0ICpj
eCwgY29uc3QgY2hhciAqcyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19JbnRlcm5TdHJpbmcoSlND
b250ZXh0ICpjeCwgY29uc3QgY2hhciAqcyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0
cmluZyhKU0NvbnRleHQgKmN4LCBqc2NoYXIgKmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCmV4dGVy
biBKU1N0cmluZyAqCkpTX05ld1VDU3RyaW5nQ29weU4oSlNDb250ZXh0ICpjeCwgY29uc3QganNj
aGFyICpzLCBzaXplX3Qgbik7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19OZXdVQ1N0cmluZ0NvcHla
KEpTQ29udGV4dCAqY3gsIGNvbnN0IGpzY2hhciAqcyk7CgpleHRlcm4gSlNTdHJpbmcgKgpKU19J
bnRlcm5VQ1N0cmluZ04oSlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3QgbGVu
Z3RoKTsKCmV4dGVybiBKU1N0cmluZyAqCkpTX0ludGVyblVDU3RyaW5nKEpTQ29udGV4dCAqY3gs
IGNvbnN0IGpzY2hhciAqcyk7CgpleHRlcm4gY2hhciAqCkpTX0dldFN0cmluZ0J5dGVzKEpTU3Ry
aW5nICpzdHIpOwoKZXh0ZXJuIGpzY2hhciAqCkpTX0dldFN0cmluZ0NoYXJzKEpTU3RyaW5nICpz
dHIpOwoKZXh0ZXJuIHNpemVfdApKU19HZXRTdHJpbmdMZW5ndGgoSlNTdHJpbmcgKnN0cik7Cgpl
eHRlcm4gaW50TgpKU19Db21wYXJlU3RyaW5ncyhKU1N0cmluZyAqc3RyMSwgSlNTdHJpbmcgKnN0
cjIpOwoKCgoKCgpzdHJ1Y3QgSlNMb2NhbGVDYWxsYmFja3MgewogICAgSlNMb2NhbGVUb1VwcGVy
Q2FzZSBsb2NhbGVUb1VwcGVyQ2FzZTsKICAgIEpTTG9jYWxlVG9Mb3dlckNhc2UgbG9jYWxlVG9M
b3dlckNhc2U7CiAgICBKU0xvY2FsZUNvbXBhcmUgbG9jYWxlQ29tcGFyZTsKfTsKCgoKCgpleHRl
cm4gdm9pZApKU19TZXRMb2NhbGVDYWxsYmFja3MoSlNDb250ZXh0ICpjeCwgSlNMb2NhbGVDYWxs
YmFja3MgKmNhbGxiYWNrcyk7CgoKCgoKZXh0ZXJuIEpTTG9jYWxlQ2FsbGJhY2tzICoKSlNfR2V0
TG9jYWxlQ2FsbGJhY2tzKEpTQ29udGV4dCAqY3gpOwojIDEzODYgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc2FwaS5oIgpleHRlcm4gdm9pZApKU19SZXBvcnRFcnJvcihKU0Nv
bnRleHQgKmN4LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CgoKCgpleHRlcm4gdm9pZApKU19S
ZXBvcnRFcnJvck51bWJlcihKU0NvbnRleHQgKmN4LCBKU0Vycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjaywKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlclJlZiwgY29uc3QgdWludE4gZXJy
b3JOdW1iZXIsIC4uLik7CgoKCgpleHRlcm4gdm9pZApKU19SZXBvcnRFcnJvck51bWJlclVDKEpT
Q29udGV4dCAqY3gsIEpTRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLAogICAgICAgICAgICAg
ICAgICAgICB2b2lkICp1c2VyUmVmLCBjb25zdCB1aW50TiBlcnJvck51bWJlciwgLi4uKTsKCgoK
CgoKCmV4dGVybiBKU0Jvb2wKSlNfUmVwb3J0V2FybmluZyhKU0NvbnRleHQgKmN4LCBjb25zdCBj
aGFyICpmb3JtYXQsIC4uLik7CgpleHRlcm4gSlNCb29sCkpTX1JlcG9ydEVycm9yRmxhZ3NBbmRO
dW1iZXIoSlNDb250ZXh0ICpjeCwgdWludE4gZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSlNFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssIHZvaWQgKnVzZXJSZWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludE4gZXJyb3JOdW1iZXIsIC4uLik7Cgpl
eHRlcm4gSlNCb29sCkpTX1JlcG9ydEVycm9yRmxhZ3NBbmROdW1iZXJVQyhKU0NvbnRleHQgKmN4
LCB1aW50TiBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTRXJyb3JDYWxs
YmFjayBlcnJvckNhbGxiYWNrLCB2b2lkICp1c2VyUmVmLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludE4gZXJyb3JOdW1iZXIsIC4uLik7CgoKCgpleHRlcm4gdm9pZApK
U19SZXBvcnRPdXRPZk1lbW9yeShKU0NvbnRleHQgKmN4KTsKCnN0cnVjdCBKU0Vycm9yUmVwb3J0
IHsKICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwogICAgdWludE4gbGluZW5vOwogICAgY29uc3Qg
Y2hhciAqbGluZWJ1ZjsKICAgIGNvbnN0IGNoYXIgKnRva2VucHRyOwogICAgY29uc3QganNjaGFy
ICp1Y2xpbmVidWY7CiAgICBjb25zdCBqc2NoYXIgKnVjdG9rZW5wdHI7CiAgICB1aW50TiBmbGFn
czsKICAgIHVpbnROIGVycm9yTnVtYmVyOwogICAgY29uc3QganNjaGFyICp1Y21lc3NhZ2U7CiAg
ICBjb25zdCBqc2NoYXIgKiptZXNzYWdlQXJnczsKfTsKIyAxNDYwICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIEpTRXJyb3JSZXBvcnRlcgpKU19TZXRF
cnJvclJlcG9ydGVyKEpTQ29udGV4dCAqY3gsIEpTRXJyb3JSZXBvcnRlciBlcik7CiMgMTQ3MiAi
L2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBKU09iamVj
dCAqCkpTX05ld1JlZ0V4cE9iamVjdChKU0NvbnRleHQgKmN4LCBjaGFyICpieXRlcywgc2l6ZV90
IGxlbmd0aCwgdWludE4gZmxhZ3MpOwoKZXh0ZXJuIEpTT2JqZWN0ICoKSlNfTmV3VUNSZWdFeHBP
YmplY3QoSlNDb250ZXh0ICpjeCwganNjaGFyICpjaGFycywgc2l6ZV90IGxlbmd0aCwgdWludE4g
ZmxhZ3MpOwoKZXh0ZXJuIHZvaWQKSlNfU2V0UmVnRXhwSW5wdXQoSlNDb250ZXh0ICpjeCwgSlNT
dHJpbmcgKmlucHV0LCBKU0Jvb2wgbXVsdGlsaW5lKTsKCmV4dGVybiB2b2lkCkpTX0NsZWFyUmVn
RXhwU3RhdGljcyhKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB2b2lkCkpTX0NsZWFyUmVnRXhwUm9v
dHMoSlNDb250ZXh0ICpjeCk7CgoKCgoKZXh0ZXJuIEpTQm9vbApKU19Jc0V4Y2VwdGlvblBlbmRp
bmcoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gSlNCb29sCkpTX0dldFBlbmRpbmdFeGNlcHRpb24o
SlNDb250ZXh0ICpjeCwganN2YWwgKnZwKTsKCmV4dGVybiB2b2lkCkpTX1NldFBlbmRpbmdFeGNl
cHRpb24oSlNDb250ZXh0ICpjeCwganN2YWwgdik7CgpleHRlcm4gdm9pZApKU19DbGVhclBlbmRp
bmdFeGNlcHRpb24oSlNDb250ZXh0ICpjeCk7CiMgMTUxNCAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzYXBpLmgiCmV4dGVybiBKU0V4Y2VwdGlvblN0YXRlICoKSlNfU2F2ZUV4
Y2VwdGlvblN0YXRlKEpTQ29udGV4dCAqY3gpOwoKZXh0ZXJuIHZvaWQKSlNfUmVzdG9yZUV4Y2Vw
dGlvblN0YXRlKEpTQ29udGV4dCAqY3gsIEpTRXhjZXB0aW9uU3RhdGUgKnN0YXRlKTsKCmV4dGVy
biB2b2lkCkpTX0Ryb3BFeGNlcHRpb25TdGF0ZShKU0NvbnRleHQgKmN4LCBKU0V4Y2VwdGlvblN0
YXRlICpzdGF0ZSk7CgoKCgoKCgpleHRlcm4gSlNFcnJvclJlcG9ydCAqCkpTX0Vycm9yRnJvbUV4
Y2VwdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKIyAxNTQ0ICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNhcGkuaCIKZXh0ZXJuIGludE4KSlNfR2V0Q29udGV4dFRocmVh
ZChKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBpbnROCkpTX1NldENvbnRleHRUaHJlYWQoSlNDb250
ZXh0ICpjeCk7CgpleHRlcm4gaW50TgpKU19DbGVhckNvbnRleHRUaHJlYWQoSlNDb250ZXh0ICpj
eCk7CiMgNDQgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmMiIDIK
IyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5oIiAxCiMgNDAg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmgiCiMgMSAiL2hvbWUv
YWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHJ2dGQuaCIgMQojIDUyICIvaG9tZS9hamF5
L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwcnZ0ZC5oIgojIDEgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc3B1YnRkLmgiIDEKIyA1MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzcHJ2dGQuaCIgMgoKCnR5cGVkZWYgdWludDgganNieXRlY29kZTsKdHlw
ZWRlZiB1aW50OCBqc3NyY25vdGU7CnR5cGVkZWYgdWludDMyIGpzYXRvbWlkOwoKCnR5cGVkZWYg
c3RydWN0IEpTQXJndW1lbnRGb3JtYXRNYXAgSlNBcmd1bWVudEZvcm1hdE1hcDsKdHlwZWRlZiBz
dHJ1Y3QgSlNDb2RlR2VuZXJhdG9yIEpTQ29kZUdlbmVyYXRvcjsKdHlwZWRlZiBzdHJ1Y3QgSlNH
Q0xvY2tIYXNoRW50cnkgSlNHQ0xvY2tIYXNoRW50cnk7CnR5cGVkZWYgc3RydWN0IEpTR0NSb290
SGFzaEVudHJ5IEpTR0NSb290SGFzaEVudHJ5Owp0eXBlZGVmIHN0cnVjdCBKU0dDVGhpbmcgSlNH
Q1RoaW5nOwp0eXBlZGVmIHN0cnVjdCBKU1BhcnNlTm9kZSBKU1BhcnNlTm9kZTsKdHlwZWRlZiBz
dHJ1Y3QgSlNTaGFycE9iamVjdE1hcCBKU1NoYXJwT2JqZWN0TWFwOwp0eXBlZGVmIHN0cnVjdCBK
U1Rva2VuIEpTVG9rZW47CnR5cGVkZWYgc3RydWN0IEpTVG9rZW5Qb3MgSlNUb2tlblBvczsKdHlw
ZWRlZiBzdHJ1Y3QgSlNUb2tlblB0ciBKU1Rva2VuUHRyOwp0eXBlZGVmIHN0cnVjdCBKU1Rva2Vu
U3RyZWFtIEpTVG9rZW5TdHJlYW07CnR5cGVkZWYgc3RydWN0IEpTVHJlZUNvbnRleHQgSlNUcmVl
Q29udGV4dDsKdHlwZWRlZiBzdHJ1Y3QgSlNUcnlOb3RlIEpTVHJ5Tm90ZTsKCgp0eXBlZGVmIHN0
cnVjdCBKU0F0b20gSlNBdG9tOwp0eXBlZGVmIHN0cnVjdCBKU0F0b21MaXN0IEpTQXRvbUxpc3Q7
CnR5cGVkZWYgc3RydWN0IEpTQXRvbUxpc3RFbGVtZW50IEpTQXRvbUxpc3RFbGVtZW50Owp0eXBl
ZGVmIHN0cnVjdCBKU0F0b21NYXAgSlNBdG9tTWFwOwp0eXBlZGVmIHN0cnVjdCBKU0F0b21TdGF0
ZSBKU0F0b21TdGF0ZTsKdHlwZWRlZiBzdHJ1Y3QgSlNDb2RlU3BlYyBKU0NvZGVTcGVjOwp0eXBl
ZGVmIHN0cnVjdCBKU1ByaW50ZXIgSlNQcmludGVyOwp0eXBlZGVmIHN0cnVjdCBKU1JlZ0V4cCBK
U1JlZ0V4cDsKdHlwZWRlZiBzdHJ1Y3QgSlNSZWdFeHBTdGF0aWNzIEpTUmVnRXhwU3RhdGljczsK
dHlwZWRlZiBzdHJ1Y3QgSlNTY29wZSBKU1Njb3BlOwp0eXBlZGVmIHN0cnVjdCBKU1Njb3BlT3Bz
IEpTU2NvcGVPcHM7CnR5cGVkZWYgc3RydWN0IEpTU2NvcGVQcm9wZXJ0eSBKU1Njb3BlUHJvcGVy
dHk7CnR5cGVkZWYgc3RydWN0IEpTU3RhY2tGcmFtZSBKU1N0YWNrRnJhbWU7CnR5cGVkZWYgc3Ry
dWN0IEpTU3RhY2tIZWFkZXIgSlNTdGFja0hlYWRlcjsKdHlwZWRlZiBzdHJ1Y3QgSlNTdWJTdHJp
bmcgSlNTdWJTdHJpbmc7CnR5cGVkZWYgc3RydWN0IEpTU3ltYm9sIEpTU3ltYm9sOwoKCnR5cGVk
ZWYgZW51bSBKU1RyYXBTdGF0dXMgewogICAgSlNUUkFQX0VSUk9SLAogICAgSlNUUkFQX0NPTlRJ
TlVFLAogICAgSlNUUkFQX1JFVFVSTiwKICAgIEpTVFJBUF9USFJPVywKICAgIEpTVFJBUF9MSU1J
VAp9IEpTVHJhcFN0YXR1czsKCnR5cGVkZWYgSlNUcmFwU3RhdHVzCigqIEpTVHJhcEhhbmRsZXIp
KEpTQ29udGV4dCAqY3gsIEpTU2NyaXB0ICpzY3JpcHQsIGpzYnl0ZWNvZGUgKnBjLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAganN2YWwgKnJ2YWwsIHZvaWQgKmNsb3N1cmUpOwoK
dHlwZWRlZiBKU0Jvb2wKKCogSlNXYXRjaFBvaW50SGFuZGxlcikoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwganN2YWwgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqc3ZhbCBvbGQsIGpzdmFsICpuZXdwLCB2b2lkICpjbG9zdXJlKTsKCgp0eXBlZGVmIHZv
aWQKKCogSlNOZXdTY3JpcHRIb29rKShKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludE4gbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBKU1NjcmlwdCAqc2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU0Z1bmN0aW9uICpmdW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmNhbGxlcmRhdGEpOwoKCnR5cGVkZWYgdm9pZAooKiBKU0Rlc3Ryb3lTY3JpcHRI
b29rKShKU0NvbnRleHQgKmN4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNTY3JpcHQgKnNjcmlwdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmNhbGxlcmRhdGEpOwoKdHlwZWRlZiB2b2lkCigqIEpTU291cmNlSGFuZGxlciko
Y29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnROIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAganNjaGFyICpzdHIsIHNpemVfdCBsZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipsaXN0ZW5lclRTRGF0YSwgdm9pZCAqY2xvc3Vy
ZSk7CiMgMTU3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwcnZ0ZC5oIgp0
eXBlZGVmIHZvaWQgKgooKiBKU0ludGVycHJldGVySG9vaykoSlNDb250ZXh0ICpjeCwgSlNTdGFj
a0ZyYW1lICpmcCwgSlNCb29sIGJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU0Jvb2wgKm9rLCB2b2lkICpjbG9zdXJlKTsKCnR5cGVkZWYgdm9pZAooKiBKU09i
amVjdEhvb2spKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTQm9vbCBpc05ldywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSk7Cgp0eXBlZGVmIEpT
Qm9vbAooKiBKU0RlYnVnRXJyb3JIb29rKShKU0NvbnRleHQgKmN4LCBjb25zdCBjaGFyICptZXNz
YWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNFcnJvclJlcG9ydCAq
cmVwb3J0LCB2b2lkICpjbG9zdXJlKTsKIyA0MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzYXJyYXkuaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc3B1YnRkLmgiIDEKIyA0MiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pz
YXJyYXkuaCIgMgoKCgpleHRlcm4gSlNDbGFzcyBqc19BcnJheUNsYXNzOwoKZXh0ZXJuIEpTT2Jq
ZWN0ICoKanNfSW5pdEFycmF5Q2xhc3MoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7Cgpl
eHRlcm4gSlNPYmplY3QgKgpqc19OZXdBcnJheU9iamVjdChKU0NvbnRleHQgKmN4LCBqc3VpbnQg
bGVuZ3RoLCBqc3ZhbCAqdmVjdG9yKTsKCmV4dGVybiBKU0Jvb2wKanNfR2V0TGVuZ3RoUHJvcGVy
dHkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN1aW50ICpsZW5ndGhwKTsKCmV4dGVy
biBKU0Jvb2wKanNfU2V0TGVuZ3RoUHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwganN1aW50IGxlbmd0aCk7CgpleHRlcm4gSlNCb29sCmpzX0hhc0xlbmd0aFByb3BlcnR5KEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdWludCAqbGVuZ3RocCk7CgoKCgp0eXBlZGVm
IGludCAoKkpTQ29tcGFyYXRvcikoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAq
YXJnKTsKCmV4dGVybiBKU0Jvb2wKanNfcXNvcnQodm9pZCAqdmVjLCBzaXplX3QgbmVsLCBzaXpl
X3QgZWxzaXplLCBKU0NvbXBhcmF0b3IgY21wLCB2b2lkICphcmcpOwojIDQ1ICIvaG9tZS9hamF5
L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ov
Y3ZzL21vemlsbGEvanMvc3JjL2pzYXRvbS5oIiAxCiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc2F0b20uaCIKIyAxICIvaG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0
MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXRvbS5oIiAyCiMgMSAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzdHlwZXMuaCIgMQojIDQyICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhdG9tLmgiIDIKIyAxICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNoYXNoLmgiIDEKIyA0MCAiL2hvbWUvYWpheS9tb3ovY3Zz
L21vemlsbGEvanMvc3JjL2pzaGFzaC5oIgojIDEgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDQxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNoYXNoLmgiIDIKIyAxICIv
aG9tZS9hamF5L2djYy9jdnMvY3ZzcmxzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MS9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDQyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9q
cy9zcmMvanNoYXNoLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMv
anN0eXBlcy5oIiAxCiMgNDMgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2hh
c2guaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NvbXBhdC5o
IiAxCiMgNDQgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2hhc2guaCIgMgoK
Cgp0eXBlZGVmIHVpbnQzMiBKU0hhc2hOdW1iZXI7CnR5cGVkZWYgc3RydWN0IEpTSGFzaEVudHJ5
IEpTSGFzaEVudHJ5Owp0eXBlZGVmIHN0cnVjdCBKU0hhc2hUYWJsZSBKU0hhc2hUYWJsZTsKCgoK
CnR5cGVkZWYgSlNIYXNoTnVtYmVyICgqIEpTSGFzaEZ1bmN0aW9uKShjb25zdCB2b2lkICprZXkp
Owp0eXBlZGVmIGludE4gKCogSlNIYXNoQ29tcGFyYXRvcikoY29uc3Qgdm9pZCAqdjEsIGNvbnN0
IHZvaWQgKnYyKTsKdHlwZWRlZiBpbnROICgqIEpTSGFzaEVudW1lcmF0b3IpKEpTSGFzaEVudHJ5
ICpoZSwgaW50TiBpLCB2b2lkICphcmcpOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgSlNIYXNoQWxs
b2NPcHMgewogICAgdm9pZCAqICgqYWxsb2NUYWJsZSkodm9pZCAqcG9vbCwgc2l6ZV90IHNpemUp
OwogICAgdm9pZCAoKmZyZWVUYWJsZSkodm9pZCAqcG9vbCwgdm9pZCAqaXRlbSk7CiAgICBKU0hh
c2hFbnRyeSAqICgqYWxsb2NFbnRyeSkodm9pZCAqcG9vbCwgY29uc3Qgdm9pZCAqa2V5KTsKICAg
IHZvaWQgKCpmcmVlRW50cnkpKHZvaWQgKnBvb2wsIEpTSGFzaEVudHJ5ICpoZSwgdWludE4gZmxh
Zyk7Cn0gSlNIYXNoQWxsb2NPcHM7CgoKCgpzdHJ1Y3QgSlNIYXNoRW50cnkgewogICAgSlNIYXNo
RW50cnkgKm5leHQ7CiAgICBKU0hhc2hOdW1iZXIga2V5SGFzaDsKICAgIGNvbnN0IHZvaWQgKmtl
eTsKICAgIHZvaWQgKnZhbHVlOwp9OwoKc3RydWN0IEpTSGFzaFRhYmxlIHsKICAgIEpTSGFzaEVu
dHJ5ICoqYnVja2V0czsKICAgIHVpbnQzMiBuZW50cmllczsKICAgIHVpbnQzMiBzaGlmdDsKICAg
IEpTSGFzaEZ1bmN0aW9uIGtleUhhc2g7CiAgICBKU0hhc2hDb21wYXJhdG9yIGtleUNvbXBhcmU7
CiAgICBKU0hhc2hDb21wYXJhdG9yIHZhbHVlQ29tcGFyZTsKICAgIEpTSGFzaEFsbG9jT3BzICph
bGxvY09wczsKICAgIHZvaWQgKmFsbG9jUG9vbDsKCgoKCgoKfTsKCgoKCgpleHRlcm4gSlNIYXNo
VGFibGUgKgpKU19OZXdIYXNoVGFibGUodWludDMyIG4sIEpTSGFzaEZ1bmN0aW9uIGtleUhhc2gs
CiAgICAgICAgICAgICAgICBKU0hhc2hDb21wYXJhdG9yIGtleUNvbXBhcmUsIEpTSGFzaENvbXBh
cmF0b3IgdmFsdWVDb21wYXJlLAogICAgICAgICAgICAgICAgSlNIYXNoQWxsb2NPcHMgKmFsbG9j
T3BzLCB2b2lkICphbGxvY1Bvb2wpOwoKZXh0ZXJuIHZvaWQKSlNfSGFzaFRhYmxlRGVzdHJveShK
U0hhc2hUYWJsZSAqaHQpOwoKCmV4dGVybiBKU0hhc2hFbnRyeSAqKgpKU19IYXNoVGFibGVSYXdM
b29rdXAoSlNIYXNoVGFibGUgKmh0LCBKU0hhc2hOdW1iZXIga2V5SGFzaCwgY29uc3Qgdm9pZCAq
a2V5KTsKCmV4dGVybiBKU0hhc2hFbnRyeSAqCkpTX0hhc2hUYWJsZVJhd0FkZChKU0hhc2hUYWJs
ZSAqaHQsIEpTSGFzaEVudHJ5ICoqaGVwLCBKU0hhc2hOdW1iZXIga2V5SGFzaCwKICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqdmFsdWUpOwoKZXh0ZXJuIHZvaWQKSlNf
SGFzaFRhYmxlUmF3UmVtb3ZlKEpTSGFzaFRhYmxlICpodCwgSlNIYXNoRW50cnkgKipoZXAsIEpT
SGFzaEVudHJ5ICpoZSk7CgoKZXh0ZXJuIEpTSGFzaEVudHJ5ICoKSlNfSGFzaFRhYmxlQWRkKEpT
SGFzaFRhYmxlICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7CgpleHRlcm4gSlNC
b29sCkpTX0hhc2hUYWJsZVJlbW92ZShKU0hhc2hUYWJsZSAqaHQsIGNvbnN0IHZvaWQgKmtleSk7
CgpleHRlcm4gaW50TgpKU19IYXNoVGFibGVFbnVtZXJhdGVFbnRyaWVzKEpTSGFzaFRhYmxlICpo
dCwgSlNIYXNoRW51bWVyYXRvciBmLCB2b2lkICphcmcpOwoKZXh0ZXJuIHZvaWQgKgpKU19IYXNo
VGFibGVMb29rdXAoSlNIYXNoVGFibGUgKmh0LCBjb25zdCB2b2lkICprZXkpOwoKZXh0ZXJuIGlu
dE4KSlNfSGFzaFRhYmxlRHVtcChKU0hhc2hUYWJsZSAqaHQsIEpTSGFzaEVudW1lcmF0b3IgZHVt
cCwgRklMRSAqZnApOwoKCmV4dGVybiBKU0hhc2hOdW1iZXIKSlNfSGFzaFN0cmluZyhjb25zdCB2
b2lkICprZXkpOwoKCmV4dGVybiBpbnROCkpTX0NvbXBhcmVWYWx1ZXMoY29uc3Qgdm9pZCAqdjEs
IGNvbnN0IHZvaWQgKnYyKTsKIyA0MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzYXRvbS5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXBp
LmgiIDEKIyA0NCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXRvbS5oIiAy
CiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHJ2dGQuaCIgMQojIDQ1
ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhdG9tLmgiIDIKIyAxICIvaG9t
ZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwdWJ0ZC5oIiAxCiMgNDYgIi9ob21lL2Fq
YXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2F0b20uaCIgMgoKCiMgMSAiL2hvbWUvYWpheS9t
b3ovY3ZzL21vemlsbGEvanMvc3JjL2pzbG9jay5oIiAxCiMgMzkgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc2xvY2suaCIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanN0eXBlcy5oIiAxCiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc2xvY2suaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2lu
Y2x1ZGUvbnNwci9wcmF0b20uaCIgMQojIDI3ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMv
ZGlzdC9pbmNsdWRlL25zcHIvcHJhdG9tLmgiCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBv
YmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIgMQojIDM5ICIvaG9tZS9hamF5L21vei9j
dnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgojIDEgIi9ob21lL2FqYXkv
bW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcmNwdWNmZy5oIiAxCiMgNDAgIi9o
b21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiIDIK
CgojIDEgIi9ob21lL2FqYXkvZ2NjL2N2cy9jdnNybHMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQzICIvaG9tZS9hamF5L21vei9jdnMv
c25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIiAyCiMgMjQ0ICIvaG9tZS9hamF5
L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgUFJVaW50ODsKIyAyNTggIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9k
aXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgc2lnbmVkIGNoYXIgUFJJbnQ4Owoj
IDI3MSAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlw
ZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQUlVpbnQxNjsKdHlwZWRlZiBzaG9ydCBQUklu
dDE2OwojIDI4NCAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3By
L3BydHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgUFJVaW50MzI7CnR5cGVkZWYgaW50IFBS
SW50MzI7CiMgMzE4ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25z
cHIvcHJ0eXBlcy5oIgp0eXBlZGVmIGxvbmcgbG9uZyBQUkludDY0Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBQUlVpbnQ2NDsKIyAzNDIgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9k
aXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgaW50IFBSSW50bjsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgUFJVaW50bjsKIyAzNTMgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9k
aXN0L2luY2x1ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgZG91YmxlIFBSRmxvYXQ2NDsKCgoK
CgoKdHlwZWRlZiBzaXplX3QgUFJTaXplOwoKCgoKCgoKdHlwZWRlZiBQUkludDMyIFBST2Zmc2V0
MzI7CnR5cGVkZWYgUFJJbnQ2NCBQUk9mZnNldDY0OwoKCgoKCgoKdHlwZWRlZiBwdHJkaWZmX3Qg
UFJQdHJkaWZmOwoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBSVXB0cmRpZmY7CiMgMzk1
ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5o
Igp0eXBlZGVmIFBSSW50biBQUkJvb2w7CiMgNDA1ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9i
anMvZGlzdC9pbmNsdWRlL25zcHIvcHJ0eXBlcy5oIgp0eXBlZGVmIFBSVWludDggUFJQYWNrZWRC
b29sOwoKCgoKCnR5cGVkZWYgZW51bSB7IFBSX0ZBSUxVUkUgPSAtMSwgUFJfU1VDQ0VTUyA9IDAg
fSBQUlN0YXR1czsKIyA0MjQgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1
ZGUvbnNwci9wcnR5cGVzLmgiCnR5cGVkZWYgbG9uZyBQUldvcmQ7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBQUlV3b3JkOwojIDQ2NiAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5j
bHVkZS9uc3ByL3BydHlwZXMuaCIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlz
dC9pbmNsdWRlL25zcHIvb2Jzb2xldGUvcHJvdHlwZXMuaCIgMQojIDQ2NyAiL2hvbWUvYWpheS9t
b3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIgMgojIDI4ICIvaG9t
ZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJhdG9tLmgiIDIKIyAx
ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJsb2NrLmgi
IDEKIyAzMiAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3By
bG9jay5oIgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNw
ci9wcnR5cGVzLmgiIDEKIyAzMyAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5j
bHVkZS9uc3ByL3BybG9jay5oIiAyCiMgNDcgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9k
aXN0L2luY2x1ZGUvbnNwci9wcmxvY2suaCIKdHlwZWRlZiBzdHJ1Y3QgUFJMb2NrIFBSTG9jazsK
IyA2NCAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3BybG9j
ay5oIgpleHRlcm4gUFJMb2NrKiBQUl9OZXdMb2NrKHZvaWQpOwojIDc1ICIvaG9tZS9hamF5L21v
ei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJsb2NrLmgiCmV4dGVybiB2b2lkIFBS
X0Rlc3Ryb3lMb2NrKFBSTG9jayAqbG9jayk7CiMgODYgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFw
b2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcmxvY2suaCIKZXh0ZXJuIHZvaWQgUFJfTG9jayhQUkxv
Y2sgKmxvY2spOwojIDk4ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRl
L25zcHIvcHJsb2NrLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9VbmxvY2soUFJMb2NrICpsb2NrKTsK
IyAyOSAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByYXRv
bS5oIiAyCiMgNDEgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNw
ci9wcmF0b20uaCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRvbWljSW5jcmVtZW50KFBSSW50MzIgKnZh
bCk7CiMgNTIgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9w
cmF0b20uaCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRvbWljRGVjcmVtZW50KFBSSW50MzIgKnZhbCk7
CiMgNjQgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcmF0
b20uaCIKZXh0ZXJuIFBSSW50MzIgUFJfQXRvbWljU2V0KFBSSW50MzIgKnZhbCwgUFJJbnQzMiBu
ZXd2YWwpOwojIDc2ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25z
cHIvcHJhdG9tLmgiCmV4dGVybiBQUkludDMyIFBSX0F0b21pY0FkZChQUkludDMyICpwdHIsIFBS
SW50MzIgdmFsKTsKCgoKCnR5cGVkZWYgc3RydWN0IFBSU3RhY2tFbGVtU3RyIFBSU3RhY2tFbGVt
OwoKc3RydWN0IFBSU3RhY2tFbGVtU3RyIHsKICAgIFBSU3RhY2tFbGVtICpwcnN0a19lbGVtX25l
eHQ7Cgp9OwoKdHlwZWRlZiBzdHJ1Y3QgUFJTdGFja1N0ciBQUlN0YWNrOwojIDk5ICIvaG9tZS9h
amF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJhdG9tLmgiCmV4dGVybiBQ
UlN0YWNrICogUFJfQ3JlYXRlU3RhY2soY29uc3QgY2hhciAqc3RhY2tfbmFtZSk7CiMgMTExICIv
aG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJhdG9tLmgiCmV4
dGVybiB2b2lkIFBSX1N0YWNrUHVzaChQUlN0YWNrICpzdGFjaywgUFJTdGFja0VsZW0gKnN0YWNr
X2VsZW0pOwojIDEyNCAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9u
c3ByL3ByYXRvbS5oIgpleHRlcm4gUFJTdGFja0VsZW0gKiBQUl9TdGFja1BvcChQUlN0YWNrICpz
dGFjayk7CiMgMTM4ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25z
cHIvcHJhdG9tLmgiCmV4dGVybiBQUlN0YXR1cyBQUl9EZXN0cm95U3RhY2soUFJTdGFjayAqc3Rh
Y2spOwojIDQxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNsb2NrLmgiIDIK
IyAxICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJsb2Nr
LmgiIDEKIyA0MiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzbG9jay5oIiAy
CiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByY3Zh
ci5oIiAxCiMgMjIgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNw
ci9wcmN2YXIuaCIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRl
L25zcHIvcHJsb2NrLmgiIDEKIyAyMyAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3Qv
aW5jbHVkZS9uc3ByL3ByY3Zhci5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpz
L2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ydmFsLmgiIDEKIyAzNCAiL2hvbWUvYWpheS9tb3ovY3Zz
L3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ydmFsLmgiCiMgMSAiL2hvbWUvYWpheS9t
b3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3BydHlwZXMuaCIgMQojIDM1ICIvaG9t
ZS9hamF5L21vei9jdnMvc25hcG9ianMvZGlzdC9pbmNsdWRlL25zcHIvcHJpbnJ2YWwuaCIgMgoK
CgoKCgoKdHlwZWRlZiBQUlVpbnQzMiBQUkludGVydmFsVGltZTsKIyA4OSAiL2hvbWUvYWpheS9t
b3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByaW5ydmFsLmgiCmV4dGVybiBQUklu
dGVydmFsVGltZSBQUl9JbnRlcnZhbE5vdyh2b2lkKTsKIyAxMDcgIi9ob21lL2FqYXkvbW96L2N2
cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZhbC5oIgpleHRlcm4gUFJVaW50MzIg
UFJfVGlja3NQZXJTZWNvbmQodm9pZCk7CiMgMTI2ICIvaG9tZS9hamF5L21vei9jdnMvc25hcG9i
anMvZGlzdC9pbmNsdWRlL25zcHIvcHJpbnJ2YWwuaCIKZXh0ZXJuIFBSSW50ZXJ2YWxUaW1lIFBS
X1NlY29uZHNUb0ludGVydmFsKFBSVWludDMyIHNlY29uZHMpOwpleHRlcm4gUFJJbnRlcnZhbFRp
bWUgUFJfTWlsbGlzZWNvbmRzVG9JbnRlcnZhbChQUlVpbnQzMiBtaWxsaSk7CmV4dGVybiBQUklu
dGVydmFsVGltZSBQUl9NaWNyb3NlY29uZHNUb0ludGVydmFsKFBSVWludDMyIG1pY3JvKTsKIyAx
NDcgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1ZGUvbnNwci9wcmlucnZh
bC5oIgpleHRlcm4gUFJVaW50MzIgUFJfSW50ZXJ2YWxUb1NlY29uZHMoUFJJbnRlcnZhbFRpbWUg
dGlja3MpOwpleHRlcm4gUFJVaW50MzIgUFJfSW50ZXJ2YWxUb01pbGxpc2Vjb25kcyhQUkludGVy
dmFsVGltZSB0aWNrcyk7CmV4dGVybiBQUlVpbnQzMiBQUl9JbnRlcnZhbFRvTWljcm9zZWNvbmRz
KFBSSW50ZXJ2YWxUaW1lIHRpY2tzKTsKIyAyNCAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpz
L2Rpc3QvaW5jbHVkZS9uc3ByL3ByY3Zhci5oIiAyCgoKCnR5cGVkZWYgc3RydWN0IFBSQ29uZFZh
ciBQUkNvbmRWYXI7CiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9zbmFwb2Jqcy9kaXN0L2luY2x1
ZGUvbnNwci9wcmN2YXIuaCIKZXh0ZXJuIFBSQ29uZFZhciogUFJfTmV3Q29uZFZhcihQUkxvY2sg
KmxvY2spOwoKCgoKCgoKZXh0ZXJuIHZvaWQgUFJfRGVzdHJveUNvbmRWYXIoUFJDb25kVmFyICpj
dmFyKTsKIyA3OCAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBvYmpzL2Rpc3QvaW5jbHVkZS9uc3By
L3ByY3Zhci5oIgpleHRlcm4gUFJTdGF0dXMgUFJfV2FpdENvbmRWYXIoUFJDb25kVmFyICpjdmFy
LCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsKIyA5MyAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBv
YmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByY3Zhci5oIgpleHRlcm4gUFJTdGF0dXMgUFJfTm90aWZ5
Q29uZFZhcihQUkNvbmRWYXIgKmN2YXIpOwojIDEwMyAiL2hvbWUvYWpheS9tb3ovY3ZzL3NuYXBv
YmpzL2Rpc3QvaW5jbHVkZS9uc3ByL3ByY3Zhci5oIgpleHRlcm4gUFJTdGF0dXMgUFJfTm90aWZ5
QWxsQ29uZFZhcihQUkNvbmRWYXIgKmN2YXIpOwojIDQzICIvaG9tZS9hamF5L21vei9jdnMvbW96
aWxsYS9qcy9zcmMvanNsb2NrLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9q
cy9zcmMvanNoYXNoLmgiIDEKIyA0NCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzbG9jay5oIiAyCgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3By
dnRkLmgiIDEKIyA0NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzbG9jay5o
IiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIgMQoj
IDQ3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNsb2NrLmgiIDIKCgoKCgp0
eXBlZGVmIHN0cnVjdCBKU0ZhdExvY2sgSlNGYXRMb2NrOwoKc3RydWN0IEpTRmF0TG9jayB7CiAg
ICBpbnQgc3VzcDsKICAgIFBSTG9jayAqc2xvY2s7CiAgICBQUkNvbmRWYXIgKnN2YXI7CiAgICBK
U0ZhdExvY2sgKm5leHQ7CiAgICBKU0ZhdExvY2sgKipwcmV2cDsKfTsKCnR5cGVkZWYgc3RydWN0
IEpTVGhpbkxvY2sgewogICAganN3b3JkIG93bmVyOwogICAgSlNGYXRMb2NrICpmYXQ7Cn0gSlNU
aGluTG9jazsKCnR5cGVkZWYgUFJMb2NrIEpTTG9jazsKCnR5cGVkZWYgc3RydWN0IEpTRmF0TG9j
a1RhYmxlIHsKICAgIEpTRmF0TG9jayAqZnJlZTsKICAgIEpTRmF0TG9jayAqdGFrZW47Cn0gSlNG
YXRMb2NrVGFibGU7CiMgMTExICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNs
b2NrLmgiCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzc2NvcGUuaCIg
MQojIDQwICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzY29wZS5oIgojIDEg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiIDEKIyA0MSAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzc2NvcGUuaCIgMgojIDEgIi9ob21lL2Fq
YXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2hhc2guaCIgMQojIDQyICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNzY29wZS5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3Zz
L21vemlsbGEvanMvc3JjL2pzb2JqLmgiIDEKIyA0NSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemls
bGEvanMvc3JjL2pzb2JqLmgiCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzaGFzaC5oIiAxCiMgNDYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc29i
ai5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHJ2dGQuaCIg
MQojIDQ3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNvYmouaCIgMgojIDEg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3B1YnRkLmgiIDEKIyA0OCAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzb2JqLmgiIDIKCgoKc3RydWN0IEpTT2Jq
ZWN0TWFwIHsKICAgIGpzcmVmY291bnQgbnJlZnM7CiAgICBKU09iamVjdE9wcyAqb3BzOwogICAg
dWludDMyIG5zbG90czsKICAgIHVpbnQzMiBmcmVlc2xvdDsKfTsKIyAxMTkgIi9ob21lL2FqYXkv
bW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc29iai5oIgpzdHJ1Y3QgSlNPYmplY3QgewogICAgSlNP
YmplY3RNYXAgKm1hcDsKICAgIGpzdmFsICpzbG90czsKfTsKIyAxOTkgIi9ob21lL2FqYXkvbW96
L2N2cy9tb3ppbGxhL2pzL3NyYy9qc29iai5oIgpleHRlcm4gSlNPYmplY3RPcHMganNfT2JqZWN0
T3BzOwpleHRlcm4gSlNPYmplY3RPcHMganNfV2l0aE9iamVjdE9wczsKZXh0ZXJuIEpTQ2xhc3Mg
anNfT2JqZWN0Q2xhc3M7CmV4dGVybiBKU0NsYXNzIGpzX1dpdGhDbGFzczsKCnN0cnVjdCBKU1No
YXJwT2JqZWN0TWFwIHsKICAgIGpzcmVmY291bnQgZGVwdGg7CiAgICBqc2F0b21pZCBzaGFycGdl
bjsKICAgIEpTSGFzaFRhYmxlICp0YWJsZTsKfTsKCgoKCgpleHRlcm4gSlNIYXNoRW50cnkgKgpq
c19FbnRlclNoYXJwT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIEpTSWRBcnJh
eSAqKmlkYXAsCiAgICAgICAgICAgICAgICAgICAganNjaGFyICoqc3ApOwoKZXh0ZXJuIHZvaWQK
anNfTGVhdmVTaGFycE9iamVjdChKU0NvbnRleHQgKmN4LCBKU0lkQXJyYXkgKippZGFwKTsKCmV4
dGVybiBKU0Jvb2wKanNfb2JqX3RvU291cmNlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LAogICAgICAgICAgICAgICAganN2YWwgKnJ2YWwpOwoK
ZXh0ZXJuIEpTQm9vbApqc19vYmpfdG9TdHJpbmcoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9i
aiwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsCiAgICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCk7
CgpleHRlcm4gSlNPYmplY3QgKgpqc19Jbml0T2JqZWN0Q2xhc3MoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaik7CgoKZXh0ZXJuIGNvbnN0IGNoYXIganNfd2F0Y2hfc3RyW107CmV4dGVybiBj
b25zdCBjaGFyIGpzX3Vud2F0Y2hfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2hhc093blBy
b3BlcnR5X3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19pc1Byb3RvdHlwZU9mX3N0cltdOwpl
eHRlcm4gY29uc3QgY2hhciBqc19wcm9wZXJ0eUlzRW51bWVyYWJsZV9zdHJbXTsKZXh0ZXJuIGNv
bnN0IGNoYXIganNfZGVmaW5lR2V0dGVyX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19kZWZp
bmVTZXR0ZXJfc3RyW107CgpleHRlcm4gdm9pZApqc19Jbml0T2JqZWN0TWFwKEpTT2JqZWN0TWFw
ICptYXAsIGpzcmVmY291bnQgbnJlZnMsIEpTT2JqZWN0T3BzICpvcHMsCiAgICAgICAgICAgICAg
ICAgSlNDbGFzcyAqY2xhc3ApOwoKZXh0ZXJuIEpTT2JqZWN0TWFwICoKanNfTmV3T2JqZWN0TWFw
KEpTQ29udGV4dCAqY3gsIGpzcmVmY291bnQgbnJlZnMsIEpTT2JqZWN0T3BzICpvcHMsCiAgICAg
ICAgICAgICAgICBKU0NsYXNzICpjbGFzcCwgSlNPYmplY3QgKm9iaik7CgpleHRlcm4gdm9pZApq
c19EZXN0cm95T2JqZWN0TWFwKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0TWFwICptYXApOwoKZXh0
ZXJuIEpTT2JqZWN0TWFwICoKanNfSG9sZE9iamVjdE1hcChKU0NvbnRleHQgKmN4LCBKU09iamVj
dE1hcCAqbWFwKTsKCmV4dGVybiBKU09iamVjdE1hcCAqCmpzX0Ryb3BPYmplY3RNYXAoSlNDb250
ZXh0ICpjeCwgSlNPYmplY3RNYXAgKm1hcCwgSlNPYmplY3QgKm9iaik7CgpleHRlcm4gSlNPYmpl
Y3QgKgpqc19OZXdPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNDbGFzcyAqY2xhc3AsIEpTT2JqZWN0
ICpwcm90bywgSlNPYmplY3QgKnBhcmVudCk7CgpleHRlcm4gSlNPYmplY3QgKgpqc19Db25zdHJ1
Y3RPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNDbGFzcyAqY2xhc3AsIEpTT2JqZWN0ICpwcm90bywK
ICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICpwYXJlbnQpOwoKZXh0ZXJuIHZvaWQKanNfRmlu
YWxpemVPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CgpleHRlcm4gSlNCb29s
CmpzX0FsbG9jU2xvdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50MzIgKnNsb3Rw
KTsKCmV4dGVybiB2b2lkCmpzX0ZyZWVTbG90KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IHVpbnQzMiBzbG90KTsKIyAyODEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c29iai5oIgpleHRlcm4gSlNCb29sCmpzX0RlZmluZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosIGpzaWQgaWQsIGpzdmFsIHZhbHVlLAogICAgICAgICAgICAgICAgICBKU1By
b3BlcnR5T3AgZ2V0dGVyLCBKU1Byb3BlcnR5T3Agc2V0dGVyLCB1aW50TiBhdHRycywKICAgICAg
ICAgICAgICAgICAgSlNQcm9wZXJ0eSAqKnByb3BwKTsKIyAzMDEgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc29iai5oIgpleHRlcm4gSlNCb29sCmpzX0xvb2t1cFByb3BlcnR5
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsIEpTT2JqZWN0ICoqb2JqcCwK
ICAgICAgICAgICAgICAgICAgSlNQcm9wZXJ0eSAqKnByb3BwKTsKCgpleHRlcm4gSlNCb29sCmpz
X0ZpbmRQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBqc2lkIGlkLCBKU09iamVjdCAqKm9ianAsIEpT
T2JqZWN0ICoqcG9ianAsCiAgICAgICAgICAgICAgICBKU1Byb3BlcnR5ICoqcHJvcHApOwoKZXh0
ZXJuIEpTQm9vbApqc19GaW5kVmFyaWFibGUoSlNDb250ZXh0ICpjeCwganNpZCBpZCwgSlNPYmpl
Y3QgKipvYmpwLCBKU09iamVjdCAqKnBvYmpwLAogICAgICAgICAgICAgICAgSlNQcm9wZXJ0eSAq
KnByb3BwKTsKCmV4dGVybiBKU09iamVjdCAqCmpzX0ZpbmRWYXJpYWJsZVNjb3BlKEpTQ29udGV4
dCAqY3gsIEpTRnVuY3Rpb24gKipmdW5wKTsKCmV4dGVybiBKU0Jvb2wKanNfR2V0UHJvcGVydHko
SlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNpZCBpZCwganN2YWwgKnZwKTsKCmV4dGVy
biBKU0Jvb2wKanNfU2V0UHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganNp
ZCBpZCwganN2YWwgKnZwKTsKCmV4dGVybiBKU0Jvb2wKanNfR2V0QXR0cmlidXRlcyhKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLCBKU1Byb3BlcnR5ICpwcm9wLAogICAgICAg
ICAgICAgICAgIHVpbnROICphdHRyc3ApOwoKZXh0ZXJuIEpTQm9vbApqc19TZXRBdHRyaWJ1dGVz
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsIEpTUHJvcGVydHkgKnByb3As
CiAgICAgICAgICAgICAgICAgdWludE4gKmF0dHJzcCk7CgpleHRlcm4gSlNCb29sCmpzX0RlbGV0
ZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsIGpzdmFsICpy
dmFsKTsKCmV4dGVybiBKU0Jvb2wKanNfRGVmYXVsdFZhbHVlKEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIEpTVHlwZSBoaW50LCBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTSWRBcnJheSAqCmpz
X05ld0lkQXJyYXkoSlNDb250ZXh0ICpjeCwganNpbnQgbGVuZ3RoKTsKCmV4dGVybiBKU0lkQXJy
YXkgKgpqc19Hcm93SWRBcnJheShKU0NvbnRleHQgKmN4LCBKU0lkQXJyYXkgKmlkYSwganNpbnQg
bGVuZ3RoKTsKCmV4dGVybiBKU0Jvb2wKanNfRW51bWVyYXRlKEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIEpTSXRlcmF0ZU9wIGVudW1fb3AsCiAgICAgICAgICAgICBqc3ZhbCAqc3RhdGVw
LCBqc2lkICppZHApOwoKZXh0ZXJuIEpTQm9vbApqc19DaGVja0FjY2VzcyhKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLCBqc2lkIGlkLCBKU0FjY2Vzc01vZGUgbW9kZSwKICAgICAgICAgICAg
ICAganN2YWwgKnZwLCB1aW50TiAqYXR0cnNwKTsKCmV4dGVybiBKU0Jvb2wKanNfQ2FsbChKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApqc19Db25zdHJ1Y3QoSlNDb250ZXh0ICpjeCwgSlNPYmpl
Y3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsCiAgICAgICAgICAgICBqc3ZhbCAqcnZh
bCk7CgpleHRlcm4gSlNCb29sCmpzX0hhc0luc3RhbmNlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmosIGpzdmFsIHYsIEpTQm9vbCAqYnApOwoKZXh0ZXJuIEpTQm9vbApqc19TZXRQcm90b09y
UGFyZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnQzMiBzbG90LCBKU09iamVj
dCAqcG9iaik7CgpleHRlcm4gSlNCb29sCmpzX0lzRGVsZWdhdGUoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwganN2YWwgdiwgSlNCb29sICpicCk7CgpleHRlcm4gSlNCb29sCmpzX0dldENs
YXNzUHJvdG90eXBlKEpTQ29udGV4dCAqY3gsIGNvbnN0IGNoYXIgKm5hbWUsIEpTT2JqZWN0ICoq
cHJvdG9wKTsKCmV4dGVybiBKU0Jvb2wKanNfU2V0Q2xhc3NQcm90b3R5cGUoSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKmN0b3IsIEpTT2JqZWN0ICpwcm90bywKICAgICAgICAgICAgICAgICAgICAg
dWludE4gYXR0cnMpOwoKZXh0ZXJuIEpTQm9vbApqc19WYWx1ZVRvT2JqZWN0KEpTQ29udGV4dCAq
Y3gsIGpzdmFsIHYsIEpTT2JqZWN0ICoqb2JqcCk7CgpleHRlcm4gSlNPYmplY3QgKgpqc19WYWx1
ZVRvTm9uTnVsbE9iamVjdChKU0NvbnRleHQgKmN4LCBqc3ZhbCB2KTsKCmV4dGVybiBKU0Jvb2wK
anNfVHJ5VmFsdWVPZihKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBKU1R5cGUgdHlwZSwg
anN2YWwgKnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApqc19UcnlNZXRob2QoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaiwgSlNBdG9tICphdG9tLAogICAgICAgICAgICAgdWludE4gYXJnYywganN2
YWwgKmFyZ3YsIGpzdmFsICpydmFsKTsKCmV4dGVybiBKU0Jvb2wKanNfWERST2JqZWN0KEpTWERS
U3RhdGUgKnhkciwgSlNPYmplY3QgKipvYmpwKTsKCmV4dGVybiB1aW50MzIKanNfTWFyayhKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB2b2lkICphcmcpOwoKZXh0ZXJuIHZvaWQKanNfQ2xl
YXIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaik7CgpleHRlcm4ganN2YWwKanNfR2V0UmVx
dWlyZWRTbG90KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnQzMiBzbG90KTsKCmV4
dGVybiB2b2lkCmpzX1NldFJlcXVpcmVkU2xvdChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2Jq
LCB1aW50MzIgc2xvdCwganN2YWwgdik7CiMgNDMgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxh
L2pzL3NyYy9qc3Njb3BlLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNwcnZ0ZC5oIiAxCiMgNDQgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c3Njb3BlLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwdWJ0
ZC5oIiAxCiMgNDUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3Njb3BlLmgi
IDIKCgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2xvY2suaCIgMQoj
IDQ4ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzY29wZS5oIiAyCgoKCnN0
cnVjdCBKU1Njb3BlT3BzIHsKICAgIEpTU3ltYm9sICogKCpsb29rdXApKEpTQ29udGV4dCAqY3gs
IEpTU2NvcGUgKnNjb3BlLCBqc2lkIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBK
U0hhc2hOdW1iZXIgaGFzaCk7CiAgICBKU1N5bWJvbCAqICgqYWRkKShKU0NvbnRleHQgKmN4LCBK
U1Njb3BlICpzY29wZSwganNpZCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNTY29w
ZVByb3BlcnR5ICpzcHJvcCk7CiAgICBKU0Jvb2wgKCpyZW1vdmUpKEpTQ29udGV4dCAqY3gsIEpT
U2NvcGUgKnNjb3BlLCBqc2lkIGlkKTsKICAgIHZvaWQgKCpjbGVhcikoSlNDb250ZXh0ICpjeCwg
SlNTY29wZSAqc2NvcGUpOwp9OwoKCnN0cnVjdCBKU1Njb3BlIHsKICAgIEpTT2JqZWN0TWFwIG1h
cDsKICAgIEpTT2JqZWN0ICpvYmplY3Q7CiAgICBKU1Njb3BlUHJvcGVydHkgKnByb3BzOwogICAg
SlNTY29wZVByb3BlcnR5ICoqcHJvcHRhaWw7CgoKCgoKCiAgICBKU1Njb3BlT3BzICpvcHM7CiAg
ICB2b2lkICpkYXRhOwoKCiAgICBKU0NvbnRleHQgKm93bmVyY3g7CiAgICBKU1RoaW5Mb2NrIGxv
Y2s7CiAgICB1bmlvbiB7CiAgICAgICAganNyZWZjb3VudCBjb3VudDsKICAgICAgICBKU1Njb3Bl
ICpsaW5rOwogICAgfSB1OwoKCgoKCn07CiMgMTEzICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNzY29wZS5oIgpzdHJ1Y3QgSlNTeW1ib2wgewogICAgSlNIYXNoRW50cnkgZW50
cnk7CiAgICBKU1Njb3BlICpzY29wZTsKICAgIEpTU3ltYm9sICpuZXh0Owp9OwoKCgoKCnN0cnVj
dCBKU1Njb3BlUHJvcGVydHkgewogICAganNyZWZjb3VudCBucmVmczsKICAgIGpzdmFsIGlkOwog
ICAgSlNQcm9wZXJ0eU9wIGdldHRlcjsKICAgIEpTUHJvcGVydHlPcCBzZXR0ZXI7CiAgICB1aW50
MzIgc2xvdDsKICAgIHVpbnQ4IGF0dHJzOwogICAgdWludDggc3BhcmU7CiAgICBKU1N5bWJvbCAq
c3ltYm9sczsKICAgIEpTU2NvcGVQcm9wZXJ0eSAqbmV4dDsKICAgIEpTU2NvcGVQcm9wZXJ0eSAq
KnByZXZwOwp9OwojIDE2NiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzc2Nv
cGUuaCIKZXh0ZXJuIEpTU2NvcGUgKgpqc19HZXRNdXRhYmxlU2NvcGUoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaik7CgpleHRlcm4gSlNTY29wZSAqCmpzX011dGF0ZVNjb3BlKEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsCiAgICAgICAgICAgICAgIEpTUHJvcGVydHlP
cCBnZXR0ZXIsIEpTUHJvcGVydHlPcCBzZXR0ZXIsIHVpbnROIGF0dHJzLAogICAgICAgICAgICAg
ICBKU1Njb3BlUHJvcGVydHkgKipwcm9wcCk7CgpleHRlcm4gSlNTY29wZSAqCmpzX05ld1Njb3Bl
KEpTQ29udGV4dCAqY3gsIGpzcmVmY291bnQgbnJlZnMsIEpTT2JqZWN0T3BzICpvcHMsIEpTQ2xh
c3MgKmNsYXNwLAogICAgICAgICAgICBKU09iamVjdCAqb2JqKTsKCmV4dGVybiB2b2lkCmpzX0Rl
c3Ryb3lTY29wZShKU0NvbnRleHQgKmN4LCBKU1Njb3BlICpzY29wZSk7CgpleHRlcm4gSlNIYXNo
TnVtYmVyCmpzX0hhc2hJZChqc2lkIGlkKTsKCmV4dGVybiBqc3ZhbApqc19JZFRvVmFsdWUoanNp
ZCBpZCk7CgpleHRlcm4gSlNTY29wZVByb3BlcnR5ICoKanNfTmV3U2NvcGVQcm9wZXJ0eShKU0Nv
bnRleHQgKmN4LCBKU1Njb3BlICpzY29wZSwganNpZCBpZCwKICAgICAgICAgICAgICAgICAgICBK
U1Byb3BlcnR5T3AgZ2V0dGVyLCBKU1Byb3BlcnR5T3Agc2V0dGVyLCB1aW50TiBhdHRycyk7Cgpl
eHRlcm4gdm9pZApqc19EZXN0cm95U2NvcGVQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU1Njb3Bl
ICpzY29wZSwgSlNTY29wZVByb3BlcnR5ICpzcHJvcCk7CgpleHRlcm4gSlNTY29wZVByb3BlcnR5
ICoKanNfSG9sZFNjb3BlUHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNTY29wZSAqc2NvcGUsIEpT
U2NvcGVQcm9wZXJ0eSAqc3Byb3ApOwoKZXh0ZXJuIEpTU2NvcGVQcm9wZXJ0eSAqCmpzX0Ryb3BT
Y29wZVByb3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTU2NvcGUgKnNjb3BlLCBKU1Njb3BlUHJvcGVy
dHkgKnNwcm9wKTsKIyAxMTIgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2xv
Y2suaCIgMgojIDE1MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzbG9jay5o
IgpleHRlcm4ganN3b3JkIGpzX0N1cnJlbnRUaHJlYWRJZCgpOwpleHRlcm4gdm9pZCBqc19Mb2Nr
UnVudGltZShKU1J1bnRpbWUgKnJ0KTsKZXh0ZXJuIHZvaWQganNfVW5sb2NrUnVudGltZShKU1J1
bnRpbWUgKnJ0KTsKZXh0ZXJuIHZvaWQganNfTG9ja09iaihKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqKTsKZXh0ZXJuIHZvaWQganNfVW5sb2NrT2JqKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpvYmopOwpleHRlcm4gdm9pZCBqc19Mb2NrU2NvcGUoSlNDb250ZXh0ICpjeCwgSlNTY29wZSAq
c2NvcGUpOwpleHRlcm4gdm9pZCBqc19VbmxvY2tTY29wZShKU0NvbnRleHQgKmN4LCBKU1Njb3Bl
ICpzY29wZSk7CmV4dGVybiBpbnQganNfU2V0dXBMb2NrcyhpbnQsaW50KTsKZXh0ZXJuIHZvaWQg
anNfQ2xlYW51cExvY2tzKCk7CmV4dGVybiB2b2lkIGpzX0luaXRDb250ZXh0Rm9yTG9ja2luZyhK
U0NvbnRleHQgKik7CmV4dGVybiB2b2lkIGpzX1RyYW5zZmVyU2NvcGVMb2NrKEpTQ29udGV4dCAq
LCBKU1Njb3BlICosIEpTU2NvcGUgKik7CmV4dGVybiBqc3ZhbApqc19HZXRTbG90VGhyZWFkU2Fm
ZShKU0NvbnRleHQgKiwgSlNPYmplY3QgKiwgdWludDMyKTsKZXh0ZXJuIHZvaWQganNfU2V0U2xv
dFRocmVhZFNhZmUoSlNDb250ZXh0ICosIEpTT2JqZWN0ICosIHVpbnQzMiwganN2YWwpOwpleHRl
cm4gdm9pZCBqc19Jbml0TG9jayhKU1RoaW5Mb2NrICopOwpleHRlcm4gdm9pZCBqc19GaW5pc2hM
b2NrKEpTVGhpbkxvY2sgKik7CiMgMjE1ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNsb2NrLmgiCmV4dGVybiB2b2lkIGpzX0xvY2soSlNUaGluTG9jayAqdGwsIGpzd29yZCBt
ZSk7CmV4dGVybiB2b2lkIGpzX1VubG9jayhKU1RoaW5Mb2NrICp0bCwganN3b3JkIG1lKTsKIyA0
OSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXRvbS5oIiAyCiMgNTkgIi9o
b21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2F0b20uaCIKc3RydWN0IEpTQXRvbSB7
CiAgICBKU0hhc2hFbnRyeSBlbnRyeTsKICAgIHVpbnQ4IGZsYWdzOwogICAgaW50OCBrd2luZGV4
OwogICAganNhdG9taWQgbnVtYmVyOwp9OwojIDc5ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNhdG9tLmgiCnN0cnVjdCBKU0F0b21MaXN0RWxlbWVudCB7CiAgICBKU0hhc2hF
bnRyeSBlbnRyeTsKfTsKIyA5MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pz
YXRvbS5oIgpzdHJ1Y3QgSlNBdG9tTGlzdCB7CiAgICBKU0F0b21MaXN0RWxlbWVudCAqbGlzdDsK
ICAgIEpTSGFzaFRhYmxlICp0YWJsZTsKICAgIGpzdWludCBjb3VudDsKfTsKIyAxMjkgIi9ob21l
L2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2F0b20uaCIKc3RydWN0IEpTQXRvbU1hcCB7
CiAgICBKU0F0b20gKip2ZWN0b3I7CiAgICBqc2F0b21pZCBsZW5ndGg7Cn07CgpzdHJ1Y3QgSlNB
dG9tU3RhdGUgewogICAgSlNSdW50aW1lICpydW50aW1lOwogICAgSlNIYXNoVGFibGUgKnRhYmxl
OwogICAganNhdG9taWQgbnVtYmVyOwogICAganNhdG9taWQgbGl2ZUF0b21zOwoKCiAgICBKU0F0
b20gKnR5cGVBdG9tc1tKU1RZUEVfTElNSVRdOwogICAgSlNBdG9tICpib29sZWFuQXRvbXNbMl07
CiAgICBKU0F0b20gKm51bGxBdG9tOwoKCiAgICBKU0F0b20gKkFyZ3VtZW50c0F0b207CiAgICBK
U0F0b20gKkFycmF5QXRvbTsKICAgIEpTQXRvbSAqQm9vbGVhbkF0b207CiAgICBKU0F0b20gKkNh
bGxBdG9tOwogICAgSlNBdG9tICpEYXRlQXRvbTsKICAgIEpTQXRvbSAqRXJyb3JBdG9tOwogICAg
SlNBdG9tICpGdW5jdGlvbkF0b207CiAgICBKU0F0b20gKk1hdGhBdG9tOwogICAgSlNBdG9tICpO
dW1iZXJBdG9tOwogICAgSlNBdG9tICpPYmplY3RBdG9tOwogICAgSlNBdG9tICpSZWdFeHBBdG9t
OwogICAgSlNBdG9tICpTY3JpcHRBdG9tOwogICAgSlNBdG9tICpTdHJpbmdBdG9tOwogICAgSlNB
dG9tICphbm9ueW1vdXNBdG9tOwogICAgSlNBdG9tICphcmd1bWVudHNBdG9tOwogICAgSlNBdG9t
ICphcml0eUF0b207CiAgICBKU0F0b20gKmNhbGxlZUF0b207CiAgICBKU0F0b20gKmNhbGxlckF0
b207CiAgICBKU0F0b20gKmNsYXNzUHJvdG90eXBlQXRvbTsKICAgIEpTQXRvbSAqY29uc3RydWN0
b3JBdG9tOwogICAgSlNBdG9tICpjb3VudEF0b207CiAgICBKU0F0b20gKmV2YWxBdG9tOwogICAg
SlNBdG9tICpnZXRBdG9tOwogICAgSlNBdG9tICpnZXR0ZXJBdG9tOwogICAgSlNBdG9tICppbmRl
eEF0b207CiAgICBKU0F0b20gKmlucHV0QXRvbTsKICAgIEpTQXRvbSAqbGVuZ3RoQXRvbTsKICAg
IEpTQXRvbSAqbmFtZUF0b207CiAgICBKU0F0b20gKnBhcmVudEF0b207CiAgICBKU0F0b20gKnBy
b3RvQXRvbTsKICAgIEpTQXRvbSAqc2V0QXRvbTsKICAgIEpTQXRvbSAqc2V0dGVyQXRvbTsKICAg
IEpTQXRvbSAqdG9Mb2NhbGVTdHJpbmdBdG9tOwogICAgSlNBdG9tICp0b1NvdXJjZUF0b207CiAg
ICBKU0F0b20gKnRvU3RyaW5nQXRvbTsKICAgIEpTQXRvbSAqdmFsdWVPZkF0b207CgoKICAgIEpT
VGhpbkxvY2sgbG9jazsKICAgIHZvbGF0aWxlIHVpbnQzMiB0YWJsZWdlbjsKCn07CgoKZXh0ZXJu
IGNvbnN0IGNoYXIgKmpzX3R5cGVfc3RyW107CmV4dGVybiBjb25zdCBjaGFyICpqc19ib29sZWFu
X3N0cltdOwoKZXh0ZXJuIGNvbnN0IGNoYXIganNfQXJndW1lbnRzX3N0cltdOwpleHRlcm4gY29u
c3QgY2hhciBqc19BcnJheV9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfQm9vbGVhbl9zdHJb
XTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfQ2FsbF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNf
RGF0ZV9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfRnVuY3Rpb25fc3RyW107CmV4dGVybiBj
b25zdCBjaGFyIGpzX01hdGhfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX051bWJlcl9zdHJb
XTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfT2JqZWN0X3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBq
c19SZWdFeHBfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX1NjcmlwdF9zdHJbXTsKZXh0ZXJu
IGNvbnN0IGNoYXIganNfU3RyaW5nX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19hbm9ueW1v
dXNfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2FyZ3VtZW50c19zdHJbXTsKZXh0ZXJuIGNv
bnN0IGNoYXIganNfYXJpdHlfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2NhbGxlZV9zdHJb
XTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfY2FsbGVyX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBq
c19jbGFzc19wcm90b3R5cGVfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2NvbnN0cnVjdG9y
X3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19jb3VudF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNo
YXIganNfZXZhbF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfZ2V0dGVyX3N0cltdOwpleHRl
cm4gY29uc3QgY2hhciBqc19nZXRfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2luZGV4X3N0
cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19pbnB1dF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIg
anNfbGVuZ3RoX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19uYW1lX3N0cltdOwpleHRlcm4g
Y29uc3QgY2hhciBqc19wYXJlbnRfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX3Byb3RvX3N0
cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19zZXR0ZXJfc3RyW107CmV4dGVybiBjb25zdCBjaGFy
IGpzX3NldF9zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfdG9Tb3VyY2Vfc3RyW107CmV4dGVy
biBjb25zdCBjaGFyIGpzX3RvU3RyaW5nX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc190b0xv
Y2FsZVN0cmluZ19zdHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfdmFsdWVPZl9zdHJbXTsKCgoK
CgpleHRlcm4gSlNCb29sCmpzX0luaXRBdG9tU3RhdGUoSlNDb250ZXh0ICpjeCwgSlNBdG9tU3Rh
dGUgKnN0YXRlKTsKCgoKCmV4dGVybiB2b2lkCmpzX0ZyZWVBdG9tU3RhdGUoSlNDb250ZXh0ICpj
eCwgSlNBdG9tU3RhdGUgKnN0YXRlKTsKIyAyNTUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxh
L2pzL3NyYy9qc2F0b20uaCIKZXh0ZXJuIHZvaWQKanNfRmluaXNoQXRvbVN0YXRlKEpTQXRvbVN0
YXRlICpzdGF0ZSk7CgoKCgp0eXBlZGVmIHZvaWQKKCpKU0dDVGhpbmdNYXJrZXIpKHZvaWQgKnRo
aW5nLCB2b2lkICpkYXRhKTsKCmV4dGVybiB2b2lkCmpzX01hcmtBdG9tU3RhdGUoSlNBdG9tU3Rh
dGUgKnN0YXRlLCB1aW50TiBnY2ZsYWdzLCBKU0dDVGhpbmdNYXJrZXIgbWFyaywKICAgICAgICAg
ICAgICAgICB2b2lkICpkYXRhKTsKCmV4dGVybiB2b2lkCmpzX1N3ZWVwQXRvbVN0YXRlKEpTQXRv
bVN0YXRlICpzdGF0ZSk7CgpleHRlcm4gdm9pZApqc19VbnBpblBpbm5lZEF0b21zKEpTQXRvbVN0
YXRlICpzdGF0ZSk7CgoKCgoKZXh0ZXJuIEpTQXRvbSAqCmpzX0F0b21pemVPYmplY3QoSlNDb250
ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gZmxhZ3MpOwoKCgoKCmV4dGVybiBKU0F0b20g
Kgpqc19BdG9taXplQm9vbGVhbihKU0NvbnRleHQgKmN4LCBKU0Jvb2wgYiwgdWludE4gZmxhZ3Mp
OwoKCgoKCmV4dGVybiBKU0F0b20gKgpqc19BdG9taXplSW50KEpTQ29udGV4dCAqY3gsIGpzaW50
IGksIHVpbnROIGZsYWdzKTsKCgoKCgpleHRlcm4gSlNBdG9tICoKanNfQXRvbWl6ZURvdWJsZShK
U0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkLCB1aW50TiBmbGFncyk7CgoKCgoKZXh0ZXJuIEpTQXRv
bSAqCmpzX0F0b21pemVTdHJpbmcoSlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnN0ciwgdWludE4g
ZmxhZ3MpOwoKZXh0ZXJuIEpTQXRvbSAqCmpzX0F0b21pemUoSlNDb250ZXh0ICpjeCwgY29uc3Qg
Y2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgsIHVpbnROIGZsYWdzKTsKCmV4dGVybiBKU0F0b20g
Kgpqc19BdG9taXplQ2hhcnMoSlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpjaGFycywgc2l6
ZV90IGxlbmd0aCwgdWludE4gZmxhZ3MpOwoKCgoKZXh0ZXJuIEpTQXRvbSAqCmpzX0F0b21pemVW
YWx1ZShKU0NvbnRleHQgKmN4LCBqc3ZhbCB2YWx1ZSwgdWludE4gZmxhZ3MpOwoKCgoKZXh0ZXJu
IEpTQXRvbSAqCmpzX1ZhbHVlVG9TdHJpbmdBdG9tKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYpOwoK
CgoKZXh0ZXJuIEpTQXRvbUxpc3RFbGVtZW50ICoKanNfSW5kZXhBdG9tKEpTQ29udGV4dCAqY3gs
IEpTQXRvbSAqYXRvbSwgSlNBdG9tTGlzdCAqYWwpOwoKCgoKZXh0ZXJuIEpTQXRvbSAqCmpzX0dl
dEF0b20oSlNDb250ZXh0ICpjeCwgSlNBdG9tTWFwICptYXAsIGpzYXRvbWlkIGkpOwojIDM0NiAi
L2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXRvbS5oIgpleHRlcm4gSlNCb29s
CmpzX0luaXRBdG9tTWFwKEpTQ29udGV4dCAqY3gsIEpTQXRvbU1hcCAqbWFwLCBKU0F0b21MaXN0
ICphbCk7CgoKCgpleHRlcm4gdm9pZApqc19GcmVlQXRvbU1hcChKU0NvbnRleHQgKmN4LCBKU0F0
b21NYXAgKm1hcCk7CiMgNDYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2Fy
cmF5LmMiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjbnR4dC5o
IiAxCiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NudHh0LmgiCiMg
MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJlbmEuaCIgMQojIDQ0ICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcmVuYS5oIgojIDEgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMSAzCiMgNDUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc2FyZW5hLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0
eXBlcy5oIiAxCiMgNDYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FyZW5h
LmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjb21wYXQuaCIg
MQojIDQ3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcmVuYS5oIiAyCgoK
CnR5cGVkZWYgc3RydWN0IEpTQXJlbmEgSlNBcmVuYTsKdHlwZWRlZiBzdHJ1Y3QgSlNBcmVuYVBv
b2wgSlNBcmVuYVBvb2w7CgpzdHJ1Y3QgSlNBcmVuYSB7CiAgICBKU0FyZW5hICpuZXh0OwogICAg
anN1d29yZCBiYXNlOwogICAganN1d29yZCBsaW1pdDsKICAgIGpzdXdvcmQgYXZhaWw7Cn07CiMg
ODIgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FyZW5hLmgiCnN0cnVjdCBK
U0FyZW5hUG9vbCB7CiAgICBKU0FyZW5hIGZpcnN0OwogICAgSlNBcmVuYSAqY3VycmVudDsKICAg
IHNpemVfdCBhcmVuYXNpemU7CiAgICBqc3V3b3JkIG1hc2s7CgoKCn07CiMgMjAwICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcmVuYS5oIgpleHRlcm4gdm9pZApKU19Jbml0
QXJlbmFQb29sKEpTQXJlbmFQb29sICpwb29sLCBjb25zdCBjaGFyICpuYW1lLCBKU1VpbnQzMiBz
aXplLAogICAgICAgICAgICAgICAgIEpTVWludDMyIGFsaWduKTsKCgoKCgoKZXh0ZXJuIHZvaWQK
SlNfRnJlZUFyZW5hUG9vbChKU0FyZW5hUG9vbCAqcG9vbCk7CgoKCgpleHRlcm4gdm9pZApKU19G
aW5pc2hBcmVuYVBvb2woSlNBcmVuYVBvb2wgKnBvb2wpOwoKCgoKZXh0ZXJuIHZvaWQKSlNfQ29t
cGFjdEFyZW5hUG9vbChKU0FyZW5hUG9vbCAqcG9vbCk7CgoKCgoKZXh0ZXJuIHZvaWQKSlNfQXJl
bmFGaW5pc2godm9pZCk7CiMgMjQyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMv
anNhcmVuYS5oIgpleHRlcm4gdm9pZApKU19BcmVuYVNodXREb3duKHZvaWQpOwoKCgoKZXh0ZXJu
IHZvaWQgKgpKU19BcmVuYUFsbG9jYXRlKEpTQXJlbmFQb29sICpwb29sLCBKU1VpbnQzMiBuYik7
CgpleHRlcm4gdm9pZCAqCkpTX0FyZW5hUmVhbGxvYyhKU0FyZW5hUG9vbCAqcG9vbCwgdm9pZCAq
cCwgSlNVaW50MzIgc2l6ZSwgSlNVaW50MzIgaW5jcik7CgpleHRlcm4gdm9pZCAqCkpTX0FyZW5h
R3JvdyhKU0FyZW5hUG9vbCAqcG9vbCwgdm9pZCAqcCwgSlNVaW50MzIgc2l6ZSwgSlNVaW50MzIg
aW5jcik7CgpleHRlcm4gdm9pZApKU19BcmVuYVJlbGVhc2UoSlNBcmVuYVBvb2wgKnBvb2wsIGNo
YXIgKm1hcmspOwojIDQxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjbnR4
dC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzY2xpc3QuaCIg
MQojIDM4ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjbGlzdC5oIgojIDEg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc3R5cGVzLmgiIDEKIyAzOSAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzY2xpc3QuaCIgMgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgSlNDTGlzdFN0ciB7CiAgICBzdHJ1Y3QgSlNDTGlzdFN0ciAqbmV4dDsKICAgIHN0cnVj
dCBKU0NMaXN0U3RyICpwcmV2Owp9IEpTQ0xpc3Q7CiMgNDIgIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc2NudHh0LmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNsb25nLmgiIDEKIyA0MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzY250eHQuaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c2F0b20uaCIgMQojIDQ0ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjbnR4
dC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzY29uZmlnLmgi
IDEKIyA0NSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzY250eHQuaCIgMgoj
IDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2RoYXNoLmgiIDEKIyA0MiAi
L2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzZGhhc2guaCIKIyAxICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanN0eXBlcy5oIiAxCiMgNDMgIi9ob21lL2FqYXkv
bW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2RoYXNoLmgiIDIKIyA1OSAiL2hvbWUvYWpheS9tb3ov
Y3ZzL21vemlsbGEvanMvc3JjL2pzZGhhc2guaCIKdHlwZWRlZiB1aW50MzIgSlNESGFzaE51bWJl
cjsKdHlwZWRlZiBzdHJ1Y3QgSlNESGFzaEVudHJ5SGRyIEpTREhhc2hFbnRyeUhkcjsKdHlwZWRl
ZiBzdHJ1Y3QgSlNESGFzaEVudHJ5U3R1YiBKU0RIYXNoRW50cnlTdHViOwp0eXBlZGVmIHN0cnVj
dCBKU0RIYXNoVGFibGUgSlNESGFzaFRhYmxlOwp0eXBlZGVmIHN0cnVjdCBKU0RIYXNoVGFibGVP
cHMgSlNESGFzaFRhYmxlT3BzOwojIDgyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNkaGFzaC5oIgpzdHJ1Y3QgSlNESGFzaEVudHJ5SGRyIHsKICAgIEpTREhhc2hOdW1iZXIg
a2V5SGFzaDsKfTsKIyAxNTggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2Ro
YXNoLmgiCnN0cnVjdCBKU0RIYXNoVGFibGUgewogICAgSlNESGFzaFRhYmxlT3BzICpvcHM7CiAg
ICB2b2lkICpkYXRhOwogICAgaW50MTYgaGFzaFNoaWZ0OwogICAgaW50MTYgc2l6ZUxvZzI7CiAg
ICB1aW50MzIgc2l6ZU1hc2s7CiAgICB1aW50MzIgZW50cnlTaXplOwogICAgdWludDMyIGVudHJ5
Q291bnQ7CiAgICB1aW50MzIgcmVtb3ZlZENvdW50OwogICAgY2hhciAqZW50cnlTdG9yZTsKIyAx
ODcgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2RoYXNoLmgiCn07CgoKCgoK
CnR5cGVkZWYgdm9pZCAqCigqIEpTREhhc2hBbGxvY1RhYmxlKShKU0RIYXNoVGFibGUgKnRhYmxl
LCB1aW50MzIgbmJ5dGVzKTsKCnR5cGVkZWYgdm9pZAooKiBKU0RIYXNoRnJlZVRhYmxlKSAoSlNE
SGFzaFRhYmxlICp0YWJsZSwgdm9pZCAqcHRyKTsKCgoKCgoKCnR5cGVkZWYgY29uc3Qgdm9pZCAq
CigqIEpTREhhc2hHZXRLZXkpIChKU0RIYXNoVGFibGUgKnRhYmxlLCBKU0RIYXNoRW50cnlIZHIg
KmVudHJ5KTsKCgoKCgp0eXBlZGVmIEpTREhhc2hOdW1iZXIKKCogSlNESGFzaEhhc2hLZXkpIChK
U0RIYXNoVGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICprZXkpOwoKCgoKCnR5cGVkZWYgSlNCb29s
CigqIEpTREhhc2hNYXRjaEVudHJ5KShKU0RIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEpTREhhc2hFbnRyeUhkciAqZW50cnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsKCgoK
CgoKCnR5cGVkZWYgdm9pZAooKiBKU0RIYXNoTW92ZUVudHJ5KShKU0RIYXNoVGFibGUgKnRhYmxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSlNESGFzaEVudHJ5
SGRyICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNESGFzaEVu
dHJ5SGRyICp0byk7CgoKCgoKCnR5cGVkZWYgdm9pZAooKiBKU0RIYXNoQ2xlYXJFbnRyeSkoSlNE
SGFzaFRhYmxlICp0YWJsZSwgSlNESGFzaEVudHJ5SGRyICplbnRyeSk7CgoKCgoKCnR5cGVkZWYg
dm9pZAooKiBKU0RIYXNoRmluYWxpemUpIChKU0RIYXNoVGFibGUgKnRhYmxlKTsKCgpzdHJ1Y3Qg
SlNESGFzaFRhYmxlT3BzIHsKICAgIEpTREhhc2hBbGxvY1RhYmxlIGFsbG9jVGFibGU7CiAgICBK
U0RIYXNoRnJlZVRhYmxlIGZyZWVUYWJsZTsKICAgIEpTREhhc2hHZXRLZXkgZ2V0S2V5OwogICAg
SlNESGFzaEhhc2hLZXkgaGFzaEtleTsKICAgIEpTREhhc2hNYXRjaEVudHJ5IG1hdGNoRW50cnk7
CiAgICBKU0RIYXNoTW92ZUVudHJ5IG1vdmVFbnRyeTsKICAgIEpTREhhc2hDbGVhckVudHJ5IGNs
ZWFyRW50cnk7CiAgICBKU0RIYXNoRmluYWxpemUgZmluYWxpemU7Cn07CgoKCgpleHRlcm4gdm9p
ZCAqCkpTX0RIYXNoQWxsb2NUYWJsZShKU0RIYXNoVGFibGUgKnRhYmxlLCB1aW50MzIgbmJ5dGVz
KTsKCmV4dGVybiB2b2lkCkpTX0RIYXNoRnJlZVRhYmxlKEpTREhhc2hUYWJsZSAqdGFibGUsIHZv
aWQgKnB0cik7CgpleHRlcm4gSlNESGFzaE51bWJlcgpKU19ESGFzaFN0cmluZ0tleShKU0RIYXNo
VGFibGUgKnRhYmxlLCBjb25zdCB2b2lkICprZXkpOwoKCnN0cnVjdCBKU0RIYXNoRW50cnlTdHVi
IHsKICAgIEpTREhhc2hFbnRyeUhkciBoZHI7CiAgICBjb25zdCB2b2lkICprZXk7Cn07CgpleHRl
cm4gY29uc3Qgdm9pZCAqCkpTX0RIYXNoR2V0S2V5U3R1YihKU0RIYXNoVGFibGUgKnRhYmxlLCBK
U0RIYXNoRW50cnlIZHIgKmVudHJ5KTsKCmV4dGVybiBKU0RIYXNoTnVtYmVyCkpTX0RIYXNoVm9p
ZFB0cktleVN0dWIoSlNESGFzaFRhYmxlICp0YWJsZSwgY29uc3Qgdm9pZCAqa2V5KTsKCmV4dGVy
biBKU0Jvb2wKSlNfREhhc2hNYXRjaEVudHJ5U3R1YihKU0RIYXNoVGFibGUgKnRhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEpTREhhc2hFbnRyeUhkciAqZW50cnksCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqa2V5KTsKCmV4dGVybiB2b2lkCkpTX0RIYXNoTW92
ZUVudHJ5U3R1YihKU0RIYXNoVGFibGUgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSlNESGFzaEVudHJ5SGRyICpmcm9tLAogICAgICAgICAgICAgICAgICAgICAgSlNESGFzaEVu
dHJ5SGRyICp0byk7CgpleHRlcm4gdm9pZApKU19ESGFzaENsZWFyRW50cnlTdHViKEpTREhhc2hU
YWJsZSAqdGFibGUsIEpTREhhc2hFbnRyeUhkciAqZW50cnkpOwoKZXh0ZXJuIHZvaWQKSlNfREhh
c2hGaW5hbGl6ZVN0dWIoSlNESGFzaFRhYmxlICp0YWJsZSk7CgoKCgoKCmV4dGVybiBKU0RIYXNo
VGFibGVPcHMgKgpKU19ESGFzaEdldFN0dWJPcHModm9pZCk7CgoKCgoKCgpleHRlcm4gSlNESGFz
aFRhYmxlICoKSlNfTmV3REhhc2hUYWJsZShKU0RIYXNoVGFibGVPcHMgKm9wcywgdm9pZCAqZGF0
YSwgdWludDMyIGVudHJ5U2l6ZSwKICAgICAgICAgICAgICAgICB1aW50MzIgY2FwYWNpdHkpOwoK
CgoKCmV4dGVybiB2b2lkCkpTX0RIYXNoVGFibGVEZXN0cm95KEpTREhhc2hUYWJsZSAqdGFibGUp
OwoKCgoKCgoKZXh0ZXJuIEpTQm9vbApKU19ESGFzaFRhYmxlSW5pdChKU0RIYXNoVGFibGUgKnRh
YmxlLCBKU0RIYXNoVGFibGVPcHMgKm9wcywgdm9pZCAqZGF0YSwKICAgICAgICAgICAgICAgICAg
dWludDMyIGVudHJ5U2l6ZSwgdWludDMyIGNhcGFjaXR5KTsKCgoKCgoKCmV4dGVybiB2b2lkCkpT
X0RIYXNoVGFibGVGaW5pc2goSlNESGFzaFRhYmxlICp0YWJsZSk7CgoKCgoKCgp0eXBlZGVmIGVu
dW0gSlNESGFzaE9wZXJhdG9yIHsKICAgIEpTX0RIQVNIX0xPT0tVUCA9IDAsCiAgICBKU19ESEFT
SF9BREQgPSAxLAogICAgSlNfREhBU0hfUkVNT1ZFID0gMiwKICAgIEpTX0RIQVNIX05FWFQgPSAw
LAogICAgSlNfREhBU0hfU1RPUCA9IDEKfSBKU0RIYXNoT3BlcmF0b3I7CiMgMzg5ICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNkaGFzaC5oIgpleHRlcm4gSlNESGFzaEVudHJ5
SGRyICoKSlNfREhhc2hUYWJsZU9wZXJhdGUoSlNESGFzaFRhYmxlICp0YWJsZSwgY29uc3Qgdm9p
ZCAqa2V5LCBKU0RIYXNoT3BlcmF0b3Igb3ApOwojIDQwMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzZGhhc2guaCIKZXh0ZXJuIHZvaWQKSlNfREhhc2hUYWJsZVJhd1JlbW92
ZShKU0RIYXNoVGFibGUgKnRhYmxlLCBKU0RIYXNoRW50cnlIZHIgKmVudHJ5KTsKIyA0MjYgIi9o
b21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2RoYXNoLmgiCnR5cGVkZWYgSlNESGFz
aE9wZXJhdG9yCigqIEpTREhhc2hFbnVtZXJhdG9yKShKU0RIYXNoVGFibGUgKnRhYmxlLCBKU0RI
YXNoRW50cnlIZHIgKmhkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzIgbnVtYmVyLCB2b2lkICphcmcpOwoKZXh0ZXJuIHVpbnQzMgpKU19ESGFzaFRhYmxlRW51
bWVyYXRlKEpTREhhc2hUYWJsZSAqdGFibGUsIEpTREhhc2hFbnVtZXJhdG9yIGV0b3IsIHZvaWQg
KmFyZyk7CiMgNDYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NudHh0Lmgi
IDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNnYy5oIiAxCiMgNDAg
Ii9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2djLmgiCiMgMSAiL2hvbWUvYWph
eS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHJ2dGQuaCIgMQojIDQxICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNnYy5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzcHVidGQuaCIgMQojIDQyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNnYy5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzZGhhc2guaCIgMQojIDQzICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNn
Yy5oIiAyCiMgNjMgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2djLmgiCnN0
cnVjdCBKU0dDUm9vdEhhc2hFbnRyeSB7CiAgICBKU0RIYXNoRW50cnlIZHIgaGRyOwogICAgdm9p
ZCAqcm9vdDsKICAgIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpzdHJ1Y3QgSlNHQ0xvY2tIYXNoRW50
cnkgewogICAgSlNESGFzaEVudHJ5SGRyIGhkcjsKICAgIGNvbnN0IEpTR0NUaGluZyAqdGhpbmc7
CiAgICB1aW50MzIgY291bnQ7Cn07CiMgODYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc2djLmgiCmV4dGVybiBpbnROCmpzX0NoYW5nZUV4dGVybmFsU3RyaW5nRmluYWxpemVy
KEpTU3RyaW5nRmluYWxpemVPcCBvbGRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSlNTdHJpbmdGaW5hbGl6ZU9wIG5ld29wKTsKCmV4dGVybiBKU0Jvb2wKanNfSW5pdEdDKEpT
UnVudGltZSAqcnQsIHVpbnQzMiBtYXhieXRlcyk7CgpleHRlcm4gdm9pZApqc19GaW5pc2hHQyhK
U1J1bnRpbWUgKnJ0KTsKCmV4dGVybiBKU0Jvb2wKanNfQWRkUm9vdChKU0NvbnRleHQgKmN4LCB2
b2lkICpycCwgY29uc3QgY2hhciAqbmFtZSk7CgpleHRlcm4gSlNCb29sCmpzX0FkZFJvb3RSVChK
U1J1bnRpbWUgKnJ0LCB2b2lkICpycCwgY29uc3QgY2hhciAqbmFtZSk7CgpleHRlcm4gSlNCb29s
CmpzX1JlbW92ZVJvb3QoSlNSdW50aW1lICpydCwgdm9pZCAqcnApOwoKZXh0ZXJuIHZvaWQgKgpq
c19BbGxvY0dDVGhpbmcoSlNDb250ZXh0ICpjeCwgdWludE4gZmxhZ3MpOwoKZXh0ZXJuIEpTQm9v
bApqc19Mb2NrR0NUaGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGluZyk7CgpleHRlcm4gSlNC
b29sCmpzX1VubG9ja0dDVGhpbmcoSlNDb250ZXh0ICpjeCwgdm9pZCAqdGhpbmcpOwoKZXh0ZXJu
IEpTQm9vbApqc19Jc0Fib3V0VG9CZUZpbmFsaXplZChKU0NvbnRleHQgKmN4LCB2b2lkICp0aGlu
Zyk7CgpleHRlcm4gdm9pZApqc19NYXJrQXRvbShKU0NvbnRleHQgKmN4LCBKU0F0b20gKmF0b20s
IHZvaWQgKmFyZyk7CiMgMTI3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNn
Yy5oIgpleHRlcm4gdm9pZApqc19NYXJrR0NUaGluZyhKU0NvbnRleHQgKmN4LCB2b2lkICp0aGlu
Zywgdm9pZCAqYXJnKTsKIyAxNTggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c2djLmgiCmV4dGVybiB2b2lkCmpzX0ZvcmNlR0MoSlNDb250ZXh0ICpjeCk7CiMgMTc0ICIvaG9t
ZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNnYy5oIgpleHRlcm4gdm9pZApqc19HQyhK
U0NvbnRleHQgKmN4LCB1aW50TiBnY2ZsYWdzKTsKIyA0NyAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzY250eHQuaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxh
L2pzL3NyYy9qc2ludGVycC5oIiAxCiMgNDAgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc2ludGVycC5oIgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c3BydnRkLmgiIDEKIyA0MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzaW50
ZXJwLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwdWJ0ZC5o
IiAxCiMgNDIgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2ludGVycC5oIiAy
CgoKCgoKCnN0cnVjdCBKU1N0YWNrRnJhbWUgewogICAgSlNPYmplY3QgKmNhbGxvYmo7CiAgICBK
U09iamVjdCAqYXJnc29iajsKICAgIEpTT2JqZWN0ICp2YXJvYmo7CiAgICBKU1NjcmlwdCAqc2Ny
aXB0OwogICAgSlNGdW5jdGlvbiAqZnVuOwogICAgSlNPYmplY3QgKnRoaXNwOwogICAgdWludE4g
YXJnYzsKICAgIGpzdmFsICphcmd2OwogICAganN2YWwgcnZhbDsKICAgIHVpbnROIG52YXJzOwog
ICAganN2YWwgKnZhcnM7CiAgICBKU1N0YWNrRnJhbWUgKmRvd247CiAgICB2b2lkICphbm5vdGF0
aW9uOwogICAgSlNPYmplY3QgKnNjb3BlQ2hhaW47CiAgICBqc2J5dGVjb2RlICpwYzsKICAgIGpz
dmFsICpzcDsKICAgIGpzdmFsICpzcGJhc2U7CiAgICB1aW50TiBzaGFycERlcHRoOwogICAgSlNP
YmplY3QgKnNoYXJwQXJyYXk7CiAgICBKU1BhY2tlZEJvb2wgY29uc3RydWN0aW5nOwogICAgdWlu
dDggb3ZlcnJpZGVzOwogICAgdWludDggc3BlY2lhbDsKICAgIEpTUGFja2VkQm9vbCByZXNlcnZl
ZDsKICAgIEpTU3RhY2tGcmFtZSAqZG9ybWFudE5leHQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCBKU0lu
bGluZUZyYW1lIHsKICAgIEpTU3RhY2tGcmFtZSBmcmFtZTsKICAgIHZvaWQgKm1hcms7CiAgICB2
b2lkICpob29rRGF0YTsKfSBKU0lubGluZUZyYW1lOwojIDEzMyAiL2hvbWUvYWpheS9tb3ovY3Zz
L21vemlsbGEvanMvc3JjL2pzaW50ZXJwLmgiCnR5cGVkZWYgdW5pb24gSlNQcm9wZXJ0eUNhY2hl
RW50cnkgewogICAgc3RydWN0IHsKICAgICAgICBKU09iamVjdCAqb2JqZWN0OwogICAgICAgIEpT
UHJvcGVydHkgKnByb3BlcnR5OwogICAgfSBzOwoKCgp9IEpTUHJvcGVydHlDYWNoZUVudHJ5OwoK
CgoKCnR5cGVkZWYgc3RydWN0IEpTUHJvcGVydHlDYWNoZSB7CiAgICBKU1Byb3BlcnR5Q2FjaGVF
bnRyeSB0YWJsZVsoKEpTVWludDMyKTEgPDwgKDEwKSldOwogICAgSlNCb29sIGVtcHR5OwogICAg
SlNCb29sIGRpc2FibGVkOwogICAgdWludDMyIGZpbGxzOwogICAgdWludDMyIHJlY3ljbGVzOwog
ICAgdWludDMyIHRlc3RzOwogICAgdWludDMyIG1pc3NlczsKICAgIHVpbnQzMiBmbHVzaGVzOwp9
IEpTUHJvcGVydHlDYWNoZTsKIyAxOTggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc2ludGVycC5oIgpleHRlcm4gdm9pZApqc19GbHVzaFByb3BlcnR5Q2FjaGUoSlNDb250ZXh0
ICpjeCk7CgpleHRlcm4gdm9pZApqc19GbHVzaFByb3BlcnR5Q2FjaGVCeVByb3AoSlNDb250ZXh0
ICpjeCwgSlNQcm9wZXJ0eSAqcHJvcCk7CgpleHRlcm4gdm9pZApqc19EaXNhYmxlUHJvcGVydHlD
YWNoZShKU0NvbnRleHQgKmN4KTsKCmV4dGVybiB2b2lkCmpzX0VuYWJsZVByb3BlcnR5Q2FjaGUo
SlNDb250ZXh0ICpjeCk7CgpleHRlcm4ganN2YWwgKgpqc19BbGxvY1N0YWNrKEpTQ29udGV4dCAq
Y3gsIHVpbnROIG5zbG90cywgdm9pZCAqKm1hcmtwKTsKCmV4dGVybiB2b2lkCmpzX0ZyZWVTdGFj
ayhKU0NvbnRleHQgKmN4LCB2b2lkICptYXJrKTsKCmV4dGVybiBKU0Jvb2wKanNfR2V0QXJndW1l
bnQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCk7Cgpl
eHRlcm4gSlNCb29sCmpzX1NldEFyZ3VtZW50KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmos
IGpzdmFsIGlkLCBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTQm9vbApqc19HZXRMb2NhbFZhcmlhYmxl
KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnApOwoKZXh0
ZXJuIEpTQm9vbApqc19TZXRMb2NhbFZhcmlhYmxlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpv
YmosIGpzdmFsIGlkLCBqc3ZhbCAqdnApOwoKCgoKCmV4dGVybiBKU0Jvb2wKanNfSW52b2tlKEpT
Q29udGV4dCAqY3gsIHVpbnROIGFyZ2MsIHVpbnROIGZsYWdzKTsKIyAyNTIgIi9ob21lL2FqYXkv
bW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2ludGVycC5oIgpleHRlcm4gSlNCb29sCmpzX0ludGVy
bmFsSW52b2tlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGZ2YWwsIHVpbnRO
IGZsYWdzLAogICAgICAgICAgICAgICAgICB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwg
KnJ2YWwpOwoKZXh0ZXJuIEpTQm9vbApqc19FeGVjdXRlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0
ICpjaGFpbiwgSlNTY3JpcHQgKnNjcmlwdCwKICAgICAgICAgICBKU1N0YWNrRnJhbWUgKmRvd24s
IHVpbnROIGZsYWdzLCBqc3ZhbCAqcmVzdWx0KTsKCmV4dGVybiBKU0Jvb2wKanNfQ2hlY2tSZWRl
Y2xhcmF0aW9uKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzaWQgaWQsIHVpbnROIGF0
dHJzLAogICAgICAgICAgICAgICAgICAgICAgSlNCb29sICpmb3VuZHApOwoKZXh0ZXJuIEpTQm9v
bApqc19JbnRlcnByZXQoSlNDb250ZXh0ICpjeCwganN2YWwgKnJlc3VsdCk7CiMgNDggIi9ob21l
L2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2NudHh0LmgiIDIKIyAxICIvaG9tZS9hamF5
L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNvYmouaCIgMQojIDQ5ICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNjbnR4dC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzcHJ2dGQuaCIgMQojIDUwICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNjbnR4dC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzcHVidGQuaCIgMQojIDUxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMv
anNjbnR4dC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcmVn
ZXhwLmgiIDEKIyA0MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcmVnZXhw
LmgiCiMgMSAiL2hvbWUvYWpheS9nY2MvY3ZzL2N2c3Jscy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDEgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc3JlZ2V4cC5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21v
emlsbGEvanMvc3JjL2pzcHVidGQuaCIgMQojIDQyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNyZWdleHAuaCIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pz
L3NyYy9qc3N0ci5oIiAxCiMgNDkgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c3N0ci5oIgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRl
L2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3Iv
aW5jbHVkZS9jdHlwZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyAyOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDQwICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVkZS9j
dHlwZS5oIiAyIDMKCgoKCgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAo
MCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDggPyAo
KDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgoMikg
PCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGlnaXQg
PSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAogIF9J
U3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+PiA4
KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8ICg1
KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgo
MSA8PCAoNikpID4+IDgpKSwKICBfSVNncmFwaCA9ICgoNykgPCA4ID8gKCgxIDw8ICg3KSkgPDwg
OCkgOiAoKDEgPDwgKDcpKSA+PiA4KSksCiAgX0lTYmxhbmsgPSAoKDgpIDwgOCA/ICgoMSA8PCAo
OCkpIDw8IDgpIDogKCgxIDw8ICg4KSkgPj4gOCkpLAogIF9JU2NudHJsID0gKCg5KSA8IDggPyAo
KDEgPDwgKDkpKSA8PCA4KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwKICBfSVNwdW5jdCA9ICgoMTAp
IDwgOCA/ICgoMSA8PCAoMTApKSA8PCA4KSA6ICgoMSA8PCAoMTApKSA+PiA4KSksCiAgX0lTYWxu
dW0gPSAoKDExKSA8IDggPyAoKDEgPDwgKDExKSkgPDwgOCkgOiAoKDEgPDwgKDExKSkgPj4gOCkp
Cn07CiMgNzUgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2NvbnN0IHVuc2lnbmVk
IHNob3J0IGludCAqX19jdHlwZV9iOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVf
dG9sb3dlcjsKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvdXBwZXI7CiMgOTEg
Ii91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSA7CmV4dGVy
biBpbnQgaXNhbHBoYSAoaW50KSA7CmV4dGVybiBpbnQgaXNjbnRybCAoaW50KSA7CmV4dGVybiBp
bnQgaXNkaWdpdCAoaW50KSA7CmV4dGVybiBpbnQgaXNsb3dlciAoaW50KSA7CmV4dGVybiBpbnQg
aXNncmFwaCAoaW50KSA7CmV4dGVybiBpbnQgaXNwcmludCAoaW50KSA7CmV4dGVybiBpbnQgaXNw
dW5jdCAoaW50KSA7CmV4dGVybiBpbnQgaXNzcGFjZSAoaW50KSA7CmV4dGVybiBpbnQgaXN1cHBl
ciAoaW50KSA7CmV4dGVybiBpbnQgaXN4ZGlnaXQgKGludCkgOwoKCgoKCgoKZXh0ZXJuIGludCB0
b2xvd2VyIChpbnQgX19jKSA7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQgX19jKSA7CgoKCgoK
CmV4dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50IHRvYXNjaWkgKGlu
dCBfX2MpIDsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSA7CmV4dGVybiBpbnQgX3RvbG93
ZXIgKGludCkgOwojIDE2OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGludAp0b2xvd2VyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1
NiA/IF9fY3R5cGVfdG9sb3dlcltfX2NdIDogX19jOwp9CgpleHRlcm4gX19pbmxpbmUgaW50CnRv
dXBwZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19j
dHlwZV90b3VwcGVyW19fY10gOiBfX2M7Cn0KIyA1MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemls
bGEvanMvc3JjL2pzc3RyLmgiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNwdWJ0ZC5oIiAxCiMgNTEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c3N0ci5oIiAyCiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHJ2dGQu
aCIgMQojIDUyICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzdHIuaCIgMgoj
IDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2hhc2guaCIgMQojIDUzICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzdHIuaCIgMgoKCgpzdHJ1Y3QgSlNT
dHJpbmcgewogICAgc2l6ZV90IGxlbmd0aDsKICAgIGpzY2hhciAqY2hhcnM7Cn07CgpzdHJ1Y3Qg
SlNTdWJTdHJpbmcgewogICAgc2l6ZV90IGxlbmd0aDsKICAgIGNvbnN0IGpzY2hhciAqY2hhcnM7
Cn07CgpleHRlcm4ganNjaGFyIGpzX2VtcHR5X3Vjc3RyW107CmV4dGVybiBKU1N1YlN0cmluZyBq
c19FbXB0eVN1YlN0cmluZzsKCgpleHRlcm4gY29uc3QgdWludDgganNfWFtdOwpleHRlcm4gY29u
c3QgdWludDgganNfWVtdOwpleHRlcm4gY29uc3QgdWludDMyIGpzX0FbXTsKCgp0eXBlZGVmIGVu
dW0gSlNDaGFyVHlwZSB7CiAgICBKU0NUX1VOQVNTSUdORUQgPSAwLAogICAgSlNDVF9VUFBFUkNB
U0VfTEVUVEVSID0gMSwKICAgIEpTQ1RfTE9XRVJDQVNFX0xFVFRFUiA9IDIsCiAgICBKU0NUX1RJ
VExFQ0FTRV9MRVRURVIgPSAzLAogICAgSlNDVF9NT0RJRklFUl9MRVRURVIgPSA0LAogICAgSlND
VF9PVEhFUl9MRVRURVIgPSA1LAogICAgSlNDVF9OT05fU1BBQ0lOR19NQVJLID0gNiwKICAgIEpT
Q1RfRU5DTE9TSU5HX01BUksgPSA3LAogICAgSlNDVF9DT01CSU5JTkdfU1BBQ0lOR19NQVJLID0g
OCwKICAgIEpTQ1RfREVDSU1BTF9ESUdJVF9OVU1CRVIgPSA5LAogICAgSlNDVF9MRVRURVJfTlVN
QkVSID0gMTAsCiAgICBKU0NUX09USEVSX05VTUJFUiA9IDExLAogICAgSlNDVF9TUEFDRV9TRVBB
UkFUT1IgPSAxMiwKICAgIEpTQ1RfTElORV9TRVBBUkFUT1IgPSAxMywKICAgIEpTQ1RfUEFSQUdS
QVBIX1NFUEFSQVRPUiA9IDE0LAogICAgSlNDVF9DT05UUk9MID0gMTUsCiAgICBKU0NUX0ZPUk1B
VCA9IDE2LAogICAgSlNDVF9QUklWQVRFX1VTRSA9IDE4LAogICAgSlNDVF9TVVJST0dBVEUgPSAx
OSwKICAgIEpTQ1RfREFTSF9QVU5DVFVBVElPTiA9IDIwLAogICAgSlNDVF9TVEFSVF9QVU5DVFVB
VElPTiA9IDIxLAogICAgSlNDVF9FTkRfUFVOQ1RVQVRJT04gPSAyMiwKICAgIEpTQ1RfQ09OTkVD
VE9SX1BVTkNUVUFUSU9OID0gMjMsCiAgICBKU0NUX09USEVSX1BVTkNUVUFUSU9OID0gMjQsCiAg
ICBKU0NUX01BVEhfU1lNQk9MID0gMjUsCiAgICBKU0NUX0NVUlJFTkNZX1NZTUJPTCA9IDI2LAog
ICAgSlNDVF9NT0RJRklFUl9TWU1CT0wgPSAyNywKICAgIEpTQ1RfT1RIRVJfU1lNQk9MID0gMjgK
fSBKU0NoYXJUeXBlOwojIDE4MSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pz
c3RyLmgiCmV4dGVybiBKU0Jvb2wKanNfSW5pdFN0cmluZ0dsb2JhbHModm9pZCk7CgpleHRlcm4g
dm9pZApqc19GcmVlU3RyaW5nR2xvYmFscyh2b2lkKTsKCgpleHRlcm4gSlNCb29sCmpzX0luaXRS
dW50aW1lU3RyaW5nU3RhdGUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gdm9pZApqc19GaW5pc2hS
dW50aW1lU3RyaW5nU3RhdGUoSlNDb250ZXh0ICpjeCk7CgoKZXh0ZXJuIEpTT2JqZWN0ICoKanNf
SW5pdFN0cmluZ0NsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0ZXJuIGNv
bnN0IGNoYXIganNfZXNjYXBlX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc191bmVzY2FwZV9z
dHJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfdW5ldmFsX3N0cltdOwpleHRlcm4gY29uc3QgY2hh
ciBqc19kZWNvZGVVUklfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX2VuY29kZVVSSV9zdHJb
XTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfZGVjb2RlVVJJQ29tcG9uZW50X3N0cltdOwpleHRlcm4g
Y29uc3QgY2hhciBqc19lbmNvZGVVUklDb21wb25lbnRfc3RyW107CgoKZXh0ZXJuIEpTU3RyaW5n
ICoKanNfTmV3U3RyaW5nKEpTQ29udGV4dCAqY3gsIGpzY2hhciAqY2hhcnMsIHNpemVfdCBsZW5n
dGgsIHVpbnROIGdjZmxhZyk7CgoKZXh0ZXJuIEpTU3RyaW5nICoKanNfTmV3U3RyaW5nQ29weU4o
SlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpzLCBzaXplX3QgbiwgdWludE4gZ2NmbGFnKTsK
CgpleHRlcm4gSlNTdHJpbmcgKgpqc19OZXdTdHJpbmdDb3B5WihKU0NvbnRleHQgKmN4LCBjb25z
dCBqc2NoYXIgKnMsIHVpbnROIGdjZmxhZyk7CgoKZXh0ZXJuIHZvaWQKanNfRmluYWxpemVTdHJp
bmcoSlNDb250ZXh0ICpjeCwgSlNTdHJpbmcgKnN0cik7CgpleHRlcm4gdm9pZApqc19GaW5hbGl6
ZVN0cmluZ1JUKEpTUnVudGltZSAqcnQsIEpTU3RyaW5nICpzdHIpOwoKCmV4dGVybiBKU09iamVj
dCAqCmpzX1N0cmluZ1RvT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTU3RyaW5nICpzdHIpOwoKCgoK
CmV4dGVybiBKU1N0cmluZyAqCmpzX1ZhbHVlVG9TdHJpbmcoSlNDb250ZXh0ICpjeCwganN2YWwg
dik7CgoKCgoKZXh0ZXJuIEpTU3RyaW5nICoKanNfVmFsdWVUb1NvdXJjZShKU0NvbnRleHQgKmN4
LCBqc3ZhbCB2KTsKCgoKCgpleHRlcm4gSlNIYXNoTnVtYmVyCmpzX0hhc2hTdHJpbmcoY29uc3Qg
SlNTdHJpbmcgKnN0cik7CgoKCgoKCmV4dGVybiBpbnROCmpzX0NvbXBhcmVTdHJpbmdzKGNvbnN0
IEpTU3RyaW5nICpzdHIxLCBjb25zdCBKU1N0cmluZyAqc3RyMik7CiMgMjcwICIvaG9tZS9hamF5
L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzdHIuaCIKZXh0ZXJuIGpzaW50CmpzX0JveWVyTW9v
cmVIb3JzcG9vbChjb25zdCBqc2NoYXIgKnRleHQsIGpzaW50IHRleHRsZW4sCiAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBqc2NoYXIgKnBhdCwganNpbnQgcGF0bGVuLAogICAgICAgICAgICAg
ICAgICAgICAganNpbnQgc3RhcnQpOwoKZXh0ZXJuIHNpemVfdApqc19zdHJsZW4oY29uc3QganNj
aGFyICpzKTsKCmV4dGVybiBqc2NoYXIgKgpqc19zdHJjaHIoY29uc3QganNjaGFyICpzLCBqc2No
YXIgYyk7CgpleHRlcm4ganNjaGFyICoKanNfc3RybmNweShqc2NoYXIgKnQsIGNvbnN0IGpzY2hh
ciAqcywgc2l6ZV90IG4pOwoKCgoKZXh0ZXJuIGNvbnN0IGpzY2hhciAqCmpzX1NraXBXaGl0ZVNw
YWNlKGNvbnN0IGpzY2hhciAqcyk7CgoKCgoKCmV4dGVybiBqc2NoYXIgKgpqc19JbmZsYXRlU3Ry
aW5nKEpTQ29udGV4dCAqY3gsIGNvbnN0IGNoYXIgKmJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKCmV4
dGVybiBjaGFyICoKanNfRGVmbGF0ZVN0cmluZyhKU0NvbnRleHQgKmN4LCBjb25zdCBqc2NoYXIg
KmNoYXJzLCBzaXplX3QgbGVuZ3RoKTsKCgoKCgpleHRlcm4gdm9pZApqc19JbmZsYXRlU3RyaW5n
VG9CdWZmZXIoanNjaGFyICpjaGFycywgY29uc3QgY2hhciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OwoKCgoKCmV4dGVybiBKU0Jvb2wKanNfU2V0U3RyaW5nQnl0ZXMoSlNTdHJpbmcgKnN0ciwgY2hh
ciAqYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwoKCgoKCmV4dGVybiBjaGFyICoKanNfR2V0U3RyaW5n
Qnl0ZXMoSlNTdHJpbmcgKnN0cik7CgpKU0Jvb2wKc3RyX2VzY2FwZShKU0NvbnRleHQgKmN4LCBK
U09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpOwojIDQz
ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNyZWdleHAuaCIgMgoKc3RydWN0
IEpTUmVnRXhwU3RhdGljcyB7CiAgICBKU1N0cmluZyAqaW5wdXQ7CiAgICBKU0Jvb2wgbXVsdGls
aW5lOwogICAgdWludE4gcGFyZW5Db3VudDsKICAgIHVpbnROIG1vcmVMZW5ndGg7CiAgICBKU1N1
YlN0cmluZyBwYXJlbnNbOV07CiAgICBKU1N1YlN0cmluZyAqbW9yZVBhcmVuczsKICAgIEpTU3Vi
U3RyaW5nIGxhc3RNYXRjaDsKICAgIEpTU3ViU3RyaW5nIGxhc3RQYXJlbjsKICAgIEpTU3ViU3Ry
aW5nIGxlZnRDb250ZXh0OwogICAgSlNTdWJTdHJpbmcgcmlnaHRDb250ZXh0Owp9OwojIDY4ICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNyZWdleHAuaCIKc3RydWN0IEpTUmVn
RXhwIHsKICAgIGpzcmVmY291bnQgbnJlZnM7CiAgICBKU1N0cmluZyAqc291cmNlOwogICAgdWlu
dE4gbGFzdEluZGV4OwogICAgdWludE4gcGFyZW5Db3VudDsKICAgIHVpbnQ4IGZsYWdzOwogICAg
c3RydWN0IFJFTm9kZSAqcmVuOwp9OwoKZXh0ZXJuIEpTUmVnRXhwICoKanNfTmV3UmVnRXhwKEpT
Q29udGV4dCAqY3gsIEpTVG9rZW5TdHJlYW0gKnRzLAogICAgICAgICAgICAgSlNTdHJpbmcgKnN0
ciwgdWludE4gZmxhZ3MsIEpTQm9vbCBmbGF0KTsKCmV4dGVybiBKU1JlZ0V4cCAqCmpzX05ld1Jl
Z0V4cE9wdChKU0NvbnRleHQgKmN4LCBKU1Rva2VuU3RyZWFtICp0cywKICAgICAgICAgICAgICAg
IEpTU3RyaW5nICpzdHIsIEpTU3RyaW5nICpvcHQsIEpTQm9vbCBmbGF0KTsKCmV4dGVybiB2b2lk
CmpzX0Rlc3Ryb3lSZWdFeHAoSlNDb250ZXh0ICpjeCwgSlNSZWdFeHAgKnJlKTsKCgoKCgoKZXh0
ZXJuIEpTQm9vbApqc19FeGVjdXRlUmVnRXhwKEpTQ29udGV4dCAqY3gsIEpTUmVnRXhwICpyZSwg
SlNTdHJpbmcgKnN0ciwgc2l6ZV90ICppbmRleHAsCiAgICAgICAgICAgICAgICAgSlNCb29sIHRl
c3QsIGpzdmFsICpydmFsKTsKCgoKCgpleHRlcm4gSlNCb29sCmpzX0luaXRSZWdFeHBTdGF0aWNz
KEpTQ29udGV4dCAqY3gsIEpTUmVnRXhwU3RhdGljcyAqcmVzKTsKCmV4dGVybiB2b2lkCmpzX0Zy
ZWVSZWdFeHBTdGF0aWNzKEpTQ29udGV4dCAqY3gsIEpTUmVnRXhwU3RhdGljcyAqcmVzKTsKCgoK
CgpleHRlcm4gSlNDbGFzcyBqc19SZWdFeHBDbGFzczsKCmV4dGVybiBKU09iamVjdCAqCmpzX0lu
aXRSZWdFeHBDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqKTsKCgoKCmV4dGVybiBK
U09iamVjdCAqCmpzX05ld1JlZ0V4cE9iamVjdChKU0NvbnRleHQgKmN4LCBKU1Rva2VuU3RyZWFt
ICp0cywKICAgICAgICAgICAgICAgICAgIGpzY2hhciAqY2hhcnMsIHNpemVfdCBsZW5ndGgsIHVp
bnROIGZsYWdzKTsKCmV4dGVybiBKU0Jvb2wKanNfWERSUmVnRXhwKEpTWERSU3RhdGUgKnhkciwg
SlNPYmplY3QgKipvYmpwKTsKIyA1MiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzY250eHQuaCIgMgoKCgp0eXBlZGVmIGVudW0gSlNHQ01vZGUgeyBKU19OT19HQywgSlNfTUFZ
QkVfR0MsIEpTX0ZPUkNFX0dDIH0gSlNHQ01vZGU7Cgp0eXBlZGVmIGVudW0gSlNSdW50aW1lU3Rh
dGUgewogICAgSlNSVFNfRE9XTiwKICAgIEpTUlRTX0xBVU5DSElORywKICAgIEpTUlRTX1VQLAog
ICAgSlNSVFNfTEFORElORwp9IEpTUnVudGltZVN0YXRlOwoKc3RydWN0IEpTUnVudGltZSB7CiAg
ICBKU1J1bnRpbWVTdGF0ZSBzdGF0ZTsKCgogICAgSlNBcmVuYVBvb2wgZ2NBcmVuYVBvb2w7CiAg
ICBKU0RIYXNoVGFibGUgZ2NSb290c0hhc2g7CiAgICBKU0RIYXNoVGFibGUgKmdjTG9ja3NIYXNo
OwogICAgSlNHQ1RoaW5nICpnY0ZyZWVMaXN0OwogICAganNyZWZjb3VudCBnY0Rpc2FibGVkOwog
ICAgdWludDMyIGdjQnl0ZXM7CiAgICB1aW50MzIgZ2NMYXN0Qnl0ZXM7CiAgICB1aW50MzIgZ2NN
YXhCeXRlczsKICAgIHVpbnQzMiBnY0xldmVsOwogICAgdWludDMyIGdjTnVtYmVyOwogICAgSlNQ
YWNrZWRCb29sIGdjUG9rZTsKICAgIEpTUGFja2VkQm9vbCBnY1J1bm5pbmc7CiAgICBKU0dDQ2Fs
bGJhY2sgZ2NDYWxsYmFjazsKICAgIHVpbnQzMiBnY01hbGxvY0J5dGVzOwoKCgoKCiAgICBKU0F0
b21TdGF0ZSBhdG9tU3RhdGU7CgoKICAgIEpTQm9vbCBybmdJbml0aWFsaXplZDsKICAgIGludDY0
IHJuZ011bHRpcGxpZXI7CiAgICBpbnQ2NCBybmdBZGRlbmQ7CiAgICBpbnQ2NCBybmdNYXNrOwog
ICAgaW50NjQgcm5nU2VlZDsKICAgIGpzZG91YmxlIHJuZ0RzY2FsZTsKCgogICAganNkb3VibGUg
KmpzTmFOOwogICAganNkb3VibGUgKmpzTmVnYXRpdmVJbmZpbml0eTsKICAgIGpzZG91YmxlICpq
c1Bvc2l0aXZlSW5maW5pdHk7CgoKICAgIEpTU3RyaW5nICplbXB0eVN0cmluZzsKCgogICAgSlND
TGlzdCBjb250ZXh0TGlzdDsKCgogICAgSlNUcmFwSGFuZGxlciBpbnRlcnJ1cHRIYW5kbGVyOwog
ICAgdm9pZCAqaW50ZXJydXB0SGFuZGxlckRhdGE7CiAgICBKU05ld1NjcmlwdEhvb2sgbmV3U2Ny
aXB0SG9vazsKICAgIHZvaWQgKm5ld1NjcmlwdEhvb2tEYXRhOwogICAgSlNEZXN0cm95U2NyaXB0
SG9vayBkZXN0cm95U2NyaXB0SG9vazsKICAgIHZvaWQgKmRlc3Ryb3lTY3JpcHRIb29rRGF0YTsK
ICAgIEpTVHJhcEhhbmRsZXIgZGVidWdnZXJIYW5kbGVyOwogICAgdm9pZCAqZGVidWdnZXJIYW5k
bGVyRGF0YTsKICAgIEpTU291cmNlSGFuZGxlciBzb3VyY2VIYW5kbGVyOwogICAgdm9pZCAqc291
cmNlSGFuZGxlckRhdGE7CiAgICBKU0ludGVycHJldGVySG9vayBleGVjdXRlSG9vazsKICAgIHZv
aWQgKmV4ZWN1dGVIb29rRGF0YTsKICAgIEpTSW50ZXJwcmV0ZXJIb29rIGNhbGxIb29rOwogICAg
dm9pZCAqY2FsbEhvb2tEYXRhOwogICAgSlNPYmplY3RIb29rIG9iamVjdEhvb2s7CiAgICB2b2lk
ICpvYmplY3RIb29rRGF0YTsKICAgIEpTVHJhcEhhbmRsZXIgdGhyb3dIb29rOwogICAgdm9pZCAq
dGhyb3dIb29rRGF0YTsKICAgIEpTRGVidWdFcnJvckhvb2sgZGVidWdFcnJvckhvb2s7CiAgICB2
b2lkICpkZWJ1Z0Vycm9ySG9va0RhdGE7CgoKICAgIEpTQ0xpc3QgdHJhcExpc3Q7CiAgICBKU0NM
aXN0IHdhdGNoUG9pbnRMaXN0OwoKCgogICAgSlNQcm9wZXJ0eUNhY2hlIHByb3BlcnR5Q2FjaGU7
CgoKICAgIHZvaWQgKmRhdGE7CgoKCiAgICBQUkxvY2sgKmdjTG9jazsKICAgIFBSQ29uZFZhciAq
Z2NEb25lOwogICAgUFJDb25kVmFyICpyZXF1ZXN0RG9uZTsKICAgIHVpbnQzMiByZXF1ZXN0Q291
bnQ7CiAgICBqc3dvcmQgZ2NUaHJlYWQ7CgoKICAgIFBSTG9jayAqcnRMb2NrOwoKCgoKCiAgICBQ
UkNvbmRWYXIgKnN0YXRlQ2hhbmdlOwoKCiAgICBQUkxvY2sgKnNldFNsb3RMb2NrOwogICAgSlNT
Y29wZSAqc2V0U2xvdFNjb3BlOwojIDE3MiAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzY250eHQuaCIKICAgIFBSQ29uZFZhciAqc2NvcGVTaGFyaW5nRG9uZTsKICAgIEpTU2Nv
cGUgKnNjb3BlU2hhcmluZ1RvZG87CiMgMjA3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9q
cy9zcmMvanNjbnR4dC5oIgp9OwojIDIzNCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzY250eHQuaCIKc3RydWN0IEpTU3RhY2tIZWFkZXIgewogICAgdWludE4gbnNsb3RzOwog
ICAgSlNTdGFja0hlYWRlciAqZG93bjsKfTsKCgoKc3RydWN0IEpTQ29udGV4dCB7CiAgICBKU0NM
aXN0IGxpbmtzOwoKCiAgICB1aW50TiBpbnRlcnBMZXZlbDsKCgogICAgSlNWZXJzaW9uIHZlcnNp
b247CiAgICBqc2J5dGVjb2RlIGpzb3BfZXE7CiAgICBqc2J5dGVjb2RlIGpzb3BfbmU7CgoKICAg
IEpTUnVudGltZSAqcnVudGltZTsKCgogICAgSlNBcmVuYVBvb2wgc3RhY2tQb29sOwogICAgSlNT
dGFja0ZyYW1lICpmcDsKCgogICAgSlNBcmVuYVBvb2wgY29kZVBvb2w7CiAgICBKU0FyZW5hUG9v
bCBub3RlUG9vbDsKICAgIEpTQXJlbmFQb29sIHRlbXBQb29sOwoKCiAgICBKU09iamVjdCAqZ2xv
YmFsT2JqZWN0OwoKCiAgICBKU0dDVGhpbmcgKm5ld2Jvcm5bKChKU1VpbnQzMikxIDw8ICgzKSld
OwoKCiAgICBKU1JlZ0V4cFN0YXRpY3MgcmVnRXhwU3RhdGljczsKCgogICAgSlNTaGFycE9iamVj
dE1hcCBzaGFycE9iamVjdE1hcDsKCgogICAgSlNBcmd1bWVudEZvcm1hdE1hcCAqYXJndW1lbnRG
b3JtYXRNYXA7CgoKICAgIGNoYXIgKmxhc3RNZXNzYWdlOwoKCgoKCiAgICBKU0JyYW5jaENhbGxi
YWNrIGJyYW5jaENhbGxiYWNrOwogICAgSlNFcnJvclJlcG9ydGVyIGVycm9yUmVwb3J0ZXI7CgoK
ICAgIHZvaWQgKmRhdGE7CgoKICAgIEpTU3RhY2tGcmFtZSAqZG9ybWFudEZyYW1lQ2hhaW47Cgog
ICAganN3b3JkIHRocmVhZDsKICAgIGpzcmVmY291bnQgcmVxdWVzdERlcHRoOwogICAgSlNTY29w
ZSAqc2NvcGVUb1NoYXJlOwojIDMwNyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3Jj
L2pzY250eHQuaCIKICAgIGpzdmFsIHJ2YWwyOwogICAgSlNQYWNrZWRCb29sIHJ2YWwyc2V0OwoK
CgogICAgSlNQYWNrZWRCb29sIHRocm93aW5nOwogICAganN2YWwgZXhjZXB0aW9uOwoKCiAgICB1
aW50MzIgb3B0aW9uczsKCgogICAgSlNWZXJzaW9uIHNjYW5uZXJWZXJzaW9uOwoKCiAgICBKU0xv
Y2FsZUNhbGxiYWNrcyAqbG9jYWxlQ2FsbGJhY2tzOwoKCiAgICBKU0RIYXNoVGFibGUgKnJlc29s
dmluZzsKCgogICAgSlNTdGFja0hlYWRlciAqc3RhY2tIZWFkZXJzOwp9OwoKCgoKCmV4dGVybiBK
U0NvbnRleHQgKgpqc19OZXdDb250ZXh0KEpTUnVudGltZSAqcnQsIHNpemVfdCBzdGFja0NodW5r
U2l6ZSk7CgpleHRlcm4gdm9pZApqc19EZXN0cm95Q29udGV4dChKU0NvbnRleHQgKmN4LCBKU0dD
TW9kZSBnY21vZGUpOwoKZXh0ZXJuIEpTQm9vbApqc19MaXZlQ29udGV4dChKU1J1bnRpbWUgKnJ0
LCBKU0NvbnRleHQgKmN4KTsKCmV4dGVybiBKU0NvbnRleHQgKgpqc19Db250ZXh0SXRlcmF0b3Io
SlNSdW50aW1lICpydCwgSlNDb250ZXh0ICoqaXRlcnApOwoKCgoKCnR5cGVkZWYgZW51bSBKU0Vy
ck51bSB7CgoKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanMubXNnIiAx
CiMgNzUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qcy5tc2ciCkpTTVNHX05P
VF9BTl9FUlJPUiA9IDAsCkpTTVNHX05PVF9ERUZJTkVEID0gMSwKSlNNU0dfTk9fUkVHX0VYUFMg
PSAyLApKU01TR19NT1JFX0FSR1NfTkVFREVEID0gMywKSlNNU0dfQkFEX0NIQVIgPSA0LApKU01T
R19CQURfVFlQRSA9IDUsCkpTTVNHX0NBTlRfTE9DSyA9IDYsCkpTTVNHX0NBTlRfVU5MT0NLID0g
NywKSlNNU0dfSU5DT01QQVRJQkxFX1BST1RPID0gOCwKSlNNU0dfTk9fQ09OU1RSVUNUT1IgPSA5
LApKU01TR19DQU5UX0FMSUFTID0gMTAsCkpTTVNHX05PX1BST1RPID0gMTEsCkpTTVNHX0JBRF9T
T1JUX0FSRyA9IDEyLApKU01TR19CQURfQVRPTUlDX05VTUJFUiA9IDEzLApKU01TR19UT09fTUFO
WV9MSVRFUkFMUyA9IDE0LApKU01TR19DQU5UX1dBVENIID0gMTUsCkpTTVNHX1NUQUNLX1VOREVS
RkxPVyA9IDE2LApKU01TR19ORUVEX0RJRVQgPSAxNywKSlNNU0dfQkFEX0NBU0UgPSAxOCwKSlNN
U0dfUkVBRF9PTkxZID0gMTksCkpTTVNHX0JBRF9GT1JNQUwgPSAyMCwKSlNNU0dfU0FNRV9GT1JN
QUwgPSAyMSwKSlNNU0dfTk9UX0ZVTkNUSU9OID0gMjIsCkpTTVNHX05PVF9DT05TVFJVQ1RPUiA9
IDIzLApKU01TR19TVEFDS19PVkVSRkxPVyA9IDI0LApKU01TR19OT1RfRVhQT1JURUQgPSAyNSwK
SlNNU0dfT1ZFUl9SRUNVUlNFRCA9IDI2LApKU01TR19JTl9OT1RfT0JKRUNUID0gMjcsCkpTTVNH
X0JBRF9ORVdfUkVTVUxUID0gMjgsCkpTTVNHX0JBRF9TSEFSUF9ERUYgPSAyOSwKSlNNU0dfQkFE
X1NIQVJQX1VTRSA9IDMwLApKU01TR19CQURfSU5TVEFOQ0VPRl9SSFMgPSAzMSwKSlNNU0dfQkFE
X0JZVEVDT0RFID0gMzIsCkpTTVNHX0JBRF9SQURJWCA9IDMzLApKU01TR19OQU4gPSAzNCwKSlNN
U0dfQ0FOVF9DT05WRVJUID0gMzUsCkpTTVNHX0NZQ0xJQ19WQUxVRSA9IDM2LApKU01TR19QRVJN
QU5FTlQgPSAzNywKSlNNU0dfQ0FOVF9DT05WRVJUX1RPID0gMzgsCkpTTVNHX05PX1BST1BFUlRJ
RVMgPSAzOSwKSlNNU0dfQ0FOVF9GSU5EX0NMQVNTID0gNDAsCkpTTVNHX0NBTlRfWERSX0NMQVNT
ID0gNDEsCkpTTVNHX0JZVEVDT0RFX1RPT19CSUcgPSA0MiwKSlNNU0dfVU5LTk9XTl9GT1JNQVQg
PSA0MywKSlNNU0dfVE9PX01BTllfQ09OX0FSR1MgPSA0NCwKSlNNU0dfVE9PX01BTllfRlVOX0FS
R1MgPSA0NSwKSlNNU0dfQkFEX1FVQU5USUZJRVIgPSA0NiwKSlNNU0dfTUlOX1RPT19CSUcgPSA0
NywKSlNNU0dfTUFYX1RPT19CSUcgPSA0OCwKSlNNU0dfT1VUX09GX09SREVSID0gNDksCkpTTVNH
X1pFUk9fUVVBTlRJRklFUiA9IDUwLApKU01TR19VTlRFUk1fUVVBTlRJRklFUiA9IDUxLApKU01T
R19FTVBUWV9CRUZPUkVfU1RBUiA9IDUyLApKU01TR19FTVBUWV9CRUZPUkVfUExVUyA9IDUzLApK
U01TR19NSVNTSU5HX1BBUkVOID0gNTQsCkpTTVNHX1VOVEVSTV9DTEFTUyA9IDU1LApKU01TR19U
UkFJTElOR19TTEFTSCA9IDU2LApKU01TR19CQURfQ0xBU1NfUkFOR0UgPSA1NywKSlNNU0dfQkFE
X0ZMQUcgPSA1OCwKSlNNU0dfTk9fSU5QVVQgPSA1OSwKSlNNU0dfQ0FOVF9PUEVOID0gNjAsCkpT
TVNHX0JBRF9TVFJJTkdfTUFTSyA9IDYxLApKU01TR19OT19TVFJJTkdfUFJPVE8gPSA2MiwKSlNN
U0dfRU5EX09GX0RBVEEgPSA2MywKSlNNU0dfU0VFS19CRVlPTkRfU1RBUlQgPSA2NCwKSlNNU0df
U0VFS19CRVlPTkRfRU5EID0gNjUsCkpTTVNHX0VORF9TRUVLID0gNjYsCkpTTVNHX1dISVRIRVJf
V0hFTkNFID0gNjcsCkpTTVNHX0JBRF9TQ1JJUFRfTUFHSUMgPSA2OCwKSlNNU0dfUEFSRU5fQkVG
T1JFX0ZPUk1BTCA9IDY5LApKU01TR19NSVNTSU5HX0ZPUk1BTCA9IDcwLApKU01TR19QQVJFTl9B
RlRFUl9GT1JNQUwgPSA3MSwKSlNNU0dfQ1VSTFlfQkVGT1JFX0JPRFkgPSA3MiwKSlNNU0dfQ1VS
TFlfQUZURVJfQk9EWSA9IDczLApKU01TR19QQVJFTl9CRUZPUkVfQ09ORCA9IDc0LApKU01TR19Q
QVJFTl9BRlRFUl9DT05EID0gNzUsCkpTTVNHX05PX0lNUE9SVF9OQU1FID0gNzYsCkpTTVNHX05B
TUVfQUZURVJfRE9UID0gNzcsCkpTTVNHX0JSQUNLRVRfSU5fSU5ERVggPSA3OCwKSlNNU0dfTk9f
RVhQT1JUX05BTUUgPSA3OSwKSlNNU0dfUEFSRU5fQkVGT1JFX1NXSVRDSCA9IDgwLApKU01TR19Q
QVJFTl9BRlRFUl9TV0lUQ0ggPSA4MSwKSlNNU0dfQ1VSTFlfQkVGT1JFX1NXSVRDSCA9IDgyLApK
U01TR19DT0xPTl9BRlRFUl9DQVNFID0gODMsCkpTTVNHX1dISUxFX0FGVEVSX0RPID0gODQsCkpT
TVNHX1BBUkVOX0FGVEVSX0ZPUiA9IDg1LApKU01TR19TRU1JX0FGVEVSX0ZPUl9JTklUID0gODYs
CkpTTVNHX1NFTUlfQUZURVJfRk9SX0NPTkQgPSA4NywKSlNNU0dfUEFSRU5fQUZURVJfRk9SX0NU
UkwgPSA4OCwKSlNNU0dfQ1VSTFlfQkVGT1JFX1RSWSA9IDg5LApKU01TR19DVVJMWV9BRlRFUl9U
UlkgPSA5MCwKSlNNU0dfUEFSRU5fQkVGT1JFX0NBVENIID0gOTEsCkpTTVNHX0NBVENIX0lERU5U
SUZJRVIgPSA5MiwKSlNNU0dfUEFSRU5fQUZURVJfQ0FUQ0ggPSA5MywKSlNNU0dfQ1VSTFlfQkVG
T1JFX0NBVENIID0gOTQsCkpTTVNHX0NVUkxZX0FGVEVSX0NBVENIID0gOTUsCkpTTVNHX0NVUkxZ
X0JFRk9SRV9GSU5BTExZID0gOTYsCkpTTVNHX0NVUkxZX0FGVEVSX0ZJTkFMTFkgPSA5NywKSlNN
U0dfQ0FUQ0hfT1JfRklOQUxMWSA9IDk4LApKU01TR19QQVJFTl9CRUZPUkVfV0lUSCA9IDk5LApK
U01TR19QQVJFTl9BRlRFUl9XSVRIID0gMTAwLApKU01TR19DVVJMWV9JTl9DT01QT1VORCA9IDEw
MSwKSlNNU0dfTk9fVkFSSUFCTEVfTkFNRSA9IDEwMiwKSlNNU0dfQ09MT05fSU5fQ09ORCA9IDEw
MywKSlNNU0dfUEFSRU5fQUZURVJfQVJHUyA9IDEwNCwKSlNNU0dfQlJBQ0tFVF9BRlRFUl9MSVNU
ID0gMTA1LApKU01TR19DT0xPTl9BRlRFUl9JRCA9IDEwNiwKSlNNU0dfQ1VSTFlfQUZURVJfTElT
VCA9IDEwNywKSlNNU0dfUEFSRU5fSU5fUEFSRU4gPSAxMDgsCkpTTVNHX1NFTUlfQkVGT1JFX1NU
TU5UID0gMTA5LApKU01TR19OT19SRVRVUk5fVkFMVUUgPSAxMTAsCkpTTVNHX0RVUExJQ0FURV9G
T1JNQUwgPSAxMTEsCkpTTVNHX0VRVUFMX0FTX0FTU0lHTiA9IDExMiwKSlNNU0dfQkFEX0lNUE9S
VCA9IDExMywKSlNNU0dfVE9PX01BTllfREVGQVVMVFMgPSAxMTQsCkpTTVNHX1RPT19NQU5ZX0NB
U0VTID0gMTE1LApKU01TR19CQURfU1dJVENIID0gMTE2LApKU01TR19CQURfRk9SX0xFRlRTSURF
ID0gMTE3LApKU01TR19DQVRDSF9BRlRFUl9HRU5FUkFMID0gMTE4LApKU01TR19DQVRDSF9XSVRI
T1VUX1RSWSA9IDExOSwKSlNNU0dfRklOQUxMWV9XSVRIT1VUX1RSWSA9IDEyMCwKSlNNU0dfTEFC
RUxfTk9UX0ZPVU5EID0gMTIxLApKU01TR19UT1VHSF9CUkVBSyA9IDEyMiwKSlNNU0dfQkFEX0NP
TlRJTlVFID0gMTIzLApKU01TR19CQURfUkVUVVJOID0gMTI0LApKU01TR19CQURfTEFCRUwgPSAx
MjUsCkpTTVNHX0RVUExJQ0FURV9MQUJFTCA9IDEyNiwKSlNNU0dfVkFSX0hJREVTX0FSRyA9IDEy
NywKSlNNU0dfQkFEX1ZBUl9JTklUID0gMTI4LApKU01TR19CQURfTEVGVFNJREVfT0ZfQVNTID0g
MTI5LApKU01TR19CQURfT1BFUkFORCA9IDEzMCwKSlNNU0dfQkFEX1BST1BfSUQgPSAxMzEsCkpT
TVNHX1JFU0VSVkVEX0lEID0gMTMyLApKU01TR19TWU5UQVhfRVJST1IgPSAxMzMsCkpTTVNHX0JB
RF9TSEFSUF9WQVJfREVGID0gMTM0LApKU01TR19CQURfUFJPVE9UWVBFID0gMTM1LApKU01TR19N
SVNTSU5HX0VYUE9ORU5UID0gMTM2LApKU01TR19PVVRfT0ZfTUVNT1JZID0gMTM3LApKU01TR19V
TlRFUk1JTkFURURfU1RSSU5HID0gMTM4LApKU01TR19ORVNURURfQ09NTUVOVCA9IDEzOSwKSlNN
U0dfVU5URVJNSU5BVEVEX0NPTU1FTlQgPSAxNDAsCkpTTVNHX1VOVEVSTUlOQVRFRF9SRUdFWFAg
PSAxNDEsCkpTTVNHX0JBRF9SRUdFWFBfRkxBRyA9IDE0MiwKSlNNU0dfU0hBUlBWQVJfVE9PX0JJ
RyA9IDE0MywKSlNNU0dfSUxMRUdBTF9DSEFSQUNURVIgPSAxNDQsCkpTTVNHX0JBRF9PQ1RBTCA9
IDE0NSwKSlNNU0dfQkFEX0lORElSRUNUX0NBTEwgPSAxNDYsCkpTTVNHX1VOQ0FVR0hUX0VYQ0VQ
VElPTiA9IDE0NywKSlNNU0dfSU5WQUxJRF9CQUNLUkVGID0gMTQ4LApKU01TR19CQURfQkFDS1JF
RiA9IDE0OSwKSlNNU0dfUFJFQ0lTSU9OX1JBTkdFID0gMTUwLApKU01TR19CQURfR0VUVEVSX09S
X1NFVFRFUiA9IDE1MSwKSlNNU0dfQkFEX0FSUkFZX0xFTkdUSCA9IDE1MiwKSlNNU0dfQ0FOVF9E
RVNDUklCRV9QUk9QUyA9IDE1MywKSlNNU0dfQkFEX0FQUExZX0FSR1MgPSAxNTQsCkpTTVNHX1JF
REVDTEFSRURfVkFSID0gMTU1LApKU01TR19VTkRFQ0xBUkVEX1ZBUiA9IDE1NiwKSlNNU0dfQU5P
Tl9OT19SRVRVUk5fVkFMVUUgPSAxNTcsCkpTTVNHX0RFUFJFQ0FURURfVVNBR0UgPSAxNTgsCkpT
TVNHX0JBRF9VUkkgPSAxNTksCkpTTVNHX0dFVFRFUl9PTkxZID0gMTYwLApKU01TR19UUkFJTElO
R19DT01NQSA9IDE2MSwKSlNNU0dfVU5ERUZJTkVEX1BST1AgPSAxNjIsCkpTTVNHX1VTRUxFU1Nf
RVhQUiA9IDE2MywKSlNNU0dfUkVERUNMQVJFRF9QQVJBTSA9IDE2NCwKSlNNU0dfTkVXUkVHRVhQ
X0ZMQUdHRUQgPSAxNjUsCkpTTVNHX1JFU0VSVkVEX1NMT1RfUkFOR0UgPSAxNjYsCiMgMzU1ICIv
aG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNjbnR4dC5oIiAyCgogICAgSlNFcnJf
TGltaXQKfSBKU0Vyck51bTsKCmV4dGVybiBjb25zdCBKU0Vycm9yRm9ybWF0U3RyaW5nICoKanNf
R2V0RXJyb3JNZXNzYWdlKHZvaWQgKnVzZXJSZWYsIGNvbnN0IGNoYXIgKmxvY2FsZSwgY29uc3Qg
dWludE4gZXJyb3JOdW1iZXIpOwojIDM3OCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzY250eHQuaCIKZXh0ZXJuIHZvaWQKanNfUmVwb3J0T3V0T2ZNZW1vcnkoSlNDb250ZXh0
ICpjeCwgSlNFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spOwoKCgoKCmV4dGVybiB2b2lkCmpz
X1JlcG9ydEVycm9yQWdhaW4oSlNDb250ZXh0ICpjeCwgY29uc3QgY2hhciAqbWVzc2FnZSwgSlNF
cnJvclJlcG9ydCAqcmVwb3J0KTsKCmV4dGVybiB2b2lkCmpzX1JlcG9ydElzTm90RGVmaW5lZChK
U0NvbnRleHQgKmN4LCBjb25zdCBjaGFyICpuYW1lKTsKCmV4dGVybiBKU0Vycm9yRm9ybWF0U3Ry
aW5nIGpzX0Vycm9yRm9ybWF0U3RyaW5nW0pTRXJyX0xpbWl0XTsKIyA0NyAiL2hvbWUvYWpheS9t
b3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJyYXkuYyIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc2NvbmZpZy5oIiAxCiMgNDggIi9ob21lL2FqYXkvbW96L2N2cy9t
b3ppbGxhL2pzL3NyYy9qc2FycmF5LmMiIDIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxs
YS9qcy9zcmMvanNmdW4uaCIgMQojIDQwICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9z
cmMvanNmdW4uaCIKIyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNwcnZ0
ZC5oIiAxCiMgNDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2Z1bi5oIiAy
CiMgMSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzcHVidGQuaCIgMQojIDQy
ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNmdW4uaCIgMgoKCgpzdHJ1Y3Qg
SlNGdW5jdGlvbiB7CiAgICBqc3JlZmNvdW50IG5yZWZzOwogICAgSlNPYmplY3QgKm9iamVjdDsK
ICAgIEpTTmF0aXZlIG5hdGl2ZTsKICAgIEpTU2NyaXB0ICpzY3JpcHQ7CiAgICB1aW50MTYgbmFy
Z3M7CiAgICB1aW50MTYgZXh0cmE7CiAgICB1aW50MTYgbnZhcnM7CiAgICB1aW50OCBmbGFnczsK
ICAgIHVpbnQ4IHNwYXJlOwogICAgSlNBdG9tICphdG9tOwogICAgSlNDbGFzcyAqY2xhc3A7Cn07
CgpleHRlcm4gSlNDbGFzcyBqc19Bcmd1bWVudHNDbGFzczsKZXh0ZXJuIEpTQ2xhc3MganNfQ2Fs
bENsYXNzOwoKCmV4dGVybiBKU0NsYXNzIGpzX0Z1bmN0aW9uQ2xhc3M7CiMgNzIgIi9ob21lL2Fq
YXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2Z1bi5oIgpleHRlcm4gSlNCb29sCmpzX0lzSWRl
bnRpZmllcihKU1N0cmluZyAqc3RyKTsKCmV4dGVybiBKU09iamVjdCAqCmpzX0luaXRGdW5jdGlv
bkNsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0ZXJuIEpTT2JqZWN0ICoK
anNfSW5pdEFyZ3VtZW50c0NsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKZXh0
ZXJuIEpTT2JqZWN0ICoKanNfSW5pdENhbGxDbGFzcyhKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqKTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKanNfTmV3RnVuY3Rpb24oSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKmZ1bm9iaiwgSlNOYXRpdmUgbmF0aXZlLCB1aW50TiBuYXJncywKICAgICAgICAg
ICAgICAgdWludE4gZmxhZ3MsIEpTT2JqZWN0ICpwYXJlbnQsIEpTQXRvbSAqYXRvbSk7CgpleHRl
cm4gSlNPYmplY3QgKgpqc19DbG9uZUZ1bmN0aW9uT2JqZWN0KEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpmdW5vYmosIEpTT2JqZWN0ICpwYXJlbnQpOwoKZXh0ZXJuIEpTQm9vbApqc19MaW5rRnVu
Y3Rpb25PYmplY3QoSlNDb250ZXh0ICpjeCwgSlNGdW5jdGlvbiAqZnVuLCBKU09iamVjdCAqb2Jq
ZWN0KTsKCmV4dGVybiBKU0Z1bmN0aW9uICoKanNfRGVmaW5lRnVuY3Rpb24oSlNDb250ZXh0ICpj
eCwgSlNPYmplY3QgKm9iaiwgSlNBdG9tICphdG9tLCBKU05hdGl2ZSBuYXRpdmUsCiAgICAgICAg
ICAgICAgICAgIHVpbnROIG5hcmdzLCB1aW50TiBmbGFncyk7CgpleHRlcm4gSlNGdW5jdGlvbiAq
CmpzX1ZhbHVlVG9GdW5jdGlvbihKU0NvbnRleHQgKmN4LCBqc3ZhbCAqdnAsIEpTQm9vbCBjb25z
dHJ1Y3RpbmcpOwoKZXh0ZXJuIHZvaWQKanNfUmVwb3J0SXNOb3RGdW5jdGlvbihKU0NvbnRleHQg
KmN4LCBqc3ZhbCAqdnAsIEpTQm9vbCBjb25zdHJ1Y3RpbmcpOwoKZXh0ZXJuIEpTT2JqZWN0ICoK
anNfR2V0Q2FsbE9iamVjdChKU0NvbnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwLCBKU09iamVj
dCAqcGFyZW50KTsKCmV4dGVybiBKU0Jvb2wKanNfUHV0Q2FsbE9iamVjdChKU0NvbnRleHQgKmN4
LCBKU1N0YWNrRnJhbWUgKmZwKTsKCmV4dGVybiBKU0Jvb2wKanNfR2V0Q2FsbFZhcmlhYmxlKEpT
Q29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnApOwoKZXh0ZXJu
IEpTQm9vbApqc19TZXRDYWxsVmFyaWFibGUoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwg
anN2YWwgaWQsIGpzdmFsICp2cCk7CgpleHRlcm4gSlNCb29sCmpzX0dldEFyZ3NWYWx1ZShKU0Nv
bnRleHQgKmN4LCBKU1N0YWNrRnJhbWUgKmZwLCBqc3ZhbCAqdnApOwoKZXh0ZXJuIEpTQm9vbApq
c19HZXRBcmdzUHJvcGVydHkoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1lICpmcCwganNpZCBp
ZCwKICAgICAgICAgICAgICAgICAgIEpTT2JqZWN0ICoqb2JqcCwganN2YWwgKnZwKTsKCmV4dGVy
biBKU09iamVjdCAqCmpzX0dldEFyZ3NPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNTdGFja0ZyYW1l
ICpmcCk7CgpleHRlcm4gSlNCb29sCmpzX1B1dEFyZ3NPYmplY3QoSlNDb250ZXh0ICpjeCwgSlNT
dGFja0ZyYW1lICpmcCk7CgpleHRlcm4gSlNCb29sCmpzX1hEUkZ1bmN0aW9uKEpTWERSU3RhdGUg
KnhkciwgSlNPYmplY3QgKipvYmpwKTsKIyA0OSAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzYXJyYXkuYyIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc2djLmgiIDEKIyA1MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJy
YXkuYyIgMgojIDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2ludGVycC5o
IiAxCiMgNTEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmMiIDIK
IyAxICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNsb2NrLmgiIDEKIyA1MiAi
L2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJyYXkuYyIgMgojIDEgIi9ob21l
L2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc251bS5oIiAxCiMgODcgIi9ob21lL2FqYXkv
bW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc251bS5oIgpleHRlcm4gSlNCb29sCmpzX0luaXRSdW50
aW1lTnVtYmVyU3RhdGUoSlNDb250ZXh0ICpjeCk7CgpleHRlcm4gdm9pZApqc19GaW5pc2hSdW50
aW1lTnVtYmVyU3RhdGUoSlNDb250ZXh0ICpjeCk7CgoKZXh0ZXJuIEpTT2JqZWN0ICoKanNfSW5p
dE51bWJlckNsYXNzKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmopOwoKCgoKZXh0ZXJuIGNv
bnN0IGNoYXIganNfSW5maW5pdHlfc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpzX05hTl9zdHJb
XTsKZXh0ZXJuIGNvbnN0IGNoYXIganNfaXNOYU5fc3RyW107CmV4dGVybiBjb25zdCBjaGFyIGpz
X2lzRmluaXRlX3N0cltdOwpleHRlcm4gY29uc3QgY2hhciBqc19wYXJzZUZsb2F0X3N0cltdOwpl
eHRlcm4gY29uc3QgY2hhciBqc19wYXJzZUludF9zdHJbXTsKCgpleHRlcm4ganNkb3VibGUgKgpq
c19OZXdEb3VibGUoSlNDb250ZXh0ICpjeCwganNkb3VibGUgZCk7CgpleHRlcm4gdm9pZApqc19G
aW5hbGl6ZURvdWJsZShKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSAqZHApOwoKZXh0ZXJuIEpTQm9v
bApqc19OZXdEb3VibGVWYWx1ZShKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkLCBqc3ZhbCAqcnZh
bCk7CgpleHRlcm4gSlNCb29sCmpzX05ld051bWJlclZhbHVlKEpTQ29udGV4dCAqY3gsIGpzZG91
YmxlIGQsIGpzdmFsICpydmFsKTsKCgpleHRlcm4gSlNPYmplY3QgKgpqc19OdW1iZXJUb09iamVj
dChKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkKTsKCgpleHRlcm4gSlNTdHJpbmcgKgpqc19OdW1i
ZXJUb1N0cmluZyhKU0NvbnRleHQgKmN4LCBqc2RvdWJsZSBkKTsKCgoKCgpleHRlcm4gSlNCb29s
CmpzX1ZhbHVlVG9OdW1iZXIoSlNDb250ZXh0ICpjeCwganN2YWwgdiwganNkb3VibGUgKmRwKTsK
CgoKCgpleHRlcm4gSlNCb29sCmpzX1ZhbHVlVG9FQ01BSW50MzIoSlNDb250ZXh0ICpjeCwganN2
YWwgdiwgaW50MzIgKmlwKTsKCmV4dGVybiBKU0Jvb2wKanNfRG91YmxlVG9FQ01BSW50MzIoSlND
b250ZXh0ICpjeCwganNkb3VibGUgZCwgaW50MzIgKmlwKTsKCgoKCgpleHRlcm4gSlNCb29sCmpz
X1ZhbHVlVG9FQ01BVWludDMyKEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIHVpbnQzMiAqaXApOwoK
ZXh0ZXJuIEpTQm9vbApqc19Eb3VibGVUb0VDTUFVaW50MzIoSlNDb250ZXh0ICpjeCwganNkb3Vi
bGUgZCwgdWludDMyICppcCk7CgoKCgoKCmV4dGVybiBKU0Jvb2wKanNfVmFsdWVUb0ludDMyKEpT
Q29udGV4dCAqY3gsIGpzdmFsIHYsIGludDMyICppcCk7CgoKCgoKZXh0ZXJuIEpTQm9vbApqc19W
YWx1ZVRvVWludDE2KEpTQ29udGV4dCAqY3gsIGpzdmFsIHYsIHVpbnQxNiAqaXApOwoKCgoKCmV4
dGVybiBqc2RvdWJsZQpqc19Eb3VibGVUb0ludGVnZXIoanNkb3VibGUgZCk7CiMgMTg2ICIvaG9t
ZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNudW0uaCIKZXh0ZXJuIEpTQm9vbApqc19z
dHJ0b2QoSlNDb250ZXh0ICpjeCwgY29uc3QganNjaGFyICpzLCBjb25zdCBqc2NoYXIgKiplcCwg
anNkb3VibGUgKmRwKTsKIyAxOTYgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9q
c251bS5oIgpleHRlcm4gSlNCb29sCmpzX3N0cnRvaW50ZWdlcihKU0NvbnRleHQgKmN4LCBjb25z
dCBqc2NoYXIgKnMsIGNvbnN0IGpzY2hhciAqKmVwLCBqc2ludCByYWRpeCwganNkb3VibGUgKmRw
KTsKIyA1MyAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJyYXkuYyIgMgoj
IDEgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc29iai5oIiAxCiMgNTQgIi9o
b21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmMiIDIKIyAxICIvaG9tZS9h
amF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNzdHIuaCIgMQojIDU1ICIvaG9tZS9hamF5L21v
ei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIiAyCiMgNzYgIi9ob21lL2FqYXkvbW96L2N2
cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5LmMiCnN0YXRpYyBKU0Jvb2wKSWRJc0luZGV4KGpzaWQg
aWQsIGpzdWludCAqaW5kZXhwKQp7CiAgICBKU1N0cmluZyAqc3RyOwogICAganNjaGFyICpjcDsK
CiAgICBpZiAoKCgoaWQpICYgMHgxKSAmJiAoaWQpICE9ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSkpKSB7CiAgICAgICAganNpbnQgaTsKICAgICAgICBpID0g
KChqc2ludCkoaWQpID4+IDEpOwogICAgICAgIGlmIChpIDwgMCkKICAgICAgICAgICAgcmV0dXJu
IChKU0ludG4pMDsKICAgICAgICAqaW5kZXhwID0gKGpzdWludClpOwogICAgICAgIHJldHVybiAo
SlNJbnRuKTE7CiAgICB9CgoKICAgIHN0ciA9ICgoSlNTdHJpbmcgKikoKHZvaWQgKikoKGlkKSAm
IH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSk7CiAgICBjcCA9IHN0ci0+Y2hh
cnM7CiAgICBpZiAoKCgqY3ApIDwgMTI4ICYmIChfX2N0eXBlX2JbKGludCkgKCgqY3ApKV0gJiAo
dW5zaWduZWQgc2hvcnQgaW50KSBfSVNkaWdpdCkpICYmIHN0ci0+bGVuZ3RoIDwgc2l6ZW9mKCI0
Mjk0OTY3Mjk1IikpIHsKICAgICAgICBqc3VpbnQgaW5kZXggPSAoKCpjcCsrKSAtICcwJyk7CiAg
ICAgICAganN1aW50IG9sZEluZGV4ID0gMDsKICAgICAgICBqc3VpbnQgYyA9IDA7CiAgICAgICAg
aWYgKGluZGV4ICE9IDApIHsKICAgICAgICAgICAgd2hpbGUgKCgoKmNwKSA8IDEyOCAmJiAoX19j
dHlwZV9iWyhpbnQpICgoKmNwKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTZGlnaXQpKSkg
ewogICAgICAgICAgICAgICAgb2xkSW5kZXggPSBpbmRleDsKICAgICAgICAgICAgICAgIGMgPSAo
KCpjcCkgLSAnMCcpOwogICAgICAgICAgICAgICAgaW5kZXggPSAxMCppbmRleCArIGM7CiAgICAg
ICAgICAgICAgICBjcCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCgogICAgICAgIGlmICgq
Y3AgPT0gMCAmJgogICAgICAgICAgICAgKG9sZEluZGV4IDwgKDQyOTQ5NjcyOTV1IC8gMTApIHx8
CiAgICAgICAgICAgICAgKG9sZEluZGV4ID09ICg0Mjk0OTY3Mjk1dSAvIDEwKSAmJiBjIDwgKDQy
OTQ5NjcyOTV1ICUgMTApKSkpCiAgICAgICAgewogICAgICAgICAgICAqaW5kZXhwID0gaW5kZXg7
CiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJu
IChKU0ludG4pMDsKfQoKc3RhdGljIEpTQm9vbApWYWx1ZUlzTGVuZ3RoKEpTQ29udGV4dCAqY3gs
IGpzdmFsIHYsIGpzdWludCAqbGVuZ3RocCkKewogICAganNpbnQgaTsKCiAgICBpZiAoKCgodikg
JiAweDEpICYmICh2KSAhPSAoKChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkg
fCAweDEpKSkgewogICAgICAgIGkgPSAoKGpzaW50KSh2KSA+PiAxKTsKICAgICAgICBpZiAoaSA8
IDApIHsKICAgICAgICAgICAgSlNfUmVwb3J0RXJyb3JOdW1iZXIoY3gsIGpzX0dldEVycm9yTWVz
c2FnZSwgKCh2b2lkICopMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTTVNH
X0JBRF9BUlJBWV9MRU5HVEgpOwogICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAg
IH0KICAgICAgICBpZiAobGVuZ3RocCkKICAgICAgICAgICAgKmxlbmd0aHAgPSAoanN1aW50KSBp
OwogICAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICB9CiAgICBpZiAoKCgodikgJiAoKChKU1Vp
bnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgyKSkgewogICAgICAgIGpzZG91YmxlIGQ7CgogICAg
ICAgIGlmICghanNfVmFsdWVUb051bWJlcihjeCwgdiwgJmQpKQogICAgICAgICAgICByZXR1cm4g
KEpTSW50bikwOwogICAgICAgIGlmICghanNfRG91YmxlVG9FQ01BVWludDMyKGN4LCBkLCAodWlu
dDMyICopbGVuZ3RocCkpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgaWYg
KCgoKCgodWludDMyICopJihkKSlbMV0pICYgMHg3ZmYwMDAwMCkgPT0gMHg3ZmYwMDAwMCAmJiAo
KCgodWludDMyICopJihkKSlbMF0pIHx8ICgoKCh1aW50MzIgKikmKGQpKVsxXSkgJiAweDAwMGZm
ZmZmKSkpIHx8IChkICE9ICoodWludDMyICopbGVuZ3RocCkpIHsKICAgICAgICAgICAgSlNfUmVw
b3J0RXJyb3JOdW1iZXIoY3gsIGpzX0dldEVycm9yTWVzc2FnZSwgKCh2b2lkICopMCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTTVNHX0JBRF9BUlJBWV9MRU5HVEgpOwogICAg
ICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKEpTSW50
bikxOwogICAgfQogICAgcmV0dXJuIChKU0ludG4pMDsKfQoKSlNCb29sCmpzX0dldExlbmd0aFBy
b3BlcnR5KEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdWludCAqbGVuZ3RocCkKewog
ICAganNpZCBpZDsKICAgIGpzaW50IGk7CiAgICBqc3ZhbCB2OwoKICAgIGlkID0gKGpzaWQpIGN4
LT5ydW50aW1lLT5hdG9tU3RhdGUubGVuZ3RoQXRvbTsKICAgIGlmICghKG9iaiktPm1hcC0+b3Bz
LT5nZXRQcm9wZXJ0eShjeCxvYmosaWQsJnYpKQogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgoK
CgogICAgaWYgKCgoKHYpICYgMHgxKSAmJiAodikgIT0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEg
PDwgKDMwKSkpIDw8IDEpIHwgMHgxKSkpIHsKICAgICAgICBpID0gKChqc2ludCkodikgPj4gMSk7
CgogICAgICAgICpsZW5ndGhwID0gKGpzdWludClpOwogICAgICAgIHJldHVybiAoSlNJbnRuKTE7
CiAgICB9CiAgICByZXR1cm4ganNfVmFsdWVUb0VDTUFVaW50MzIoY3gsIHYsICh1aW50MzIgKils
ZW5ndGhwKTsKfQoKc3RhdGljIEpTQm9vbApJbmRleFRvVmFsdWUoSlNDb250ZXh0ICpjeCwganN1
aW50IGxlbmd0aCwganN2YWwgKnZwKQp7CiAgICBpZiAobGVuZ3RoIDw9ICgoKGpzdmFsKTEgPDwg
KDMwKSkgLSAxKSkgewogICAgICAgICp2cCA9ICgoKGpzdmFsKShsZW5ndGgpIDw8IDEpIHwgMHgx
KTsKICAgICAgICByZXR1cm4gKEpTSW50bikxOwogICAgfQogICAgcmV0dXJuIGpzX05ld0RvdWJs
ZVZhbHVlKGN4LCAoanNkb3VibGUpbGVuZ3RoLCB2cCk7Cn0KCnN0YXRpYyBKU0Jvb2wKSW5kZXhU
b0lkKEpTQ29udGV4dCAqY3gsIGpzdWludCBsZW5ndGgsIGpzaWQgKmlkcCkKewogICAgSlNTdHJp
bmcgKnN0cjsKICAgIEpTQXRvbSAqYXRvbTsKCiAgICBpZiAobGVuZ3RoIDw9ICgoKGpzdmFsKTEg
PDwgKDMwKSkgLSAxKSkgewogICAgICAgICppZHAgPSAoanNpZCkgKCgoanN2YWwpKGxlbmd0aCkg
PDwgMSkgfCAweDEpOwogICAgfSBlbHNlIHsKICAgICAgICBzdHIgPSBqc19OdW1iZXJUb1N0cmlu
ZyhjeCwgKGpzZG91YmxlKWxlbmd0aCk7CiAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgIHJl
dHVybiAoSlNJbnRuKTA7CiAgICAgICAgYXRvbSA9IGpzX0F0b21pemVTdHJpbmcoY3gsIHN0ciwg
MCk7CiAgICAgICAgaWYgKCFhdG9tKQogICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAg
ICAgICppZHAgPSAoanNpZClhdG9tOwoKICAgIH0KICAgIHJldHVybiAoSlNJbnRuKTE7Cn0KCkpT
Qm9vbApqc19TZXRMZW5ndGhQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBq
c3VpbnQgbGVuZ3RoKQp7CiAgICBqc3ZhbCB2OwogICAganNpZCBpZDsKCiAgICBpZiAoIUluZGV4
VG9WYWx1ZShjeCwgbGVuZ3RoLCAmdikpCiAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgIGlk
ID0gKGpzaWQpIGN4LT5ydW50aW1lLT5hdG9tU3RhdGUubGVuZ3RoQXRvbTsKICAgIHJldHVybiAo
b2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iaixpZCwmdik7Cn0KCkpTQm9vbApqc19I
YXNMZW5ndGhQcm9wZXJ0eShKU0NvbnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCBqc3VpbnQgKmxl
bmd0aHApCnsKICAgIEpTRXJyb3JSZXBvcnRlciBvbGRlcjsKICAgIGpzaWQgaWQ7CiAgICBKU0Jv
b2wgb2s7CiAgICBqc3ZhbCB2OwoKICAgIG9sZGVyID0gSlNfU2V0RXJyb3JSZXBvcnRlcihjeCwg
KCh2b2lkICopMCkpOwogICAgaWQgPSAoanNpZCkgY3gtPnJ1bnRpbWUtPmF0b21TdGF0ZS5sZW5n
dGhBdG9tOwogICAgb2sgPSAob2JqKS0+bWFwLT5vcHMtPmdldFByb3BlcnR5KGN4LG9iaixpZCwm
dik7CiAgICBKU19TZXRFcnJvclJlcG9ydGVyKGN4LCBvbGRlcik7CiAgICBpZiAoIW9rKQogICAg
ICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICByZXR1cm4gVmFsdWVJc0xlbmd0aChjeCwgdiwgbGVu
Z3RocCk7Cn0KCgoKCgoKc3RhdGljIEpTQm9vbAphcnJheV9sZW5ndGhfZ2V0dGVyKEpTQ29udGV4
dCAqY3gsIEpTT2JqZWN0ICpvYmosIGpzdmFsIGlkLCBqc3ZhbCAqdnApCnsKICAgIHJldHVybiAo
KEpTQ2xhc3MgKikoKHZvaWQgKikoKCgoKHZvaWQpMCksICgoKChvYmopLT5tYXApLT5vcHMgPT0g
JmpzX09iamVjdE9wcyB8fCAoKChvYmopLT5tYXApLT5vcHMgJiYgKChvYmopLT5tYXApLT5vcHMt
Pm5ld09iamVjdE1hcCA9PSBqc19PYmplY3RPcHMubmV3T2JqZWN0TWFwKSkgJiYgKChKU1Njb3Bl
ICopKG9iaiktPm1hcCktPm93bmVyY3ggPT0gY3gpID8gKCgodm9pZCkwKSwgKG9iaiktPnNsb3Rz
WzJdKSA6IGpzX0dldFNsb3RUaHJlYWRTYWZlKGN4LCBvYmosIDIpKSkgJiB+MHgxKSkpLT5nZXRQ
cm9wZXJ0eShjeCwgb2JqLCBpZCwgdnApOwp9CgpzdGF0aWMgSlNCb29sCmFycmF5X2xlbmd0aF9z
ZXR0ZXIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCkK
ewogICAganN1aW50IG5ld2xlbiwgb2xkbGVuLCBzbG90OwogICAganNpZCBpZDI7CiAgICBqc3Zh
bCBqdW5rOwoKICAgIGlmICghVmFsdWVJc0xlbmd0aChjeCwgKnZwLCAmbmV3bGVuKSkKICAgICAg
ICByZXR1cm4gKEpTSW50bikwOwogICAgaWYgKCFqc19HZXRMZW5ndGhQcm9wZXJ0eShjeCwgb2Jq
LCAmb2xkbGVuKSkKICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgZm9yIChzbG90ID0gbmV3
bGVuOyBzbG90IDwgb2xkbGVuOyBzbG90KyspIHsKICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwg
c2xvdCwgJmlkMikpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgaWYgKCEo
b2JqKS0+bWFwLT5vcHMtPmRlbGV0ZVByb3BlcnR5KGN4LG9iaixpZDIsJmp1bmspKQogICAgICAg
ICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfQogICAgcmV0dXJuIEluZGV4VG9WYWx1ZShjeCwg
bmV3bGVuLCB2cCk7Cn0KCnN0YXRpYyBKU0Jvb2wKYXJyYXlfYWRkUHJvcGVydHkoSlNDb250ZXh0
ICpjeCwgSlNPYmplY3QgKm9iaiwganN2YWwgaWQsIGpzdmFsICp2cCkKewogICAganN1aW50IGlu
ZGV4LCBsZW5ndGg7CgogICAgaWYgKCEoSWRJc0luZGV4KGlkLCAmaW5kZXgpKSkKICAgICAgICBy
ZXR1cm4gKEpTSW50bikxOwogICAgaWYgKCFqc19HZXRMZW5ndGhQcm9wZXJ0eShjeCwgb2JqLCAm
bGVuZ3RoKSkKICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgaWYgKGluZGV4ID49IGxlbmd0
aCkgewogICAgICAgIGxlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICByZXR1cm4ganNfU2V0TGVu
Z3RoUHJvcGVydHkoY3gsIG9iaiwgbGVuZ3RoKTsKICAgIH0KICAgIHJldHVybiAoSlNJbnRuKTE7
Cn0KCnN0YXRpYyBKU0Jvb2wKYXJyYXlfY29udmVydChKU0NvbnRleHQgKmN4LCBKU09iamVjdCAq
b2JqLCBKU1R5cGUgdHlwZSwganN2YWwgKnZwKQp7CiAgICBqc3VpbnQgbGVuZ3RoOwoKICAgIGlm
IChjeC0+dmVyc2lvbiA9PSBKU1ZFUlNJT05fMV8yKSB7CiAgICAgICAgaWYgKCFqc19HZXRMZW5n
dGhQcm9wZXJ0eShjeCwgb2JqLCAmbGVuZ3RoKSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4p
MDsKICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgIGNhc2UgSlNUWVBFX05VTUJFUjoK
ICAgICAgICAgICAgcmV0dXJuIEluZGV4VG9WYWx1ZShjeCwgbGVuZ3RoLCB2cCk7CiAgICAgICAg
ICBjYXNlIEpTVFlQRV9CT09MRUFOOgogICAgICAgICAgICAqdnAgPSAoKChqc3ZhbCkobGVuZ3Ro
ID4gMCkgPDwgMykgfCAoMHg2KSk7CiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gKEpTSW50bikxOwogICAgICAgIH0KICAg
IH0KICAgIHJldHVybiBqc19UcnlWYWx1ZU9mKGN4LCBvYmosIHR5cGUsIHZwKTsKfQoKSlNDbGFz
cyBqc19BcnJheUNsYXNzID0gewogICAgIkFycmF5IiwKICAgIDAsCiAgICBhcnJheV9hZGRQcm9w
ZXJ0eSwgSlNfUHJvcGVydHlTdHViLCBKU19Qcm9wZXJ0eVN0dWIsIEpTX1Byb3BlcnR5U3R1YiwK
ICAgIEpTX0VudW1lcmF0ZVN0dWIsIEpTX1Jlc29sdmVTdHViLCBhcnJheV9jb252ZXJ0LCBKU19G
aW5hbGl6ZVN0dWIsCiAgICAwLDAsMCwwLDAsMCwwLDAKfTsKCnN0YXRpYyBKU0Jvb2wKYXJyYXlf
am9pbl9zdWIoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgSlNTdHJpbmcgKnNlcCwgSlNC
b29sIGxpdGVyYWxpemUsCiAgICAgICAgICAgICAgIGpzdmFsICpydmFsLCBKU0Jvb2wgbG9jYWxl
U3RyaW5nKQp7CiAgICBKU0Jvb2wgb2s7CiAgICBqc3ZhbCB2OwogICAganN1aW50IGxlbmd0aCwg
aW5kZXg7CiAgICBqc2NoYXIgKmNoYXJzLCAqb2NoYXJzOwogICAgc2l6ZV90IG5jaGFycywgZ3Jv
d3RoLCBzZXBsZW47CiAgICBjb25zdCBqc2NoYXIgKnNlcHN0cjsKICAgIEpTU3RyaW5nICpzdHI7
CiAgICBKU0hhc2hFbnRyeSAqaGU7CiAgICBKU09iamVjdCAqb2JqMjsKCiAgICBvayA9IGpzX0dl
dExlbmd0aFByb3BlcnR5KGN4LCBvYmosICZsZW5ndGgpOwogICAgaWYgKCFvaykKICAgICAgICBy
ZXR1cm4gKEpTSW50bikwOwogICAgb2sgPSAoSlNJbnRuKTE7CgogICAgaWYgKGxpdGVyYWxpemUp
IHsKICAgICAgICBoZSA9IGpzX0VudGVyU2hhcnBPYmplY3QoY3gsIG9iaiwgKCh2b2lkICopMCks
ICZjaGFycyk7CiAgICAgICAgaWYgKCFoZSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsK
ICAgICAgICBpZiAoKChqc2F0b21pZCkoaGUpLT52YWx1ZSAmIDEpKSB7CgogICAgICAgICAgICBu
Y2hhcnMgPSBqc19zdHJsZW4oY2hhcnMpOwoKCgoKCgogICAgICAgICAgICBnb3RvIG1ha2Vfc3Ry
aW5nOwogICAgICAgIH0KCgoKCgogICAgICAgIGdyb3d0aCA9ICgxICsgMyArIDEpICogc2l6ZW9m
KGpzY2hhcik7CiAgICAgICAgaWYgKCFjaGFycykgewogICAgICAgICAgICBuY2hhcnMgPSAwOwog
ICAgICAgICAgICBjaGFycyA9IChqc2NoYXIgKikgbWFsbG9jKGdyb3d0aCk7CiAgICAgICAgICAg
IGlmICghY2hhcnMpCiAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgKChoZSktPnZhbHVlID0gKHZvaWQqKSgoanNhdG9taWQpKGhlKS0+dmFsdWV8
MSkpOwogICAgICAgICAgICBuY2hhcnMgPSBqc19zdHJsZW4oY2hhcnMpOwogICAgICAgICAgICBj
aGFycyA9IChqc2NoYXIgKikKICAgICAgICAgICAgICAgIHJlYWxsb2MoKG9jaGFycyA9IGNoYXJz
KSwgbmNoYXJzICogc2l6ZW9mKGpzY2hhcikgKyBncm93dGgpOwogICAgICAgICAgICBpZiAoIWNo
YXJzKSB7CiAgICAgICAgICAgICAgICBmcmVlKG9jaGFycyk7CiAgICAgICAgICAgICAgICBnb3Rv
IGRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2hhcnNbbmNoYXJzKytdID0g
J1snOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAobGVuZ3RoID09IDApIHsKICAgICAgICAgICAg
KnJ2YWwgPSBKU19HZXRFbXB0eVN0cmluZ1ZhbHVlKGN4KTsKICAgICAgICAgICAgcmV0dXJuIG9r
OwogICAgICAgIH0KICAgICAgICBjaGFycyA9ICgodm9pZCAqKTApOwogICAgICAgIG5jaGFycyA9
IDA7CiAgICB9CiAgICBzZXBzdHIgPSAoKHZvaWQgKikwKTsKICAgIHNlcGxlbiA9IHNlcC0+bGVu
Z3RoOwoKICAgIHYgPSAoKGpzdmFsKSgwKSk7CiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBs
ZW5ndGg7IGluZGV4KyspIHsKICAgICAgICBvayA9IEpTX0dldEVsZW1lbnQoY3gsIG9iaiwgaW5k
ZXgsICZ2KTsKICAgICAgICBpZiAoIW9rKQogICAgICAgICAgICBnb3RvIGRvbmU7CgogICAgICAg
IGlmICgoKHYpID09ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkxIDw8ICgzMCkpKSA8PCAxKSB8IDB4
MSkpIHx8ICgodikgPT0gKChqc3ZhbCkoMCkpKSkgewogICAgICAgICAgICBzdHIgPSBjeC0+cnVu
dGltZS0+ZW1wdHlTdHJpbmc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGxvY2Fs
ZVN0cmluZykgewogICAgICAgICAgICAgICAgaWYgKCFqc19WYWx1ZVRvT2JqZWN0KGN4LCB2LCAm
b2JqMikpCiAgICAgICAgICAgICAgICAgICAgZ290byBkb25lQmFkOwogICAgICAgICAgICAgICAg
aWYgKCFqc19UcnlNZXRob2QoY3gsIG9iajIsIGN4LT5ydW50aW1lLT5hdG9tU3RhdGUudG9Mb2Nh
bGVTdHJpbmdBdG9tLCAwLCAoKHZvaWQgKikwKSwgJnYpKQogICAgICAgICAgICAgICAgICAgIGdv
dG8gZG9uZUJhZDsKICAgICAgICAgICAgICAgIHN0ciA9IGpzX1ZhbHVlVG9TdHJpbmcoY3gsIHYp
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHN0ciA9IChs
aXRlcmFsaXplID8ganNfVmFsdWVUb1NvdXJjZSA6IGpzX1ZhbHVlVG9TdHJpbmcpKGN4LCB2KTsK
ICAgICAgICAgICAgaWYgKCFzdHIpIHsKICBkb25lQmFkOgogICAgICAgICAgICAgICAgb2sgPSAo
SlNJbnRuKTA7CiAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgoKICAgICAgICBncm93dGggPSAobmNoYXJzICsgKHNlcHN0ciA/IHNlcGxlbiA6IDApICsK
ICAgICAgICAgICAgICAgICAgc3RyLT5sZW5ndGggKwogICAgICAgICAgICAgICAgICAzICsgMSkg
KiBzaXplb2YoanNjaGFyKTsKICAgICAgICBpZiAoIWNoYXJzKSB7CiAgICAgICAgICAgIGNoYXJz
ID0gKGpzY2hhciAqKSBtYWxsb2MoZ3Jvd3RoKTsKICAgICAgICAgICAgaWYgKCFjaGFycykKICAg
ICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjaGFy
cyA9IChqc2NoYXIgKikgcmVhbGxvYygob2NoYXJzID0gY2hhcnMpLCBncm93dGgpOwogICAgICAg
ICAgICBpZiAoIWNoYXJzKSB7CiAgICAgICAgICAgICAgICBmcmVlKG9jaGFycyk7CiAgICAgICAg
ICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChz
ZXBzdHIpIHsKICAgICAgICAgICAganNfc3RybmNweSgmY2hhcnNbbmNoYXJzXSwgc2Vwc3RyLCBz
ZXBsZW4pOwogICAgICAgICAgICBuY2hhcnMgKz0gc2VwbGVuOwogICAgICAgIH0KICAgICAgICBz
ZXBzdHIgPSBzZXAtPmNoYXJzOwoKICAgICAgICBqc19zdHJuY3B5KCZjaGFyc1tuY2hhcnNdLCBz
dHItPmNoYXJzLCBzdHItPmxlbmd0aCk7CiAgICAgICAgbmNoYXJzICs9IHN0ci0+bGVuZ3RoOwog
ICAgfQoKICBkb25lOgogICAgaWYgKGxpdGVyYWxpemUpIHsKICAgICAgICBpZiAoY2hhcnMpIHsK
ICAgICAgICAgICAgaWYgKCgodikgPT0gKCgoanN2YWwpKDAgLSAoKGpzdmFsKTEgPDwgKDMwKSkp
IDw8IDEpIHwgMHgxKSkpIHsKICAgICAgICAgICAgICAgIGNoYXJzW25jaGFycysrXSA9ICcsJzsK
ICAgICAgICAgICAgICAgIGNoYXJzW25jaGFycysrXSA9ICcgJzsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBjaGFyc1tuY2hhcnMrK10gPSAnXSc7CiAgICAgICAgfQogICAgICAgIGpzX0xlYXZl
U2hhcnBPYmplY3QoY3gsICgodm9pZCAqKTApKTsKICAgIH0KICAgIGlmICghb2spIHsKICAgICAg
ICBpZiAoY2hhcnMpCiAgICAgICAgICAgIGZyZWUoY2hhcnMpOwogICAgICAgIHJldHVybiBvazsK
ICAgIH0KCiAgbWFrZV9zdHJpbmc6CiAgICBpZiAoIWNoYXJzKSB7CiAgICAgICAgSlNfUmVwb3J0
T3V0T2ZNZW1vcnkoY3gpOwogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICB9CiAgICBjaGFy
c1tuY2hhcnNdID0gMDsKICAgIHN0ciA9IGpzX05ld1N0cmluZyhjeCwgY2hhcnMsIG5jaGFycywg
MCk7CiAgICBpZiAoIXN0cikgewogICAgICAgIGZyZWUoY2hhcnMpOwogICAgICAgIHJldHVybiAo
SlNJbnRuKTA7CiAgICB9CiAgICAqcnZhbCA9ICgoKGpzdmFsKShzdHIpKSB8ICgweDQpKTsKICAg
IHJldHVybiAoSlNJbnRuKTE7Cn0KCnN0YXRpYyBqc2NoYXIgY29tbWFfc3BhY2VfdWNzdHJbXSA9
IHsnLCcsICcgJywgMH07CnN0YXRpYyBqc2NoYXIgY29tbWFfdWNzdHJbXSA9IHsnLCcsIDB9Owpz
dGF0aWMgSlNTdHJpbmcgY29tbWFfc3BhY2UgPSB7MiwgY29tbWFfc3BhY2VfdWNzdHJ9OwpzdGF0
aWMgSlNTdHJpbmcgY29tbWEgPSB7MSwgY29tbWFfdWNzdHJ9OwoKCnN0YXRpYyBKU0Jvb2wKYXJy
YXlfdG9Tb3VyY2UoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2
YWwgKmFyZ3YsCiAgICAgICAgICAgICAgIGpzdmFsICpydmFsKQp7CiAgICByZXR1cm4gYXJyYXlf
am9pbl9zdWIoY3gsIG9iaiwgJmNvbW1hX3NwYWNlLCAoSlNJbnRuKTEsIHJ2YWwsIChKU0ludG4p
MCk7Cn0KCgpzdGF0aWMgSlNCb29sCmFycmF5X3RvU3RyaW5nKEpTQ29udGV4dCAqY3gsIEpTT2Jq
ZWN0ICpvYmosIHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LAogICAgICAgICAgICAgICBqc3ZhbCAq
cnZhbCkKewogICAgSlNCb29sIGxpdGVyYWxpemU7CgoKCgoKICAgIGxpdGVyYWxpemUgPSAoY3gt
PnZlcnNpb24gPT0gSlNWRVJTSU9OXzFfMik7CiAgICByZXR1cm4gYXJyYXlfam9pbl9zdWIoY3gs
IG9iaiwgbGl0ZXJhbGl6ZSA/ICZjb21tYV9zcGFjZSA6ICZjb21tYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaXRlcmFsaXplLCBydmFsLCAoSlNJbnRuKTApOwp9CgpzdGF0aWMgSlNCb29s
CmFycmF5X3RvTG9jYWxlU3RyaW5nKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnRO
IGFyZ2MsIGpzdmFsICphcmd2LAogICAgICAgICAgICAgICBqc3ZhbCAqcnZhbCkKewoKCgoKICAg
IHJldHVybiBhcnJheV9qb2luX3N1YihjeCwgb2JqLCAmY29tbWEsIChKU0ludG4pMCwgcnZhbCwg
KEpTSW50bikxKTsKfQoKc3RhdGljIEpTQm9vbAphcnJheV9qb2luKEpTQ29udGV4dCAqY3gsIEpT
T2JqZWN0ICpvYmosIHVpbnROIGFyZ2MsIGpzdmFsICphcmd2LCBqc3ZhbCAqcnZhbCkKewogICAg
SlNTdHJpbmcgKnN0cjsKCiAgICBpZiAoYXJnYyA9PSAwKQogICAgICAgIHJldHVybiBhcnJheV9q
b2luX3N1YihjeCwgb2JqLCAmY29tbWEsIChKU0ludG4pMCwgcnZhbCwgKEpTSW50bikwKTsKICAg
IHN0ciA9IGpzX1ZhbHVlVG9TdHJpbmcoY3gsIGFyZ3ZbMF0pOwogICAgaWYgKCFzdHIpCiAgICAg
ICAgcmV0dXJuIChKU0ludG4pMDsKICAgIGFyZ3ZbMF0gPSAoKChqc3ZhbCkoc3RyKSkgfCAoMHg0
KSk7CiAgICByZXR1cm4gYXJyYXlfam9pbl9zdWIoY3gsIG9iaiwgc3RyLCAoSlNJbnRuKTAsIHJ2
YWwsIChKU0ludG4pMCk7Cn0KIyA1MjUgIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3Ny
Yy9qc2FycmF5LmMiCnN0YXRpYyBKU0Jvb2wKSW5pdEFycmF5T2JqZWN0KEpTQ29udGV4dCAqY3gs
IEpTT2JqZWN0ICpvYmosIGpzdWludCBsZW5ndGgsIGpzdmFsICp2ZWN0b3IpCnsKICAgIGpzdmFs
IHY7CiAgICBqc2lkIGlkOwogICAganN1aW50IGluZGV4OwoKICAgIGlmICghSW5kZXhUb1ZhbHVl
KGN4LCBsZW5ndGgsICZ2KSkKICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgaWQgPSAoanNp
ZCkgY3gtPnJ1bnRpbWUtPmF0b21TdGF0ZS5sZW5ndGhBdG9tOwogICAgaWYgKCEob2JqKS0+bWFw
LT5vcHMtPmRlZmluZVByb3BlcnR5KGN4LG9iaixpZCx2LGFycmF5X2xlbmd0aF9nZXR0ZXIsYXJy
YXlfbGVuZ3RoX3NldHRlciwweDA0LCgodm9pZCAqKTApKSkgewoKCgogICAgICAgICAgcmV0dXJu
IChKU0ludG4pMDsKICAgIH0KICAgIGlmICghdmVjdG9yKQogICAgICAgIHJldHVybiAoSlNJbnRu
KTE7CiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKICAgICAg
ICBpZiAoIUluZGV4VG9JZChjeCwgaW5kZXgsICZpZCkpCiAgICAgICAgICAgIHJldHVybiAoSlNJ
bnRuKTA7CiAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMtPmRlZmluZVByb3BlcnR5KGN4LG9i
aixpZCx2ZWN0b3JbaW5kZXhdLEpTX1Byb3BlcnR5U3R1YixKU19Qcm9wZXJ0eVN0dWIsMHgwMSwo
KHZvaWQgKikwKSkpIHsKCgoKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICB9
CiAgICB9CiAgICByZXR1cm4gKEpTSW50bikxOwp9CgpzdGF0aWMgSlNCb29sCmFycmF5X3JldmVy
c2UoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFyZ3Ys
CiAgICAgICAgICAgICAganN2YWwgKnJ2YWwpCnsKICAgIGpzdWludCBsZW4sIGhhbGYsIGk7CiAg
ICBqc2lkIGlkLCBpZDI7CiAgICBqc3ZhbCB2LCB2MjsKCiAgICBpZiAoIWpzX0dldExlbmd0aFBy
b3BlcnR5KGN4LCBvYmosICZsZW4pKQogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgogICAgaGFs
ZiA9IGxlbiAvIDI7CiAgICBmb3IgKGkgPSAwOyBpIDwgaGFsZjsgaSsrKSB7CiAgICAgICAgaWYg
KCFJbmRleFRvSWQoY3gsIGksICZpZCkpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
ICAgICAgaWYgKCFJbmRleFRvSWQoY3gsIGxlbiAtIGkgLSAxLCAmaWQyKSkKICAgICAgICAgICAg
cmV0dXJuIChKU0ludG4pMDsKICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVy
dHkoY3gsb2JqLGlkLCZ2KSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICBp
ZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gsb2JqLGlkMiwmdjIpKQogICAgICAg
ICAgICByZXR1cm4gKEpTSW50bikwOwojIDU5MCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEv
anMvc3JjL2pzYXJyYXkuYyIKICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+c2V0UHJvcGVy
dHkoY3gsb2JqLGlkLCZ2MikpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAg
aWYgKCEob2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iaixpZDIsJnYpKQogICAgICAg
ICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfQoKICAgICpydmFsID0gKChqc3ZhbCkob2JqKSk7
CiAgICByZXR1cm4gKEpTSW50bikxOwp9Cgp0eXBlZGVmIHN0cnVjdCBRU29ydEFyZ3MgewogICAg
dm9pZCAqdmVjOwogICAgc2l6ZV90IGVsc2l6ZTsKICAgIHZvaWQgKnBpdm90OwogICAgSlNDb21w
YXJhdG9yIGNtcDsKICAgIHZvaWQgKmFyZzsKfSBRU29ydEFyZ3M7CgpzdGF0aWMgaW50CnNvcnRf
Y29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpOwoKc3RhdGlj
IHZvaWQKanNfcXNvcnRfcihRU29ydEFyZ3MgKnFhLCBpbnQgbG8sIGludCBoaSkKewogICAgdm9p
ZCAqcGl2b3QsICp2ZWMsICphcmcsICphLCAqYjsKICAgIHNpemVfdCBlbHNpemU7CiAgICBKU0Nv
bXBhcmF0b3IgY21wOwogICAgSlNCb29sIGZhc3Rtb3ZlOwogICAgaW50IGksIGosIGxvaGksIGhp
bG87CgogICAgcGl2b3QgPSBxYS0+cGl2b3Q7CiAgICB2ZWMgPSBxYS0+dmVjOwogICAgZWxzaXpl
ID0gcWEtPmVsc2l6ZTsKICAgIGNtcCA9IHFhLT5jbXA7CiAgICBhcmcgPSBxYS0+YXJnOwoKICAg
IGZhc3Rtb3ZlID0gKGNtcCA9PSBzb3J0X2NvbXBhcmUpOwoKCgogICAgd2hpbGUgKGxvIDwgaGkp
IHsKICAgICAgICBpID0gbG87CiAgICAgICAgaiA9IGhpOwogICAgICAgIGEgPSAoY2hhciAqKXZl
YyArIGkgKiBlbHNpemU7CiAgICAgICAgKGZhc3Rtb3ZlID8gKHZvaWQpKCooanN2YWwqKShwaXZv
dCkgPSAqKGpzdmFsKikoYSkpIDogKHZvaWQpbWVtbW92ZShwaXZvdCwgYSwgZWxzaXplKSk7CiAg
ICAgICAgd2hpbGUgKGkgPCBqKSB7CiAgICAgICAgICAgIGIgPSAoY2hhciAqKXZlYyArIGogKiBl
bHNpemU7CiAgICAgICAgICAgIGlmIChjbXAoYiwgcGl2b3QsIGFyZykgPj0gMCkgewogICAgICAg
ICAgICAgICAgai0tOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgKGZhc3Rtb3ZlID8gKHZvaWQpKCooanN2YWwqKShhKSA9ICooanN2YWwqKShiKSkg
OiAodm9pZCltZW1tb3ZlKGEsIGIsIGVsc2l6ZSkpOwogICAgICAgICAgICB3aGlsZSAoY21wKGEs
IHBpdm90LCBhcmcpIDw9IDApIHsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAg
IGEgPSAoY2hhciAqKXZlYyArIGkgKiBlbHNpemU7CiAgICAgICAgICAgICAgICBpZiAoaSA9PSBq
KQogICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmVfcGl2b3Q7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgKGZhc3Rtb3ZlID8gKHZvaWQpKCooanN2YWwqKShiKSA9ICooanN2YWwqKShhKSkg
OiAodm9pZCltZW1tb3ZlKGIsIGEsIGVsc2l6ZSkpOwogICAgICAgIH0KICAgICAgICBpZiAoaSA+
IGxvKSB7CiAgICAgIHN0b3JlX3Bpdm90OgogICAgICAgICAgICAoZmFzdG1vdmUgPyAodm9pZCko
Kihqc3ZhbCopKGEpID0gKihqc3ZhbCopKHBpdm90KSkgOiAodm9pZCltZW1tb3ZlKGEsIHBpdm90
LCBlbHNpemUpKTsKICAgICAgICB9CiAgICAgICAgaWYgKGkgLSBsbyA8IGhpIC0gaSkgewogICAg
ICAgICAgICBsb2hpID0gaSAtIDE7CiAgICAgICAgICAgIGlmIChsbyA8IGxvaGkpCiAgICAgICAg
ICAgICAgICBqc19xc29ydF9yKHFhLCBsbywgbG9oaSk7CiAgICAgICAgICAgIGxvID0gaSArIDE7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaGlsbyA9IGkgKyAxOwogICAgICAgICAgICBp
ZiAoaGlsbyA8IGhpKQogICAgICAgICAgICAgICAganNfcXNvcnRfcihxYSwgaGlsbywgaGkpOwog
ICAgICAgICAgICBoaSA9IGkgLSAxOwogICAgICAgIH0KICAgIH0KCgp9CgpKU0Jvb2wKanNfcXNv
cnQodm9pZCAqdmVjLCBzaXplX3QgbmVsLCBzaXplX3QgZWxzaXplLCBKU0NvbXBhcmF0b3IgY21w
LCB2b2lkICphcmcpCnsKICAgIHZvaWQgKnBpdm90OwogICAgUVNvcnRBcmdzIHFhOwoKICAgIHBp
dm90ID0gbWFsbG9jKGVsc2l6ZSk7CiAgICBpZiAoIXBpdm90KQogICAgICAgIHJldHVybiAoSlNJ
bnRuKTA7CiAgICBxYS52ZWMgPSB2ZWM7CiAgICBxYS5lbHNpemUgPSBlbHNpemU7CiAgICBxYS5w
aXZvdCA9IHBpdm90OwogICAgcWEuY21wID0gY21wOwogICAgcWEuYXJnID0gYXJnOwogICAganNf
cXNvcnRfcigmcWEsIDAsIChpbnQpKG5lbCAtIDEpKTsKICAgIGZyZWUocGl2b3QpOwogICAgcmV0
dXJuIChKU0ludG4pMTsKfQoKdHlwZWRlZiBzdHJ1Y3QgQ29tcGFyZUFyZ3MgewogICAgSlNDb250
ZXh0ICpjb250ZXh0OwogICAganN2YWwgZnZhbDsKICAgIEpTQm9vbCBzdGF0dXM7Cn0gQ29tcGFy
ZUFyZ3M7CgpzdGF0aWMgaW50CnNvcnRfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lk
ICpiLCB2b2lkICphcmcpCnsKICAgIGpzdmFsIGF2ID0gKihjb25zdCBqc3ZhbCAqKWEsIGJ2ID0g
Kihjb25zdCBqc3ZhbCAqKWI7CiAgICBDb21wYXJlQXJncyAqY2EgPSAoQ29tcGFyZUFyZ3MgKikg
YXJnOwogICAgSlNDb250ZXh0ICpjeCA9IGNhLT5jb250ZXh0OwogICAganNkb3VibGUgY21wID0g
LTE7CiAgICBqc3ZhbCBmdmFsLCBhcmd2WzJdLCBydmFsOwogICAgSlNCb29sIG9rOwoKICAgIGZ2
YWwgPSBjYS0+ZnZhbDsKICAgIGlmIChmdmFsID09ICgoanN2YWwpKDApKSkgewogICAgICAgIEpT
U3RyaW5nICphc3RyLCAqYnN0cjsKCiAgICAgICAgaWYgKGF2ID09IGJ2KSB7CiAgICAgICAgICAg
IGNtcCA9IDA7CiAgICAgICAgfSBlbHNlIGlmIChhdiA9PSAoKChqc3ZhbCkoMCAtICgoanN2YWwp
MSA8PCAoMzApKSkgPDwgMSkgfCAweDEpIHx8IGJ2ID09ICgoKGpzdmFsKSgwIC0gKChqc3ZhbCkx
IDw8ICgzMCkpKSA8PCAxKSB8IDB4MSkpIHsKCiAgICAgICAgICAgIGNtcCA9IChhdiA9PSAoKChq
c3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpKSA/IDEgOiAtMTsKICAg
ICAgICB9IGVsc2UgaWYgKChhc3RyID0ganNfVmFsdWVUb1N0cmluZyhjeCwgYXYpKSAhPSAoKHZv
aWQgKikwKSAmJgogICAgICAgICAgICAgICAgICAgKGJzdHIgPSBqc19WYWx1ZVRvU3RyaW5nKGN4
LCBidikpICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgIGNtcCA9IGpzX0NvbXBhcmVTdHJp
bmdzKGFzdHIsIGJzdHIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNhLT5zdGF0dXMg
PSAoSlNJbnRuKTA7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBhcmd2WzBdID0gYXY7
CiAgICAgICAgYXJndlsxXSA9IGJ2OwogICAgICAgIG9rID0ganNfSW50ZXJuYWxJbnZva2UoY3gs
ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKCgoKHZvaWQpMCksICgoKCgoKEpTT2JqZWN0ICopKCh2
b2lkICopKChmdmFsKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSkpLT5t
YXApLT5vcHMgPT0gJmpzX09iamVjdE9wcyB8fCAoKCgoKEpTT2JqZWN0ICopKCh2b2lkICopKChm
dmFsKSAmIH4oanN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSkpLT5tYXApLT5vcHMg
JiYgKCgoKEpTT2JqZWN0ICopKCh2b2lkICopKChmdmFsKSAmIH4oanN2YWwpKCgoSlNVaW50MzIp
MSA8PCAoMykpIC0gMSkpKSkpLT5tYXApLT5vcHMtPm5ld09iamVjdE1hcCA9PSBqc19PYmplY3RP
cHMubmV3T2JqZWN0TWFwKSkgJiYgKChKU1Njb3BlICopKCgoSlNPYmplY3QgKikoKHZvaWQgKiko
KGZ2YWwpICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKSktPm1hcCktPm93
bmVyY3ggPT0gY3gpID8gKCgodm9pZCkwKSwgKCgoSlNPYmplY3QgKikoKHZvaWQgKikoKGZ2YWwp
ICYgfihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKSktPnNsb3RzWzFdKSA6IGpz
X0dldFNsb3RUaHJlYWRTYWZlKGN4LCAoKEpTT2JqZWN0ICopKCh2b2lkICopKChmdmFsKSAmIH4o
anN2YWwpKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpKSksIDEpKSkgJiB+KGpzdmFsKSgoKEpT
VWludDMyKTEgPDwgKDMpKSAtIDEpKSkpLCBmdmFsLCAwLCAyLCBhcmd2LCAmcnZhbCk7CgoKICAg
ICAgICBpZiAob2spIHsKICAgICAgICAgICAgb2sgPSBqc19WYWx1ZVRvTnVtYmVyKGN4LCBydmFs
LCAmY21wKTsKCiAgICAgICAgICAgIGlmICgoKCgoKHVpbnQzMiAqKSYoY21wKSlbMV0pICYgMHg3
ZmYwMDAwMCkgPT0gMHg3ZmYwMDAwMCAmJiAoKCgodWludDMyICopJihjbXApKVswXSkgfHwgKCgo
KHVpbnQzMiAqKSYoY21wKSlbMV0pICYgMHgwMDBmZmZmZikpKSkgewoKCgoKCiAgICAgICAgICAg
ICAgICBjbXAgPSAwOwogICAgICAgICAgICB9IGVsc2UgaWYgKGNtcCAhPSAwKSB7CiAgICAgICAg
ICAgICAgICBjbXAgPSBjbXAgPiAwID8gMSA6IC0xOwogICAgICAgICAgICB9CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgY2EtPnN0YXR1cyA9IG9rOwogICAgICAgIH0KICAgIH0KICAgIHJl
dHVybiAoaW50KWNtcDsKfQoKCgoKCnN0YXRpYyBKU0Jvb2wKYXJyYXlfc29ydChKU0NvbnRleHQg
KmN4LCBKU09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwp
CnsKICAgIGpzdmFsIGZ2YWw7CiAgICBDb21wYXJlQXJncyBjYTsKICAgIGpzdWludCBsZW4sIG5l
d2xlbiwgaTsKICAgIGpzdmFsICp2ZWM7CiAgICBqc2lkIGlkOwoKICAgIGlmIChhcmdjID4gMCkg
ewogICAgICAgIGlmICgoISgoKGFyZ3ZbMF0pICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkp
ID09IDB4MCkgfHwgKChhcmd2WzBdKSA9PSAoKGpzdmFsKSgwKSkpKSkgewogICAgICAgICAgICBK
U19SZXBvcnRFcnJvck51bWJlcihjeCwganNfR2V0RXJyb3JNZXNzYWdlLCAoKHZvaWQgKikwKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNNU0dfQkFEX1NPUlRfQVJHKTsKICAg
ICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICB9CiAgICAgICAgZnZhbCA9IGFyZ3Zb
MF07CiAgICB9IGVsc2UgewogICAgICAgIGZ2YWwgPSAoKGpzdmFsKSgwKSk7CiAgICB9CgogICAg
aWYgKCFqc19HZXRMZW5ndGhQcm9wZXJ0eShjeCwgb2JqLCAmbGVuKSkKICAgICAgICByZXR1cm4g
KEpTSW50bikwOwogICAgaWYgKGxlbiA9PSAwKQogICAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAg
ICB2ZWMgPSAoanN2YWwgKikgSlNfbWFsbG9jKGN4LCAoc2l6ZV90KSBsZW4gKiBzaXplb2YoanN2
YWwpKTsKICAgIGlmICghdmVjKQogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgoKCgogICAgbmV3
bGVuID0gbGVuOwoKCiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBjYS5z
dGF0dXMgPSBJbmRleFRvSWQoY3gsIGksICZpZCk7CiAgICAgICAgaWYgKCFjYS5zdGF0dXMpCiAg
ICAgICAgICAgIGdvdG8gb3V0OwojIDgwNCAiL2hvbWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMv
c3JjL2pzYXJyYXkuYyIKICAgICAgICBjYS5zdGF0dXMgPSAob2JqKS0+bWFwLT5vcHMtPmdldFBy
b3BlcnR5KGN4LG9iaixpZCwmdmVjW2ldKTsKICAgICAgICBpZiAoIWNhLnN0YXR1cykKICAgICAg
ICAgICAgZ290byBvdXQ7CiAgICB9CgogICAgY2EuY29udGV4dCA9IGN4OwogICAgY2EuZnZhbCA9
IGZ2YWw7CiAgICBjYS5zdGF0dXMgPSAoSlNJbnRuKTE7CiAgICBpZiAoIWpzX3Fzb3J0KHZlYywg
KHNpemVfdCkgbGVuLCBzaXplb2YoanN2YWwpLCBzb3J0X2NvbXBhcmUsICZjYSkpIHsKICAgICAg
ICBKU19SZXBvcnRPdXRPZk1lbW9yeShjeCk7CiAgICAgICAgY2Euc3RhdHVzID0gKEpTSW50bikw
OwogICAgfQoKICAgIGlmIChjYS5zdGF0dXMpIHsKICAgICAgICBjYS5zdGF0dXMgPSBJbml0QXJy
YXlPYmplY3QoY3gsIG9iaiwgbmV3bGVuLCB2ZWMpOwogICAgICAgIGlmIChjYS5zdGF0dXMpCiAg
ICAgICAgICAgICpydmFsID0gKChqc3ZhbCkob2JqKSk7CiMgODM2ICIvaG9tZS9hamF5L21vei9j
dnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIgogICAgfQoKb3V0OgogICAgaWYgKHZlYykKICAg
ICAgICBKU19mcmVlKGN4LCB2ZWMpOwogICAgcmV0dXJuIGNhLnN0YXR1czsKfQojIDg4OCAiL2hv
bWUvYWpheS9tb3ovY3ZzL21vemlsbGEvanMvc3JjL2pzYXJyYXkuYyIKc3RhdGljIEpTQm9vbAph
cnJheV9wdXNoKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnROIGFyZ2MsIGpzdmFs
ICphcmd2LCBqc3ZhbCAqcnZhbCkKewoKICAgIGpzdWludCBsZW5ndGg7CiAgICB1aW50TiBpOwog
ICAganNpZCBpZDsKCiAgICBpZiAoIWpzX0dldExlbmd0aFByb3BlcnR5KGN4LCBvYmosICZsZW5n
dGgpKQogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsg
aSsrKSB7CiAgICAgICAgaWYgKCFJbmRleFRvSWQoY3gsIGxlbmd0aCArIGksICZpZCkpCiAgICAg
ICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMtPnNl
dFByb3BlcnR5KGN4LG9iaixpZCwmYXJndltpXSkpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRu
KTA7CiAgICB9CgoKCgoKICAgIGxlbmd0aCArPSBhcmdjOwogICAgaWYgKGN4LT52ZXJzaW9uID09
IEpTVkVSU0lPTl8xXzIpIHsKICAgICAgICAqcnZhbCA9IGFyZ2MgPyBhcmd2W2FyZ2MtMV0gOiAo
KChqc3ZhbCkoMCAtICgoanN2YWwpMSA8PCAoMzApKSkgPDwgMSkgfCAweDEpOwogICAgfSBlbHNl
IHsKICAgICAgICBpZiAoIUluZGV4VG9WYWx1ZShjeCwgbGVuZ3RoLCBydmFsKSkKICAgICAgICAg
ICAgcmV0dXJuIChKU0ludG4pMDsKICAgIH0KICAgIHJldHVybiBqc19TZXRMZW5ndGhQcm9wZXJ0
eShjeCwgb2JqLCBsZW5ndGgpOwoKCgp9CgpzdGF0aWMgSlNCb29sCmFycmF5X3BvcChKU0NvbnRl
eHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnJ2
YWwpCnsKCiAgICBqc3VpbnQgaW5kZXg7CiAgICBqc2lkIGlkOwogICAganN2YWwganVuazsKCiAg
ICBpZiAoIWpzX0dldExlbmd0aFByb3BlcnR5KGN4LCBvYmosICZpbmRleCkpCiAgICAgICAgcmV0
dXJuIChKU0ludG4pMDsKICAgIGlmIChpbmRleCA+IDApIHsKICAgICAgICBpbmRleC0tOwogICAg
ICAgIGlmICghSW5kZXhUb0lkKGN4LCBpbmRleCwgJmlkKSkKICAgICAgICAgICAgcmV0dXJuIChK
U0ludG4pMDsKCgogICAgICAgIGlmICghKG9iaiktPm1hcC0+b3BzLT5nZXRQcm9wZXJ0eShjeCxv
YmosaWQscnZhbCkpCiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgogICAgICAgIGlmICgh
KG9iaiktPm1hcC0+b3BzLT5kZWxldGVQcm9wZXJ0eShjeCxvYmosaWQsJmp1bmspKQogICAgICAg
ICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfQogICAgcmV0dXJuIGpzX1NldExlbmd0aFByb3Bl
cnR5KGN4LCBvYmosIGluZGV4KTsKCgoKfQoKc3RhdGljIEpTQm9vbAphcnJheV9zaGlmdChKU0Nv
bnRleHQgKmN4LCBKU09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwg
KnJ2YWwpCnsKCiAgICBqc3VpbnQgbGVuZ3RoLCBpOwogICAganNpZCBpZCwgaWQyOwogICAganN2
YWwgdiwganVuazsKCiAgICBpZiAoIWpzX0dldExlbmd0aFByb3BlcnR5KGN4LCBvYmosICZsZW5n
dGgpKQogICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICBpZiAobGVuZ3RoID4gMCkgewogICAg
ICAgIGxlbmd0aC0tOwogICAgICAgIGlkID0gKCgoanN2YWwpKDApIDw8IDEpIHwgMHgxKTsKCgog
ICAgICAgIGlmICghKG9iaiktPm1hcC0+b3BzLT5nZXRQcm9wZXJ0eShjeCxvYmosaWQscnZhbCkp
CiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgoKCgogICAgICAgIGlmIChsZW5ndGggPiAw
KSB7CiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gbGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgICAgIGlmICghSW5kZXhUb0lkKGN4LCBpLCAmaWQpKQogICAgICAgICAgICAgICAgICAgIHJl
dHVybiAoSlNJbnRuKTA7CiAgICAgICAgICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwgaSAtIDEs
ICZpZDIpKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgICAg
ICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gsb2JqLGlkLCZ2KSkKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgICAgICAgICAgaWYgKCEo
b2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iaixpZDIsJnYpKQogICAgICAgICAgICAg
ICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAg
ICBpZiAoIShvYmopLT5tYXAtPm9wcy0+ZGVsZXRlUHJvcGVydHkoY3gsb2JqLGlkLCZqdW5rKSkK
ICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgIH0KICAgIHJldHVybiBqc19TZXRMZW5n
dGhQcm9wZXJ0eShjeCwgb2JqLCBsZW5ndGgpOwoKCgp9CgpzdGF0aWMgSlNCb29sCmFycmF5X3Vu
c2hpZnQoSlNDb250ZXh0ICpjeCwgSlNPYmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFy
Z3YsCiAgICAgICAgICAgICAganN2YWwgKnJ2YWwpCnsKCiAgICBqc3VpbnQgbGVuZ3RoLCBsYXN0
OwogICAgdWludE4gaTsKICAgIGpzaWQgaWQsIGlkMjsKICAgIGpzdmFsIHY7CgoKCgoKICAgIGlm
ICghanNfR2V0TGVuZ3RoUHJvcGVydHkoY3gsIG9iaiwgJmxlbmd0aCkpCiAgICAgICAgcmV0dXJu
IChKU0ludG4pMDsKICAgIGlmIChhcmdjID4gMCkgewoKICAgICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAgICBsYXN0ID0gbGVuZ3RoOwogICAgICAgICAgICB3aGlsZSAobGFzdC0tKSB7
CiAgICAgICAgICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwgbGFzdCwgJmlkKSkKICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgICAgICAgICAgaWYgKCFJbmRleFRv
SWQoY3gsIGxhc3QgKyBhcmdjLCAmaWQyKSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKEpT
SW50bikwOwojIDEwMjggIi9ob21lL2FqYXkvbW96L2N2cy9tb3ppbGxhL2pzL3NyYy9qc2FycmF5
LmMiCiAgICAgICAgICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gs
b2JqLGlkLCZ2KSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAg
ICAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iaixpZDIsJnYp
KQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CgoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgICAg
IGlmICghSW5kZXhUb0lkKGN4LCBpLCAmaWQpKQogICAgICAgICAgICAgICAgcmV0dXJuIChKU0lu
dG4pMDsKICAgICAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9i
aixpZCwmYXJndltpXSkpCiAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAg
IH0KCgogICAgICAgIGxlbmd0aCArPSBhcmdjOwogICAgICAgIGlmICghanNfU2V0TGVuZ3RoUHJv
cGVydHkoY3gsIG9iaiwgbGVuZ3RoKSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAg
IH0KICAgIHJldHVybiBJbmRleFRvVmFsdWUoY3gsIGxlbmd0aCwgcnZhbCk7CgoKCn0KCnN0YXRp
YyBKU0Jvb2wKYXJyYXlfc3BsaWNlKEpTQ29udGV4dCAqY3gsIEpTT2JqZWN0ICpvYmosIHVpbnRO
IGFyZ2MsIGpzdmFsICphcmd2LCBqc3ZhbCAqcnZhbCkKewoKICAgIGpzdWludCBsZW5ndGgsIGJl
Z2luLCBlbmQsIGNvdW50LCBkZWx0YSwgbGFzdDsKICAgIHVpbnROIGk7CiAgICBqc2RvdWJsZSBk
OwogICAganNpZCBpZCwgaWQyOwogICAganN2YWwgdjsKICAgIEpTT2JqZWN0ICpvYmoyOwoKCiAg
ICBpZiAoYXJnYyA9PSAwKQogICAgICAgIHJldHVybiAoSlNJbnRuKTE7CiAgICBpZiAoIWpzX0dl
dExlbmd0aFByb3BlcnR5KGN4LCBvYmosICZsZW5ndGgpKQogICAgICAgIHJldHVybiAoSlNJbnRu
KTA7CgoKICAgIGlmICghanNfVmFsdWVUb051bWJlcihjeCwgKmFyZ3YsICZkKSkKICAgICAgICBy
ZXR1cm4gKEpTSW50bikwOwogICAgZCA9IGpzX0RvdWJsZVRvSW50ZWdlcihkKTsKICAgIGlmIChk
IDwgMCkgewogICAgICAgIGQgKz0gbGVuZ3RoOwogICAgICAgIGlmIChkIDwgMCkKICAgICAgICAg
ICAgZCA9IDA7CiAgICB9IGVsc2UgaWYgKGQgPiBsZW5ndGgpIHsKICAgICAgICBkID0gbGVuZ3Ro
OwogICAgfQogICAgYmVnaW4gPSAoanN1aW50KWQ7CiAgICBhcmdjLS07CiAgICBhcmd2Kys7CgoK
ICAgIGRlbHRhID0gbGVuZ3RoIC0gYmVnaW47CiAgICBpZiAoYXJnYyA9PSAwKSB7CiAgICAgICAg
Y291bnQgPSBkZWx0YTsKICAgICAgICBlbmQgPSBsZW5ndGg7CiAgICB9IGVsc2UgewogICAgICAg
IGlmICghanNfVmFsdWVUb051bWJlcihjeCwgKmFyZ3YsICZkKSkKICAgICAgICAgICAgcmV0dXJu
IChKU0ludG4pMDsKICAgICAgICBkID0ganNfRG91YmxlVG9JbnRlZ2VyKGQpOwogICAgICAgIGlm
IChkIDwgMCkKICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgZWxzZSBpZiAoZCA+IGRlbHRhKQog
ICAgICAgICAgICBkID0gZGVsdGE7CiAgICAgICAgY291bnQgPSAoanN1aW50KWQ7CiAgICAgICAg
ZW5kID0gYmVnaW4gKyBjb3VudDsKICAgICAgICBhcmdjLS07CiAgICAgICAgYXJndisrOwogICAg
fQoKICAgIGlmIChjb3VudCA9PSAxICYmIGN4LT52ZXJzaW9uID09IEpTVkVSU0lPTl8xXzIpIHsK
IyAxMTE3ICIvaG9tZS9hamF5L21vei9jdnMvbW96aWxsYS9qcy9zcmMvanNhcnJheS5jIgogICAg
ICAgIGlmICghSW5kZXhUb0lkKGN4LCBiZWdpbiwgJmlkKSkKICAgICAgICAgICAgcmV0dXJuIChK
U0ludG4pMDsKICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gsb2Jq
LGlkLHJ2YWwpKQogICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgfSBlbHNlIHsKICAg
ICAgICBpZiAoY3gtPnZlcnNpb24gIT0gSlNWRVJTSU9OXzFfMiB8fCBjb3VudCA+IDApIHsKCgoK
CgoKICAgICAgICAgICAgb2JqMiA9IGpzX05ld0FycmF5T2JqZWN0KGN4LCAwLCAoKHZvaWQgKikw
KSk7CiAgICAgICAgICAgIGlmICghb2JqMikKICAgICAgICAgICAgICAgIHJldHVybiAoSlNJbnRu
KTA7CiAgICAgICAgICAgICpydmFsID0gKChqc3ZhbCkob2JqMikpOwoKCiAgICAgICAgICAgIGlm
IChjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgIGZvciAobGFzdCA9IGJlZ2luOyBsYXN0IDwg
ZW5kOyBsYXN0KyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwgbGFz
dCwgJmlkKSkKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAg
ICAgICAgICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwgbGFzdCAtIGJlZ2luLCAmaWQyKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgICAgICAg
ICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gsb2JqLGlkLCZ2KSkKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgICAgICAgICBp
ZiAoIShvYmoyKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iajIsaWQyLCZ2KSkKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgaWYgKGFyZ2MgPiBjb3VudCkgewogICAg
ICAgIGRlbHRhID0gKGpzdWludClhcmdjIC0gY291bnQ7CiAgICAgICAgbGFzdCA9IGxlbmd0aDsK
CiAgICAgICAgd2hpbGUgKGxhc3QtLSA+IGVuZCkgewogICAgICAgICAgICBpZiAoIUluZGV4VG9J
ZChjeCwgbGFzdCwgJmlkKSkKICAgICAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAg
ICAgICAgIGlmICghSW5kZXhUb0lkKGN4LCBsYXN0ICsgZGVsdGEsICZpZDIpKQogICAgICAgICAg
ICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMt
PmdldFByb3BlcnR5KGN4LG9iaixpZCwmdikpCiAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50
bikwOwogICAgICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+c2V0UHJvcGVydHkoY3gsb2Jq
LGlkMiwmdikpCiAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgIH0KICAg
ICAgICBsZW5ndGggKz0gZGVsdGE7CiAgICB9IGVsc2UgaWYgKGFyZ2MgPCBjb3VudCkgewogICAg
ICAgIGRlbHRhID0gY291bnQgLSAoanN1aW50KWFyZ2M7CiAgICAgICAgZm9yIChsYXN0ID0gZW5k
OyBsYXN0IDwgbGVuZ3RoOyBsYXN0KyspIHsKICAgICAgICAgICAgaWYgKCFJbmRleFRvSWQoY3gs
IGxhc3QsICZpZCkpCiAgICAgICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgICAg
ICBpZiAoIUluZGV4VG9JZChjeCwgbGFzdCAtIGRlbHRhLCAmaWQyKSkKICAgICAgICAgICAgICAg
IHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgICAgIGlmICghKG9iaiktPm1hcC0+b3BzLT5nZXRQ
cm9wZXJ0eShjeCxvYmosaWQsJnYpKQogICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsK
ICAgICAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4LG9iaixpZDIs
JnYpKQogICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICB9CiAgICAgICAg
bGVuZ3RoIC09IGRlbHRhOwogICAgfQoKCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7
CiAgICAgICAgaWYgKCFJbmRleFRvSWQoY3gsIGJlZ2luICsgaSwgJmlkKSkKICAgICAgICAgICAg
cmV0dXJuIChKU0ludG4pMDsKICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+c2V0UHJvcGVy
dHkoY3gsb2JqLGlkLCZhcmd2W2ldKSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAg
IH0KCgogICAgcmV0dXJuIGpzX1NldExlbmd0aFByb3BlcnR5KGN4LCBvYmosIGxlbmd0aCk7CgoK
Cn0KCgoKCgpzdGF0aWMgSlNCb29sCmFycmF5X2NvbmNhdChKU0NvbnRleHQgKmN4LCBKU09iamVj
dCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpCnsKICAgIEpTT2Jq
ZWN0ICpub2JqLCAqYW9iajsKICAgIGpzdWludCBzbG90LCBsZW5ndGgsIGFsZW5ndGg7CiAgICBq
c2lkIGlkLCBpZDI7CiAgICBqc3ZhbCB2OwogICAgdWludE4gaTsKCiAgICBub2JqID0ganNfTmV3
QXJyYXlPYmplY3QoY3gsIDAsICgodm9pZCAqKTApKTsKICAgIGlmICghbm9iaikKICAgICAgICBy
ZXR1cm4gKEpTSW50bikwOwoKCgoKCgogICAgaWYgKGpzX0hhc0xlbmd0aFByb3BlcnR5KGN4LCBv
YmosICZsZW5ndGgpKSB7CiAgICAgICAgZm9yIChzbG90ID0gMDsgc2xvdCA8IGxlbmd0aDsgc2xv
dCsrKSB7CiAgICAgICAgICAgIGlmICghSW5kZXhUb0lkKGN4LCBzbG90LCAmaWQpKQogICAgICAg
ICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgaWYgKCEob2JqKS0+bWFwLT5v
cHMtPmdldFByb3BlcnR5KGN4LG9iaixpZCwmdikpCiAgICAgICAgICAgICAgICByZXR1cm4gKEpT
SW50bikwOwogICAgICAgICAgICBpZiAoIShub2JqKS0+bWFwLT5vcHMtPnNldFByb3BlcnR5KGN4
LG5vYmosaWQsJnYpKQogICAgICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICB9
CiAgICB9IGVsc2UgewogICAgICAgIGxlbmd0aCA9IDE7CiAgICAgICAgdiA9ICgoanN2YWwpKG9i
aikpOwogICAgICAgIGlmICghKG5vYmopLT5tYXAtPm9wcy0+c2V0UHJvcGVydHkoY3gsbm9iaiwo
KChqc3ZhbCkoMCkgPDwgMSkgfCAweDEpLCZ2KSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4p
MDsKICAgIH0KCiAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgdiA9IGFy
Z3ZbaV07CiAgICAgICAgaWYgKCgoKHYpICYgKCgoSlNVaW50MzIpMSA8PCAoMykpIC0gMSkpID09
IDB4MCkpIHsKICAgICAgICAgICAgYW9iaiA9ICgoSlNPYmplY3QgKikoKHZvaWQgKikoKHYpICYg
fihqc3ZhbCkoKChKU1VpbnQzMikxIDw8ICgzKSkgLSAxKSkpKTsKICAgICAgICAgICAgaWYgKGFv
YmogJiYganNfSGFzTGVuZ3RoUHJvcGVydHkoY3gsIGFvYmosICZhbGVuZ3RoKSkgewogICAgICAg
ICAgICAgICAgZm9yIChzbG90ID0gMDsgc2xvdCA8IGFsZW5ndGg7IHNsb3QrKykgewogICAgICAg
ICAgICAgICAgICAgIGlmICghSW5kZXhUb0lkKGN4LCBzbG90LCAmaWQpKQogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgICAgICAgICAgICAgICAgIGlmICghSW5k
ZXhUb0lkKGN4LCBsZW5ndGggKyBzbG90LCAmaWQyKSkKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIChKU0ludG4pMDsKICAgICAgICAgICAgICAgICAgICBpZiAoIShhb2JqKS0+bWFwLT5v
cHMtPmdldFByb3BlcnR5KGN4LGFvYmosaWQsJnYpKQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKEpTSW50bikwOwogICAgICAgICAgICAgICAgICAgIGlmICghKG5vYmopLT5tYXAtPm9w
cy0+c2V0UHJvcGVydHkoY3gsbm9iaixpZDIsJnYpKQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gKEpTSW50bikwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGVuZ3Ro
ICs9IGFsZW5ndGg7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KCiAgICAgICAgaWYgKCFJbmRleFRvSWQoY3gsIGxlbmd0aCwgJmlkKSkKICAgICAgICAg
ICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICBpZiAoIShub2JqKS0+bWFwLT5vcHMtPnNldFBy
b3BlcnR5KGN4LG5vYmosaWQsJnYpKQogICAgICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAg
ICAgIGxlbmd0aCsrOwogICAgfQoKICAgICpydmFsID0gKChqc3ZhbCkobm9iaikpOwogICAgcmV0
dXJuIChKU0ludG4pMTsKfQoKc3RhdGljIEpTQm9vbAphcnJheV9zbGljZShKU0NvbnRleHQgKmN4
LCBKU09iamVjdCAqb2JqLCB1aW50TiBhcmdjLCBqc3ZhbCAqYXJndiwganN2YWwgKnJ2YWwpCnsK
ICAgIEpTT2JqZWN0ICpub2JqOwogICAganN1aW50IGxlbmd0aCwgYmVnaW4sIGVuZCwgc2xvdDsK
ICAgIGpzZG91YmxlIGQ7CiAgICBqc2lkIGlkLCBpZDI7CiAgICBqc3ZhbCB2OwoKICAgIG5vYmog
PSBqc19OZXdBcnJheU9iamVjdChjeCwgMCwgKCh2b2lkICopMCkpOwogICAgaWYgKCFub2JqKQog
ICAgICAgIHJldHVybiAoSlNJbnRuKTA7CgogICAgaWYgKCFqc19HZXRMZW5ndGhQcm9wZXJ0eShj
eCwgb2JqLCAmbGVuZ3RoKSkKICAgICAgICByZXR1cm4gKEpTSW50bikwOwogICAgYmVnaW4gPSAw
OwogICAgZW5kID0gbGVuZ3RoOwoKICAgIGlmIChhcmdjID4gMCkgewogICAgICAgIGlmICghanNf
VmFsdWVUb051bWJlcihjeCwgYXJndlswXSwgJmQpKQogICAgICAgICAgICByZXR1cm4gKEpTSW50
bikwOwogICAgICAgIGQgPSBqc19Eb3VibGVUb0ludGVnZXIoZCk7CiAgICAgICAgaWYgKGQgPCAw
KSB7CiAgICAgICAgICAgIGQgKz0gbGVuZ3RoOwogICAgICAgICAgICBpZiAoZCA8IDApCiAgICAg
ICAgICAgICAgICBkID0gMDsKICAgICAgICB9IGVsc2UgaWYgKGQgPiBsZW5ndGgpIHsKICAgICAg
ICAgICAgZCA9IGxlbmd0aDsKICAgICAgICB9CiAgICAgICAgYmVnaW4gPSAoanN1aW50KWQ7Cgog
ICAgICAgIGlmIChhcmdjID4gMSkgewogICAgICAgICAgICBpZiAoIWpzX1ZhbHVlVG9OdW1iZXIo
Y3gsIGFyZ3ZbMV0sICZkKSkKICAgICAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAgICAg
ICAgICAgIGQgPSBqc19Eb3VibGVUb0ludGVnZXIoZCk7CiAgICAgICAgICAgIGlmIChkIDwgMCkg
ewogICAgICAgICAgICAgICAgZCArPSBsZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAoZCA8IDAp
CiAgICAgICAgICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZCA+IGxl
bmd0aCkgewogICAgICAgICAgICAgICAgZCA9IGxlbmd0aDsKICAgICAgICAgICAgfQogICAgICAg
ICAgICBlbmQgPSAoanN1aW50KWQ7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoc2xvdCA9IGJl
Z2luOyBzbG90IDwgZW5kOyBzbG90KyspIHsKICAgICAgICBpZiAoIUluZGV4VG9JZChjeCwgc2xv
dCwgJmlkKSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICBpZiAoIUluZGV4
VG9JZChjeCwgc2xvdCAtIGJlZ2luLCAmaWQyKSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4p
MDsKICAgICAgICBpZiAoIShvYmopLT5tYXAtPm9wcy0+Z2V0UHJvcGVydHkoY3gsb2JqLGlkLCZ2
KSkKICAgICAgICAgICAgcmV0dXJuIChKU0ludG4pMDsKICAgICAgICBpZiAoIShub2JqKS0+bWFw
LT5vcHMtPnNldFByb3BlcnR5KGN4LG5vYmosaWQyLCZ2KSkKICAgICAgICAgICAgcmV0dXJuIChK
U0ludG4pMDsKICAgIH0KICAgICpydmFsID0gKChqc3ZhbCkobm9iaikpOwogICAgcmV0dXJuIChK
U0ludG4pMTsKfQoKCnN0YXRpYyBKU0Z1bmN0aW9uU3BlYyBhcnJheV9tZXRob2RzW10gPSB7Cgog
ICAge2pzX3RvU291cmNlX3N0ciwgYXJyYXlfdG9Tb3VyY2UsIDAsMCwwfSwKCiAgICB7anNfdG9T
dHJpbmdfc3RyLCBhcnJheV90b1N0cmluZywgMCwwLDB9LAogICAge2pzX3RvTG9jYWxlU3RyaW5n
X3N0ciwgYXJyYXlfdG9Mb2NhbGVTdHJpbmcsIDAsMCwwfSwKCgogICAgeyJqb2luIiwgYXJyYXlf
am9pbiwgMSwwLDB9LAogICAgeyJyZXZlcnNlIiwgYXJyYXlfcmV2ZXJzZSwgMCwwLDB9LAogICAg
eyJzb3J0IiwgYXJyYXlfc29ydCwgMSwwLDB9LAoKCgogICAgeyJwdXNoIiwgYXJyYXlfcHVzaCwg
MSwwLDB9LAogICAgeyJwb3AiLCBhcnJheV9wb3AsIDAsMCwwfSwKICAgIHsic2hpZnQiLCBhcnJh
eV9zaGlmdCwgMCwwLDB9LAogICAgeyJ1bnNoaWZ0IiwgYXJyYXlfdW5zaGlmdCwgMSwwLDB9LAog
ICAgeyJzcGxpY2UiLCBhcnJheV9zcGxpY2UsIDEsMCwwfSwKCgoKICAgIHsiY29uY2F0IiwgYXJy
YXlfY29uY2F0LCAwLDAsMH0sCiAgICB7InNsaWNlIiwgYXJyYXlfc2xpY2UsIDAsMCwwfSwKCgog
ICAgezAsMCwwLDAsMH0KfTsKCnN0YXRpYyBKU0Jvb2wKQXJyYXkoSlNDb250ZXh0ICpjeCwgSlNP
YmplY3QgKm9iaiwgdWludE4gYXJnYywganN2YWwgKmFyZ3YsIGpzdmFsICpydmFsKQp7CiAgICBq
c3VpbnQgbGVuZ3RoOwogICAganN2YWwgKnZlY3RvcjsKCgogICAgaWYgKCFjeC0+ZnAtPmNvbnN0
cnVjdGluZykgewogICAgICAgIG9iaiA9IGpzX05ld09iamVjdChjeCwgJmpzX0FycmF5Q2xhc3Ms
ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7CiAgICAgICAgaWYgKCFvYmopCiAgICAgICAgICAg
IHJldHVybiAoSlNJbnRuKTA7CiAgICAgICAgKnJ2YWwgPSAoKGpzdmFsKShvYmopKTsKICAgIH0K
CiAgICBpZiAoYXJnYyA9PSAwKSB7CiAgICAgICAgbGVuZ3RoID0gMDsKICAgICAgICB2ZWN0b3Ig
PSAoKHZvaWQgKikwKTsKICAgIH0gZWxzZSBpZiAoY3gtPnZlcnNpb24gPT0gSlNWRVJTSU9OXzFf
MikgewogICAgICAgIGxlbmd0aCA9IChqc3VpbnQpIGFyZ2M7CiAgICAgICAgdmVjdG9yID0gYXJn
djsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGFyZ2MgPiAxKSB7CiAgICAgICAgICAgIGxlbmd0
aCA9IChqc3VpbnQpIGFyZ2M7CiAgICAgICAgICAgIHZlY3RvciA9IGFyZ3Y7CiAgICAgICAgfSBl
bHNlIGlmICghKCgoKGFyZ3ZbMF0pICYgMHgxKSAmJiAoYXJndlswXSkgIT0gKCgoanN2YWwpKDAg
LSAoKGpzdmFsKTEgPDwgKDMwKSkpIDw8IDEpIHwgMHgxKSkgfHwgKCgoYXJndlswXSkgJiAoKChK
U1VpbnQzMikxIDw8ICgzKSkgLSAxKSkgPT0gMHgyKSkpIHsKICAgICAgICAgICAgbGVuZ3RoID0g
MTsKICAgICAgICAgICAgdmVjdG9yID0gYXJndjsKICAgICAgICB9IGVsc2UgaWYgKFZhbHVlSXNM
ZW5ndGgoY3gsIGFyZ3ZbMF0sICZsZW5ndGgpKSB7CiAgICAgICAgICAgIHZlY3RvciA9ICgodm9p
ZCAqKTApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAoSlNJbnRuKTA7CiAg
ICAgICAgfQogICAgfQogICAgcmV0dXJuIEluaXRBcnJheU9iamVjdChjeCwgb2JqLCBsZW5ndGgs
IHZlY3Rvcik7Cn0KCkpTT2JqZWN0ICoKanNfSW5pdEFycmF5Q2xhc3MoSlNDb250ZXh0ICpjeCwg
SlNPYmplY3QgKm9iaikKewogICAgSlNPYmplY3QgKnByb3RvOwoKICAgIHByb3RvID0gSlNfSW5p
dENsYXNzKGN4LCBvYmosICgodm9pZCAqKTApLCAmanNfQXJyYXlDbGFzcywgQXJyYXksIDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKSwgYXJyYXlfbWV0aG9kcywgKCh2b2lk
ICopMCksICgodm9pZCAqKTApKTsKCgogICAgaWYgKCFwcm90byB8fCAhSW5pdEFycmF5T2JqZWN0
KGN4LCBwcm90bywgMCwgKCh2b2lkICopMCkpKQogICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK
ICAgIHJldHVybiBwcm90bzsKfQoKSlNPYmplY3QgKgpqc19OZXdBcnJheU9iamVjdChKU0NvbnRl
eHQgKmN4LCBqc3VpbnQgbGVuZ3RoLCBqc3ZhbCAqdmVjdG9yKQp7CiAgICBKU09iamVjdCAqb2Jq
OwoKICAgIG9iaiA9IGpzX05ld09iamVjdChjeCwgJmpzX0FycmF5Q2xhc3MsICgodm9pZCAqKTAp
LCAoKHZvaWQgKikwKSk7CiAgICBpZiAoIW9iaikKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICBpZiAoIUluaXRBcnJheU9iamVjdChjeCwgb2JqLCBsZW5ndGgsIHZlY3RvcikpIHsKICAg
ICAgICBjeC0+bmV3Ym9yblswXSA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiAoKHZvaWQg
KikwKTsKICAgIH0KICAgIHJldHVybiBvYmo7Cn0K


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-07-12 21:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-07-12 21:20 c/2755: snapshot releases ICE on legal mozilla C code, gcc 2.95.3 does not rodrigc
  -- strict thread matches above, loose matches on Subject: below --
2001-05-06 21:36 motrei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).