This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c/8518: Segmentation fault in gcc when compiling mplayer


>Number:         8518
>Category:       c
>Synopsis:       Segmentation fault in gcc when compiling mplayer
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 10 12:16:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Klaas Decanniere
>Release:        3.2
>Organization:
>Environment:
System: Linux otty 2.4.19-4GB #1 Fri Sep 13 13:19:15 UTC 2002 i686 unknown
Architecture: i686
host: i486-suse-linux-gnu
build: i486-suse-linux-gnu
target: i486-suse-linux-gnu
configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-
prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/us
r/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-incl
ude-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared
--enable-__cxa_atexit i486-suse-linux
>Description:
gcc itself asks me to report this - I 'm doing the best I can...
compiling mplayer source code.
using make
problem occurs when compiling the libavcodec (CVS checkout of ffmpeg from today, november 10 2002, integrated into the mplayer source code as instruced)
Gcc exits with Segmentation fault

to generate the preprocessor file, I descended in the relevant directory and manually issued the gcc command

gcc -v -save-temps -O4 -march=athlon-xp -mcpu=athlon-xp -pipe -ffast-math -fomit-frame-pointer -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -g -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o utils.o utils.c

the utils.i file is attached.

gcc output is

gcc: warning: -pipe ignored because -save-temps specified
Reading specs from /usr/lib/gcc-lib/i486-suse-linux/3.2/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux
Thread model: posix
gcc version 3.2
 /usr/lib/gcc-lib/i486-suse-linux/3.2/cpp0 -lang-c -v -I.. -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__GXX_ABI_VERSION=102 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__athlon -D__athlon__ -D__athlon_sse__ -D__tune_athlon__ -D__tune_athlon_sse__ -D__SSE__ -D__MMX__ -D__3dNOW__ -D__3dNOW_A__ -D_REENTRANT -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE utils.c -Wall utils.i
GNU CPP version 3.2 (cpplib) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 ..
 /usr/local/include
 /usr/lib/gcc-lib/i486-suse-linux/3.2/include
 /usr/i486-suse-linux/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-suse-linux/3.2/cc1 -fpreprocessed utils.i -quiet -dumpbase utils.c -march=athlon-xp -mcpu=athlon-xp -g -O4 -Wall -version -ffast-math -fomit-frame-pointer -o utils.s
GNU CPP version 3.2 (cpplib) (i386 Linux/ELF)
GNU C version 3.2 (i486-suse-linux)
        compiled by GNU C version 3.2.
In file included from utils.c:20:
dsputil.h:277: warning: static declaration for `lrintf' follows non-static
dsputil.h: In function `lrintf':
dsputil.h:279: 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.


>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="utils.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="utils.i"

IyAxICJ1dGlscy5jIgojIDEgIjxidWlsdC1pbj4iCiMgMSAiPGNvbW1hbmQgbGluZT4iCiMgMSAi
dXRpbHMuYyIKIyAxOSAidXRpbHMuYyIKIyAxICJhdmNvZGVjLmgiIDEKCgoKIyAxICJjb21tb24u
aCIgMQojIDIwICJjb21tb24uaCIKIyAxICIuLi9jb25maWcuaCIgMQojIDIxICJjb21tb24uaCIg
MgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMg
Mjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEzICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAxIDMKIyAyMDEgIi91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAyOTQg
Ii91c3IvbGliL2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy
IDMKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMKIyA0MyAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh
dHVzLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9l
bmRpYW4uaCIgMiAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMiAzCgp1
bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsKCiAgICAg
ICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19j
b3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogICAgICAgIHVu
c2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7CiAgICBzdHJ1
Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKICAgICAgICB1
bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoKCgoK
CiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKIyA0NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAyIDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgdW5pb24KICB7CiAg
ICB1bmlvbiB3YWl0ICpfX3VwdHI7CiAgICBpbnQgKl9faXB0cjsKICB9IF9fV0FJVF9TVEFUVVMg
X19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykpOwojIDk0ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCBy
ZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90Owog
ICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsK
ICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVf
dCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAo
X19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50
IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikg
OwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikg
OwoKCgpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoKCl9fZXh0
ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4g
bG9uZyBsb25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGlu
dCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBp
bnQgX19iYXNlKQogICAgIDsKIyAyMTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAz
CnR5cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAq
X19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwog
IGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVy
Owp9ICpfX2xvY2FsZV90OwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKZXh0
ZXJuIGxvbmcgaW50IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2Mp
IDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4
dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIDsKCmV4dGVybiBkb3VibGUgX19z
dHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykK
ICAgICA7CgpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3Ry
dG9kX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
Z3JvdXApCiAgICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X2dyb3VwKSA7CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
aW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAq
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAg
ICAgOwoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJu
IF9fc3RydG9kX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBpbnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9f
c3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBf
X2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFz
ZSkKewogIHJldHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFz
ZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBf
X3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlCnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9sZF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUg
bG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0
ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAo
X19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBf
X2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7
CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50
CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG91
bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19p
bmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRv
ZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQK
YXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25w
dHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGlu
dAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwg
KGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu
bGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVy
biBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMgMzg0ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikg
OwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI4
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMw
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2ln
bmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBp
bnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19x
dWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9f
dV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcg
X19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlu
a190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7
CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3Vf
bG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191
X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9f
ZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7
CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29u
ZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9f
c3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xv
Y2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlf
dDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBs
b25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlw
ZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25n
IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoK
dHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fc29ja2xlbl90OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3Nj
aGVkLmgiIDMKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0
eTsKICB9OwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3Ry
dWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlu
bG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJl
YWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9f
ZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0g
X19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXpl
X3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRk
cjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVz
Y3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
cHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZlZDsK
ICBpbnQgX19tX2NvdW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fbV9vd25lcjsKICBpbnQgX19tX2tp
bmQ7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOwp9IHB0aHJlYWRfbXV0ZXhf
dDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBwdGhyZWFkX211dGV4
YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKCnR5cGVkZWYgc3RydWN0
IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19yd19sb2Nr
OwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0ZXI7CiAgX3B0
aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRfZGVzY3IgX19yd193cml0
ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNoYXJlZDsKfSBwdGhyZWFk
X3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9f
cHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVkZWYgdm9sYXRpbGUgaW50
IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVz
ZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsK
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRy
X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAyIDMKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hv
cnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVk
ZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYg
X19mc2lkX3QgZnNpZF90OwoKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCgoKdHlwZWRl
ZiBfX2lubzY0X3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwoKCgoKdHlw
ZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgoKdHlwZWRl
ZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwoKCgoKdHlw
ZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKdHlwZWRlZiBfX29mZjY0X3Qgb2ZmX3Q7CgoKCgp0
eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoK
dHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgoK
dHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoK
Cgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1OSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwojIDcwICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwojIDgyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDk0ICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzCnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVm
IF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0
ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVp
bnQ7CiMgMTkwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIxNSAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMzEgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIg
MSAzCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIg
Mwp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAg
dW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9u
ZyBpbnQpKSldOwogIH0gX19zaWdzZXRfdDsKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMiAzCgoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCgojIDEgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDEgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGlt
ZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25nIGludCB0dl9uc2VjOwogIH07
CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy90aW1lLmgiIDEgMwojIDY3ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKc3RydWN0
IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3Vz
ZWM7CiAgfTsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCiMgNTUgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoK
Cgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDgg
KiBzaXplb2YgKF9fZmRfbWFzaykpXTsKCgoKCgogIH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9f
ZmRfbWFzayBmZF9tYXNrOwojIDk1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoK
CgpleHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVh
ZGZkcywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog
ICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAg
ICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoK
ZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFk
ZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAog
ICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdt
YXNrKSA7CgoKCiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CiMgMjQzICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoK
CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250
NjRfdCBmc2ZpbGNudF90OwoKCgoKCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7CnR5
cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxjbnQ2NF90
IGZzZmlsY250NjRfdDsKCgoKIyAzOTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoK
CmV4dGVybiBsb25nIGludCByYW5kb20gKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBzcmFuZG9tICh1
bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWdu
ZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fc3RhdGVsZW4pIDsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0
YXRlYnVmKSA7CgoKCgoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRy
OwogICAgaW50MzJfdCAqcnB0cjsKICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlw
ZTsKICAgIGludCByYW5kX2RlZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9w
dHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0
cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9tX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVj
dCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVk
IGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
dCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9y
IChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5k
ICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpl
eHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBk
b3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsK
ZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7
CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0
OCAobG9uZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0
OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2Rh
dGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fb2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQg
c2hvcnQgaW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoK
ZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQp
IDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAog
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
OwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19y
ZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp
WzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmlj
dCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50
IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf
X3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVk
dmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICA7CgpleHRlcm4gaW50IHNl
ZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKZXh0ZXJuIGludCBsY29uZzQ4
X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsKIyA1MjcgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9f
ICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgpleHRl
cm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2b2lkICpfX3B0cikgOwoKCgpl
eHRlcm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxs
b2NhLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXpl
X3QgX19zaXplKSA7CgoKCgoKCiMgNTQ3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoK
ZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs
bG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwg
c2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9p
ZCkpIDsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1
cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhp
dCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRl
cm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpl
eHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoK
CmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBpbnQgc2V0
ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19y
ZXBsYWNlKQogICAgIDsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNjIzICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoj
IDYzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAq
X190ZW1wbGF0ZSkgX19hc21fXyAoIiIgIm1rc3RlbXA2NCIpOwoKCgoKCmV4dGVybiBpbnQgbWtz
dGVtcDY0IChjaGFyICpfX3RlbXBsYXRlKSA7CiMgNjUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBp
bnQgc3lzdGVtIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAq
Y2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA2NzIgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0
cmljdCBfX3Jlc29sdmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9f
Y29uc3Qgdm9pZCAqLCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNv
bXBhcmlzb25fZm5fdDsKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpf
X2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVy
biB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXpl
LAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiBp
bnQgYWJzIChpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25n
IGludCBsYWJzIChsb25nIGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194
KQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKZXh0ZXJuIGRpdl90IGRp
diAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rl
bm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIGxsZGl2X3QgbGxkaXYgKGxvbmcgbG9uZyBpbnQgX19udW1lciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQogICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKIyA3MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl
cm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7
CgoKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduKSA7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAo
bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBj
aGFyICpxZ2N2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1
ZikgOwoKCgoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3Ry
aWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNp
emVfdCBfX2xlbikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFs
dWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpf
X3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAg
ICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVy
biBpbnQgbWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGlu
dCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCB3
Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSA7CgoKCmV4dGVybiBzaXplX3QgbWJz
dG93Y3MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSA7CgpleHRlcm4gc2l6
ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICA7
CgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgOwoj
IDgwOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFy
ICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX2Nv
bnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hh
ciAqX19rZXkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykg
OwoKCgoKCgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHVu
bG9ja3B0IChpbnQgX19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSA7
CgoKCgoKCmV4dGVybiBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVf
dCBfX2J1ZmxlbikgOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIGlu
dCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CgoKCgoKCiMg
MjMgImNvbW1vbi5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDMwICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1s
aW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKIyA0NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJ
TEUgRklMRTsKIyA1NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lP
X0ZJTEUgX19GSUxFOwojIDY1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMzIxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5j
bHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFy
LmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMK
IyA2NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2Nv
dW50OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAg
fSBfX3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19z
dGF0ZTsKfSBfR19mcG9zX3Q7CnR5cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zNjRfdDsKIyA0NCAiL3Vzci9pbmNsdWRlL19H
X2NvbmZpZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI4ICIvdXNyL2lu
Y2x1ZGUvZ2NvbnYuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51
eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAy
IDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNDg2LXN1c2UtbGludXgvMy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMyICIvdXNyL2lu
Y2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09O
Vl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1Q
VFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQs
CiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRP
UiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFT
VCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0
IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9s
b2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgq
X19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAo
Kl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50
ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3Qp
ICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBj
aGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0
IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9m
Y3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5z
X2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2Nv
bnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190
cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0
OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07
CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Qg
Kl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3Vu
dGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZf
ZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9m
Y3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVl
ZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoK
CiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpf
X291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50
ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAg
X19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3Ry
YW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVw
czsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0
IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9p
bmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAg
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsKICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNv
bnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMyAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbGli
L2djYy1saWIvaTQ4Ni1zdXNlLWxpbnV4LzMuMi9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAi
L3Vzci9saWIvZ2NjLWxpYi9pNDg2LXN1c2UtbGludXgvMy4yL2luY2x1ZGUvc3RkYXJnLmgiIDMK
dHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA1NCAiL3Vzci9pbmNs
dWRlL2xpYmlvLmgiIDIgMwojIDE2MCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9J
T19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1
Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQg
X3BvczsKIyAxOTMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgoKZW51bSBfX2NvZGVjdnRf
cmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19jb2RlY3Z0
X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNjEgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAzCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsKCgoKCiAgY2hhciogX0lPX3JlYWRf
cHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIq
IF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRl
X2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIg
Kl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZl
X2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUg
Kl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9v
ZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0
YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7
CiMgMzA1ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoK
CiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91
bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5
cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0
IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs
dXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRl
ZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNp
emVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4g
KHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGlu
dCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBlZGVmIF9faW9fcmVhZF9m
biBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3JpdGVfZm4gY29va2llX3dy
aXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tpZV9zZWVrX2Z1bmN0aW9u
X3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVuY3Rpb25fdDsKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9fd3JpdGVfZm4gKndyaXRl
OwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpjbG9zZTsKfSBfSU9fY29v
a2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29v
a2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmlsZTsKCgpleHRlcm4gdm9p
ZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUgKl9fY2ZpbGUsIGludCBf
X3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19jb29raWUs
IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKCgoKZXh0ZXJuIGludCBfX3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIDsK
ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHdpbnRfdCBf
X3d1bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsK
IyA0MjYgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19G
SUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2Zw
KSA7CmV4dGVybiBpbnQgX0lPX2Zlb2YgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lP
X2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAo
X0lPX0ZJTEUgKl9fZnApIDsKCgoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklM
RSAqKSA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4g
aW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKIyA0NTYgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwg
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19G
SUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QpIDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lP
X0ZJTEUgKiwgaW50LCBfX3NzaXplX3QpIDsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19G
SUxFICosIHZvaWQgKiwgc2l6ZV90KSA7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChf
SU9fRklMRSAqLCBfX29mZjY0X3QsIGludCwgaW50KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX3Nl
ZWtwb3MgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50KSA7CgpleHRlcm4gdm9pZCBfSU9fZnJl
ZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgOwojIDY2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgODIgIi91c3IvaW5jbHVk
ZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvc190OwoKCnR5cGVkZWYgX0dfZnBv
czY0X3QgZnBvczY0X3Q7CiMgMTI5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIyAxMzAgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4g
RklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2Zp
bGVuYW1lKSA7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25z
dCBjaGFyICpfX25ldykgOwoKCgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIF9fYXNt
X18gKCIiICJ0bXBmaWxlNjQiKTsKCgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSA7
CgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSA7CgoKCgpleHRlcm4gY2hhciAqdG1w
bmFtX3IgKGNoYXIgKl9fcykgOwojIDE3OCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3Nl
IChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKIyAyMDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAz
CmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSBfX2FzbV9fICgiIiAiZm9wZW42NCIp
OwoKCmV4dGVybiBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pIF9fYXNtX18gKCIiICJmcmVvcGVuNjQiKTsKIyAyMjIgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX21vZGVzKSA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9fY29uc3Qg
Y2hhciAqX19tb2RlcykgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19y
ZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9f
Y29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9w
ZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoK
CmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxv
YykgOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZl
ciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGlu
ZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICA7
CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlz
dCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgpleHRlcm4gaW50
IHZhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2YsCiAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJu
IGludCBfX2FzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3By
aW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCmV4dGVybiBpbnQgdmRwcmludGYgKGludCBf
X2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNjYW5mIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDApKSk7CgoKZXh0ZXJuIGlu
dCB2c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsK
CgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAo
RklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCmV4
dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRj
aGFyX3VubG9ja2VkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pIDsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVy
biBpbnQgcHV0Y2hhciAoaW50IF9fYykgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tl
ZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tl
ZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2Vk
IChpbnQgX19jKSA7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4
dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFy
ICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3Qg
X19zdHJlYW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3Mp
IDsKIyA0MjYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBfX3NzaXplX3QgX19nZXRk
ZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRl
cm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVs
aW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIDsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9f
bGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgoKZXh0ZXJuIGludCBmcHV0c191bmxv
Y2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IHB1dHMgKF9f
Y29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxFICpf
X3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRy
LCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVh
ZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGlu
dCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsK
CmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiB2b2lkIHJl
d2luZCAoRklMRSAqX19zdHJlYW0pIDsKIyA1MDIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4
dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193
aGVuY2UpIF9fYXNtX18gKCIiICJmc2Vla282NCIpOwoKCmV4dGVybiBfX29mZjY0X3QgZnRlbGxv
IChGSUxFICpfX3N0cmVhbSkgX19hc21fXyAoIiIgImZ0ZWxsbzY0Iik7CgpleHRlcm4gaW50IGZn
ZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3Bv
cykgX19hc21fXyAoIiIgImZnZXRwb3M2NCIpOwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpf
X3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSBfX2FzbV9fICgiIiAiZnNldHBvczY0Iik7
CiMgNTIzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxF
ICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsKZXh0ZXJuIF9fb2Zm
NjRfdCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZ2V0cG9zNjQgKEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAg
IDsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90
ICpfX3BvcykgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4
dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRl
cm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lk
IHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3N5c19lcnJsaXN0LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy9zeXNfZXJybGlzdC5o
IiAzCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lz
X2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hhciAq
X19jb25zdCBfc3lzX2Vycmxpc3RbXTsKIyA1NTMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMK
CgoKCmV4dGVybiBpbnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBm
aWxlbm9fdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3Bl
biAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4
dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVy
bWlkIChjaGFyICpfX3MpIDsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSA7
CgoKCgpzdHJ1Y3Qgb2JzdGFjazsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qg
b2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CmV4dGVybiBpbnQgb2Jz
dGFja192cHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIDsKCgoK
CgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGlu
dCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2Zp
bGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjI1ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9z
dGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAo
c3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2
b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVh
ZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRf
cHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQp
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dy
aXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3Ry
ZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0
Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVf
cHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVu
c2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3Jp
dGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fc3NpemVfdApnZXRs
aW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICBy
ZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoK
CmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICBy
ZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lu
bGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjI2ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKCiMgMjQgImNvbW1vbi5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVz
dHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAq
X19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIDsKCgoKCgpleHRl
cm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAq
X19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBf
X24pCiAgICAgOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQgX19jLCBz
aXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j
b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBz
aXplX3QgX19uKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2
b2lkICpyYXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3Ms
IGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQog
ICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQg
c3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBf
X24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xs
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSA7CiMgMTExICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0
ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIF9fbG9jYWxlX3QgX19sKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0
ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3Jj
LCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkg
OwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRl
X18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVy
biBzaXplX3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWpl
Y3QpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJz
cG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hh
ciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBf
X2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CgpleHRlcm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2Nv
bnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpl
eHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hh
ciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0
cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoKZXh0ZXJuIHZv
aWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xl
biwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9f
bmVlZGxlbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9p
ZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVy
biB2b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoK
ZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0
cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIg
KnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg
OwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4
dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoK
ZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwg
c2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hh
ciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19w
dXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19p
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcg
aW50IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRl
cm4gaW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEs
IF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpl
eHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
ZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3Rw
Y3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjKQogICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVybiBjaGFyICpf
X3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNo
YXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJu
IGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAo
dm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19j
b25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CiMgMzU3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU4ICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIyAz
ODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAqX19yYXdtZW1j
aHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgOTE3ICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nw
bl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19y
ZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBf
X3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXpl
X3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVj
dDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5l
IHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0MiwgaW50IF9f
cmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgICAgICAgICBpbnQg
X19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19z
W19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxCiAgICAgICAg
ICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWpl
Y3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5NzQgIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2Mx
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVf
dApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNj
ZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGlu
ZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJu
IF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Fj
Y2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoK
ICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBf
X2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2Vw
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGlu
dCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykK
ewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8fCBf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVz
dWx0Owp9CiMgMTAzMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lu
bGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4
dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpf
X3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJu
ICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9Cgpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Fj
Y2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19j
MyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAg
ICAgICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3Mg
IT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19h
Y2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDog
KGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTA4MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNo
YXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRv
a19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAq
X19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwog
IHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikw
KTsKICBpZiAoKl9fcyAhPSAnXDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAg
ICB3aGlsZSAoKl9fcyAhPSAnXDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19zZXApCiAgICAg
ICAgICB7CiAgICAgICAgICAgIF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBicmVhazsKICAg
ICAgICAgIH0KICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CiMgMTExNSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0
cnNlcF9nIChjaGFyICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0pOwojIDExMzMg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIg
Y2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSAmJiAo
Kl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYm
IChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19y
ZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9pZCAqKTApKQog
ICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGlu
ZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19y
ZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2
YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcmVn
aXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAg
ICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAgICAgICAgIF9f
Y3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
ICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikKICAgICAgICAg
ICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAqX19zID0gX19j
cDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNo
YXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFs
ID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIHJlZ2lz
dGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewogICAg
ICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfX2Nw
ID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAg
aWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0g
X19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9ICdcMCc7CiAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19jcDsKICAgICAg
ICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQojIDEyMTQg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9f
Y29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIz
MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cm5kdXAg
KF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKIyAzNjEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgojIDI1
ICJjb21tb24uaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgMzIgIi91c3Iv
aW5jbHVkZS9lcnJuby5oIiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEg
MwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xp
bnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCiMg
NSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0
cy9lcnJuby5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4g
aW50IGVycm5vOwoKCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1
ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9u
X25hbWUsICpwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZTsKCgoKCiMgNjkgIi91c3IvaW5j
bHVkZS9lcnJuby5oIiAzCnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgMjcgImNvbW1vbi5oIiAyCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiMgMzQgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL25hbi5oIiAxIDMK
IyAzOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoZGVmLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMKdHlwZWRl
ZiBsb25nIGRvdWJsZSBmbG9hdF90OwoKdHlwZWRlZiBsb25nIGRvdWJsZSBkb3VibGVfdDsKIyA0
MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgNjMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hc2luIChkb3VibGUgX194KSA7CgpleHRlcm4g
ZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBf
X3gpIDsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRv
dWJsZSBjb3MgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2NvcyAoZG91YmxlIF9feCkg
OwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpbiAo
ZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSB0YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRv
dWJsZSBfX3RhbiAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gdm9pZCBzaW5jb3MgKGRvdWJsZSBf
X3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgOyBleHRlcm4gdm9pZCBfX3NpbmNv
cyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJsZSAqX19jb3N4KSA7CgoKCgoKCmV4
dGVybiBkb3VibGUgY29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zaCAoZG91
YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBzaW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19zaW5oIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGRvdWJsZSBfX3RhbmggKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBh
Y29zaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIDsK
CmV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5o
IChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194KSA7IGV4dGVy
biBkb3VibGUgX19hdGFuaCAoZG91YmxlIF9feCkgOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJu
IGRvdWJsZSBleHAxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fZXhwMTAgKGRvdWJs
ZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgcG93MTAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX3BvdzEwIChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSBf
X3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gs
IGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3VibGUgbGRleHAgKGRvdWJsZSBfX3gsIGlu
dCBfX2V4cG9uZW50KSA7IGV4dGVybiBkb3VibGUgX19sZGV4cCAoZG91YmxlIF9feCwgaW50IF9f
ZXhwb25lbnQpIDsKCgpleHRlcm4gZG91YmxlIGxvZyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fbG9nIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBkb3VibGUgX19tb2Rm
IChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgOwoKCmV4dGVy
biBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3Vi
bGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19sb2diIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IGxvZzIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIDsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJu
IGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUg
c3FydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgOwoK
CgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBk
b3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBjYnJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSA7
CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
Y2VpbCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91YmxlIF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSA7CgoKZXh0ZXJu
IGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19m
bW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBf
X2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUg
X195KSA7IGV4dGVybiBkb3VibGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoK
CmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBf
X3NpZ25pZmljYW5kIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChk
b3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBkb3VibGUgX19jb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSBuYW4gKF9fY29uc3QgY2hhciAqX190
YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uYW4gKF9f
Y29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl
cm4gaW50IF9faXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCmV4dGVybiBpbnQgaXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUg
X19qMCAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgajEgKGRvdWJsZSkgOyBleHRlcm4gZG91Ymxl
IF9fajEgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRvdWJsZSkgOyBleHRlcm4g
ZG91YmxlIF9fam4gKGludCwgZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeTAgKGRvdWJsZSkgOyBl
eHRlcm4gZG91YmxlIF9feTAgKGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIHkxIChkb3VibGUpIDsg
ZXh0ZXJuIGRvdWJsZSBfX3kxIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3Vi
bGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJsZSkgOwoKCgoKCmV4dGVybiBkb3Vi
bGUgZXJmIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSA7CmV4dGVybiBk
b3VibGUgZXJmYyAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19lcmZjIChkb3VibGUpIDsKZXh0
ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hIChkb3Vi
bGUpIDsKCgoKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9f
dGdhbW1hIChkb3VibGUpIDsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSkgOyBleHRl
cm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gZG91YmxlIGxnYW1tYV9y
IChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3IgKGRv
dWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgcmludCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3Vi
bGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBf
X3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUgbmV4dHRvd2Fy
ZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJsZSByZW1haW5k
ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3JlbWFpbmRlciAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUg
X194LCBkb3VibGUgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYiAoZG91YmxlIF9feCwgZG91
YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24p
IDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikgOwoKCgpleHRl
cm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYiAoZG91YmxlIF9f
eCkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24p
IDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgOwoK
CgpleHRlcm4gZG91YmxlIG5lYXJieWludCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
bmVhcmJ5aW50IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgcm91bmQgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JvdW5kIChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3Vi
bGUgdHJ1bmMgKGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGRvdWJsZSBfX3RydW5jIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gZG91YmxlIHJlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpf
X3F1bykgOyBleHRlcm4gZG91YmxlIF9fcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBp
bnQgKl9fcXVvKSA7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludCAoZG91YmxlIF9feCkgOyBl
eHRlcm4gbG9uZyBpbnQgX19scmludCAoZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGlu
dCBsbHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnQgKGRv
dWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZCAoZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBpbnQgX19scm91bmQgKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQg
bGxyb3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmQgKGRv
dWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194LCBkb3VibGUgX195
KSA7IGV4dGVybiBkb3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKZXh0
ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUg
X19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChk
b3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194
LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUgX192YWx1
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25i
aXQgKGRvdWJsZSBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
ZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIDsg
ZXh0ZXJuIGRvdWJsZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikg
OwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4MiAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGFzaW5m
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJu
IGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKGZsb2F0IF9f
eCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBj
b3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSA7CgpleHRl
cm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpbmYgKGZsb2F0IF9f
eCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX190YW5m
IChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIHZvaWQgc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAq
X19zaW54LCBmbG9hdCAqX19jb3N4KSA7IGV4dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194
LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBjb3No
ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpIDsKCmV4dGVy
biBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpbmhmIChmbG9hdCBf
X3gpIDsKCmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Rh
bmhmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2Fjb3NoZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXNpbmhmIChm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBm
bG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuaGYgKGZsb2F0IF9f
eCkgOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
ZXhwZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHBvdzEwZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3BvdzEwZiAoZmxvYXQgX194KSA7CgoKCmV4dGVy
biBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9h
dCBfX2ZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpleHRlcm4gZmxvYXQg
bGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2xkZXhw
ZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgOwoKCmV4dGVybiBmbG9hdCBsb2dmIChmbG9h
dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0
IGxvZzEwZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSA7
CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsgZXh0ZXJu
IGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0cikgOwoKCgpleHRlcm4gZmxv
YXQgZXhwbTFmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gp
IDsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9n
MXBmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSA7CgoKCgpleHRlcm4gZmxvYXQgZXhwMmYgKGZs
b2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHAyZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZs
b2F0IGxvZzJmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMmYgKGZsb2F0IF9feCkg
OwoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJu
IGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgc3Fy
dGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zcXJ0ZiAoZmxvYXQgX194KSA7CgoKCmV4
dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBf
X2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2NicnRmIChmbG9hdCBfX3gpIDsKCgoKCgoKZXh0
ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY2VpbGYgKGZsb2F0
IF9feCkgOwoKCmV4dGVybiBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9hdCBfX3gpIDsgZXh0
ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2Ztb2RmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSkgOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVmIChmbG9hdCBfX3Zh
bHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mZiAo
ZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQg
ZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9f
ZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2Fu
ZGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaWduaWZpY2FuZGYgKGZsb2F0IF9feCkg
OwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fY29weXNpZ25mIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZs
b2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5mIChmbG9hdCBfX3ZhbHVl
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5mIChmbG9h
dCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGow
ZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fajBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgajFm
IChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19qMWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqbmYg
KGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fam5mIChpbnQsIGZsb2F0KSA7CmV4dGVybiBm
bG9hdCB5MGYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3kwZiAoZmxvYXQpIDsKZXh0ZXJuIGZs
b2F0IHkxZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feTFmIChmbG9hdCkgOwpleHRlcm4gZmxv
YXQgeW5mIChpbnQsIGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX3luZiAoaW50LCBmbG9hdCkgOwoK
CgoKCmV4dGVybiBmbG9hdCBlcmZmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19lcmZmIChmbG9h
dCkgOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2VyZmNmIChm
bG9hdCkgOwpleHRlcm4gZmxvYXQgbGdhbW1hZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fbGdh
bW1hZiAoZmxvYXQpIDsKCgoKZXh0ZXJuIGZsb2F0IHRnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBm
bG9hdCBfX3RnYW1tYWYgKGZsb2F0KSA7CgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkg
OyBleHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBsZ2Ft
bWFmX3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZl9y
IChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxv
YXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxv
YXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBmbG9hdCBuZXh0dG93YXJkZiAo
ZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg
ZXh0ZXJuIGZsb2F0IF9fbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChm
bG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0
IF9fbikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSA7CgoK
CgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7IGV4dGVybiBmbG9h
dCBfX3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2diZiAo
ZmxvYXQgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJu
IGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgOyBleHRlcm4gZmxvYXQg
X19zY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIDsKCgoKZXh0ZXJuIGZsb2F0IG5l
YXJieWludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19uZWFyYnlpbnRmIChmbG9hdCBf
X3gpIDsKCgoKZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X3JvdW5kZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZsb2F0
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0IHJlbXF1
b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSA7IGV4dGVybiBmbG9hdCBfX3Jl
bXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSA7CgoKCgoKCmV4dGVybiBs
b25nIGludCBscmludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scmludGYgKGZs
b2F0IF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRmIChmbG9hdCBfX3gpIDsgZXh0
ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcg
aW50IGxyb3VuZGYgKGZsb2F0IF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmRmIChmbG9h
dCBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0
IGZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19mZGltZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2ZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoK
CmV4dGVybiBmbG9hdCBmbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0
IF9fZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNz
aWZ5ZiAoZmxvYXQgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
ZXh0ZXJuIGludCBfX3NpZ25iaXRmIChmbG9hdCBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IGZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195
LCBmbG9hdCBfX3opIDsgZXh0ZXJuIGZsb2F0IF9fZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ks
IGZsb2F0IF9feikgOwojIDgzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9p
bmNsdWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMK
IyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91Ymxl
IGFjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2wgKGxv
bmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4y
bCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBs
b25nIGRvdWJsZSBjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Y29zbCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBk
b3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmwgKGxvbmcgZG91YmxlIF9feCkg
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX190YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIHZvaWQgc2luY29z
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19j
b3N4KSA7IGV4dGVybiB2b2lkIF9fc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs
ZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBjb3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChs
b25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBsb25nIGRvdWJsZSB0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFj
b3NobCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9u
ZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19hdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbCAobG9u
ZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAxMGwgKGxvbmcgZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHAxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHBvdzEwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX3BvdzEwbCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2ZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19l
eHBvbmVudCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dsIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X2xvZzEwbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9n
MXBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMXBsIChsb25n
IGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3VibGUgX194KSA7CgoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxv
ZzJsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMmwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUg
X194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgc3FydGwg
KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3Vi
bGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxvb3JsIChsb25nIGRvdWJs
ZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3Vi
bGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19m
aW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gaW50IGlzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBkcmVt
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSBzaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBk
b3VibGUgX19zaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwgKF9f
Y29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl
cm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgOwpleHRlcm4g
bG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMWwg
KGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3VibGUp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKSA7CmV4dGVybiBs
b25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kwbCAo
bG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUg
eW5sIChpbnQsIGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lubCAoaW50LCBs
b25nIGRvdWJsZSkgOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJsZSkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBk
b3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChs
b25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Rn
YW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25n
IGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoK
CgoKCmV4dGVybiBsb25nIGRvdWJsZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2ln
bmdhbXApIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50
ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByaW50bCAobG9uZyBkb3Vi
bGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dG93YXJkbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25n
IGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJu
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxi
bmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2dibCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibG5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgaW50
IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBs
b25nIGludCBfX24pIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZWFyYnlpbnRsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSB0cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX190cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbXF1b2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3JlbXF1b2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBp
bnQgKl9fcXVvKSA7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBpbnQgX19scmludGwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4g
bG9uZyBsb25nIGludCBsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
b3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmRsIChsb25n
IGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRsIChsb25nIGRvdWJsZSBfX3gp
IDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mZGltbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1heGwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYXhsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlu
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZm1pbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCmV4dGVybiBp
bnQgX19mcGNsYXNzaWZ5bCAobG9uZyBkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3Zh
bHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91
YmxlIGZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBf
X3opIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgOwojIDEwMCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCiMgMTEzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBpbnQgc2lnbmdhbTsKIyAx
NTQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZW51bQogIHsKICAgIEZQX05BTiwKCiAgICBGUF9J
TkZJTklURSwKCiAgICBGUF9aRVJPLAoKICAgIEZQX1NVQk5PUk1BTCwKCiAgICBGUF9OT1JNQUwK
CiAgfTsKIyAyNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVF
RV8gPSAtMSwKICBfU1ZJRF8sCiAgX1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJf
VkVSU0lPTl9UWVBFOwoKCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsK
IyAyNjUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBp
bnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcy
OwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3Qg
ZXhjZXB0aW9uICpfX2V4Yyk7CiMgMzUwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAxIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdGYgKGZsb2F0IF9f
eCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0g
eyBfX2Y6IF9feCB9OwogIHJldHVybiBfX3UuX19pIDwgMDsKfQpleHRlcm4gX19pbmxpbmUgaW50
Cl9fc2lnbmJpdCAoZG91YmxlIF9feCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUg
X19kOyBpbnQgX19pWzJdOyB9IF9fdSA9IHsgX19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsx
XSA8IDA7Cn0KZXh0ZXJuIF9faW5saW5lIGludApfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3gp
CnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX19sOyBpbnQgX19pWzNdOyB9
IF9fdSA9IHsgX19sOiBfX3ggfTsKICByZXR1cm4gKF9fdS5fX2lbMl0gJiAweDgwMDApICE9IDA7
Cn0KIyAyOTEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIF9fc2duIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAo
ZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAg
OiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCkgOyBleHRlcm4g
X19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAw
LjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlIF9fc2dubCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9f
c2dubCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+
IDAuMCA/IDEuMCA6IC0xLjApOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fcG93MiAo
ZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBkb3VibGUgX19wb3cyIChkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25l
bnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25nIGludCkgX194
OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
Y2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwgInUiIChfX3gpKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxkCSUlc3QoMClcblx0IiAiZnJuZGludAkJ
CSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIg
ImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAo
X19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGls
ZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4
cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3BvdzJm
IChmbG9hdCkgOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25l
bnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25nIGludCkgX194
OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
Y2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4wKSwgInUiIChfX3gpKTsgcmV0dXJuIF9f
dmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxkCSUlc3QoMClcblx0IiAiZnJuZGludAkJ
CSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIg
ImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAo
X19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20gX192b2xhdGls
ZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4
cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X3BvdzJsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19wb3cy
bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBf
X3AgPSAobG9uZyBsb25nIGludCkgX194OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4w
KSwgInUiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxk
CSUlc3QoMClcblx0IiAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1Ygkl
JXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIg
OiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVl
ICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgMzQz
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIHZvaWQK
X19zaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fY29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5y
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRl
c3RsCSQweDQwMCwgJSVlYXhcblx0IiAianoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0
KDApXG5cdCIgImZ4Y2gJJSVzdCgxKVxuXHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhc
blx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEp
XG5cdCIgImZzaW5jb3Ncblx0IiAiMToiIDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6
ICIwIiAoX194KSk7ICpfX3NpbnggPSBfX3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KCmV4dGVy
biBfX2lubGluZSB2b2lkCl9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9h
dCAqX19jb3N4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3NpbnI7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3
CSUlYXhcblx0IiAidGVzdGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxu
XHQiICJmYWRkCSUlc3QoMClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQi
ICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQi
ICJmc3RwCSUlc3QoMSlcblx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAi
PXUiIChfX3NpbnIpIDogIjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9f
Y29zcjsKfQoKZXh0ZXJuIF9faW5saW5lIHZvaWQKX19zaW5jb3NsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpCnsKICByZWdpc3RlciBs
b25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fc2lucjsgX19hc20gX192
b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAs
ICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBpXG5cdCIgImZhZGQJJSVzdCgwKVxuXHQiICJm
eGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3Rs
CSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5cdCIgImZzdHAJJSVzdCgxKVxuXHQiICJmc2lu
Y29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciksICI9dSIgKF9fc2lucikgOiAiMCIgKF9feCkp
OyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0gX19jb3NyOwp9CiMgMzg1ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fZXhw
bTFsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1w
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihl
KSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgx
KVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1
YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3Qo
eCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihp
bnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQp
IDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICog
bG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVu
dCkpOyBfX3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/OiBfX3g7IH0KIyA0
MDUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGV4cCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJ
CQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIo
ZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxu
XHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAi
ZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVl
KSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9IDEuMDsgX19hc20g
X192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3ZhbHVlKSwg
InUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9h
dCBleHBmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJ
IyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUp
XG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0
IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYy
eG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSks
ICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1
IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4
ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxv
ZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUp
KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIg
KF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4w
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9f
dmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fZXhwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIoZSkpXG5cdCIgImZtdWwJ
JSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQiICJmcm5kaW50CQkJ
IyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0
KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxvZzIoZSkpKSAtIDFc
blx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9f
dmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0K
CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIHRhbiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0
ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcHRhbiIgOiAiPXQiIChf
X3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlMiBfX2F0dHJpYnV0ZV9f
ICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcHRhbiIgOiAiPXQiIChfX3Zh
bHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlMiBfX2F0
dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcHRhbiIgOiAi
PXQiIChfX3ZhbHVlMiksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFs
dWU7IH0KIyA0MjUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19p
bmxpbmUgZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVl
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRh
biIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJl
dHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcg
ZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CmV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgi
ZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSki
KTsgcmV0dXJuIF9fdmFsdWU7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZtb2QgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20g
X192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQi
ICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4Iiwg
ImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBmbW9kZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20g
X192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQi
ICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4Iiwg
ImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmbW9k
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUl
YXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwg
InUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNDQwICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBzcXJ0IChk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9f
ICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZs
b2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3Vs
dCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
X19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZhYnMgKGRv
dWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzIChfX3gpOyB9CmV4dGVybiBfX2lubGlu
ZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YgKF9feCk7
IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHsg
cmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9f
eCk7IH0KCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgc2luIChkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQi
IChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IHNpbmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19h
c20gX192b2xhdGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcg
ZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xh
dGlsZV9fICgiZnNpbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19y
ZXN1bHQ7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgY29zIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmNvcyIgOiAiPXQiIChf
X3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGNvc2YgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20g
X192b2xhdGlsZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1
cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2wgKGxvbmcgZG91
YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGls
ZV9fICgiZmNvcyIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1
bHQ7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBmeWwy
eCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVz
dWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIg
ZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngi
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3Vs
dDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRs
bjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIp
OyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxMCAoZG91Ymxl
IF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEp
Iik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgbG9nMTBmIChmbG9h
dCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEp
Iik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMTBs
IChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDog
IjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBhc2luIChkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX194LCBfX3NxcnRs
ICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXNpbmYgKGZsb2F0
IF9feCkgeyByZXR1cm4gX19hdGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7
IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBfX3gpIHsg
cmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAqIF9feCkpOyB9CmV4dGVy
biBfX2lubGluZSBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgeyByZXR1cm4gX19hdGFuMmwgKF9f
c3FydGwgKDEuMCAtIF9feCAqIF9feCksIF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFj
b3NmIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBf
X3gpLCBfX3gpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3Vi
bGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX19zcXJ0bCAoMS4wIC0gX194ICogX194KSwgX194
KTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAi
PXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZsb2F0
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6
ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7
IH0KCmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSkgOyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUgX194KSB7IF9f
ZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBfX3hsZDsgdW5zaWduZWQgaW50IF9feGlb
M107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5fX3hpWzJdID0gKF9fbi5fX3hpWzJdICYg
MHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAweDgwMDAwMDAwOyBfX24uX194aVswXSA9
IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA0NzkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4g
MC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7
IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICog
KF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7IH0gZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wgKF9feCkpOyByZXR1cm4g
MC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAqIF9fc2duMWwgKF9feCk7
IH0KCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBjb3NoIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUgKiAoX19leCArIDEu
MCAvIF9fZXgpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBjb3NoZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJldHVybiAwLjUgKiAoX19l
eCArIDEuMCAvIF9fZXgpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NobCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7
IHJldHVybiAwLjUgKiAoX19leCArIDEuMCAvIF9fZXgpOyB9CgoKCmV4dGVybiBfX2lubGluZSBk
b3VibGUgdGFuaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBf
X2V4cG0xbCAoLV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSAr
IDIuMCkgKiBfX3NnbjFsICgtX194KTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgdGFuaGYgKGZs
b2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoLV9fZmFi
c2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkgKiBfX3NnbjFs
ICgtX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFuaGwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoLV9fZmFic2wg
KF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSArIDIuMCkgKiBfX3NnbjFsICgt
X194KTsgfQoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGlu
dCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhm
M2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3
dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJl
dHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0
IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYg
MHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChf
X2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7
IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmbG9vcmwgKGxv
bmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19j
d3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6
IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTAzICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBjZWlsIChkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hv
cnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cg
JiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIg
KF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkg
OiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cp
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGNlaWxmIChmbG9hdCBf
X3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19h
c20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19j
dyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJt
IiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19j
dykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgY2VpbGwg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0
aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGlu
dCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsg
X19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6
ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUw
IiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTIxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpsZGV4cCAoZG91Ymxl
IF9feCwgaW50IF9feSkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgo
bG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192YWx1ZTsKfQoKCgoKCgpleHRlcm4gX19pbmxp
bmUgZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFs
dWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0gMl4oeCAq
IGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0
CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5c
dCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJe
KGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxvZzIoZSkp
IC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4
cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJCSMgMl5p
bnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAidSIgKF9f
ZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9fdmFsdWUgPzogX194
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMg
ZV54IC0gMSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBs
b2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihl
KSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5c
dCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkj
IDJeKHggKiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3Zh
bHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmc2NhbGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIw
IiAoMS4wKSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3RlbXAg
KyBfX3ZhbHVlID86IF9feDsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbTFsIChs
b25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190ZW1wOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9nMihlKSkgLSAx
XG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxuXHQi
ICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1YgklJXN0
KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAqIGxv
ZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAyXihpbnQoeCAq
IGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAi
IChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4ICogbG9nMihl
KSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBvbmVudCkpOyBf
X3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZSA/OiBfX3g7IH0KCgoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2
MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192
b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3Zh
bHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUw
NDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzcz
MDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTUzICIvdXNyL2lu
Y2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luaCAo
ZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyBy
ZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAx
LjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2lu
aGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gp
OyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkg
KyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kg
PSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9f
eSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9CgoKCgpleHRl
cm4gX19pbmxpbmUgZG91YmxlIGFjb3NoIChkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3gg
KyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9f
aW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3Nx
cnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3gg
KyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0KCgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkg
LyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBh
dGFuaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChf
X3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICog
X19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmhsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsg
cmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2du
MWwgKF9feCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0
dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0
dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0KCmV4dGVybiBfX2lubGluZSBk
b3VibGUgbG9nYiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rc
blx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9f
ICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX192YWx1ZTsgfQojIDU4MCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGlu
ZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nMiAoZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7IGZ5bDJ4
IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1
bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZzJmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIg
ZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZ4Y2g7IGZ5bDJ4IiA6
ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7
IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7
IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX19yZXN1bHQ7IH0KCgpleHRlcm4gX19pbmxpbmUgZmxvYXQKbGRleHBmIChmbG9hdCBf
X3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxv
bmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZQpsZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9feSkKewogIHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChf
X3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192
YWx1ZTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZm1hIChkb3VibGUgX194LCBkb3VibGUg
X195LCBkb3VibGUgX196KSB7IHJldHVybiAoX194ICogX195KSArIF9fejsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgeyByZXR1
cm4gKF9feCAqIF9feSkgKyBfX3o7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZtYWwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIHsgcmV0
dXJuIChfX3ggKiBfX3kpICsgX196OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIHJpbnQgKGRv
dWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmcm5kaW50IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3Vs
dDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgcmludGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBm
bG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnJuZGludCIgOiAiPXQiIChfX3Jl
c3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZybmRpbnQiIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CiMgNjA3ICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50ZiAoZmxvYXQg
X194KQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0
cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9f
bHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50IChkb3VibGUgX194KQp7
CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAi
IDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRy
ZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50bCAobG9uZyBkb3VibGUgX194KQp7
CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGwgJTAi
IDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9fbHJpbnRy
ZXM7Cn0KIyA2MzAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19p
bmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRmIChmbG9hdCBfX3gpCnsKICBsb25nIGxvbmcgaW50
IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAo
X19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQpl
eHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnQgKGRvdWJsZSBfX3gpCnsKICBsb25n
IGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAi
IDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmlu
dHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRsIChsb25nIGRvdWJs
ZSBfX3gpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7
IHJldHVybiBfX2xscmludHJlczsKfQoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVt
IChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdp
c3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQi
ICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9
JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4g
X192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNh
aGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAi
MCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZc
blx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIg
KF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfQojIDY2NSAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUg
KGRvdWJsZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5p
b24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAg
ICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEpKTsKfQoKCgpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIF9fY29zaG0xIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX2Nvc2ht
MSAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAo
X19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICog
X19leG0xOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0KSA7IGV4dGVy
biBfX2lubGluZSBmbG9hdCBfX2Nvc2htMWYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19l
eG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJs
ZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4
bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9f
ZXhtMSArIDEuMCkpICogX19leG0xOyB9CgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgX19hY29z
aDFwIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX2Fjb3NoMXAgKGRvdWJsZSBf
X3gpIHsgcmV0dXJuIGxvZzFwbCAoX194ICsgX19zcXJ0bCAoX194KSAqIF9fc3FydGwgKF9feCAr
IDIuMCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX2Fjb3NoMXBmIChmbG9hdCkgOyBleHRl
cm4gX19pbmxpbmUgZmxvYXQgX19hY29zaDFwZiAoZmxvYXQgX194KSB7IHJldHVybiBsb2cxcGwg
KF9feCArIF9fc3FydGwgKF9feCkgKiBfX3NxcnRsIChfX3ggKyAyLjApKTsgfSBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgX19hY29zaDFwbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gbG9n
MXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0KIyAzNTEg
Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDQxMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoK
IyAzMSAiY29tbW9uLmgiIDIKIyA5NSAiY29tbW9uLmgiCiMgMSAiL3Vzci9pbmNsdWRlL2ludHR5
cGVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9zdGRpbnQuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9zdGRpbnQuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3RkaW50
LmgiIDIgMwojIDQ5ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIHVpbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVpbnQxNl90OwoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CgoKCgoKX19leHRlbnNpb25fXwp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgaW50
X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBp
bnRfbGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgbG9uZyBsb25nIGludCBpbnRf
bGVhc3Q2NF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBpbnQgdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50
IHVpbnRfbGVhc3QzMl90OwoKCgpfX2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs
b25nIGludCB1aW50X2xlYXN0NjRfdDsKCgoKCgoKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfZmFz
dDhfdDsKCgoKCgp0eXBlZGVmIGludCBpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgaW50IGludF9mYXN0
MzJfdDsKX19leHRlbnNpb25fXwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgaW50X2Zhc3Q2NF90OwoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludF9mYXN0OF90OwoKCgoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHVpbnRfZmFzdDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfZmFzdDMyX3Q7
Cl9fZXh0ZW5zaW9uX18KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRfZmFzdDY0
X3Q7CiMgMTI2ICIvdXNyL2luY2x1ZGUvc3RkaW50LmgiIDMKdHlwZWRlZiBpbnQgaW50cHRyX3Q7
CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludHB0cl90OwojIDEzOCAiL3Vzci9pbmNsdWRlL3N0
ZGludC5oIiAzCl9fZXh0ZW5zaW9uX18KdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1heF90Owpf
X2V4dGVuc2lvbl9fCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCB1aW50bWF4X3Q7CiMg
MjkgIi91c3IvaW5jbHVkZS9pbnR0eXBlcy5oIiAyIDMKCgoKCgoKdHlwZWRlZiBsb25nIGludCBf
X2d3Y2hhcl90OwojIDI3NCAiL3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDMKCiMgMjg4ICIvdXNy
L2luY2x1ZGUvaW50dHlwZXMuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBp
bnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gaW1heGRpdl90OwoKCgoKCmV4dGVy
biBpbnRtYXhfdCBpbWF4YWJzIChpbnRtYXhfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gaW1heGRpdl90IGltYXhkaXYgKGludG1heF90IF9fbnVtZXIsIGludG1h
eF90IF9fZGVub20pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50bWF4X3Qgc3RydG9pbWF4IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkgOwoKCmV4dGVybiB1aW50bWF4X3Qgc3RydG91bWF4IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKiBfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgoKZXh0ZXJuIGludG1heF90IHdjc3RvaW1heCAo
X19jb25zdCBfX2d3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19nd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAg
ICAgOwoKCmV4dGVybiB1aW50bWF4X3Qgd2NzdG91bWF4IChfX2NvbnN0IF9fZ3djaGFyX3QgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nd2NoYXJfdCAq
KiBfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIDsKIyAzOTYgIi91c3IvaW5j
bHVkZS9pbnR0eXBlcy5oIiAzCmV4dGVybiBfX2lubGluZSBpbnRtYXhfdApzdHJ0b2ltYXggKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBucHRyLCBjaGFyICoqX19yZXN0cmljdCBlbmRwdHIsCiAg
ICAgICAgICAgaW50IGJhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChucHRyLCBl
bmRwdHIsIGJhc2UsIDApOwp9CiMgNDE0ICIvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMwpleHRl
cm4gX19pbmxpbmUgdWludG1heF90CnN0cnRvdW1heCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IG5wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IGVuZHB0ciwKICAgICAgICAgICBpbnQgYmFzZSkKewog
IHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChucHRyLCBlbmRwdHIsIGJhc2UsIDApOwp9CgoK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX193Y3N0b2xsX2ludGVybmFsIChf
X2NvbnN0IF9fZ3djaGFyX3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fZ3djaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKZXh0
ZXJuIF9faW5saW5lIGludG1heF90Cndjc3RvaW1heCAoX19jb25zdCBfX2d3Y2hhcl90ICpfX3Jl
c3RyaWN0IG5wdHIsIF9fZ3djaGFyX3QgKipfX3Jlc3RyaWN0IGVuZHB0ciwKICAgICAgICAgICBp
bnQgYmFzZSkKewogIHJldHVybiBfX3djc3RvbGxfaW50ZXJuYWwgKG5wdHIsIGVuZHB0ciwgYmFz
ZSwgMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQg
X193Y3N0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBfX2d3Y2hhcl90ICoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ3djaGFy
X3QgKioKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCgpleHRlcm4gX19pbmxpbmUgdWlu
dG1heF90Cndjc3RvdW1heCAoX19jb25zdCBfX2d3Y2hhcl90ICpfX3Jlc3RyaWN0IG5wdHIsIF9f
Z3djaGFyX3QgKipfX3Jlc3RyaWN0IGVuZHB0ciwKICAgICAgICAgICBpbnQgYmFzZSkKewogIHJl
dHVybiBfX3djc3RvdWxsX2ludGVybmFsIChucHRyLCBlbmRwdHIsIGJhc2UsIDApOwp9CgoKCgoK
IyA5NiAiY29tbW9uLmgiIDIKCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVSU5UMTY7CnR5cGVk
ZWYgc2lnbmVkIHNob3J0IElOVDE2OwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBVSU5U
NjQ7CnR5cGVkZWYgc2lnbmVkIGNoYXIgSU5UODsKdHlwZWRlZiBzaWduZWQgaW50IElOVDMyOwp0
eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgSU5UNjQ7CiMgMTE3ICJjb21tb24uaCIKIyAxICJmYXN0
bWVtY3B5LmgiIDEKIyAxICIuLi9saWJ2by9mYXN0bWVtY3B5LmgiIDEKCgoKIyAxICIuLi9jb25m
aWcuaCIgMQojIDUgIi4uL2xpYnZvL2Zhc3RtZW1jcHkuaCIgMgoKCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICIv
dXNyL2xpYi9nY2MtbGliL2k0ODYtc3VzZS1saW51eC8zLjIvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIGludCBwdHJkaWZmX3Q7CiMgMTAgIi4uL2xpYnZvL2Zhc3RtZW1jcHkuaCIgMgoKZXh0
ZXJuIHZvaWQgKiBmYXN0X21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9tLCBzaXpl
X3QgbGVuKTsKZXh0ZXJuIHZvaWQgKiBtZW0yYWdwY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAq
IGZyb20sIHNpemVfdCBsZW4pOwojIDIzICIuLi9saWJ2by9mYXN0bWVtY3B5LmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCAqIG1lbTJhZ3BjcHlfcGljKHZvaWQgKiBkc3QsIHZvaWQgKiBzcmMsIGludCBi
eXRlc1BlckxpbmUsIGludCBoZWlnaHQsIGludCBkc3RTdHJpZGUsIGludCBzcmNTdHJpZGUpCnsK
ICAgICAgICBpbnQgaTsKICAgICAgICB2b2lkICpyZXR2YWw9ZHN0OwoKICAgICAgICBpZihkc3RT
dHJpZGUgPT0gc3JjU3RyaWRlKSBtZW0yYWdwY3B5KGRzdCwgc3JjLCBzcmNTdHJpZGUqaGVpZ2h0
KTsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAgICAgZm9yKGk9MDsgaTxoZWln
aHQ7IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVtMmFn
cGNweShkc3QsIHNyYywgYnl0ZXNQZXJMaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3Jj
Kz0gc3JjU3RyaWRlOwogICAgICAgICAgICAgICAgICAgICAgICBkc3QrPSBkc3RTdHJpZGU7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgKiBtZW1jcHlfcGljKHZvaWQgKiBkc3QsIHZvaWQgKiBzcmMsIGludCBi
eXRlc1BlckxpbmUsIGludCBoZWlnaHQsIGludCBkc3RTdHJpZGUsIGludCBzcmNTdHJpZGUpCnsK
ICAgICAgICBpbnQgaTsKICAgICAgICB2b2lkICpyZXR2YWw9ZHN0OwoKICAgICAgICBpZihkc3RT
dHJpZGUgPT0gc3JjU3RyaWRlKSBmYXN0X21lbWNweShkc3Qsc3JjLHNyY1N0cmlkZSpoZWlnaHQp
OwogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IoaT0wOyBpPGhlaWdo
dDsgaSsrKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmYXN0X21l
bWNweShkc3Qsc3JjLGJ5dGVzUGVyTGluZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNyYys9
IHNyY1N0cmlkZTsKICAgICAgICAgICAgICAgICAgICAgICAgZHN0Kz0gZHN0U3RyaWRlOwogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQojIDIgImZh
c3RtZW1jcHkuaCIgMgojIDExOCAiY29tbW9uLmgiIDIKCgoKCgoKCiMgMSAiYnN3YXAuaCIgMQoj
IDkgImJzd2FwLmgiCmlubGluZSBzdGF0aWMgdW5zaWduZWQgc2hvcnQgQnl0ZVN3YXAxNih1bnNp
Z25lZCBzaG9ydCB4KQp7CiAgX19hc20oInhjaGdiICViMCwlaDAiIDoKICAgICAgICAiPXEiICh4
KSA6CiAgICAgICAgIjAiICh4KSk7CiAgICByZXR1cm4geDsKfQoKCmlubGluZSBzdGF0aWMgdW5z
aWduZWQgaW50IEJ5dGVTd2FwMzIodW5zaWduZWQgaW50IHgpCnsKCiBfX2FzbSgiYnN3YXAJJTAi
OgogICAgICAiPXIiICh4KSA6CgoKCgoKCiAgICAgICIwIiAoeCkpOwogIHJldHVybiB4Owp9CgoK
aW5saW5lIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IEJ5dGVTd2FwNjQodW5zaWduZWQg
bG9uZyBsb25nIGludCB4KQp7CiAgcmVnaXN0ZXIgdW5pb24geyBfX2V4dGVuc2lvbl9fIHVpbnQ2
NF90IF9fbGw7CiAgICAgICAgICB1aW50MzJfdCBfX2xbMl07IH0gX194OwogIGFzbSgieGNoZ2wJ
JTAsJTEiOgogICAgICAiPXIiKF9feC5fX2xbMF0pLCI9ciIoX194Ll9fbFsxXSk6CiAgICAgICIw
IihCeXRlU3dhcDMyKCh1bnNpZ25lZCBsb25nKXgpKSwiMSIoQnl0ZVN3YXAzMigodW5zaWduZWQg
bG9uZykoeD4+MzIpKSkpOwogIHJldHVybiBfX3guX19sbDsKfQojIDEyNiAiY29tbW9uLmgiIDIK
IyAxMzkgImNvbW1vbi5oIgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiMgMTQwICJj
b21tb24uaCIgMgojIDE2OSAiY29tbW9uLmgiCnN0YXRpYyBpbmxpbmUgaW50MzJfdCBORUdfU1NS
MzIoIGludDMyX3QgYSwgaW50OF90IHMpewogICAgYXNtICgic2FybCAlMSwgJTBcblx0IgogICAg
ICAgICA6ICIrciIgKGEpCiAgICAgICAgIDogImljIiAoKHVpbnQ4X3QpKC1zKSkKICAgICk7CiAg
ICByZXR1cm4gYTsKfQpzdGF0aWMgaW5saW5lIHVpbnQzMl90IE5FR19VU1IzMih1aW50MzJfdCBh
LCBpbnQ4X3Qgcyl7CiAgICBhc20gKCJzaHJsICUxLCAlMFxuXHQiCiAgICAgICAgIDogIityIiAo
YSkKICAgICAgICAgOiAiaWMiICgodWludDhfdCkoLXMpKQogICAgKTsKICAgIHJldHVybiBhOwp9
CgoKCgoKCgpzdHJ1Y3QgUHV0Qml0Q29udGV4dDsKCnR5cGVkZWYgdm9pZCAoKldyaXRlRGF0YUZ1
bmMpKHZvaWQgKiwgVUlOVDggKiwgaW50KTsKCnR5cGVkZWYgc3RydWN0IFB1dEJpdENvbnRleHQg
ewoKCgoKICAgIFVJTlQzMiBiaXRfYnVmOwogICAgaW50IGJpdF9sZWZ0OwogICAgVUlOVDggKmJ1
ZiwgKmJ1Zl9wdHIsICpidWZfZW5kOwoKICAgIElOVDY0IGRhdGFfb3V0X3NpemU7Cn0gUHV0Qml0
Q29udGV4dDsKCnZvaWQgaW5pdF9wdXRfYml0cyhQdXRCaXRDb250ZXh0ICpzLAogICAgICAgICAg
ICAgICAgICAgVUlOVDggKmJ1ZmZlciwgaW50IGJ1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAg
ICAgdm9pZCAqb3BhcXVlLAogICAgICAgICAgICAgICAgICAgdm9pZCAoKndyaXRlX2RhdGEpKHZv
aWQgKiwgVUlOVDggKiwgaW50KSk7CgpJTlQ2NCBnZXRfYml0X2NvdW50KFB1dEJpdENvbnRleHQg
KnMpOwp2b2lkIGFsaWduX3B1dF9iaXRzKFB1dEJpdENvbnRleHQgKnMpOwp2b2lkIGZsdXNoX3B1
dF9iaXRzKFB1dEJpdENvbnRleHQgKnMpOwp2b2lkIHB1dF9zdHJpbmcoUHV0Qml0Q29udGV4dCAq
IHBiYywgY2hhciAqcyk7CgoKCnR5cGVkZWYgc3RydWN0IEdldEJpdENvbnRleHQgewogICAgVUlO
VDggKmJ1ZmZlciwgKmJ1ZmZlcl9lbmQ7CgogICAgaW50IGluZGV4OwojIDIzMiAiY29tbW9uLmgi
CiAgICBpbnQgc2l6ZTsKfSBHZXRCaXRDb250ZXh0OwoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2Jp
dHNfY291bnQoR2V0Qml0Q29udGV4dCAqcyk7CgoKCnR5cGVkZWYgc3RydWN0IFZMQyB7CiAgICBp
bnQgYml0czsKICAgIElOVDE2ICgqdGFibGUpWzJdOwogICAgaW50IHRhYmxlX3NpemUsIHRhYmxl
X2FsbG9jYXRlZDsKfSBWTEM7Cgp0eXBlZGVmIHN0cnVjdCBSTF9WTENfRUxFTSB7CiAgICBpbnQx
Nl90IGxldmVsOwogICAgaW50OF90IGxlbjsKICAgIHVpbnQ4X3QgcnVuOwp9IFJMX1ZMQ19FTEVN
OwojIDI3NSAiY29tbW9uLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfYml0cyhQdXRCaXRDb250
ZXh0ICpzLCBpbnQgbiwgdW5zaWduZWQgaW50IHZhbHVlKQp7CiAgICB1bnNpZ25lZCBpbnQgYml0
X2J1ZjsKICAgIGludCBiaXRfbGVmdDsKCgoKCgogICAgKCh2b2lkKSAoMCkpOwoKICAgIGJpdF9i
dWYgPSBzLT5iaXRfYnVmOwogICAgYml0X2xlZnQgPSBzLT5iaXRfbGVmdDsKCgoKICAgIGlmIChu
IDwgYml0X2xlZnQpIHsKICAgICAgICBiaXRfYnVmID0gKGJpdF9idWY8PG4pIHwgdmFsdWU7CiAg
ICAgICAgYml0X2xlZnQtPW47CiAgICB9IGVsc2UgewogICAgICAgIGJpdF9idWY8PD1iaXRfbGVm
dDsKICAgICAgICBiaXRfYnVmIHw9IHZhbHVlID4+IChuIC0gYml0X2xlZnQpOwogICAgICAgICoo
VUlOVDMyICopcy0+YnVmX3B0ciA9IEJ5dGVTd2FwMzIoYml0X2J1Zik7CgogICAgICAgIHMtPmJ1
Zl9wdHIrPTQ7CiAgICAgICAgYml0X2xlZnQrPTMyIC0gbjsKICAgICAgICBiaXRfYnVmID0gdmFs
dWU7CiAgICB9CgogICAgcy0+Yml0X2J1ZiA9IGJpdF9idWY7CiAgICBzLT5iaXRfbGVmdCA9IGJp
dF9sZWZ0Owp9CiMgMzc3ICJjb21tb24uaCIKc3RhdGljIGlubGluZSB1aW50OF90KiBwYkJ1ZlB0
cihQdXRCaXRDb250ZXh0ICpzKQp7CgoKCiAgICAgICAgcmV0dXJuIHMtPmJ1Zl9wdHI7Cgp9CiMg
NDY5ICJjb21tb24uaCIKc3RhdGljIGlubGluZSBpbnQgZ2V0X2JpdHNfY291bnQoR2V0Qml0Q29u
dGV4dCAqcyl7CiAgICByZXR1cm4gcy0+aW5kZXg7Cn0KIyA1ODkgImNvbW1vbi5oIgpzdGF0aWMg
aW5saW5lIHVuc2lnbmVkIGludCBnZXRfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbil7CiAg
ICByZWdpc3RlciBpbnQgdG1wOwogICAgaW50IHJlX2luZGV4PSAocyktPmluZGV4OyBpbnQgcmVf
Y2FjaGU9IDA7CiAgICByZV9jYWNoZT0gQnl0ZVN3YXAzMigoKihVSU5UMzIqKSgoKHVpbnQ4X3Qg
KikocyktPmJ1ZmZlcikrKHJlX2luZGV4Pj4zKSkpKSA8PCAocmVfaW5kZXgmMHgwNyk7CiAgICB0
bXA9IE5FR19VU1IzMihyZV9jYWNoZSwgbik7CiAgICByZV9pbmRleCArPSAobik7CiAgICAocykt
PmluZGV4PSByZV9pbmRleDsKICAgIHJldHVybiB0bXA7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgaW50IHNob3dfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbil7CiAgICByZWdpc3RlciBp
bnQgdG1wOwogICAgaW50IHJlX2luZGV4PSAocyktPmluZGV4OyBpbnQgcmVfY2FjaGU9IDA7CiAg
ICByZV9jYWNoZT0gQnl0ZVN3YXAzMigoKihVSU5UMzIqKSgoKHVpbnQ4X3QgKikocyktPmJ1ZmZl
cikrKHJlX2luZGV4Pj4zKSkpKSA8PCAocmVfaW5kZXgmMHgwNyk7CiAgICB0bXA9IE5FR19VU1Iz
MihyZV9jYWNoZSwgbik7CgogICAgcmV0dXJuIHRtcDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNr
aXBfYml0cyhHZXRCaXRDb250ZXh0ICpzLCBpbnQgbil7CgogICAgaW50IHJlX2luZGV4PSAocykt
PmluZGV4OyBpbnQgcmVfY2FjaGU9IDA7CiAgICByZV9jYWNoZT0gQnl0ZVN3YXAzMigoKihVSU5U
MzIqKSgoKHVpbnQ4X3QgKikocyktPmJ1ZmZlcikrKHJlX2luZGV4Pj4zKSkpKSA8PCAocmVfaW5k
ZXgmMHgwNyk7CiAgICByZV9pbmRleCArPSAobik7CiAgICAocyktPmluZGV4PSByZV9pbmRleDsK
fQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X2JpdHMxKEdldEJpdENvbnRleHQgKnMp
ewoKICAgIGludCBpbmRleD0gcy0+aW5kZXg7CiAgICB1aW50OF90IHJlc3VsdD0gcy0+YnVmZmVy
WyBpbmRleD4+MyBdOwogICAgcmVzdWx0PDw9IChpbmRleCYweDA3KTsKICAgIHJlc3VsdD4+PSA4
IC0gMTsKICAgIGluZGV4Kys7CiAgICBzLT5pbmRleD0gaW5kZXg7CgogICAgcmV0dXJuIHJlc3Vs
dDsKCgoKfQoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc2hvd19iaXRzMShHZXRCaXRDb250
ZXh0ICpzKXsKICAgIHJldHVybiBzaG93X2JpdHMocywgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCBza2lwX2JpdHMxKEdldEJpdENvbnRleHQgKnMpewogICAgc2tpcF9iaXRzKHMsIDEpOwp9Cgp2
b2lkIGluaXRfZ2V0X2JpdHMoR2V0Qml0Q29udGV4dCAqcywKICAgICAgICAgICAgICAgICAgIFVJ
TlQ4ICpidWZmZXIsIGludCBidWZmZXJfc2l6ZSk7CgppbnQgY2hlY2tfbWFya2VyKEdldEJpdENv
bnRleHQgKnMsIGNoYXIgKm1zZyk7CnZvaWQgYWxpZ25fZ2V0X2JpdHMoR2V0Qml0Q29udGV4dCAq
cyk7CmludCBpbml0X3ZsYyhWTEMgKnZsYywgaW50IG5iX2JpdHMsIGludCBuYl9jb2RlcywKICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKmJpdHMsIGludCBiaXRzX3dyYXAsIGludCBiaXRzX3NpemUs
CiAgICAgICAgICAgICBjb25zdCB2b2lkICpjb2RlcywgaW50IGNvZGVzX3dyYXAsIGludCBjb2Rl
c19zaXplKTsKdm9pZCBmcmVlX3ZsYyhWTEMgKnZsYyk7CiMgNzAzICJjb21tb24uaCIKc3RhdGlj
IGlubGluZSBpbnQgZ2V0X3ZsYyhHZXRCaXRDb250ZXh0ICpzLCBWTEMgKnZsYykKewogICAgaW50
IGNvZGU7CiAgICBJTlQxNiAoKnRhYmxlKVsyXT0gdmxjLT50YWJsZTsKCiAgICBpbnQgcmVfaW5k
ZXg9IChzKS0+aW5kZXg7IGludCByZV9jYWNoZT0gMDsKICAgIHJlX2NhY2hlPSBCeXRlU3dhcDMy
KCgqKFVJTlQzMiopKCgodWludDhfdCAqKShzKS0+YnVmZmVyKSsocmVfaW5kZXg+PjMpKSkpIDw8
IChyZV9pbmRleCYweDA3KTsKCiAgICB7IGludCBuLCBpbmRleCwgbmJfYml0czsgaW5kZXg9IE5F
R19VU1IzMihyZV9jYWNoZSwgdmxjLT5iaXRzKTsgY29kZSA9IHRhYmxlW2luZGV4XVswXTsgbiA9
IHRhYmxlW2luZGV4XVsxXTsgaWYoMyA+IDEgJiYgbiA8IDApeyByZV9pbmRleCArPSAodmxjLT5i
aXRzKTsgcmVfY2FjaGU9IEJ5dGVTd2FwMzIoKCooVUlOVDMyKikoKCh1aW50OF90ICopKHMpLT5i
dWZmZXIpKyhyZV9pbmRleD4+MykpKSkgPDwgKHJlX2luZGV4JjB4MDcpOyBuYl9iaXRzID0gLW47
IGluZGV4PSBORUdfVVNSMzIocmVfY2FjaGUsIG5iX2JpdHMpICsgY29kZTsgY29kZSA9IHRhYmxl
W2luZGV4XVswXTsgbiA9IHRhYmxlW2luZGV4XVsxXTsgaWYoMyA+IDIgJiYgbiA8IDApeyByZV9p
bmRleCArPSAobmJfYml0cyk7IHJlX2NhY2hlPSBCeXRlU3dhcDMyKCgqKFVJTlQzMiopKCgodWlu
dDhfdCAqKShzKS0+YnVmZmVyKSsocmVfaW5kZXg+PjMpKSkpIDw8IChyZV9pbmRleCYweDA3KTsg
bmJfYml0cyA9IC1uOyBpbmRleD0gTkVHX1VTUjMyKHJlX2NhY2hlLCBuYl9iaXRzKSArIGNvZGU7
IGNvZGUgPSB0YWJsZVtpbmRleF1bMF07IG4gPSB0YWJsZVtpbmRleF1bMV07IH0gfSB7IHJlX2Nh
Y2hlIDw8PSAobik7IHJlX2luZGV4ICs9IChuKTsgfX0KCiAgICAocyktPmluZGV4PSByZV9pbmRl
eDsKICAgIHJldHVybiBjb2RlOwp9CgpzdGF0aWMgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGlu
ZSkpIGlubGluZSBpbnQgZ2V0X3ZsYzIoR2V0Qml0Q29udGV4dCAqcywgSU5UMTYgKCp0YWJsZSlb
Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYml0cywgaW50IG1heF9k
ZXB0aCkKewogICAgaW50IGNvZGU7CgogICAgaW50IHJlX2luZGV4PSAocyktPmluZGV4OyBpbnQg
cmVfY2FjaGU9IDA7CiAgICByZV9jYWNoZT0gQnl0ZVN3YXAzMigoKihVSU5UMzIqKSgoKHVpbnQ4
X3QgKikocyktPmJ1ZmZlcikrKHJlX2luZGV4Pj4zKSkpKSA8PCAocmVfaW5kZXgmMHgwNyk7Cgog
ICAgeyBpbnQgbiwgaW5kZXgsIG5iX2JpdHM7IGluZGV4PSBORUdfVVNSMzIocmVfY2FjaGUsIGJp
dHMpOyBjb2RlID0gdGFibGVbaW5kZXhdWzBdOyBuID0gdGFibGVbaW5kZXhdWzFdOyBpZihtYXhf
ZGVwdGggPiAxICYmIG4gPCAwKXsgcmVfaW5kZXggKz0gKGJpdHMpOyByZV9jYWNoZT0gQnl0ZVN3
YXAzMigoKihVSU5UMzIqKSgoKHVpbnQ4X3QgKikocyktPmJ1ZmZlcikrKHJlX2luZGV4Pj4zKSkp
KSA8PCAocmVfaW5kZXgmMHgwNyk7IG5iX2JpdHMgPSAtbjsgaW5kZXg9IE5FR19VU1IzMihyZV9j
YWNoZSwgbmJfYml0cykgKyBjb2RlOyBjb2RlID0gdGFibGVbaW5kZXhdWzBdOyBuID0gdGFibGVb
aW5kZXhdWzFdOyBpZihtYXhfZGVwdGggPiAyICYmIG4gPCAwKXsgcmVfaW5kZXggKz0gKG5iX2Jp
dHMpOyByZV9jYWNoZT0gQnl0ZVN3YXAzMigoKihVSU5UMzIqKSgoKHVpbnQ4X3QgKikocyktPmJ1
ZmZlcikrKHJlX2luZGV4Pj4zKSkpKSA8PCAocmVfaW5kZXgmMHgwNyk7IG5iX2JpdHMgPSAtbjsg
aW5kZXg9IE5FR19VU1IzMihyZV9jYWNoZSwgbmJfYml0cykgKyBjb2RlOyBjb2RlID0gdGFibGVb
aW5kZXhdWzBdOyBuID0gdGFibGVbaW5kZXhdWzFdOyB9IH0geyByZV9jYWNoZSA8PD0gKG4pOyBy
ZV9pbmRleCArPSAobik7IH19CgogICAgKHMpLT5pbmRleD0gcmVfaW5kZXg7CiAgICByZXR1cm4g
Y29kZTsKfQojIDc1OCAiY29tbW9uLmgiCnN0YXRpYyBpbmxpbmUgaW50IGF2X2xvZzIodW5zaWdu
ZWQgaW50IHYpCnsKICAgIGludCBuOwoKICAgIG4gPSAwOwogICAgaWYgKHYgJiAweGZmZmYwMDAw
KSB7CiAgICAgICAgdiA+Pj0gMTY7CiAgICAgICAgbiArPSAxNjsKICAgIH0KICAgIGlmICh2ICYg
MHhmZjAwKSB7CiAgICAgICAgdiA+Pj0gODsKICAgICAgICBuICs9IDg7CiAgICB9CiAgICBpZiAo
diAmIDB4ZjApIHsKICAgICAgICB2ID4+PSA0OwogICAgICAgIG4gKz0gNDsKICAgIH0KICAgIGlm
ICh2ICYgMHhjKSB7CiAgICAgICAgdiA+Pj0gMjsKICAgICAgICBuICs9IDI7CiAgICB9CiAgICBp
ZiAodiAmIDB4MikgewogICAgICAgIG4rKzsKICAgIH0KICAgIHJldHVybiBuOwp9CgoKc3RhdGlj
IGlubGluZSBpbnQgbWlkX3ByZWQoaW50IGEsIGludCBiLCBpbnQgYykKewogICAgaW50IHZtaW4s
IHZtYXg7CiAgICB2bWF4ID0gdm1pbiA9IGE7CiAgICBpZiAoYiA8IHZtaW4pCiAgICAgICAgdm1p
biA9IGI7CiAgICBlbHNlCiAgICAgICAgdm1heCA9IGI7CgogICAgaWYgKGMgPCB2bWluKQogICAg
ICAgIHZtaW4gPSBjOwogICAgZWxzZSBpZiAoYyA+IHZtYXgpCiAgICAgICAgdm1heCA9IGM7Cgog
ICAgcmV0dXJuIGEgKyBiICsgYyAtIHZtaW4gLSB2bWF4Owp9CgpzdGF0aWMgaW5saW5lIGludCBj
bGlwKGludCBhLCBpbnQgYW1pbiwgaW50IGFtYXgpCnsKICAgIGlmIChhIDwgYW1pbikKICAgICAg
ICByZXR1cm4gYW1pbjsKICAgIGVsc2UgaWYgKGEgPiBhbWF4KQogICAgICAgIHJldHVybiBhbWF4
OwogICAgZWxzZQogICAgICAgIHJldHVybiBhOwp9CgoKZXh0ZXJuIGNvbnN0IFVJTlQ4IGZmX3Nx
cnRfdGFiWzEyOF07CgppbnQgZmZfZ2NkKGludCBhLCBpbnQgYik7CgpzdGF0aWMgaW5saW5lIGlu
dCBmZl9zcXJ0KGludCBhKQp7CiAgICBpbnQgcmV0PTA7CiAgICBpbnQgczsKICAgIGludCByZXRf
c3E9MDsKCiAgICBpZihhPDEyOCkgcmV0dXJuIGZmX3NxcnRfdGFiW2FdOwoKICAgIGZvcihzPTE1
OyBzPj0wOyBzLS0pewogICAgICAgIGludCBiPSByZXRfc3EgKyAoMTw8KHMqMikpICsgKHJldDw8
cykqMjsKICAgICAgICBpZihiPD1hKXsKICAgICAgICAgICAgcmV0X3NxPWI7CiAgICAgICAgICAg
IHJldCs9IDE8PHM7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJldDsKfQoKCgoKc3RhdGlj
IGlubGluZSBpbnQgZmZfZ2V0X2ZvdXJjYyhjaGFyICpzKXsKICAgICgodm9pZCkgKDApKTsKCiAg
ICByZXR1cm4gKHNbMF0pICsgKHNbMV08PDgpICsgKHNbMl08PDE2KSArIChzWzNdPDwyNCk7Cn0K
IyA1ICJhdmNvZGVjLmgiIDIKCgoKCgoKZW51bSBDb2RlY0lEIHsKICAgIENPREVDX0lEX05PTkUs
CiAgICBDT0RFQ19JRF9NUEVHMVZJREVPLAogICAgQ09ERUNfSURfSDI2MywKICAgIENPREVDX0lE
X1JWMTAsCiAgICBDT0RFQ19JRF9NUDIsCiAgICBDT0RFQ19JRF9NUDNMQU1FLAogICAgQ09ERUNf
SURfVk9SQklTLAogICAgQ09ERUNfSURfQUMzLAogICAgQ09ERUNfSURfTUpQRUcsCiAgICBDT0RF
Q19JRF9NUEVHNCwKICAgIENPREVDX0lEX1JBV1ZJREVPLAogICAgQ09ERUNfSURfTVNNUEVHNFYx
LAogICAgQ09ERUNfSURfTVNNUEVHNFYyLAogICAgQ09ERUNfSURfTVNNUEVHNFYzLAogICAgQ09E
RUNfSURfV01WMSwKICAgIENPREVDX0lEX1dNVjIsCiAgICBDT0RFQ19JRF9IMjYzUCwKICAgIENP
REVDX0lEX0gyNjNJLAogICAgQ09ERUNfSURfU1ZRMSwKICAgIENPREVDX0lEX0RWVklERU8sCiAg
ICBDT0RFQ19JRF9EVkFVRElPLAogICAgQ09ERUNfSURfV01BVjEsCiAgICBDT0RFQ19JRF9XTUFW
MiwKICAgIENPREVDX0lEX01BQ0UzLAogICAgQ09ERUNfSURfTUFDRTYsCgoKICAgIENPREVDX0lE
X1BDTV9TMTZMRSwKICAgIENPREVDX0lEX1BDTV9TMTZCRSwKICAgIENPREVDX0lEX1BDTV9VMTZM
RSwKICAgIENPREVDX0lEX1BDTV9VMTZCRSwKICAgIENPREVDX0lEX1BDTV9TOCwKICAgIENPREVD
X0lEX1BDTV9VOCwKICAgIENPREVDX0lEX1BDTV9NVUxBVywKICAgIENPREVDX0lEX1BDTV9BTEFX
LAoKCiAgICBDT0RFQ19JRF9BRFBDTV9JTUFfUVQsCiAgICBDT0RFQ19JRF9BRFBDTV9JTUFfV0FW
LAogICAgQ09ERUNfSURfQURQQ01fTVMsCn07CgplbnVtIENvZGVjVHlwZSB7CiAgICBDT0RFQ19U
WVBFX1VOS05PV04gPSAtMSwKICAgIENPREVDX1RZUEVfVklERU8sCiAgICBDT0RFQ19UWVBFX0FV
RElPLAp9OwoKZW51bSBQaXhlbEZvcm1hdCB7CiAgICBQSVhfRk1UX0FOWSA9IC0xLAogICAgUElY
X0ZNVF9ZVVY0MjBQLAogICAgUElYX0ZNVF9ZVVY0MjIsCiAgICBQSVhfRk1UX1JHQjI0LAogICAg
UElYX0ZNVF9CR1IyNCwKICAgIFBJWF9GTVRfWVVWNDIyUCwKICAgIFBJWF9GTVRfWVVWNDQ0UCwK
ICAgIFBJWF9GTVRfUkdCQTMyLAogICAgUElYX0ZNVF9CR1JBMzIsCiAgICBQSVhfRk1UX1lVVjQx
MFAsCiAgICBQSVhfRk1UX1lVVjQxMVAKfTsKCgplbnVtIFNhbXBsZUZvcm1hdCB7CiAgICBTQU1Q
TEVfRk1UX1MxNiA9IDAsCn07CiMgODkgImF2Y29kZWMuaCIKZW51bSBNb3Rpb25fRXN0X0lEIHsK
ICAgIE1FX1pFUk8gPSAxLAogICAgTUVfRlVMTCwKICAgIE1FX0xPRywKICAgIE1FX1BIT0RTLAog
ICAgTUVfRVBaUywKICAgIE1FX1gxCn07Cgp0eXBlZGVmIHN0cnVjdCBSY092ZXJyaWRlewogICAg
aW50IHN0YXJ0X2ZyYW1lOwogICAgaW50IGVuZF9mcmFtZTsKICAgIGludCBxc2NhbGU7CiAgICBm
bG9hdCBxdWFsaXR5X2ZhY3RvcjsKfSBSY092ZXJyaWRlOwoKCmV4dGVybiBpbnQgbW90aW9uX2Vz
dGltYXRpb25fbWV0aG9kOwoKCnN0YXRpYyBjb25zdCBpbnQgTW90aW9uX0VzdF9RVGFiW10gPSB7
IE1FX1pFUk8sIE1FX1BIT0RTLCBNRV9MT0csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1FX1gxLCBNRV9FUFpTLCBNRV9GVUxMIH07CiMgMTUyICJhdmNvZGVjLmgiCnR5
cGVkZWYgc3RydWN0IEFWQ29kZWNDb250ZXh0IHsKCgoKCgogICAgaW50IGJpdF9yYXRlOwoKCgoK
CgoKICAgIGludCBiaXRfcmF0ZV90b2xlcmFuY2U7CgoKCgoKCiAgICBpbnQgZmxhZ3M7CgoKCgoK
CiAgICBpbnQgc3ViX2lkOwoKCgoKCgogICAgaW50IG1lX21ldGhvZDsKIyAxOTcgImF2Y29kZWMu
aCIKICAgIHZvaWQgKmV4dHJhZGF0YTsKICAgIGludCBleHRyYWRhdGFfc2l6ZTsKIyAyMDggImF2
Y29kZWMuaCIKICAgIGludCBmcmFtZV9yYXRlOwoKCgoKCiAgICBpbnQgd2lkdGgsIGhlaWdodDsK
CgoKCgogICAgaW50IGFzcGVjdF9yYXRpb19pbmZvOwojIDIzMyAiYXZjb2RlYy5oIgogICAgaW50
IGdvcF9zaXplOwoKCgoKCgogICAgZW51bSBQaXhlbEZvcm1hdCBwaXhfZm10OwoKICAgIGludCBy
ZXBlYXRfcGljdDsKIyAyNTQgImF2Y29kZWMuaCIKICAgIHZvaWQgKCpkcmF3X2hvcml6X2JhbmQp
KHN0cnVjdCBBVkNvZGVjQ29udGV4dCAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJ
TlQ4ICoqc3JjX3B0ciwgaW50IGxpbmVzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CgoKICAgIGludCBzYW1wbGVfcmF0ZTsKICAg
IGludCBjaGFubmVsczsKICAgIGludCBzYW1wbGVfZm10OwoKCiAgICBpbnQgZnJhbWVfc2l6ZTsK
ICAgIGludCBmcmFtZV9udW1iZXI7CiAgICBpbnQgcmVhbF9waWN0X251bTsKCgoKCgoKCiAgICBp
bnQga2V5X2ZyYW1lOwoKCgoKCgogICAgaW50IHBpY3RfdHlwZTsKIyAyOTQgImF2Y29kZWMuaCIK
ICAgIGludCBkZWxheTsKCgoKCgoKCiAgICB1aW50OF90ICptYnNraXBfdGFibGU7CgoKCgoKCgog
ICAgaW50IHF1YWxpdHk7CgoKCiAgICBmbG9hdCBxY29tcHJlc3M7CiAgICBmbG9hdCBxYmx1cjsK
CgoKCgoKICAgIGludCBxbWluOwoKCgoKCgogICAgaW50IHFtYXg7CgoKCgoKCiAgICBpbnQgbWF4
X3FkaWZmOwoKCgoKCgoKICAgIGludCBtYXhfYl9mcmFtZXM7CgoKCgoKCiAgICBmbG9hdCBiX3F1
YW50X2ZhY3RvcjsKCgogICAgaW50IHJjX3N0cmF0ZWd5OwogICAgaW50IGJfZnJhbWVfc3RyYXRl
Z3k7CgoKCgoKICAgIGludCBodXJyeV91cDsKCiAgICBzdHJ1Y3QgQVZDb2RlYyAqY29kZWM7Cgog
ICAgdm9pZCAqcHJpdl9kYXRhOwoKCgogICAgaW50IHJ0cF9tb2RlOwoKCgogICAgaW50IHJ0cF9w
YXlsb2FkX3NpemU7CiMgMzg1ICJhdmNvZGVjLmgiCiAgICB2b2lkICgqcnRwX2NhbGxiYWNrKSh2
b2lkICpkYXRhLCBpbnQgc2l6ZSwgaW50IHBhY2tldF9udW1iZXIpOwoKCgoKCgoKICAgIGludCBn
ZXRfcHNucjsKICAgIGZsb2F0IHBzbnJfeTsKICAgIGZsb2F0IHBzbnJfY2I7CiAgICBmbG9hdCBw
c25yX2NyOwoKCiAgICBpbnQgbXZfYml0czsKICAgIGludCBoZWFkZXJfYml0czsKICAgIGludCBp
X3RleF9iaXRzOwogICAgaW50IHBfdGV4X2JpdHM7CiAgICBpbnQgaV9jb3VudDsKICAgIGludCBw
X2NvdW50OwogICAgaW50IHNraXBfY291bnQ7CiAgICBpbnQgbWlzY19iaXRzOwoKCgoKCgogICAg
aW50IGZyYW1lX2JpdHM7CgoKCgoKCiAgICB2b2lkICpvcGFxdWU7CgogICAgY2hhciBjb2RlY19u
YW1lWzMyXTsKICAgIGVudW0gQ29kZWNUeXBlIGNvZGVjX3R5cGU7CiAgICBlbnVtIENvZGVjSUQg
Y29kZWNfaWQ7CiAgICB1bnNpZ25lZCBpbnQgY29kZWNfdGFnOwoKCgoKCgogICAgaW50IHdvcmth
cm91bmRfYnVnczsKIyA0NDYgImF2Y29kZWMuaCIKICAgIGludCBsdW1hX2VsaW1fdGhyZXNob2xk
OwoKCgoKCiAgICBpbnQgY2hyb21hX2VsaW1fdGhyZXNob2xkOwoKCgoKCgogICAgaW50IHN0cmlj
dF9zdGRfY29tcGxpYW5jZTsKIyA0NjggImF2Y29kZWMuaCIKICAgIGZsb2F0IGJfcXVhbnRfb2Zm
c2V0OwoKCgoKCgoKICAgIGludCBlcnJvcl9yZXNpbGllbmNlOwoKCgoKICAgIGludCAqcXVhbnRf
c3RvcmU7CgoKCgoKCiAgICBpbnQgcXN0cmlkZTsKIyA0OTcgImF2Y29kZWMuaCIKICAgIHVpbnQ4
X3QgKmRyX2J1ZmZlclszXTsKCgoKCgoKICAgIGludCBkcl9zdHJpZGU7CgoKCgoKCiAgICB2b2lk
ICpkcl9vcGFxdWVfZnJhbWU7CgoKCgoKCiAgICBpbnQgKCpnZXRfYnVmZmVyX2NhbGxiYWNrKShz
dHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmMsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHBpY3Rf
dHlwZSk7CgoKCgoKCiAgICBpbnQgaGFzX2JfZnJhbWVzOwoKCgoKCgogICAgaW50IGRyX3V2c3Ry
aWRlOwoKCgoKCgogICAgaW50IGRyX2lwX2J1ZmZlcl9jb3VudDsKCiAgICBpbnQgYmxvY2tfYWxp
Z247CgogICAgaW50IHBhcnNlX29ubHk7CiMgNTUyICJhdmNvZGVjLmgiCiAgICBpbnQgbXBlZ19x
dWFudDsKCgoKCgoKICAgIGNoYXIgKnN0YXRzX291dDsKCgoKCgoKCiAgICBjaGFyICpzdGF0c19p
bjsKCgoKCgoKCiAgICBmbG9hdCByY19xc3F1aXNoOwoKICAgIGZsb2F0IHJjX3Ftb2RfYW1wOwog
ICAgaW50IHJjX3Ftb2RfZnJlcTsKCgoKCgoKICAgIFJjT3ZlcnJpZGUgKnJjX292ZXJyaWRlOwog
ICAgaW50IHJjX292ZXJyaWRlX2NvdW50OwoKCgoKCgogICAgY2hhciAqcmNfZXE7CgoKCgoKCiAg
ICBpbnQgcmNfbWF4X3JhdGU7CgoKCgoKCiAgICBpbnQgcmNfbWluX3JhdGU7CgoKCgoKCiAgICBp
bnQgcmNfYnVmZmVyX3NpemU7CiAgICBmbG9hdCByY19idWZmZXJfYWdncmVzc2l2aXR5OwoKCgoK
CgogICAgZmxvYXQgaV9xdWFudF9mYWN0b3I7CiMgNjMxICJhdmNvZGVjLmgiCiAgICBmbG9hdCBp
X3F1YW50X29mZnNldDsKCgoKCgoKICAgIGZsb2F0IHJjX2luaXRpYWxfY3BseDsKCgoKCgoKICAg
IGludCBhc3BlY3RlZF93aWR0aDsKICAgIGludCBhc3BlY3RlZF9oZWlnaHQ7CgoKCgoKCiAgICBp
bnQgZGN0X2FsZ287CiMgNjY3ICJhdmNvZGVjLmgiCiAgICBsb25nIGxvbmcgaW50IHB0czsKCgoK
CgoKICAgIGZsb2F0IGx1bWlfbWFza2luZzsKCgoKCgoKICAgIGZsb2F0IHRlbXBvcmFsX2NwbHhf
bWFza2luZzsKCgoKCgoKICAgIGZsb2F0IHNwYXRpYWxfY3BseF9tYXNraW5nOwoKCgoKCgogICAg
ZmxvYXQgcF9tYXNraW5nOwoKCgoKCgogICAgZmxvYXQgZGFya19tYXNraW5nOwoKCgoKCgoKICAg
IGludCBmb3VyY2M7CgoKCgoKCiAgICBpbnQgaWRjdF9hbGdvOwojIDczMyAiYXZjb2RlYy5oIgog
ICAgaW50IHNsaWNlX2NvdW50OwoKCgoKCiAgICBpbnQgKnNsaWNlX29mZnNldDsKCgoKCgoKICAg
IGludCBlcnJvcl9jb25jZWFsbWVudDsKIyA3NTUgImF2Y29kZWMuaCIKICAgICBpbnQ4X3QgKmN1
cnJlbnRfcXNjYWxlX3RhYmxlOwoKCgoKCiAgICAgaW50OF90ICpkaXNwbGF5X3FzY2FsZV90YWJs
ZTsKCgoKCgoKICAgIGludCBmb3JjZV90eXBlOwp9IEFWQ29kZWNDb250ZXh0OwoKdHlwZWRlZiBz
dHJ1Y3QgQVZDb2RlYyB7CiAgICBjaGFyICpuYW1lOwogICAgaW50IHR5cGU7CiAgICBpbnQgaWQ7
CiAgICBpbnQgcHJpdl9kYXRhX3NpemU7CiAgICBpbnQgKCppbml0KShBVkNvZGVjQ29udGV4dCAq
KTsKICAgIGludCAoKmVuY29kZSkoQVZDb2RlY0NvbnRleHQgKiwgVUlOVDggKmJ1ZiwgaW50IGJ1
Zl9zaXplLCB2b2lkICpkYXRhKTsKICAgIGludCAoKmNsb3NlKShBVkNvZGVjQ29udGV4dCAqKTsK
ICAgIGludCAoKmRlY29kZSkoQVZDb2RlY0NvbnRleHQgKiwgdm9pZCAqb3V0ZGF0YSwgaW50ICpv
dXRkYXRhX3NpemUsCiAgICAgICAgICAgICAgICAgIFVJTlQ4ICpidWYsIGludCBidWZfc2l6ZSk7
CiAgICBpbnQgY2FwYWJpbGl0aWVzOwogICAgc3RydWN0IEFWQ29kZWMgKm5leHQ7Cn0gQVZDb2Rl
YzsKCgoKCgp0eXBlZGVmIHN0cnVjdCBBVlBpY3R1cmUgewogICAgVUlOVDggKmRhdGFbNF07CiAg
ICBpbnQgbGluZXNpemVbNF07Cn0gQVZQaWN0dXJlOwoKZXh0ZXJuIEFWQ29kZWMgYWMzX2VuY29k
ZXI7CmV4dGVybiBBVkNvZGVjIG1wMl9lbmNvZGVyOwpleHRlcm4gQVZDb2RlYyBtcDNsYW1lX2Vu
Y29kZXI7CmV4dGVybiBBVkNvZGVjIG9nZ3ZvcmJpc19lbmNvZGVyOwpleHRlcm4gQVZDb2RlYyBt
cGVnMXZpZGVvX2VuY29kZXI7CmV4dGVybiBBVkNvZGVjIGgyNjNfZW5jb2RlcjsKZXh0ZXJuIEFW
Q29kZWMgaDI2M3BfZW5jb2RlcjsKZXh0ZXJuIEFWQ29kZWMgcnYxMF9lbmNvZGVyOwpleHRlcm4g
QVZDb2RlYyBtanBlZ19lbmNvZGVyOwpleHRlcm4gQVZDb2RlYyBtcGVnNF9lbmNvZGVyOwpleHRl
cm4gQVZDb2RlYyBtc21wZWc0djFfZW5jb2RlcjsKZXh0ZXJuIEFWQ29kZWMgbXNtcGVnNHYyX2Vu
Y29kZXI7CmV4dGVybiBBVkNvZGVjIG1zbXBlZzR2M19lbmNvZGVyOwpleHRlcm4gQVZDb2RlYyB3
bXYxX2VuY29kZXI7CmV4dGVybiBBVkNvZGVjIHdtdjJfZW5jb2RlcjsKCmV4dGVybiBBVkNvZGVj
IGgyNjNfZGVjb2RlcjsKZXh0ZXJuIEFWQ29kZWMgbXBlZzRfZGVjb2RlcjsKZXh0ZXJuIEFWQ29k
ZWMgbXNtcGVnNHYxX2RlY29kZXI7CmV4dGVybiBBVkNvZGVjIG1zbXBlZzR2Ml9kZWNvZGVyOwpl
eHRlcm4gQVZDb2RlYyBtc21wZWc0djNfZGVjb2RlcjsKZXh0ZXJuIEFWQ29kZWMgd212MV9kZWNv
ZGVyOwpleHRlcm4gQVZDb2RlYyB3bXYyX2RlY29kZXI7CmV4dGVybiBBVkNvZGVjIG1wZWdfZGVj
b2RlcjsKZXh0ZXJuIEFWQ29kZWMgaDI2M2lfZGVjb2RlcjsKZXh0ZXJuIEFWQ29kZWMgcnYxMF9k
ZWNvZGVyOwpleHRlcm4gQVZDb2RlYyBzdnExX2RlY29kZXI7CmV4dGVybiBBVkNvZGVjIGR2dmlk
ZW9fZGVjb2RlcjsKZXh0ZXJuIEFWQ29kZWMgZHZhdWRpb19kZWNvZGVyOwpleHRlcm4gQVZDb2Rl
YyB3bWF2MV9kZWNvZGVyOwpleHRlcm4gQVZDb2RlYyB3bWF2Ml9kZWNvZGVyOwpleHRlcm4gQVZD
b2RlYyBtanBlZ19kZWNvZGVyOwpleHRlcm4gQVZDb2RlYyBtcDJfZGVjb2RlcjsKZXh0ZXJuIEFW
Q29kZWMgbXAzX2RlY29kZXI7CmV4dGVybiBBVkNvZGVjIG1hY2UzX2RlY29kZXI7CmV4dGVybiBB
VkNvZGVjIG1hY2U2X2RlY29kZXI7CgoKCgoKCmV4dGVybiBBVkNvZGVjIHBjbV9zMTZsZV9kZWNv
ZGVyOyBleHRlcm4gQVZDb2RlYyBwY21fczE2bGVfZW5jb2RlcjsKZXh0ZXJuIEFWQ29kZWMgcGNt
X3MxNmJlX2RlY29kZXI7IGV4dGVybiBBVkNvZGVjIHBjbV9zMTZiZV9lbmNvZGVyOwpleHRlcm4g
QVZDb2RlYyBwY21fdTE2bGVfZGVjb2RlcjsgZXh0ZXJuIEFWQ29kZWMgcGNtX3UxNmxlX2VuY29k
ZXI7CmV4dGVybiBBVkNvZGVjIHBjbV91MTZiZV9kZWNvZGVyOyBleHRlcm4gQVZDb2RlYyBwY21f
dTE2YmVfZW5jb2RlcjsKZXh0ZXJuIEFWQ29kZWMgcGNtX3M4X2RlY29kZXI7IGV4dGVybiBBVkNv
ZGVjIHBjbV9zOF9lbmNvZGVyOwpleHRlcm4gQVZDb2RlYyBwY21fdThfZGVjb2RlcjsgZXh0ZXJu
IEFWQ29kZWMgcGNtX3U4X2VuY29kZXI7CmV4dGVybiBBVkNvZGVjIHBjbV9hbGF3X2RlY29kZXI7
IGV4dGVybiBBVkNvZGVjIHBjbV9hbGF3X2VuY29kZXI7CmV4dGVybiBBVkNvZGVjIHBjbV9tdWxh
d19kZWNvZGVyOyBleHRlcm4gQVZDb2RlYyBwY21fbXVsYXdfZW5jb2RlcjsKCgoKZXh0ZXJuIEFW
Q29kZWMgYWRwY21faW1hX3F0X2RlY29kZXI7IGV4dGVybiBBVkNvZGVjIGFkcGNtX2ltYV9xdF9l
bmNvZGVyOwpleHRlcm4gQVZDb2RlYyBhZHBjbV9pbWFfd2F2X2RlY29kZXI7IGV4dGVybiBBVkNv
ZGVjIGFkcGNtX2ltYV93YXZfZW5jb2RlcjsKZXh0ZXJuIEFWQ29kZWMgYWRwY21fbXNfZGVjb2Rl
cjsgZXh0ZXJuIEFWQ29kZWMgYWRwY21fbXNfZW5jb2RlcjsKCgoKCmV4dGVybiBBVkNvZGVjIHJh
d3ZpZGVvX2NvZGVjOwoKCmV4dGVybiBBVkNvZGVjIGFjM19kZWNvZGVyOwoKCgpzdHJ1Y3QgUmVT
YW1wbGVDb250ZXh0OwoKdHlwZWRlZiBzdHJ1Y3QgUmVTYW1wbGVDb250ZXh0IFJlU2FtcGxlQ29u
dGV4dDsKClJlU2FtcGxlQ29udGV4dCAqYXVkaW9fcmVzYW1wbGVfaW5pdChpbnQgb3V0cHV0X2No
YW5uZWxzLCBpbnQgaW5wdXRfY2hhbm5lbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgb3V0cHV0X3JhdGUsIGludCBpbnB1dF9yYXRlKTsKaW50IGF1ZGlvX3Jlc2Ft
cGxlKFJlU2FtcGxlQ29udGV4dCAqcywgc2hvcnQgKm91dHB1dCwgc2hvcnQgKmlucHV0LCBpbnQg
bmJfc2FtcGxlcyk7CnZvaWQgYXVkaW9fcmVzYW1wbGVfY2xvc2UoUmVTYW1wbGVDb250ZXh0ICpz
KTsKCgoKc3RydWN0IEltZ1JlU2FtcGxlQ29udGV4dDsKCnR5cGVkZWYgc3RydWN0IEltZ1JlU2Ft
cGxlQ29udGV4dCBJbWdSZVNhbXBsZUNvbnRleHQ7CgpJbWdSZVNhbXBsZUNvbnRleHQgKmltZ19y
ZXNhbXBsZV9pbml0KGludCBvdXRwdXRfd2lkdGgsIGludCBvdXRwdXRfaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dF93aWR0aCwgaW50IGlucHV0
X2hlaWdodCk7CgpJbWdSZVNhbXBsZUNvbnRleHQgKmltZ19yZXNhbXBsZV9mdWxsX2luaXQoaW50
IG93aWR0aCwgaW50IG9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGl3aWR0aCwgaW50IGloZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHRvcEJhbmQsIGludCBib3R0b21CYW5kLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBsZWZ0QmFuZCwgaW50IHJpZ2h0QmFuZCk7Cgp2b2lkIGlt
Z19yZXNhbXBsZShJbWdSZVNhbXBsZUNvbnRleHQgKnMsCiAgICAgICAgICAgICAgICAgIEFWUGlj
dHVyZSAqb3V0cHV0LCBBVlBpY3R1cmUgKmlucHV0KTsKCnZvaWQgaW1nX3Jlc2FtcGxlX2Nsb3Nl
KEltZ1JlU2FtcGxlQ29udGV4dCAqcyk7Cgp2b2lkIGF2cGljdHVyZV9maWxsKEFWUGljdHVyZSAq
cGljdHVyZSwgVUlOVDggKnB0ciwKICAgICAgICAgICAgICAgICAgICBpbnQgcGl4X2ZtdCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KTsKaW50IGF2cGljdHVyZV9nZXRfc2l6ZShpbnQgcGl4X2ZtdCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKCgppbnQgaW1nX2NvbnZlcnQoQVZQaWN0dXJlICpkc3Qs
IGludCBkc3RfcGl4X2ZtdCwKICAgICAgICAgICAgICAgIEFWUGljdHVyZSAqc3JjLCBpbnQgcGl4
X2ZtdCwKICAgICAgICAgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCk7CgoKaW50IGF2cGlj
dHVyZV9kZWludGVybGFjZShBVlBpY3R1cmUgKmRzdCwgQVZQaWN0dXJlICpzcmMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHBpeF9mbXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CgoK
CmV4dGVybiBBVkNvZGVjICpmaXJzdF9hdmNvZGVjOwoKCnVuc2lnbmVkIGF2Y29kZWNfdmVyc2lv
bih2b2lkKTsKCnVuc2lnbmVkIGF2Y29kZWNfYnVpbGQodm9pZCk7CnZvaWQgYXZjb2RlY19pbml0
KHZvaWQpOwoKdm9pZCBhdmNvZGVjX3NldF9iaXRfZXhhY3Qodm9pZCk7Cgp2b2lkIHJlZ2lzdGVy
X2F2Y29kZWMoQVZDb2RlYyAqZm9ybWF0KTsKQVZDb2RlYyAqYXZjb2RlY19maW5kX2VuY29kZXIo
ZW51bSBDb2RlY0lEIGlkKTsKQVZDb2RlYyAqYXZjb2RlY19maW5kX2VuY29kZXJfYnlfbmFtZShj
b25zdCBjaGFyICpuYW1lKTsKQVZDb2RlYyAqYXZjb2RlY19maW5kX2RlY29kZXIoZW51bSBDb2Rl
Y0lEIGlkKTsKQVZDb2RlYyAqYXZjb2RlY19maW5kX2RlY29kZXJfYnlfbmFtZShjb25zdCBjaGFy
ICpuYW1lKTsKdm9pZCBhdmNvZGVjX3N0cmluZyhjaGFyICpidWYsIGludCBidWZfc2l6ZSwgQVZD
b2RlY0NvbnRleHQgKmVuYywgaW50IGVuY29kZSk7CgpBVkNvZGVjQ29udGV4dCAqYXZjb2RlY19h
bGxvY19jb250ZXh0KHZvaWQpOwppbnQgYXZjb2RlY19vcGVuKEFWQ29kZWNDb250ZXh0ICphdmN0
eCwgQVZDb2RlYyAqY29kZWMpOwppbnQgYXZjb2RlY19kZWNvZGVfYXVkaW8oQVZDb2RlY0NvbnRl
eHQgKmF2Y3R4LCBJTlQxNiAqc2FtcGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
ZnJhbWVfc2l6ZV9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UOCAqYnVmLCBpbnQg
YnVmX3NpemUpOwppbnQgYXZjb2RlY19kZWNvZGVfdmlkZW8oQVZDb2RlY0NvbnRleHQgKmF2Y3R4
LCBBVlBpY3R1cmUgKnBpY3R1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmdvdF9w
aWN0dXJlX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQ4ICpidWYsIGludCBidWZf
c2l6ZSk7CmludCBhdmNvZGVjX3BhcnNlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgVUlO
VDggKipwZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpkYXRhX3NpemVfcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICBVSU5UOCAqYnVmLCBpbnQgYnVmX3NpemUpOwppbnQgYXZj
b2RlY19lbmNvZGVfYXVkaW8oQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBVSU5UOCAqYnVmLCBpbnQg
YnVmX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9ydCAqc2FtcGxlcyk7
CmludCBhdmNvZGVjX2VuY29kZV92aWRlbyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIFVJTlQ4ICpi
dWYsIGludCBidWZfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWUGljdHVy
ZSAqcGljdCk7CgppbnQgYXZjb2RlY19jbG9zZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpOwoKdm9p
ZCBhdmNvZGVjX3JlZ2lzdGVyX2FsbCh2b2lkKTsKCnZvaWQgYXZjb2RlY19mbHVzaF9idWZmZXJz
KEFWQ29kZWNDb250ZXh0ICphdmN0eCk7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgaW50
IHNpemU7CgogICAgaW50IGZyYW1lX3R5cGU7Cn0gYXZjX2VuY19yZXN1bHRfdDsKCgoKCgp0eXBl
ZGVmIGVudW0gewoKICAgIEFWQ19PUEVOX0JZX05BTUUgPSAweEFDQTAwMCwKICAgIEFWQ19PUEVO
X0JZX0NPREVDX0lELAogICAgQVZDX09QRU5fQllfRk9VUkNDLAogICAgQVZDX0NMT1NFLAoKICAg
IEFWQ19GTFVTSCwKCgogICAgQVZDX0RFQ09ERSwKCgogICAgQVZDX0VOQ09ERSwKCgogICAgQVZD
X0dFVF9WRVJTSU9OID0gMHhBQ0IwMDAsCiAgICBBVkNfR0VUX1dJRFRILAogICAgQVZDX0dFVF9I
RUlHSFQsCiAgICBBVkNfR0VUX0RFTEFZLAogICAgQVZDX0dFVF9RVUFOVF9UQUJMRSwKCgoKICAg
IEFWQ19HRVRfRlJBTUVfU0laRSA9IDB4QUJDMDAwLAoKCgoKCgoKICAgIEFWQ19TRVRfV0lEVEgg
PSAweEFDRDAwMCwKICAgIEFWQ19TRVRfSEVJR0hULAoKCiAgICBBVkNfU0VUX0ZSQU1FX1JBVEUg
PSAweEFDRDgwMCwKICAgIEFWQ19TRVRfUVVBTElUWSwKICAgIEFWQ19TRVRfSFVSUllfVVAsCgoK
ICAgIEFWQ19TRVRfU0FNUExFX1JBVEUgPSAweEFDRTAwMCwKICAgIEFWQ19TRVRfQ0hBTk5FTFMs
Cgp9IGF2Y19jbWRfdDsKIyAxMDE3ICJhdmNvZGVjLmgiCmludCBhdmNvZGVjKHZvaWQqIGhhbmRs
ZSwgYXZjX2NtZF90IGNtZCwgdm9pZCogcGluLCB2b2lkKiBwb3V0KTsKCgp2b2lkICphdl9tYWxs
b2MoaW50IHNpemUpOwp2b2lkICphdl9tYWxsb2N6KGludCBzaXplKTsKdm9pZCBhdl9mcmVlKHZv
aWQgKnB0cik7CnZvaWQgX19hdl9mcmVlcCh2b2lkICoqcHRyKTsKIyAyMCAidXRpbHMuYyIgMgoj
IDEgImRzcHV0aWwuaCIgMQojIDI3ICJkc3B1dGlsLmgiCnR5cGVkZWYgc2hvcnQgRENURUxFTTsK
CnZvaWQgZmRjdF9pZmFzdCAoRENURUxFTSAqZGF0YSk7CnZvaWQgZmZfanBlZ19mZGN0X2lzbG93
IChEQ1RFTEVNICpkYXRhKTsKCnZvaWQgal9yZXZfZGN0IChEQ1RFTEVNICpkYXRhKTsKCnZvaWQg
ZmZfZmRjdF9tbXgoRENURUxFTSAqYmxvY2spOwoKCmV4dGVybiBjb25zdCBVSU5UOCBmZl9hbHRl
cm5hdGVfaG9yaXpvbnRhbF9zY2FuWzY0XTsKZXh0ZXJuIGNvbnN0IFVJTlQ4IGZmX2FsdGVybmF0
ZV92ZXJ0aWNhbF9zY2FuWzY0XTsKZXh0ZXJuIGNvbnN0IFVJTlQ4IGZmX3ppZ3phZ19kaXJlY3Rb
NjRdOwoKCgoKCmV4dGVybiBVSU5UMzIgc3F1YXJlVGJsWzUxMl07CmV4dGVybiBVSU5UOCBjcm9w
VGJsWzI1NiArIDIgKiAzODRdOwoKdm9pZCBkc3B1dGlsX2luaXQodm9pZCk7CiMgNjEgImRzcHV0
aWwuaCIKZXh0ZXJuIHZvaWQgKCpnZXRfcGl4ZWxzKShEQ1RFTEVNICpibG9jayAsIGNvbnN0IFVJ
TlQ4ICpwaXhlbHMgLCBpbnQgbGluZV9zaXplKTsKZXh0ZXJuIHZvaWQgKCpkaWZmX3BpeGVscyko
RENURUxFTSAqYmxvY2sgLCBjb25zdCBVSU5UOCAqczEgLCBjb25zdCBVSU5UOCAqczIgLCBpbnQg
c3RyaWRlKTsKZXh0ZXJuIHZvaWQgKCpwdXRfcGl4ZWxzX2NsYW1wZWQpKGNvbnN0IERDVEVMRU0g
KmJsb2NrICwgVUlOVDggKnBpeGVscyAsIGludCBsaW5lX3NpemUpOwpleHRlcm4gdm9pZCAoKmFk
ZF9waXhlbHNfY2xhbXBlZCkoY29uc3QgRENURUxFTSAqYmxvY2sgLCBVSU5UOCAqcGl4ZWxzICwg
aW50IGxpbmVfc2l6ZSk7CmV4dGVybiB2b2lkICgqZmZfZ21jMSkoVUlOVDggKmRzdCAsIFVJTlQ4
ICpzcmMgLCBpbnQgc3JjU3RyaWRlLCBpbnQgaCwgaW50IHgxNiwgaW50IHkxNiwgaW50IHJvdW5k
ZXIpOwpleHRlcm4gdm9pZCAoKmZmX2dtYyApKFVJTlQ4ICpkc3QgLCBVSU5UOCAqc3JjICwgaW50
IHN0cmlkZSwgaW50IGgsIGludCBveCwgaW50IG95LAogICAgICAgICAgICAgICAgICBpbnQgZHh4
LCBpbnQgZHh5LCBpbnQgZHl4LCBpbnQgZHl5LCBpbnQgc2hpZnQsIGludCByLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpOwpleHRlcm4gdm9pZCAoKmNsZWFyX2Jsb2NrcykoRENURUxFTSAqYmxvY2tz
ICk7CmV4dGVybiBpbnQgKCpwaXhfc3VtKShVSU5UOCAqIHBpeCwgaW50IGxpbmVfc2l6ZSk7CmV4
dGVybiBpbnQgKCpwaXhfbm9ybTEpKFVJTlQ4ICogcGl4LCBpbnQgbGluZV9zaXplKTsKCgoKdm9p
ZCBnZXRfcGl4ZWxzX2MoRENURUxFTSAqYmxvY2ssIGNvbnN0IFVJTlQ4ICpwaXhlbHMsIGludCBs
aW5lX3NpemUpOwp2b2lkIGRpZmZfcGl4ZWxzX2MoRENURUxFTSAqYmxvY2ssIGNvbnN0IFVJTlQ4
ICpzMSwgY29uc3QgVUlOVDggKnMyLCBpbnQgc3RyaWRlKTsKdm9pZCBwdXRfcGl4ZWxzX2NsYW1w
ZWRfYyhjb25zdCBEQ1RFTEVNICpibG9jaywgVUlOVDggKnBpeGVscywgaW50IGxpbmVfc2l6ZSk7
CnZvaWQgYWRkX3BpeGVsc19jbGFtcGVkX2MoY29uc3QgRENURUxFTSAqYmxvY2ssIFVJTlQ4ICpw
aXhlbHMsIGludCBsaW5lX3NpemUpOwp2b2lkIGNsZWFyX2Jsb2Nrc19jKERDVEVMRU0gKmJsb2Nr
cyk7CgoKCnR5cGVkZWYgdm9pZCAoKm9wX3BpeGVsc19mdW5jKShVSU5UOCAqYmxvY2sgLCBjb25z
dCBVSU5UOCAqcGl4ZWxzICwgaW50IGxpbmVfc2l6ZSwgaW50IGgpOwp0eXBlZGVmIHZvaWQgKCpx
cGVsX21jX2Z1bmMpKFVJTlQ4ICpkc3QgLCBVSU5UOCAqc3JjICwgaW50IHN0cmlkZSk7CgpleHRl
cm4gb3BfcGl4ZWxzX2Z1bmMgcHV0X3BpeGVsc190YWJbMl1bNF07CmV4dGVybiBvcF9waXhlbHNf
ZnVuYyBhdmdfcGl4ZWxzX3RhYlsyXVs0XTsKZXh0ZXJuIG9wX3BpeGVsc19mdW5jIHB1dF9ub19y
bmRfcGl4ZWxzX3RhYlsyXVs0XTsKZXh0ZXJuIG9wX3BpeGVsc19mdW5jIGF2Z19ub19ybmRfcGl4
ZWxzX3RhYlsyXVs0XTsKZXh0ZXJuIHFwZWxfbWNfZnVuYyBwdXRfcXBlbF9waXhlbHNfdGFiWzJd
WzE2XTsKZXh0ZXJuIHFwZWxfbWNfZnVuYyBhdmdfcXBlbF9waXhlbHNfdGFiWzJdWzE2XTsKZXh0
ZXJuIHFwZWxfbWNfZnVuYyBwdXRfbm9fcm5kX3FwZWxfcGl4ZWxzX3RhYlsyXVsxNl07CmV4dGVy
biBxcGVsX21jX2Z1bmMgYXZnX25vX3JuZF9xcGVsX3BpeGVsc190YWJbMl1bMTZdOwojIDEwMiAi
ZHNwdXRpbC5oIgp0eXBlZGVmIGludCAoKm9wX3BpeGVsc19hYnNfZnVuYykoVUlOVDggKmJsazEg
LCBVSU5UOCAqYmxrMiAsIGludCBsaW5lX3NpemUpOwoKZXh0ZXJuIG9wX3BpeGVsc19hYnNfZnVu
YyBwaXhfYWJzMTZ4MTY7CmV4dGVybiBvcF9waXhlbHNfYWJzX2Z1bmMgcGl4X2FiczE2eDE2X3gy
OwpleHRlcm4gb3BfcGl4ZWxzX2Fic19mdW5jIHBpeF9hYnMxNngxNl95MjsKZXh0ZXJuIG9wX3Bp
eGVsc19hYnNfZnVuYyBwaXhfYWJzMTZ4MTZfeHkyOwpleHRlcm4gb3BfcGl4ZWxzX2Fic19mdW5j
IHBpeF9hYnM4eDg7CmV4dGVybiBvcF9waXhlbHNfYWJzX2Z1bmMgcGl4X2Ficzh4OF94MjsKZXh0
ZXJuIG9wX3BpeGVsc19hYnNfZnVuYyBwaXhfYWJzOHg4X3kyOwpleHRlcm4gb3BfcGl4ZWxzX2Fi
c19mdW5jIHBpeF9hYnM4eDhfeHkyOwoKaW50IHBpeF9hYnMxNngxNl9jKFVJTlQ4ICpibGsxLCBV
SU5UOCAqYmxrMiwgaW50IGx4KTsKaW50IHBpeF9hYnMxNngxNl94Ml9jKFVJTlQ4ICpibGsxLCBV
SU5UOCAqYmxrMiwgaW50IGx4KTsKaW50IHBpeF9hYnMxNngxNl95Ml9jKFVJTlQ4ICpibGsxLCBV
SU5UOCAqYmxrMiwgaW50IGx4KTsKaW50IHBpeF9hYnMxNngxNl94eTJfYyhVSU5UOCAqYmxrMSwg
VUlOVDggKmJsazIsIGludCBseCk7CgoKCgoKdm9pZCBmZl9ibG9ja19wZXJtdXRlKElOVDE2ICpi
bG9jaywgVUlOVDggKnBlcm11dGF0aW9uLCBjb25zdCBVSU5UOCAqc2NhbnRhYmxlLCBpbnQgbGFz
dCk7CiMgMTMyICJkc3B1dGlsLmgiCmV4dGVybiBpbnQgbW1fZmxhZ3M7CgppbnQgbW1fc3VwcG9y
dCh2b2lkKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBlbW1zKHZvaWQpCnsKICAgIF9fYXNtIF9fdm9s
YXRpbGUgKCJlbW1zOyI6OjoibWVtb3J5Iik7Cn0KIyAxNDkgImRzcHV0aWwuaCIKdm9pZCBkc3B1
dGlsX2luaXRfbW14KHZvaWQpOwp2b2lkIGRzcHV0aWxfc2V0X2JpdF9leGFjdF9tbXgodm9pZCk7
CiMgMjAzICJkc3B1dGlsLmgiCnN0cnVjdCB1bmFsaWduZWRfNjQgeyB1aW50NjRfdCBsOyB9IF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwpzdHJ1Y3QgdW5hbGlnbmVkXzMyIHsgdWludDMyX3QgbDsg
fSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIyAyMjEgImRzcHV0aWwuaCIKdm9pZCBnZXRfcHNu
cihVSU5UOCAqb3JpZ19pbWFnZVszXSwgVUlOVDggKmNvZGVkX2ltYWdlWzNdLAogICAgICAgICAg
ICAgIGludCBvcmlnX2xpbmVzaXplWzNdLCBpbnQgY29kZWRfbGluZXNpemUsCiAgICAgICAgICAg
ICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKCgoKCgp0eXBlZGVmIGZsb2F0IEZGVFNhbXBsZTsK
CnR5cGVkZWYgc3RydWN0IEZGVENvbXBsZXggewogICAgRkZUU2FtcGxlIHJlLCBpbTsKfSBGRlRD
b21wbGV4OwoKdHlwZWRlZiBzdHJ1Y3QgRkZUQ29udGV4dCB7CiAgICBpbnQgbmJpdHM7CiAgICBp
bnQgaW52ZXJzZTsKICAgIHVpbnQxNl90ICpyZXZ0YWI7CiAgICBGRlRDb21wbGV4ICpleHB0YWI7
CiAgICBGRlRDb21wbGV4ICpleHB0YWIxOwogICAgdm9pZCAoKmZmdF9jYWxjKShzdHJ1Y3QgRkZU
Q29udGV4dCAqcywgRkZUQ29tcGxleCAqeik7Cn0gRkZUQ29udGV4dDsKCmludCBmZnRfaW5pdChG
RlRDb250ZXh0ICpzLCBpbnQgbmJpdHMsIGludCBpbnZlcnNlKTsKdm9pZCBmZnRfcGVybXV0ZShG
RlRDb250ZXh0ICpzLCBGRlRDb21wbGV4ICp6KTsKdm9pZCBmZnRfY2FsY19jKEZGVENvbnRleHQg
KnMsIEZGVENvbXBsZXggKnopOwp2b2lkIGZmdF9jYWxjX3NzZShGRlRDb250ZXh0ICpzLCBGRlRD
b21wbGV4ICp6KTsKc3RhdGljIGlubGluZSB2b2lkIGZmdF9jYWxjKEZGVENvbnRleHQgKnMsIEZG
VENvbXBsZXggKnopCnsKICAgIHMtPmZmdF9jYWxjKHMsIHopOwp9CnZvaWQgZmZ0X2VuZChGRlRD
b250ZXh0ICpzKTsKCgoKdHlwZWRlZiBzdHJ1Y3QgTURDVENvbnRleHQgewogICAgaW50IG47CiAg
ICBpbnQgbmJpdHM7CgogICAgRkZUU2FtcGxlICp0Y29zOwogICAgRkZUU2FtcGxlICp0c2luOwog
ICAgRkZUQ29udGV4dCBmZnQ7Cn0gTURDVENvbnRleHQ7CgppbnQgZmZfbWRjdF9pbml0KE1EQ1RD
b250ZXh0ICpzLCBpbnQgbmJpdHMsIGludCBpbnZlcnNlKTsKdm9pZCBmZl9pbWRjdF9jYWxjKE1E
Q1RDb250ZXh0ICpzLCBGRlRTYW1wbGUgKm91dHB1dCwKICAgICAgICAgICAgICAgIGNvbnN0IEZG
VFNhbXBsZSAqaW5wdXQsIEZGVFNhbXBsZSAqdG1wKTsKdm9pZCBmZl9tZGN0X2NhbGMoTURDVENv
bnRleHQgKnMsIEZGVFNhbXBsZSAqb3V0LAogICAgICAgICAgICAgICBjb25zdCBGRlRTYW1wbGUg
KmlucHV0LCBGRlRTYW1wbGUgKnRtcCk7CnZvaWQgZmZfbWRjdF9lbmQoTURDVENvbnRleHQgKnMp
OwoKCgoKCnN0YXRpYyBpbmxpbmUgbG9uZyBpbnQgbHJpbnRmKGZsb2F0IHgpCnsKICAgIHJldHVy
biAoaW50KShyaW50KHgpKTsKfQojIDIxICJ1dGlscy5jIiAyCiMgMSAibXBlZ3ZpZGVvLmgiIDEK
IyAyNSAibXBlZ3ZpZGVvLmgiCmVudW0gT3V0cHV0Rm9ybWF0IHsKICAgIEZNVF9NUEVHMSwKICAg
IEZNVF9IMjYzLAogICAgRk1UX01KUEVHLAp9OwojIDQ4ICJtcGVndmlkZW8uaCIKdHlwZWRlZiBz
dHJ1Y3QgUHJlZGljdG9yewogICAgZG91YmxlIGNvZWZmOwogICAgZG91YmxlIGNvdW50OwogICAg
ZG91YmxlIGRlY2F5Owp9IFByZWRpY3RvcjsKCnR5cGVkZWYgc3RydWN0IFJhdGVDb250cm9sRW50
cnl7CiAgICBpbnQgcGljdF90eXBlOwogICAgZmxvYXQgcXNjYWxlOwogICAgaW50IG12X2JpdHM7
CiAgICBpbnQgaV90ZXhfYml0czsKICAgIGludCBwX3RleF9iaXRzOwogICAgaW50IG1pc2NfYml0
czsKICAgIFVJTlQ2NCBleHBlY3RlZF9iaXRzOwogICAgaW50IG5ld19waWN0X3R5cGU7CiAgICBm
bG9hdCBuZXdfcXNjYWxlOwogICAgaW50IG1jX21iX3Zhcl9zdW07CiAgICBpbnQgbWJfdmFyX3N1
bTsKICAgIGludCBpX2NvdW50OwogICAgaW50IGZfY29kZTsKICAgIGludCBiX2NvZGU7Cn1SYXRl
Q29udHJvbEVudHJ5OwoKdHlwZWRlZiBzdHJ1Y3QgUmF0ZUNvbnRyb2xDb250ZXh0ewogICAgRklM
RSAqc3RhdHNfZmlsZTsKICAgIGludCBudW1fZW50cmllczsKICAgIFJhdGVDb250cm9sRW50cnkg
KmVudHJ5OwogICAgaW50IGJ1ZmZlcl9pbmRleDsKICAgIFByZWRpY3RvciBwcmVkWzVdOwogICAg
ZG91YmxlIHNob3J0X3Rlcm1fcXN1bTsKICAgIGRvdWJsZSBzaG9ydF90ZXJtX3Fjb3VudDsKICAg
IGRvdWJsZSBwYXNzMV9yY19lcV9vdXRwdXRfc3VtOwogICAgZG91YmxlIHBhc3MxX3dhbnRlZF9i
aXRzOwogICAgZG91YmxlIGxhc3RfcXNjYWxlOwogICAgZG91YmxlIGxhc3RfcXNjYWxlX2Zvcls1
XTsKICAgIGludCBsYXN0X21jX21iX3Zhcl9zdW07CiAgICBpbnQgbGFzdF9tYl92YXJfc3VtOwog
ICAgVUlOVDY0IGlfY3BseF9zdW1bNV07CiAgICBVSU5UNjQgcF9jcGx4X3N1bVs1XTsKICAgIFVJ
TlQ2NCBtdl9iaXRzX3N1bVs1XTsKICAgIFVJTlQ2NCBxc2NhbGVfc3VtWzVdOwogICAgaW50IGZy
YW1lX2NvdW50WzVdOwogICAgaW50IGxhc3Rfbm9uX2JfcGljdF90eXBlOwp9UmF0ZUNvbnRyb2xD
b250ZXh0OwoKdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlcnsKICAgIFVJTlQ4ICpwaWN0dXJl
WzNdOwogICAgaW50IHBpY3RfdHlwZTsKICAgIGludCBxc2NhbGU7CiAgICBpbnQgZm9yY2VfdHlw
ZTsKICAgIGludCBwaWN0dXJlX251bWJlcjsKICAgIGludCBwaWN0dXJlX2luX2dvcF9udW1iZXI7
Cn0gUmVvcmRlckJ1ZmZlcjsKCnR5cGVkZWYgc3RydWN0IFNjYW5UYWJsZXsKICAgIGNvbnN0IFVJ
TlQ4ICpzY2FudGFibGU7CiAgICBVSU5UOCBwZXJtdXRhdGVkWzY0XTsKICAgIFVJTlQ4IHJhc3Rl
cl9lbmRbNjRdOwoKCgoKfSBTY2FuVGFibGU7Cgp0eXBlZGVmIHN0cnVjdCBQYXJzZUNvbnRleHR7
CiAgICBVSU5UOCAqYnVmZmVyOwogICAgaW50IGluZGV4OwogICAgaW50IGxhc3RfaW5kZXg7CiAg
ICBpbnQgYnVmZmVyX3NpemU7CiAgICBpbnQgc3RhdGU7CiAgICBpbnQgZnJhbWVfc3RhcnRfZm91
bmQ7Cn0gUGFyc2VDb250ZXh0OwoKdHlwZWRlZiBzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgewogICAg
c3RydWN0IEFWQ29kZWNDb250ZXh0ICphdmN0eDsKCiAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAg
IGludCBnb3Bfc2l6ZTsKICAgIGludCBmcmFtZV9yYXRlOwogICAgaW50IGludHJhX29ubHk7CiAg
ICBpbnQgYml0X3JhdGU7CiAgICBpbnQgYml0X3JhdGVfdG9sZXJhbmNlOwogICAgZW51bSBPdXRw
dXRGb3JtYXQgb3V0X2Zvcm1hdDsKICAgIGludCBoMjYzX3ByZWQ7CgoKICAgIGludCBoMjYzX3Bs
dXM7CiAgICBpbnQgaDI2M19ydjEwOwogICAgaW50IGgyNjNfbXNtcGVnNDsKICAgIGludCBoMjYz
X2ludGVsOwoKICAgIGludCBjb2RlY19pZDsKICAgIGludCBmaXhlZF9xc2NhbGU7CiAgICBmbG9h
dCBxY29tcHJlc3M7CiAgICBmbG9hdCBxYmx1cjsKICAgIGludCBxbWluOwogICAgaW50IHFtYXg7
CiAgICBpbnQgbWF4X3FkaWZmOwogICAgaW50IGVuY29kaW5nOwogICAgaW50IGZsYWdzOwogICAg
aW50IGZvcmNlX2lucHV0X3R5cGU7CiAgICBpbnQgbWF4X2JfZnJhbWVzOwogICAgaW50IGJfZnJh
bWVfc3RyYXRlZ3k7CiAgICBpbnQgbHVtYV9lbGltX3RocmVzaG9sZDsKICAgIGludCBjaHJvbWFf
ZWxpbV90aHJlc2hvbGQ7CiAgICBpbnQgc3RyaWN0X3N0ZF9jb21wbGlhbmNlOwogICAgaW50IHdv
cmthcm91bmRfYnVnczsKCgoKICAgIFB1dEJpdENvbnRleHQgcGI7CgoKICAgIGludCBjb250ZXh0
X2luaXRpYWxpemVkOwogICAgaW50IGlucHV0X3BpY3R1cmVfbnVtYmVyOwogICAgaW50IGlucHV0
X3BpY3R1cmVfaW5fZ29wX251bWJlcjsKICAgIGludCBwaWN0dXJlX251bWJlcjsKICAgIGludCBm
YWtlX3BpY3R1cmVfbnVtYmVyOwogICAgaW50IGdvcF9waWN0dXJlX251bWJlcjsKICAgIGludCBw
aWN0dXJlX2luX2dvcF9udW1iZXI7CiAgICBpbnQgYl9mcmFtZXNfc2luY2Vfbm9uX2I7CiAgICBp
bnQgbWJfd2lkdGgsIG1iX2hlaWdodDsKICAgIGludCBoX2VkZ2VfcG9zLCB2X2VkZ2VfcG9zOwog
ICAgaW50IG1iX251bTsKICAgIGludCBsaW5lc2l6ZTsKICAgIGludCB1dmxpbmVzaXplOwogICAg
VUlOVDggKm5ld19waWN0dXJlWzNdOwogICAgVUlOVDggKnBpY3R1cmVfYnVmZmVyWyg0ICsyKV1b
M107CiAgICBpbnQgcGljdHVyZV9idWZmZXJfaW5kZXg7CiAgICBSZW9yZGVyQnVmZmVyIGNvZGVk
X29yZGVyWyg0ICsyKV07CiAgICBVSU5UOCAqbGFzdF9waWN0dXJlWzNdOwogICAgVUlOVDggKmxh
c3RfcGljdHVyZV9iYXNlWzNdOwogICAgVUlOVDggKm5leHRfcGljdHVyZVszXTsKICAgIFVJTlQ4
ICpuZXh0X3BpY3R1cmVfYmFzZVszXTsKICAgIFVJTlQ4ICphdXhfcGljdHVyZVszXTsKICAgIFVJ
TlQ4ICphdXhfcGljdHVyZV9iYXNlWzNdOwogICAgVUlOVDggKmN1cnJlbnRfcGljdHVyZVszXTsK
ICAgIHZvaWQgKmxhc3RfZHJfb3BhcXVlOwogICAgdm9pZCAqbmV4dF9kcl9vcGFxdWU7CiAgICBp
bnQgaXBfYnVmZmVyX2NvdW50OwogICAgaW50IG51bV9hdmFpbGFibGVfYnVmZmVyczsKICAgIGlu
dCBsYXN0X2RjWzNdOwogICAgSU5UMTYgKmRjX3ZhbFszXTsKICAgIGludCB5X2RjX3NjYWxlLCBj
X2RjX3NjYWxlOwogICAgVUlOVDggKnlfZGNfc2NhbGVfdGFibGU7CiAgICBVSU5UOCAqY19kY19z
Y2FsZV90YWJsZTsKICAgIFVJTlQ4ICpjb2RlZF9ibG9jazsKICAgIElOVDE2ICgqYWNfdmFsWzNd
KVsxNl07CiAgICBpbnQgYWNfcHJlZDsKICAgIGludCBtYl9za2lwZWQ7CiAgICBVSU5UOCAqbWJz
a2lwX3RhYmxlOwoKICAgIFVJTlQ4ICptYmludHJhX3RhYmxlOwogICAgVUlOVDggKmNicF90YWJs
ZTsKICAgIFVJTlQ4ICpwcmVkX2Rpcl90YWJsZTsKICAgIElOVDggKnFzY2FsZV90YWJsZTsKICAg
IElOVDggKmF1eF9xc2NhbGVfdGFibGU7CiAgICBJTlQ4ICpuZXh0X3FzY2FsZV90YWJsZTsKICAg
IElOVDggKmxhc3RfcXNjYWxlX3RhYmxlOwogICAgVUlOVDggKmVkZ2VfZW11X2J1ZmZlcjsKCiAg
ICBpbnQgaW5wdXRfcXNjYWxlOwogICAgaW50IGlucHV0X3BpY3RfdHlwZTsKICAgIGludCBmb3Jj
ZV90eXBlOwogICAgaW50IHFzY2FsZTsKICAgIGZsb2F0IGZyYW1lX3FzY2FsZTsKICAgIGludCBh
ZGFwdGl2ZV9xdWFudDsKICAgIGludCBkcXVhbnQ7CiAgICBpbnQgcGljdF90eXBlOwogICAgaW50
IGxhc3RfcGljdF90eXBlOwogICAgaW50IGxhc3Rfbm9uX2JfcGljdF90eXBlOwogICAgaW50IGZy
YW1lX3JhdGVfaW5kZXg7CgogICAgaW50IHVucmVzdHJpY3RlZF9tdjsKICAgIGludCBoMjYzX2xv
bmdfdmVjdG9yczsKCiAgICBpbnQgZl9jb2RlOwogICAgaW50IGJfY29kZTsKICAgIElOVDE2ICgq
bW90aW9uX3ZhbClbMl07CiAgICBJTlQxNiAoKnBfbXZfdGFibGUpWzJdOwogICAgSU5UMTYgKCpi
X2ZvcndfbXZfdGFibGUpWzJdOwogICAgSU5UMTYgKCpiX2JhY2tfbXZfdGFibGUpWzJdOwogICAg
SU5UMTYgKCpiX2JpZGlyX2ZvcndfbXZfdGFibGUpWzJdOwogICAgSU5UMTYgKCpiX2JpZGlyX2Jh
Y2tfbXZfdGFibGUpWzJdOwogICAgSU5UMTYgKCpiX2RpcmVjdF9mb3J3X212X3RhYmxlKVsyXTsK
ICAgIElOVDE2ICgqYl9kaXJlY3RfYmFja19tdl90YWJsZSlbMl07CiAgICBJTlQxNiAoKmJfZGly
ZWN0X212X3RhYmxlKVsyXTsKICAgIGludCBtZV9tZXRob2Q7CiAgICB1aW50OF90ICptZV9zY3Jh
dGNocGFkOwogICAgdWludDMyX3QgKm1lX21hcDsKICAgIHVpbnQxNl90ICptZV9zY29yZV9tYXA7
CiAgICBpbnQgbWVfbWFwX2dlbmVyYXRpb247CiAgICBpbnQgc2tpcF9tZTsKICAgIGludCBzY2Vu
ZV9jaGFuZ2Vfc2NvcmU7CiAgICBpbnQgbXZfZGlyOwoKCgogICAgaW50IG12X3R5cGU7CiMgMjU3
ICJtcGVndmlkZW8uaCIKICAgIGludCBtdlsyXVs0XVsyXTsKICAgIGludCBmaWVsZF9zZWxlY3Rb
Ml1bMl07CiAgICBpbnQgbGFzdF9tdlsyXVsyXVsyXTsKICAgIFVJTlQxNiAoKm12X3BlbmFsdHkp
WzIwNDgqMisxXTsKICAgIFVJTlQ4ICpmY29kZV90YWI7CgogICAgaW50IGhhc19iX2ZyYW1lczsK
ICAgIGludCBub19yb3VuZGluZzsKCgogICAgaW50IGh1cnJ5X3VwOwoKCgogICAgaW50IG1iX3gs
IG1iX3k7CiAgICBpbnQgbWJfaW5jcjsKICAgIGludCBtYl9pbnRyYTsKICAgIFVJTlQxNiAqbWJf
dmFyOwogICAgVUlOVDE2ICptY19tYl92YXI7CiAgICBVSU5UOCAqbWJfbWVhbjsKICAgIFVJTlQ4
ICptYl90eXBlOwojIDI4OSAibXBlZ3ZpZGVvLmgiCiAgICBpbnQgYmxvY2tfaW5kZXhbNl07CiAg
ICBpbnQgYmxvY2tfd3JhcFs2XTsKCgogICAgVUlOVDE2IGludHJhX21hdHJpeFs2NF07CiAgICBV
SU5UMTYgY2hyb21hX2ludHJhX21hdHJpeFs2NF07CiAgICBVSU5UMTYgaW50ZXJfbWF0cml4WzY0
XTsKICAgIFVJTlQxNiBjaHJvbWFfaW50ZXJfbWF0cml4WzY0XTsKCiAgICBpbnQgaW50cmFfcXVh
bnRfYmlhczsKICAgIGludCBpbnRlcl9xdWFudF9iaWFzOwogICAgaW50IG1pbl9xY29lZmY7CiAg
ICBpbnQgbWF4X3Fjb2VmZjsKCiAgICBpbnQgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgpKSkg
cV9pbnRyYV9tYXRyaXhbMzJdWzY0XTsKICAgIGludCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAo
OCkpKSBxX2ludGVyX21hdHJpeFszMl1bNjRdOwoKICAgIFVJTlQxNiBfX2F0dHJpYnV0ZV9fICgo
YWxpZ25lZCAoOCkpKSBxX2ludHJhX21hdHJpeDE2WzMyXVs2NF07CiAgICBVSU5UMTYgX19hdHRy
aWJ1dGVfXyAoKGFsaWduZWQgKDgpKSkgcV9pbnRlcl9tYXRyaXgxNlszMl1bNjRdOwogICAgVUlO
VDE2IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpIHFfaW50cmFfbWF0cml4MTZfYmlhc1sz
Ml1bNjRdOwogICAgVUlOVDE2IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpIHFfaW50ZXJf
bWF0cml4MTZfYmlhc1szMl1bNjRdOwogICAgaW50IGJsb2NrX2xhc3RfaW5kZXhbNl07CgogICAg
U2NhblRhYmxlIF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpIGludHJhX3NjYW50YWJsZTsK
ICAgIFNjYW5UYWJsZSBpbnRyYV9oX3NjYW50YWJsZTsKICAgIFNjYW5UYWJsZSBpbnRyYV92X3Nj
YW50YWJsZTsKICAgIFNjYW5UYWJsZSBpbnRlcl9zY2FudGFibGU7CiAgICBVSU5UOCBpZGN0X3Bl
cm11dGF0aW9uWzY0XTsKICAgIGludCBpZGN0X3Blcm11dGF0aW9uX3R5cGU7CgoKCgoKICAgIHZv
aWQgKm9wYXF1ZTsKCgogICAgaW50IElfZnJhbWVfYml0czsKICAgIGludCBtYl92YXJfc3VtOwog
ICAgaW50IG1jX21iX3Zhcl9zdW07CiAgICBJTlQ2NCB3YW50ZWRfYml0czsKICAgIElOVDY0IHRv
dGFsX2JpdHM7CiAgICBpbnQgZnJhbWVfYml0czsKICAgIFJhdGVDb250cm9sQ29udGV4dCByY19j
b250ZXh0OwoKCiAgICBpbnQgbXZfYml0czsKICAgIGludCBoZWFkZXJfYml0czsKICAgIGludCBp
X3RleF9iaXRzOwogICAgaW50IHBfdGV4X2JpdHM7CiAgICBpbnQgaV9jb3VudDsKICAgIGludCBm
X2NvdW50OwogICAgaW50IGJfY291bnQ7CiAgICBpbnQgc2tpcF9jb3VudDsKICAgIGludCBtaXNj
X2JpdHM7CiAgICBpbnQgbGFzdF9iaXRzOwoKCiAgICBVSU5UOCAqZXJyb3Jfc3RhdHVzX3RhYmxl
OwojIDM1NyAibXBlZ3ZpZGVvLmgiCiAgICBpbnQgcmVzeW5jX21iX3g7CiAgICBpbnQgcmVzeW5j
X21iX3k7CiAgICBHZXRCaXRDb250ZXh0IGxhc3RfcmVzeW5jX2diOwogICAgaW50IG1iX251bV9s
ZWZ0OwogICAgaW50IG5leHRfcF9mcmFtZV9kYW1hZ2VkOwogICAgaW50IGVycm9yX3Jlc2lsaWVu
Y2U7CgogICAgUGFyc2VDb250ZXh0IHBhcnNlX2NvbnRleHQ7CgoKICAgIGludCBnb2JfbnVtYmVy
OwogICAgaW50IGdvYl9pbmRleDsKCgogICAgaW50IHVtdnBsdXM7CiAgICBpbnQgdW12cGx1c19k
ZWM7CiAgICBpbnQgaDI2M19haWM7CiAgICBpbnQgaDI2M19haWNfZGlyOwoKCiAgICBpbnQgdGlt
ZV9pbmNyZW1lbnRfcmVzb2x1dGlvbjsKICAgIGludCB0aW1lX2luY3JlbWVudF9iaXRzOwogICAg
aW50IGxhc3RfdGltZV9iYXNlOwogICAgaW50IHRpbWVfYmFzZTsKICAgIElOVDY0IHRpbWU7CiAg
ICBJTlQ2NCBsYXN0X25vbl9iX3RpbWU7CiAgICBVSU5UMTYgcHBfdGltZTsKICAgIFVJTlQxNiBw
Yl90aW1lOwogICAgVUlOVDE2IHBwX2ZpZWxkX3RpbWU7CiAgICBVSU5UMTYgcGJfZmllbGRfdGlt
ZTsKICAgIGludCBzaGFwZTsKICAgIGludCB2b2xfc3ByaXRlX3VzYWdlOwogICAgaW50IHNwcml0
ZV93aWR0aDsKICAgIGludCBzcHJpdGVfaGVpZ2h0OwogICAgaW50IHNwcml0ZV9sZWZ0OwogICAg
aW50IHNwcml0ZV90b3A7CiAgICBpbnQgc3ByaXRlX2JyaWdodG5lc3NfY2hhbmdlOwogICAgaW50
IG51bV9zcHJpdGVfd2FycGluZ19wb2ludHM7CiAgICBpbnQgcmVhbF9zcHJpdGVfd2FycGluZ19w
b2ludHM7CiAgICBpbnQgc3ByaXRlX29mZnNldFsyXVsyXTsKICAgIGludCBzcHJpdGVfZGVsdGFb
Ml1bMl07CiAgICBpbnQgc3ByaXRlX3NoaWZ0WzJdOwogICAgaW50IG1jc2VsOwogICAgaW50IHF1
YW50X3ByZWNpc2lvbjsKICAgIGludCBxdWFydGVyX3NhbXBsZTsKICAgIGludCBzY2FsYWJpbGl0
eTsKICAgIGludCBoaWVyYWNoeV90eXBlOwogICAgaW50IGVuaGFuY2VtZW50X3R5cGU7CiAgICBp
bnQgbmV3X3ByZWQ7CiAgICBpbnQgcmVkdWNlZF9yZXNfdm9wOwogICAgaW50IGFzcGVjdF9yYXRp
b19pbmZvOwogICAgaW50IGFzcGVjdGVkX3dpZHRoOwogICAgaW50IGFzcGVjdGVkX2hlaWdodDsK
ICAgIGludCBzcHJpdGVfd2FycGluZ19hY2N1cmFjeTsKICAgIGludCBsb3dfbGF0ZW5jeV9zcHJp
dGU7CiAgICBpbnQgZGF0YV9wYXJ0aXRpb25pbmc7CiAgICBpbnQgcGFydGl0aW9uZWRfZnJhbWU7
CiAgICBpbnQgcnZsYzsKICAgIGludCByZXN5bmNfbWFya2VyOwogICAgaW50IGxvd19kZWxheTsK
ICAgIGludCB2b190eXBlOwogICAgaW50IHZvbF9jb250cm9sX3BhcmFtZXRlcnM7CiAgICBQdXRC
aXRDb250ZXh0IHRleF9wYjsKICAgIFB1dEJpdENvbnRleHQgcGIyOwoKICAgIHVpbnQ4X3QgKnRl
eF9wYl9idWZmZXI7CiAgICB1aW50OF90ICpwYjJfYnVmZmVyOwogICAgaW50IG1wZWdfcXVhbnQ7
CgoKICAgIElOVDggKmNvX2xvY2F0ZWRfdHlwZV90YWJsZTsKICAgIElOVDE2ICgqZmllbGRfbXZf
dGFibGUpWzJdWzJdOwogICAgSU5UOCAoKmZpZWxkX3NlbGVjdF90YWJsZSlbMl07CiAgICBpbnQg
dF9mcmFtZTsKICAgIGludCBwYWRkaW5nX2J1Z19zY29yZTsKCgogICAgaW50IGRpdnhfdmVyc2lv
bjsKICAgIGludCBkaXZ4X2J1aWxkOwoKICAgIFVJTlQ4ICpiaXRzdHJlYW1fYnVmZmVyOwogICAg
aW50IGJpdHN0cmVhbV9idWZmZXJfc2l6ZTsKCiAgICBpbnQgeHZpZF9idWlsZDsKCgogICAgaW50
IGZmbXBlZ192ZXJzaW9uOwogICAgaW50IGxhdmNfYnVpbGQ7CgoKICAgIGludCBydjEwX3ZlcnNp
b247CiAgICBpbnQgcnYxMF9maXJzdF9kY19jb2RlZFszXTsKCgogICAgc3RydWN0IE1KcGVnQ29u
dGV4dCAqbWpwZWdfY3R4OwogICAgaW50IG1qcGVnX3ZzYW1wbGVbM107CiAgICBpbnQgbWpwZWdf
aHNhbXBsZVszXTsKICAgIGludCBtanBlZ193cml0ZV90YWJsZXM7CgogICAgaW50IG1qcGVnX2Rh
dGFfb25seV9mcmFtZXM7CgoKICAgIGludCBtdl90YWJsZV9pbmRleDsKICAgIGludCBybF90YWJs
ZV9pbmRleDsKICAgIGludCBybF9jaHJvbWFfdGFibGVfaW5kZXg7CiAgICBpbnQgZGNfdGFibGVf
aW5kZXg7CiAgICBpbnQgdXNlX3NraXBfbWJfY29kZTsKICAgIGludCBzbGljZV9oZWlnaHQ7CiAg
ICBpbnQgZmlyc3Rfc2xpY2VfbGluZTsKICAgIGludCBmbGlwZmxvcF9yb3VuZGluZzsKICAgIGlu
dCBtc21wZWc0X3ZlcnNpb247CiAgICBpbnQgcGVyX21iX3JsX3RhYmxlOwogICAgaW50IGVzYzNf
bGV2ZWxfbGVuZ3RoOwogICAgaW50IGVzYzNfcnVuX2xlbmd0aDsKCiAgICBpbnQgKCphY19zdGF0
cylbMl1bNjQgKzFdWzY0ICsxXVsyXTsKICAgIGludCBpbnRlcl9pbnRyYV9wcmVkOwoKCiAgICBH
ZXRCaXRDb250ZXh0IGdiOwoKCiAgICBpbnQgcHJvZ3Jlc3NpdmVfc2VxdWVuY2U7CiAgICBpbnQg
bXBlZ19mX2NvZGVbMl1bMl07CiAgICBpbnQgcGljdHVyZV9zdHJ1Y3R1cmU7CgoKCgoKICAgIGlu
dCBpbnRyYV9kY19wcmVjaXNpb247CiAgICBpbnQgZnJhbWVfcHJlZF9mcmFtZV9kY3Q7CiAgICBp
bnQgdG9wX2ZpZWxkX2ZpcnN0OwogICAgaW50IGNvbmNlYWxtZW50X21vdGlvbl92ZWN0b3JzOwog
ICAgaW50IHFfc2NhbGVfdHlwZTsKICAgIGludCBpbnRyYV92bGNfZm9ybWF0OwogICAgaW50IGFs
dGVybmF0ZV9zY2FuOwogICAgaW50IHJlcGVhdF9maXJzdF9maWVsZDsKICAgIGludCBjaHJvbWFf
NDIwX3R5cGU7CiAgICBpbnQgcHJvZ3Jlc3NpdmVfZnJhbWU7CiAgICBpbnQgbXBlZzI7CiAgICBp
bnQgZnVsbF9wZWxbMl07CiAgICBpbnQgaW50ZXJsYWNlZF9kY3Q7CiAgICBpbnQgbGFzdF9xc2Nh
bGU7CiAgICBpbnQgZmlyc3Rfc2xpY2U7CgoKCiAgICBpbnQgcnRwX21vZGU7CiAgICBpbnQgcnRw
X3BheWxvYWRfc2l6ZTsKICAgIHZvaWQgKCpydHBfY2FsbGJhY2spKHZvaWQgKmRhdGEsIGludCBz
aXplLCBpbnQgcGFja2V0X251bWJlcik7CiAgICBVSU5UOCAqcHRyX2xhc3Rnb2I7CiAgICBVSU5U
OCAqcHRyX2xhc3RfbWJfbGluZTsKICAgIFVJTlQzMiBtYl9saW5lX2F2Z3NpemU7CgogICAgRENU
RUxFTSAoKmJsb2NrKVs2NF07CiAgICBEQ1RFTEVNIGJsb2Nrc1syXVs2XVs2NF0gX19hdHRyaWJ1
dGVfXyAoKGFsaWduZWQgKDgpKSk7CiAgICBpbnQgKCpkZWNvZGVfbWIpKHN0cnVjdCBNcGVnRW5j
Q29udGV4dCAqcywgRENURUxFTSBibG9ja1s2XVs2NF0pOwoKCgoKCiAgICB2b2lkICgqZGN0X3Vu
cXVhbnRpemVfbXBlZzEpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRENURUxFTSAqYmxvY2ssIGludCBuLCBpbnQgcXNjYWxlKTsKICAgIHZvaWQg
KCpkY3RfdW5xdWFudGl6ZV9tcGVnMikoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBEQ1RFTEVNICpibG9jaywgaW50IG4sIGludCBxc2NhbGUpOwog
ICAgdm9pZCAoKmRjdF91bnF1YW50aXplX2gyNjMpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRENURUxFTSAqYmxvY2ssIGludCBuLCBpbnQgcXNj
YWxlKTsKICAgIHZvaWQgKCpkY3RfdW5xdWFudGl6ZSkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICpz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBEQ1RFTEVNICpibG9jaywgaW50IG4sIGludCBx
c2NhbGUpOwogICAgaW50ICgqZGN0X3F1YW50aXplKShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnMs
IERDVEVMRU0gKmJsb2NrLCBpbnQgbiwgaW50IHFzY2FsZSwgaW50ICpvdmVyZmxvdyk7CiAgICB2
b2lkICgqZmRjdCkoRENURUxFTSAqYmxvY2sgKTsKICAgIHZvaWQgKCppZGN0X3B1dCkoVUlOVDgg
KmRlc3QgLCBpbnQgbGluZV9zaXplLCBEQ1RFTEVNICpibG9jayApOwogICAgdm9pZCAoKmlkY3Rf
YWRkKShVSU5UOCAqZGVzdCAsIGludCBsaW5lX3NpemUsIERDVEVMRU0gKmJsb2NrICk7Cn0gTXBl
Z0VuY0NvbnRleHQ7CgoKaW50IERDVF9jb21tb25faW5pdChNcGVnRW5jQ29udGV4dCAqcyk7Cmlu
dCBNUFZfY29tbW9uX2luaXQoTXBlZ0VuY0NvbnRleHQgKnMpOwp2b2lkIE1QVl9jb21tb25fZW5k
KE1wZWdFbmNDb250ZXh0ICpzKTsKdm9pZCBNUFZfZGVjb2RlX21iKE1wZWdFbmNDb250ZXh0ICpz
LCBEQ1RFTEVNIGJsb2NrWzZdWzY0XSk7CmludCBNUFZfZnJhbWVfc3RhcnQoTXBlZ0VuY0NvbnRl
eHQgKnMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCk7CnZvaWQgTVBWX2ZyYW1lX2VuZChNcGVnRW5j
Q29udGV4dCAqcyk7Cgp2b2lkIE1QVl9jb21tb25faW5pdF9tbXgoTXBlZ0VuY0NvbnRleHQgKnMp
OwojIDU1NiAibXBlZ3ZpZGVvLmgiCmV4dGVybiB2b2lkICgqZHJhd19lZGdlcykoVUlOVDggKmJ1
ZiwgaW50IHdyYXAsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHcpOwp2b2lkIGZmX2NvbmNl
YWxfcGFzdF9lcnJvcnMoTXBlZ0VuY0NvbnRleHQgKnMsIGludCBjb25jZWFsX2FsbCk7CnZvaWQg
ZmZfY29weV9iaXRzKFB1dEJpdENvbnRleHQgKnBiLCBVSU5UOCAqc3JjLCBpbnQgbGVuZ3RoKTsK
dm9pZCBmZl9jbGVhbl9pbnRyYV90YWJsZV9lbnRyaWVzKE1wZWdFbmNDb250ZXh0ICpzKTsKdm9p
ZCBmZl9pbml0X3NjYW50YWJsZShNcGVnRW5jQ29udGV4dCAqcywgU2NhblRhYmxlICpzdCwgY29u
c3QgVUlOVDggKnNyY19zY2FudGFibGUpOwp2b2lkIGZmX2Vycm9yX3Jlc2lsaWVuY2UoTXBlZ0Vu
Y0NvbnRleHQgKnMpOwp2b2lkIGZmX2RyYXdfaG9yaXpfYmFuZChNcGVnRW5jQ29udGV4dCAqcyk7
CgpleHRlcm4gaW50IGZmX2JpdF9leGFjdDsKCnN0YXRpYyBpbmxpbmUgdm9pZCBmZl9pbml0X2Js
b2NrX2luZGV4KE1wZWdFbmNDb250ZXh0ICpzKXsKICAgIHMtPmJsb2NrX2luZGV4WzBdPSBzLT5i
bG9ja193cmFwWzBdKihzLT5tYl95KjIgKyAxKSAtIDEgKyBzLT5tYl94KjI7CiAgICBzLT5ibG9j
a19pbmRleFsxXT0gcy0+YmxvY2tfd3JhcFswXSoocy0+bWJfeSoyICsgMSkgKyBzLT5tYl94KjI7
CiAgICBzLT5ibG9ja19pbmRleFsyXT0gcy0+YmxvY2tfd3JhcFswXSoocy0+bWJfeSoyICsgMikg
LSAxICsgcy0+bWJfeCoyOwogICAgcy0+YmxvY2tfaW5kZXhbM109IHMtPmJsb2NrX3dyYXBbMF0q
KHMtPm1iX3kqMiArIDIpICsgcy0+bWJfeCoyOwogICAgcy0+YmxvY2tfaW5kZXhbNF09IHMtPmJs
b2NrX3dyYXBbNF0qKHMtPm1iX3kgKyAxKSArIHMtPmJsb2NrX3dyYXBbMF0qKHMtPm1iX2hlaWdo
dCoyICsgMikgKyBzLT5tYl94OwogICAgcy0+YmxvY2tfaW5kZXhbNV09IHMtPmJsb2NrX3dyYXBb
NF0qKHMtPm1iX3kgKyAxICsgcy0+bWJfaGVpZ2h0ICsgMikgKyBzLT5ibG9ja193cmFwWzBdKihz
LT5tYl9oZWlnaHQqMiArIDIpICsgcy0+bWJfeDsKfQoKc3RhdGljIGlubGluZSB2b2lkIGZmX3Vw
ZGF0ZV9ibG9ja19pbmRleChNcGVnRW5jQ29udGV4dCAqcyl7CiAgICBzLT5ibG9ja19pbmRleFsw
XSs9MjsKICAgIHMtPmJsb2NrX2luZGV4WzFdKz0yOwogICAgcy0+YmxvY2tfaW5kZXhbMl0rPTI7
CiAgICBzLT5ibG9ja19pbmRleFszXSs9MjsKICAgIHMtPmJsb2NrX2luZGV4WzRdKys7CiAgICBz
LT5ibG9ja19pbmRleFs1XSsrOwp9CgoKCnZvaWQgZmZfZXN0aW1hdGVfcF9mcmFtZV9tb3Rpb24o
TXBlZ0VuY0NvbnRleHQgKiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYl94
LCBpbnQgbWJfeSk7CnZvaWQgZmZfZXN0aW1hdGVfYl9mcmFtZV9tb3Rpb24oTXBlZ0VuY0NvbnRl
eHQgKiBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYl94LCBpbnQgbWJfeSk7
CmludCBmZl9nZXRfYmVzdF9mY29kZShNcGVnRW5jQ29udGV4dCAqIHMsIGludDE2X3QgKCptdl90
YWJsZSlbMl0sIGludCB0eXBlKTsKdm9pZCBmZl9maXhfbG9uZ19wX212cyhNcGVnRW5jQ29udGV4
dCAqIHMpOwp2b2lkIGZmX2ZpeF9sb25nX2JfbXZzKE1wZWdFbmNDb250ZXh0ICogcywgaW50MTZf
dCAoKm12X3RhYmxlKVsyXSwgaW50IGZfY29kZSwgaW50IHR5cGUpOwoKCgpleHRlcm4gY29uc3Qg
SU5UMTYgZmZfbXBlZzFfZGVmYXVsdF9pbnRyYV9tYXRyaXhbNjRdOwpleHRlcm4gY29uc3QgSU5U
MTYgZmZfbXBlZzFfZGVmYXVsdF9ub25faW50cmFfbWF0cml4WzY0XTsKZXh0ZXJuIFVJTlQ4IGZm
X21wZWcxX2RjX3NjYWxlX3RhYmxlWzEyOF07Cgp2b2lkIG1wZWcxX2VuY29kZV9waWN0dXJlX2hl
YWRlcihNcGVnRW5jQ29udGV4dCAqcywgaW50IHBpY3R1cmVfbnVtYmVyKTsKdm9pZCBtcGVnMV9l
bmNvZGVfbWIoTXBlZ0VuY0NvbnRleHQgKnMsCiAgICAgICAgICAgICAgICAgICAgIERDVEVMRU0g
YmxvY2tbNl1bNjRdLAogICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9uX3gsIGludCBtb3Rp
b25feSk7CnZvaWQgZmZfbXBlZzFfZW5jb2RlX2luaXQoTXBlZ0VuY0NvbnRleHQgKnMpOwoKCgp0
eXBlZGVmIHN0cnVjdCBSTFRhYmxlIHsKICAgIGludCBuOwogICAgaW50IGxhc3Q7CiAgICBjb25z
dCBVSU5UMTYgKCp0YWJsZV92bGMpWzJdOwogICAgY29uc3QgSU5UOCAqdGFibGVfcnVuOwogICAg
Y29uc3QgSU5UOCAqdGFibGVfbGV2ZWw7CiAgICBVSU5UOCAqaW5kZXhfcnVuWzJdOwogICAgSU5U
OCAqbWF4X2xldmVsWzJdOwogICAgSU5UOCAqbWF4X3J1blsyXTsKICAgIFZMQyB2bGM7CiAgICBS
TF9WTENfRUxFTSAqcmxfdmxjWzMyXTsKfSBSTFRhYmxlOwoKdm9pZCBpbml0X3JsKFJMVGFibGUg
KnJsKTsKdm9pZCBpbml0X3ZsY19ybChSTFRhYmxlICpybCk7CgpzdGF0aWMgaW5saW5lIGludCBn
ZXRfcmxfaW5kZXgoY29uc3QgUkxUYWJsZSAqcmwsIGludCBsYXN0LCBpbnQgcnVuLCBpbnQgbGV2
ZWwpCnsKICAgIGludCBpbmRleDsKICAgIGluZGV4ID0gcmwtPmluZGV4X3J1bltsYXN0XVtydW5d
OwogICAgaWYgKGluZGV4ID49IHJsLT5uKQogICAgICAgIHJldHVybiBybC0+bjsKICAgIGlmIChs
ZXZlbCA+IHJsLT5tYXhfbGV2ZWxbbGFzdF1bcnVuXSkKICAgICAgICByZXR1cm4gcmwtPm47CiAg
ICByZXR1cm4gaW5kZXggKyBsZXZlbCAtIDE7Cn0KCmV4dGVybiBVSU5UOCBmZl9tcGVnNF95X2Rj
X3NjYWxlX3RhYmxlWzMyXTsKZXh0ZXJuIFVJTlQ4IGZmX21wZWc0X2NfZGNfc2NhbGVfdGFibGVb
MzJdOwpleHRlcm4gY29uc3QgSU5UMTYgZmZfbXBlZzRfZGVmYXVsdF9pbnRyYV9tYXRyaXhbNjRd
OwpleHRlcm4gY29uc3QgSU5UMTYgZmZfbXBlZzRfZGVmYXVsdF9ub25faW50cmFfbWF0cml4WzY0
XTsKdm9pZCBoMjYzX2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqcywKICAgICAgICAgICAgICAg
ICAgICBEQ1RFTEVNIGJsb2NrWzZdWzY0XSwKICAgICAgICAgICAgICAgICAgICBpbnQgbW90aW9u
X3gsIGludCBtb3Rpb25feSk7CnZvaWQgbXBlZzRfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpz
LAogICAgICAgICAgICAgICAgICAgIERDVEVMRU0gYmxvY2tbNl1bNjRdLAogICAgICAgICAgICAg
ICAgICAgIGludCBtb3Rpb25feCwgaW50IG1vdGlvbl95KTsKdm9pZCBoMjYzX2VuY29kZV9waWN0
dXJlX2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcywgaW50IHBpY3R1cmVfbnVtYmVyKTsKaW50IGgy
NjNfZW5jb2RlX2dvYl9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgbWJfbGluZSk7CklO
VDE2ICpoMjYzX3ByZWRfbW90aW9uKE1wZWdFbmNDb250ZXh0ICogcywgaW50IGJsb2NrLAogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgKnB4LCBpbnQgKnB5KTsKdm9pZCBtcGVnNF9wcmVkX2Fj
KE1wZWdFbmNDb250ZXh0ICogcywgSU5UMTYgKmJsb2NrLCBpbnQgbiwKICAgICAgICAgICAgICAg
ICAgIGludCBkaXIpOwp2b2lkIGZmX3NldF9tcGVnNF90aW1lKE1wZWdFbmNDb250ZXh0ICogcywg
aW50IHBpY3R1cmVfbnVtYmVyKTsKdm9pZCBtcGVnNF9lbmNvZGVfcGljdHVyZV9oZWFkZXIoTXBl
Z0VuY0NvbnRleHQgKnMsIGludCBwaWN0dXJlX251bWJlcik7CnZvaWQgaDI2M19lbmNvZGVfaW5p
dChNcGVnRW5jQ29udGV4dCAqcyk7CnZvaWQgaDI2M19kZWNvZGVfaW5pdF92bGMoTXBlZ0VuY0Nv
bnRleHQgKnMpOwppbnQgaDI2M19kZWNvZGVfcGljdHVyZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQg
KnMpOwppbnQgZmZfaDI2M19kZWNvZGVfZ29iX2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcyk7Cmlu
dCBmZl9tcGVnNF9kZWNvZGVfcGljdHVyZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKiBzLCBHZXRC
aXRDb250ZXh0ICpnYik7CgoKaW50IGludGVsX2gyNjNfZGVjb2RlX3BpY3R1cmVfaGVhZGVyKE1w
ZWdFbmNDb250ZXh0ICpzKTsKaW50IGZmX2gyNjNfZGVjb2RlX21iKE1wZWdFbmNDb250ZXh0ICpz
LAogICAgICAgICAgICAgICAgICAgICAgRENURUxFTSBibG9ja1s2XVs2NF0pOwppbnQgaDI2M19n
ZXRfcGljdHVyZV9mb3JtYXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKdm9pZCBmZl9tcGVnNF9l
bmNvZGVfdmlkZW9fcGFja2V0X2hlYWRlcihNcGVnRW5jQ29udGV4dCAqcyk7CnZvaWQgZmZfbXBl
ZzRfY2xlYW5fYnVmZmVycyhNcGVnRW5jQ29udGV4dCAqcyk7CnZvaWQgZmZfbXBlZzRfc3R1ZmZp
bmcoUHV0Qml0Q29udGV4dCAqIHBiYyk7CnZvaWQgZmZfbXBlZzRfaW5pdF9wYXJ0aXRpb25zKE1w
ZWdFbmNDb250ZXh0ICpzKTsKdm9pZCBmZl9tcGVnNF9tZXJnZV9wYXJ0aXRpb25zKE1wZWdFbmND
b250ZXh0ICpzKTsKdm9pZCBmZl9jbGVhbl9tcGVnNF9xc2NhbGVzKE1wZWdFbmNDb250ZXh0ICpz
KTsKdm9pZCBmZl9jbGVhbl9oMjYzX3FzY2FsZXMoTXBlZ0VuY0NvbnRleHQgKnMpOwppbnQgZmZf
bXBlZzRfZGVjb2RlX3BhcnRpdGlvbnMoTXBlZ0VuY0NvbnRleHQgKnMpOwppbnQgZmZfbXBlZzRf
Z2V0X3ZpZGVvX3BhY2tldF9wcmVmaXhfbGVuZ3RoKE1wZWdFbmNDb250ZXh0ICpzKTsKaW50IGZm
X2gyNjNfcmVzeW5jKE1wZWdFbmNDb250ZXh0ICpzKTsKaW50IGZmX2gyNjNfZ2V0X2dvYl9oZWln
aHQoTXBlZ0VuY0NvbnRleHQgKnMpOwoKCgp2b2lkIHJ2MTBfZW5jb2RlX3BpY3R1cmVfaGVhZGVy
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgcGljdHVyZV9udW1iZXIpOwppbnQgcnZfZGVjb2RlX2Rj
KE1wZWdFbmNDb250ZXh0ICpzLCBpbnQgbik7CgoKCnZvaWQgbXNtcGVnNF9lbmNvZGVfcGljdHVy
ZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKiBzLCBpbnQgcGljdHVyZV9udW1iZXIpOwp2b2lkIG1z
bXBlZzRfZW5jb2RlX2V4dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKiBzKTsKdm9pZCBtc21wZWc0
X2VuY29kZV9tYihNcGVnRW5jQ29udGV4dCAqIHMsCiAgICAgICAgICAgICAgICAgICAgICAgRENU
RUxFTSBibG9ja1s2XVs2NF0sCiAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vdGlvbl94LCBp
bnQgbW90aW9uX3kpOwppbnQgbXNtcGVnNF9kZWNvZGVfcGljdHVyZV9oZWFkZXIoTXBlZ0VuY0Nv
bnRleHQgKiBzKTsKaW50IG1zbXBlZzRfZGVjb2RlX2V4dF9oZWFkZXIoTXBlZ0VuY0NvbnRleHQg
KiBzLCBpbnQgYnVmX3NpemUpOwppbnQgZmZfbXNtcGVnNF9kZWNvZGVfaW5pdChNcGVnRW5jQ29u
dGV4dCAqcyk7CnZvaWQgZmZfbXNtcGVnNF9lbmNvZGVfaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7
CgoKCmludCBtanBlZ19pbml0KE1wZWdFbmNDb250ZXh0ICpzKTsKdm9pZCBtanBlZ19jbG9zZShN
cGVnRW5jQ29udGV4dCAqcyk7CnZvaWQgbWpwZWdfZW5jb2RlX21iKE1wZWdFbmNDb250ZXh0ICpz
LAogICAgICAgICAgICAgICAgICAgICBEQ1RFTEVNIGJsb2NrWzZdWzY0XSk7CnZvaWQgbWpwZWdf
cGljdHVyZV9oZWFkZXIoTXBlZ0VuY0NvbnRleHQgKnMpOwp2b2lkIG1qcGVnX3BpY3R1cmVfdHJh
aWxlcihNcGVnRW5jQ29udGV4dCAqcyk7CgoKCmludCBmZl9yYXRlX2NvbnRyb2xfaW5pdChNcGVn
RW5jQ29udGV4dCAqcyk7CmZsb2F0IGZmX3JhdGVfZXN0aW1hdGVfcXNjYWxlKE1wZWdFbmNDb250
ZXh0ICpzKTsKdm9pZCBmZl93cml0ZV9wYXNzMV9zdGF0cyhNcGVnRW5jQ29udGV4dCAqcyk7CnZv
aWQgZmZfcmF0ZV9jb250cm9sX3VuaW5pdChNcGVnRW5jQ29udGV4dCAqcyk7CmRvdWJsZSBmZl9l
dmFsKGNoYXIgKnMsIGRvdWJsZSAqY29uc3RfdmFsdWUsIGNoYXIgKipjb25zdF9uYW1lLAogICAg
ICAgICAgICAgICBkb3VibGUgKCoqZnVuYzEpKHZvaWQgKiwgZG91YmxlKSwgY2hhciAqKmZ1bmMx
X25hbWUsCiAgICAgICAgICAgICAgIGRvdWJsZSAoKipmdW5jMikodm9pZCAqLCBkb3VibGUsIGRv
dWJsZSksIGNoYXIgKipmdW5jMl9uYW1lLAogICAgICAgICAgICAgICB2b2lkICpvcGFxdWUpOwoj
IDIyICJ1dGlscy5jIiAyCgp2b2lkICphdl9tYWxsb2N6KGludCBzaXplKQp7CiAgICB2b2lkICpw
dHI7CiAgICBwdHIgPSBhdl9tYWxsb2Moc2l6ZSk7CiAgICBpZiAoIXB0cikKICAgICAgICByZXR1
cm4gKCh2b2lkICopMCk7CiAgICAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KHNpemUpICYmIChzaXplKSA8PSAxNiA/ICgoc2l6ZSkgPT0gMSA/ICh7IHZvaWQgKl9fcyA9IChw
dHIpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2
b2lkICpfX3MgPSAocHRyKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hv
cnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90
IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZSkpIHsg
Y2FzZSAxNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAx
MDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+
X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOyBjYXNlIDM6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAw
eDAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMg
PSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2Ug
MTA6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOyBjYXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kg
PSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsgY2FzZSA5OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAw
eDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAx
OiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5f
X3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgNCk7IGNhc2UgMTI6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4
MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6
IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkg
OiAoX19idWlsdGluX2NvbnN0YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19z
ID0gKHB0cik7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6ZSk7IF9fczsgfSkgOiBt
ZW1zZXQgKHB0ciwgMCwgc2l6ZSkpKSk7CiAgICByZXR1cm4gcHRyOwp9CgoKdm9pZCBfX2F2X2Zy
ZWVwKHZvaWQgKipwdHIpCnsKICAgIGF2X2ZyZWUoKnB0cik7CiAgICAqcHRyID0gKCh2b2lkICop
MCk7Cn0KCgpBVkNvZGVjICpmaXJzdF9hdmNvZGVjOwoKdm9pZCByZWdpc3Rlcl9hdmNvZGVjKEFW
Q29kZWMgKmZvcm1hdCkKewogICAgQVZDb2RlYyAqKnA7CiAgICBwID0gJmZpcnN0X2F2Y29kZWM7
CiAgICB3aGlsZSAoKnAgIT0gKCh2b2lkICopMCkpIHAgPSAmKCpwKS0+bmV4dDsKICAgICpwID0g
Zm9ybWF0OwogICAgZm9ybWF0LT5uZXh0ID0gKCh2b2lkICopMCk7Cn0KCnZvaWQgYXZjb2RlY19n
ZXRfY29udGV4dF9kZWZhdWx0cyhBVkNvZGVjQ29udGV4dCAqcyl7CiAgICBzLT5iaXRfcmF0ZT0g
ODAwKjEwMDA7CiAgICBzLT5iaXRfcmF0ZV90b2xlcmFuY2U9IHMtPmJpdF9yYXRlKjEwOwogICAg
cy0+cW1pbj0gMjsKICAgIHMtPnFtYXg9IDMxOwogICAgcy0+cmNfZXE9ICJ0ZXhecUNvbXAiOwog
ICAgcy0+cWNvbXByZXNzPSAwLjU7CiAgICBzLT5tYXhfcWRpZmY9IDM7CiAgICBzLT5iX3F1YW50
X2ZhY3Rvcj0xLjI1OwogICAgcy0+Yl9xdWFudF9vZmZzZXQ9MS4yNTsKICAgIHMtPmlfcXVhbnRf
ZmFjdG9yPS0wLjg7CiAgICBzLT5pX3F1YW50X29mZnNldD0wLjA7CiAgICBzLT5lcnJvcl9jb25j
ZWFsbWVudD0gMzsKICAgIHMtPmVycm9yX3Jlc2lsaWVuY2U9IDE7CiAgICBzLT53b3JrYXJvdW5k
X2J1Z3M9IDE7CiAgICBzLT5mcmFtZV9yYXRlID0gMjUgKiAxMDAwMDsKICAgIHMtPmdvcF9zaXpl
PSA1MDsKICAgIHMtPm1lX21ldGhvZD0gTUVfRVBaUzsKfQoKCgoKCkFWQ29kZWNDb250ZXh0ICph
dmNvZGVjX2FsbG9jX2NvbnRleHQodm9pZCl7CiAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg9IGF2
X21hbGxvY3ooc2l6ZW9mKEFWQ29kZWNDb250ZXh0KSk7CgogICAgaWYoYXZjdHg9PSgodm9pZCAq
KTApKSByZXR1cm4gKCh2b2lkICopMCk7CgogICAgYXZjb2RlY19nZXRfY29udGV4dF9kZWZhdWx0
cyhhdmN0eCk7CgogICAgcmV0dXJuIGF2Y3R4Owp9CgppbnQgYXZjb2RlY19vcGVuKEFWQ29kZWND
b250ZXh0ICphdmN0eCwgQVZDb2RlYyAqY29kZWMpCnsKICAgIGludCByZXQ7CgogICAgYXZjdHgt
PmNvZGVjID0gY29kZWM7CiAgICBhdmN0eC0+ZnJhbWVfbnVtYmVyID0gMDsKICAgIGlmIChjb2Rl
Yy0+cHJpdl9kYXRhX3NpemUgPiAwKSB7CiAgICAgICAgYXZjdHgtPnByaXZfZGF0YSA9IGF2X21h
bGxvY3ooY29kZWMtPnByaXZfZGF0YV9zaXplKTsKICAgICAgICBpZiAoIWF2Y3R4LT5wcml2X2Rh
dGEpCiAgICAgICAgICAgIHJldHVybiAtMTI7CiAgICB9IGVsc2UgewogICAgICAgIGF2Y3R4LT5w
cml2X2RhdGEgPSAoKHZvaWQgKikwKTsKICAgIH0KICAgIHJldCA9IGF2Y3R4LT5jb2RlYy0+aW5p
dChhdmN0eCk7CiAgICBpZiAocmV0IDwgMCkgewogICAgICAgIF9fYXZfZnJlZXAoKHZvaWQgKiop
KCZhdmN0eC0+cHJpdl9kYXRhKSk7CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KICAgIHJldHVy
biAwOwp9CgppbnQgYXZjb2RlY19lbmNvZGVfYXVkaW8oQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBV
SU5UOCAqYnVmLCBpbnQgYnVmX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
aG9ydCAqc2FtcGxlcykKewogICAgaW50IHJldDsKCiAgICByZXQgPSBhdmN0eC0+Y29kZWMtPmVu
Y29kZShhdmN0eCwgYnVmLCBidWZfc2l6ZSwgKHZvaWQgKilzYW1wbGVzKTsKICAgIGF2Y3R4LT5m
cmFtZV9udW1iZXIrKzsKICAgIHJldHVybiByZXQ7Cn0KCmludCBhdmNvZGVjX2VuY29kZV92aWRl
byhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIFVJTlQ4ICpidWYsIGludCBidWZfc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWUGljdHVyZSAqcGljdCkKewogICAgaW50IHJldDsK
CiAgICByZXQgPSBhdmN0eC0+Y29kZWMtPmVuY29kZShhdmN0eCwgYnVmLCBidWZfc2l6ZSwgKHZv
aWQgKilwaWN0KTsKCiAgICB7IGlmIChtbV9mbGFncyAmIDB4MDAwMSkgZW1tcygpO307CgogICAg
YXZjdHgtPmZyYW1lX251bWJlcisrOwogICAgcmV0dXJuIHJldDsKfQoKCgoKaW50IGF2Y29kZWNf
ZGVjb2RlX3ZpZGVvKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZQaWN0dXJlICpwaWN0dXJlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpnb3RfcGljdHVyZV9wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBVSU5UOCAqYnVmLCBpbnQgYnVmX3NpemUpCnsKICAgIGludCByZXQ7Cgog
ICAgcmV0ID0gYXZjdHgtPmNvZGVjLT5kZWNvZGUoYXZjdHgsIHBpY3R1cmUsIGdvdF9waWN0dXJl
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmX3NpemUpOwoKICAg
IHsgaWYgKG1tX2ZsYWdzICYgMHgwMDAxKSBlbW1zKCk7fTsKCiAgICBpZiAoKmdvdF9waWN0dXJl
X3B0cikKICAgICAgICBhdmN0eC0+ZnJhbWVfbnVtYmVyKys7CiAgICByZXR1cm4gcmV0Owp9CgoK
CgoKaW50IGF2Y29kZWNfZGVjb2RlX2F1ZGlvKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgSU5UMTYg
KnNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZyYW1lX3NpemVfcHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDggKmJ1ZiwgaW50IGJ1Zl9zaXplKQp7CiAgICBp
bnQgcmV0OwoKICAgIHJldCA9IGF2Y3R4LT5jb2RlYy0+ZGVjb2RlKGF2Y3R4LCBzYW1wbGVzLCBm
cmFtZV9zaXplX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmX3Np
emUpOwogICAgYXZjdHgtPmZyYW1lX251bWJlcisrOwogICAgcmV0dXJuIHJldDsKfQoKaW50IGF2
Y29kZWNfY2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQp7CiAgICBpZiAoYXZjdHgtPmNvZGVj
LT5jbG9zZSkKICAgICAgICBhdmN0eC0+Y29kZWMtPmNsb3NlKGF2Y3R4KTsKICAgIF9fYXZfZnJl
ZXAoKHZvaWQgKiopKCZhdmN0eC0+cHJpdl9kYXRhKSk7CiAgICBhdmN0eC0+Y29kZWMgPSAoKHZv
aWQgKikwKTsKICAgIHJldHVybiAwOwp9CgpBVkNvZGVjICphdmNvZGVjX2ZpbmRfZW5jb2Rlcihl
bnVtIENvZGVjSUQgaWQpCnsKICAgIEFWQ29kZWMgKnA7CiAgICBwID0gZmlyc3RfYXZjb2RlYzsK
ICAgIHdoaWxlIChwKSB7CiAgICAgICAgaWYgKHAtPmVuY29kZSAhPSAoKHZvaWQgKikwKSAmJiBw
LT5pZCA9PSBpZCkKICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgcCA9IHAtPm5leHQ7CiAg
ICB9CiAgICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCkFWQ29kZWMgKmF2Y29kZWNfZmluZF9lbmNv
ZGVyX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSkKewogICAgQVZDb2RlYyAqcDsKICAgIHAgPSBm
aXJzdF9hdmNvZGVjOwogICAgd2hpbGUgKHApIHsKICAgICAgICBpZiAocC0+ZW5jb2RlICE9ICgo
dm9pZCAqKTApICYmIF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsg
KF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAocC0+
bmFtZSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKHAt
Pm5hbWUpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChwLT5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShw
LT5uYW1lKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocC0+bmFtZSkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHAtPm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHAt
Pm5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikocC0+bmFtZSkpWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChwLT5uYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
cC0+bmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikocC0+bmFtZSkgPT0gMSkgJiYg
KF9fczJfbGVuID0gc3RybGVuIChwLT5uYW1lKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikocC0+bmFtZSkpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHAtPm5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChwLT5uYW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5h
bWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1
bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVswXTsgaWYgKF9f
czJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVsy
XSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobmFtZSwgcC0+bmFtZSkpKSk7IH0p
ID09IDApCiAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgIHAgPSBwLT5uZXh0OwogICAgfQog
ICAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpBVkNvZGVjICphdmNvZGVjX2ZpbmRfZGVjb2Rlcihl
bnVtIENvZGVjSUQgaWQpCnsKICAgIEFWQ29kZWMgKnA7CiAgICBwID0gZmlyc3RfYXZjb2RlYzsK
ICAgIHdoaWxlIChwKSB7CiAgICAgICAgaWYgKHAtPmRlY29kZSAhPSAoKHZvaWQgKikwKSAmJiBw
LT5pZCA9PSBpZCkKICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgcCA9IHAtPm5leHQ7CiAg
ICB9CiAgICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCkFWQ29kZWMgKmF2Y29kZWNfZmluZF9kZWNv
ZGVyX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSkKewogICAgQVZDb2RlYyAqcDsKICAgIHAgPSBm
aXJzdF9hdmNvZGVjOwogICAgd2hpbGUgKHApIHsKICAgICAgICBpZiAocC0+ZGVjb2RlICE9ICgo
dm9pZCAqKTApICYmIF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsg
KF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAocC0+
bmFtZSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKHAt
Pm5hbWUpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChwLT5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShw
LT5uYW1lKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocC0+bmFtZSkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHAtPm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHAt
Pm5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikocC0+bmFtZSkpWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChwLT5uYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
cC0+bmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikocC0+bmFtZSkgPT0gMSkgJiYg
KF9fczJfbGVuID0gc3RybGVuIChwLT5uYW1lKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikocC0+bmFtZSkpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHAtPm5hbWUpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChwLT5uYW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5h
bWUpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1
bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVswXTsgaWYgKF9f
czJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwLT5uYW1lKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUpKVsy
XSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHAtPm5hbWUp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobmFtZSwgcC0+bmFtZSkpKSk7IH0p
ID09IDApCiAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgIHAgPSBwLT5uZXh0OwogICAgfQog
ICAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpBVkNvZGVjICphdmNvZGVjX2ZpbmQoZW51bSBDb2Rl
Y0lEIGlkKQp7CiAgICBBVkNvZGVjICpwOwogICAgcCA9IGZpcnN0X2F2Y29kZWM7CiAgICB3aGls
ZSAocCkgewogICAgICAgIGlmIChwLT5pZCA9PSBpZCkKICAgICAgICAgICAgcmV0dXJuIHA7CiAg
ICAgICAgcCA9IHAtPm5leHQ7CiAgICB9CiAgICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCmNvbnN0
IGNoYXIgKnBpeF9mbXRfc3RyW10gPSB7CiAgICAieXV2NDIwcCIsCiAgICAieXV2NDIyIiwKICAg
ICJyZ2IyNCIsCiAgICAiYmdyMjQiLAogICAgInl1djQyMnAiLAogICAgInl1djQ0NHAiLAogICAg
InJnYmEzMiIsCiAgICAiYmdyYTMyIiwKICAgICJ5dXY0MTBwIiwKICAgICJ5dXY0MTFwIiwKfTsK
CnZvaWQgYXZjb2RlY19zdHJpbmcoY2hhciAqYnVmLCBpbnQgYnVmX3NpemUsIEFWQ29kZWNDb250
ZXh0ICplbmMsIGludCBlbmNvZGUpCnsKICAgIGNvbnN0IGNoYXIgKmNvZGVjX25hbWU7CiAgICBB
VkNvZGVjICpwOwogICAgY2hhciBidWYxWzMyXTsKICAgIGNoYXIgY2hhbm5lbHNfc3RyWzEwMF07
CiAgICBpbnQgYml0cmF0ZTsKCiAgICBpZiAoZW5jb2RlKQogICAgICAgIHAgPSBhdmNvZGVjX2Zp
bmRfZW5jb2RlcihlbmMtPmNvZGVjX2lkKTsKICAgIGVsc2UKICAgICAgICBwID0gYXZjb2RlY19m
aW5kX2RlY29kZXIoZW5jLT5jb2RlY19pZCk7CgogICAgaWYgKHApIHsKICAgICAgICBjb2RlY19u
YW1lID0gcC0+bmFtZTsKICAgIH0gZWxzZSBpZiAoZW5jLT5jb2RlY19uYW1lWzBdICE9ICdcMCcp
IHsKICAgICAgICBjb2RlY19uYW1lID0gZW5jLT5jb2RlY19uYW1lOwogICAgfSBlbHNlIHsKCiAg
ICAgICAgaWYgKGVuYy0+Y29kZWNfdHlwZSA9PSBDT0RFQ19UWVBFX1ZJREVPKSB7CiAgICAgICAg
ICAgIHNucHJpbnRmKGJ1ZjEsIHNpemVvZihidWYxKSwgIiVjJWMlYyVjIiwKICAgICAgICAgICAg
ICAgICAgICAgZW5jLT5jb2RlY190YWcgJiAweGZmLAogICAgICAgICAgICAgICAgICAgICAoZW5j
LT5jb2RlY190YWcgPj4gOCkgJiAweGZmLAogICAgICAgICAgICAgICAgICAgICAoZW5jLT5jb2Rl
Y190YWcgPj4gMTYpICYgMHhmZiwKICAgICAgICAgICAgICAgICAgICAgKGVuYy0+Y29kZWNfdGFn
ID4+IDI0KSAmIDB4ZmYpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNucHJpbnRmKGJ1
ZjEsIHNpemVvZihidWYxKSwgIjB4JTA0eCIsIGVuYy0+Y29kZWNfdGFnKTsKICAgICAgICB9CiAg
ICAgICAgY29kZWNfbmFtZSA9IGJ1ZjE7CiAgICB9CgogICAgc3dpdGNoKGVuYy0+Y29kZWNfdHlw
ZSkgewogICAgY2FzZSBDT0RFQ19UWVBFX1ZJREVPOgogICAgICAgIHNucHJpbnRmKGJ1ZiwgYnVm
X3NpemUsCiAgICAgICAgICAgICAgICAgIlZpZGVvOiAlcyVzIiwKICAgICAgICAgICAgICAgICBj
b2RlY19uYW1lLCBlbmMtPmZsYWdzICYgMHgwMDAxID8gIiAoaHEpIiA6ICIiKTsKICAgICAgICBp
ZiAoZW5jLT5jb2RlY19pZCA9PSBDT0RFQ19JRF9SQVdWSURFTykgewogICAgICAgICAgICBzbnBy
aW50ZihidWYgKyBzdHJsZW4oYnVmKSwgYnVmX3NpemUgLSBzdHJsZW4oYnVmKSwKICAgICAgICAg
ICAgICAgICAgICAgIiwgJXMiLAogICAgICAgICAgICAgICAgICAgICBwaXhfZm10X3N0cltlbmMt
PnBpeF9mbXRdKTsKICAgICAgICB9CiAgICAgICAgaWYgKGVuYy0+d2lkdGgpIHsKICAgICAgICAg
ICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIGJ1Zl9zaXplIC0gc3RybGVuKGJ1ZiksCiAg
ICAgICAgICAgICAgICAgICAgICIsICVkeCVkLCAlMC4yZiBmcHMiLAogICAgICAgICAgICAgICAg
ICAgICBlbmMtPndpZHRoLCBlbmMtPmhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgKGZsb2F0
KWVuYy0+ZnJhbWVfcmF0ZSAvIDEwMDAwKTsKICAgICAgICB9CiAgICAgICAgaWYgKGVuY29kZSkg
ewogICAgICAgICAgICBzbnByaW50ZihidWYgKyBzdHJsZW4oYnVmKSwgYnVmX3NpemUgLSBzdHJs
ZW4oYnVmKSwKICAgICAgICAgICAgICAgICAgICAgIiwgcT0lZC0lZCIsIGVuYy0+cW1pbiwgZW5j
LT5xbWF4KTsKICAgICAgICB9CiAgICAgICAgYml0cmF0ZSA9IGVuYy0+Yml0X3JhdGU7CiAgICAg
ICAgYnJlYWs7CiAgICBjYXNlIENPREVDX1RZUEVfQVVESU86CiAgICAgICAgc25wcmludGYoYnVm
LCBidWZfc2l6ZSwKICAgICAgICAgICAgICAgICAiQXVkaW86ICVzIiwKICAgICAgICAgICAgICAg
ICBjb2RlY19uYW1lKTsKICAgICAgICBzd2l0Y2ggKGVuYy0+Y2hhbm5lbHMpIHsKICAgICAgICAg
ICAgY2FzZSAxOgogICAgICAgICAgICAgICAgc3RyY3B5KGNoYW5uZWxzX3N0ciwgIm1vbm8iKTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAg
ICBzdHJjcHkoY2hhbm5lbHNfc3RyLCAic3RlcmVvIik7CiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgc3RyY3B5KGNoYW5uZWxzX3N0ciwg
IjU6MSIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICBzcHJpbnRmKGNoYW5uZWxzX3N0ciwgIiVkIGNoYW5uZWxzIiwgZW5jLT5jaGFu
bmVscyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKGVuYy0+
c2FtcGxlX3JhdGUpIHsKICAgICAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIGJ1
Zl9zaXplIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICIsICVkIEh6LCAlcyIs
CiAgICAgICAgICAgICAgICAgICAgIGVuYy0+c2FtcGxlX3JhdGUsCiAgICAgICAgICAgICAgICAg
ICAgIGNoYW5uZWxzX3N0cik7CiAgICAgICAgfQoKCiAgICAgICAgc3dpdGNoKGVuYy0+Y29kZWNf
aWQpIHsKICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9TMTZMRToKICAgICAgICBjYXNlIENPREVD
X0lEX1BDTV9TMTZCRToKICAgICAgICBjYXNlIENPREVDX0lEX1BDTV9VMTZMRToKICAgICAgICBj
YXNlIENPREVDX0lEX1BDTV9VMTZCRToKICAgICAgICAgICAgYml0cmF0ZSA9IGVuYy0+c2FtcGxl
X3JhdGUgKiBlbmMtPmNoYW5uZWxzICogMTY7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgQ09ERUNfSURfUENNX1M4OgogICAgICAgIGNhc2UgQ09ERUNfSURfUENNX1U4OgogICAgICAg
IGNhc2UgQ09ERUNfSURfUENNX0FMQVc6CiAgICAgICAgY2FzZSBDT0RFQ19JRF9QQ01fTVVMQVc6
CiAgICAgICAgICAgIGJpdHJhdGUgPSBlbmMtPnNhbXBsZV9yYXRlICogZW5jLT5jaGFubmVscyAq
IDg7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGJpdHJh
dGUgPSBlbmMtPmJpdF9yYXRlOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAg
YnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAgIGRvIHsgZnByaW50ZihzdGRlcnIsICJBYm9ydCBh
dCAlczolZFxuIiwgInV0aWxzLmMiLCAzNDUpOyBhYm9ydCgpOyB9IHdoaWxlICgwKTsKICAgIH0K
ICAgIGlmIChlbmNvZGUpIHsKICAgICAgICBpZiAoZW5jLT5mbGFncyAmIDB4MDIwMCkKICAgICAg
ICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1ZiksIGJ1Zl9zaXplIC0gc3RybGVuKGJ1Ziks
CiAgICAgICAgICAgICAgICAgICAgICIsIHBhc3MgMSIpOwogICAgICAgIGlmIChlbmMtPmZsYWdz
ICYgMHgwNDAwKQogICAgICAgICAgICBzbnByaW50ZihidWYgKyBzdHJsZW4oYnVmKSwgYnVmX3Np
emUgLSBzdHJsZW4oYnVmKSwKICAgICAgICAgICAgICAgICAgICAgIiwgcGFzcyAyIik7CiAgICB9
CiAgICBpZiAoYml0cmF0ZSAhPSAwKSB7CiAgICAgICAgc25wcmludGYoYnVmICsgc3RybGVuKGJ1
ZiksIGJ1Zl9zaXplIC0gc3RybGVuKGJ1ZiksCiAgICAgICAgICAgICAgICAgIiwgJWQga2IvcyIs
IGJpdHJhdGUgLyAxMDAwKTsKICAgIH0KfQoKCnZvaWQgYXZwaWN0dXJlX2ZpbGwoQVZQaWN0dXJl
ICpwaWN0dXJlLCBVSU5UOCAqcHRyLAogICAgICAgICAgICAgICAgICAgIGludCBwaXhfZm10LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCnsKICAgIGludCBzaXplOwoKICAgIHNpemUgPSB3aWR0aCAq
IGhlaWdodDsKICAgIHN3aXRjaChwaXhfZm10KSB7CiAgICBjYXNlIFBJWF9GTVRfWVVWNDIwUDoK
ICAgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwogICAgICAgIHBpY3R1cmUtPmRhdGFbMV0g
PSBwaWN0dXJlLT5kYXRhWzBdICsgc2l6ZTsKICAgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gcGlj
dHVyZS0+ZGF0YVsxXSArIHNpemUgLyA0OwogICAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0g
d2lkdGg7CiAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSB3aWR0aCAvIDI7CiAgICAgICAg
cGljdHVyZS0+bGluZXNpemVbMl0gPSB3aWR0aCAvIDI7CiAgICAgICAgYnJlYWs7CiAgICBjYXNl
IFBJWF9GTVRfWVVWNDIyUDoKICAgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwogICAgICAg
IHBpY3R1cmUtPmRhdGFbMV0gPSBwaWN0dXJlLT5kYXRhWzBdICsgc2l6ZTsKICAgICAgICBwaWN0
dXJlLT5kYXRhWzJdID0gcGljdHVyZS0+ZGF0YVsxXSArIHNpemUgLyAyOwogICAgICAgIHBpY3R1
cmUtPmxpbmVzaXplWzBdID0gd2lkdGg7CiAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMV0gPSB3
aWR0aCAvIDI7CiAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMl0gPSB3aWR0aCAvIDI7CiAgICAg
ICAgYnJlYWs7CiAgICBjYXNlIFBJWF9GTVRfWVVWNDQ0UDoKICAgICAgICBwaWN0dXJlLT5kYXRh
WzBdID0gcHRyOwogICAgICAgIHBpY3R1cmUtPmRhdGFbMV0gPSBwaWN0dXJlLT5kYXRhWzBdICsg
c2l6ZTsKICAgICAgICBwaWN0dXJlLT5kYXRhWzJdID0gcGljdHVyZS0+ZGF0YVsxXSArIHNpemU7
CiAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSB3aWR0aDsKICAgICAgICBwaWN0dXJlLT5s
aW5lc2l6ZVsxXSA9IHdpZHRoOwogICAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzJdID0gd2lkdGg7
CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIFBJWF9GTVRfUkdCMjQ6CiAgICBjYXNlIFBJWF9GTVRf
QkdSMjQ6CiAgICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKICAgICAgICBwaWN0dXJlLT5k
YXRhWzFdID0gKCh2b2lkICopMCk7CiAgICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9ICgodm9pZCAq
KTApOwogICAgICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gd2lkdGggKiAzOwogICAgICAgIGJy
ZWFrOwogICAgY2FzZSBQSVhfRk1UX1JHQkEzMjoKICAgIGNhc2UgUElYX0ZNVF9CR1JBMzI6CiAg
ICAgICAgcGljdHVyZS0+ZGF0YVswXSA9IHB0cjsKICAgICAgICBwaWN0dXJlLT5kYXRhWzFdID0g
KCh2b2lkICopMCk7CiAgICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9ICgodm9pZCAqKTApOwogICAg
ICAgIHBpY3R1cmUtPmxpbmVzaXplWzBdID0gd2lkdGggKiA0OwogICAgICAgIGJyZWFrOwogICAg
Y2FzZSBQSVhfRk1UX1lVVjQyMjoKICAgICAgICBwaWN0dXJlLT5kYXRhWzBdID0gcHRyOwogICAg
ICAgIHBpY3R1cmUtPmRhdGFbMV0gPSAoKHZvaWQgKikwKTsKICAgICAgICBwaWN0dXJlLT5kYXRh
WzJdID0gKCh2b2lkICopMCk7CiAgICAgICAgcGljdHVyZS0+bGluZXNpemVbMF0gPSB3aWR0aCAq
IDI7CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAgIHBpY3R1cmUtPmRhdGFbMF0g
PSAoKHZvaWQgKikwKTsKICAgICAgICBwaWN0dXJlLT5kYXRhWzFdID0gKCh2b2lkICopMCk7CiAg
ICAgICAgcGljdHVyZS0+ZGF0YVsyXSA9ICgodm9pZCAqKTApOwogICAgICAgIGJyZWFrOwogICAg
fQp9CgppbnQgYXZwaWN0dXJlX2dldF9zaXplKGludCBwaXhfZm10LCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCnsKICAgIGludCBzaXplOwoKICAgIHNpemUgPSB3aWR0aCAqIGhlaWdodDsKICAgIHN3
aXRjaChwaXhfZm10KSB7CiAgICBjYXNlIFBJWF9GTVRfWVVWNDIwUDoKICAgICAgICBzaXplID0g
KHNpemUgKiAzKSAvIDI7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlIFBJWF9GTVRfWVVWNDIyUDoK
ICAgICAgICBzaXplID0gKHNpemUgKiAyKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgUElYX0ZN
VF9ZVVY0NDRQOgogICAgICAgIHNpemUgPSAoc2l6ZSAqIDMpOwogICAgICAgIGJyZWFrOwogICAg
Y2FzZSBQSVhfRk1UX1JHQjI0OgogICAgY2FzZSBQSVhfRk1UX0JHUjI0OgogICAgICAgIHNpemUg
PSAoc2l6ZSAqIDMpOwogICAgICAgIGJyZWFrOwogICAgY2FzZSBQSVhfRk1UX1JHQkEzMjoKICAg
IGNhc2UgUElYX0ZNVF9CR1JBMzI6CiAgICAgICAgc2l6ZSA9IChzaXplICogNCk7CiAgICAgICAg
YnJlYWs7CiAgICBjYXNlIFBJWF9GTVRfWVVWNDIyOgogICAgICAgIHNpemUgPSAoc2l6ZSAqIDIp
OwogICAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgICBzaXplID0gLTE7CiAgICAgICAg
YnJlYWs7CiAgICB9CiAgICByZXR1cm4gc2l6ZTsKfQoKdW5zaWduZWQgYXZjb2RlY192ZXJzaW9u
KCB2b2lkICkKewogIHJldHVybiAweDAwMDQwNjsKfQoKdW5zaWduZWQgYXZjb2RlY19idWlsZCgg
dm9pZCApCnsKICByZXR1cm4gNDYzNzsKfQoKCnZvaWQgYXZjb2RlY19pbml0KHZvaWQpCnsKICAg
IHN0YXRpYyBpbnQgaW5pdGVkID0gMDsKCiAgICBpZiAoaW5pdGVkICE9IDApCiAgICAgICAgcmV0
dXJuOwogICAgaW5pdGVkID0gMTsKCiAgICBkc3B1dGlsX2luaXQoKTsKfQoKCnZvaWQgYXZjb2Rl
Y19mbHVzaF9idWZmZXJzKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKewogICAgTXBlZ0VuY0NvbnRl
eHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwogICAgcy0+bnVtX2F2YWlsYWJsZV9idWZmZXJzPTA7
Cn0KCgpzdGF0aWMgaW50IHJhd19lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqcykKewogICAg
cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQgcmF3X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAq
YXZjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBpbnQgKmRhdGFf
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQ4ICpidWYsIGludCBidWZfc2l6
ZSkKewogICAgcmV0dXJuIC0xOwp9CgpzdGF0aWMgaW50IHJhd19lbmNvZGVfZnJhbWUoQVZDb2Rl
Y0NvbnRleHQgKmF2Y3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqZnJhbWUsIGludCBidWZfc2l6ZSwgdm9pZCAqZGF0YSkKewogICAgcmV0dXJuIC0xOwp9CgpB
VkNvZGVjIHJhd3ZpZGVvX2NvZGVjID0gewogICAgInJhd3ZpZGVvIiwKICAgIENPREVDX1RZUEVf
VklERU8sCiAgICBDT0RFQ19JRF9SQVdWSURFTywKICAgIDAsCiAgICByYXdfZW5jb2RlX2luaXQs
CiAgICByYXdfZW5jb2RlX2ZyYW1lLAogICAgKCh2b2lkICopMCksCiAgICByYXdfZGVjb2RlX2Zy
YW1lLAp9Owo=


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]