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/7376: linux kernel 2.4.19-rc3 parser error w/ 3.2 CVS (works w/ 3.1) on ix86 semaphore.c


>Number:         7376
>Category:       c
>Synopsis:       linux kernel 2.4.19-rc3 parser error w/ 3.2 CVS (works w/ 3.1) on ix86 semaphore.c
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jul 22 11:36:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     priestwilliaml@yahoo.com
>Release:        3.2 CVS sync'ed today (7/22/02 CST)
>Organization:
>Environment:
linux ix86
>Description:
Trying to compile/build Linux Kernel 2.4.19-rc3 on ix86 using
latest bootstrapped 3.2 sync'ed from CVS today (didn't work
with sync from last week either).  File in question is
semaphore.c.  This same file compiles fine w/ 3.1.
./configure --enable-languages="c,c++" \ --prefix=/home/bpriest/usr/local
make bootstrap-lean

/home/bpriest/usr/local/bin/gcc --verbose --save-temps -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=i686   -nostdinc -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -DKBUILD_BASENAME=semaphore  -c -o semaphore.o semaphore.c
Reading specs from /home/bpriest/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs
Configured with: ../gcc/configure --enable-languages=c,c++ --prefix=/home/bpriest/usr/local : (reconfigured) ../gcc/configure --enable-languages=c,c++ : (reconfigured) ../gcc/configure --enable-languages=c,c++ --prefix=/home/bpriest/usr/local
Thread model: single
gcc version 3.2 20020722 (experimental)
 /home/bpriest/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/cc1 -E -quiet -nostdinc -v -I/usr/src/linux/include -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__KERNEL__ -DKBUILD_BASENAME=semaphore semaphore.c -Wall -Wstrict-prototypes -Wno-trigraphs -mpreferred-stack-boundary=2 -march=i686 -fno-strict-aliasing -fno-common -fomit-frame-pointer -O2 semaphore.i
#include "..." search starts here:
#include <...> search starts here:
 /usr/src/linux/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include
End of search list.
semaphore.c:265:1: missing terminating " character
semaphore.c:290:1: missing terminating " character

same file compiled w/ 3.1
/usr/local/bin/gcc --verbose --save-temps -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=i686   -nostdinc -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -DKBUILD_BASENAME=semaphore  -c -o semaphore.o semaphore.c
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs
Configured with: ../gcc-3.1/configure --prefix=/usr/local --enable-languages=c,c++,g77
Thread model: single
gcc version 3.1
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cpp0 -lang-c -nostdinc -v -I/usr/src/linux/include -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -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__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -D__KERNEL__ -DKBUILD_BASENAME=semaphore semaphore.c -Wall -Wstrict-prototypes -Wno-trigraphs semaphore.i
GNU CPP version 3.1 (cpplib) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/src/linux/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include
End of search list.
semaphore.c:265:1: warning: multi-line string literals are deprecated
semaphore.c:269:35: warning: multi-line string literals are deprecated
semaphore.c:271:27: warning: multi-line string literals are deprecated
semaphore.c:274:35: warning: multi-line string literals are deprecated
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cc1 -fpreprocessed semaphore.i -quiet -dumpbase semaphore.c -mpreferred-stack-boundary=2 -march=i686 -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fno-strict-aliasing -fno-common -fomit-frame-pointer -o semaphore.s
GNU CPP version 3.1 (cpplib) (i386 Linux/ELF)
GNU C version 3.1 (i686-pc-linux-gnu)
	compiled by GNU C version 3.1.
semaphore.c:265:1: warning: multi-line string literals are deprecated
semaphore.c:269:36: warning: multi-line string literals are deprecated
semaphore.c:271:23: warning: multi-line string literals are deprecated
semaphore.c:274:36: warning: multi-line string literals are deprecated
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../../../i686-pc-linux-gnu/bin/as --traditional-format -V -Qy -o semaphore.o semaphore.s
GNU assembler version 2.12.1 (i686-pc-linux-gnu) using BFD version 2.12.1

I attached the 3.2 .i file (but since this is where the
problem is I'm not sure it will help).  I can also provide
the 3.1 .i file if that would be helpful.
>How-To-Repeat:

>Fix:

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

IyAxICJzZW1hcGhvcmUuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+Igoj
IDEgInNlbWFwaG9yZS5jIgojIDE1ICJzZW1hcGhvcmUuYyIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9hdXRvY29uZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25m
aWcuaCIgMgojIDE2ICJzZW1hcGhvcmUuYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFt
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9iaW5mbXRzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3B0cmFj
ZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyNiAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVi
eDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsK
ICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAg
ICAgICBpbnQgeGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAg
ICAgICBsb25nIGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAg
ICAgIGxvbmcgZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3Mg
Kik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDIKIyA1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHlwZXMuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bv
c2l4X3R5cGVzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRl
Zi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAy
CiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6
ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9fa2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQg
KCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5
X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAx
MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVs
X2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2Zm
X3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
a2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVm
IGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5
cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Ns
b2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2Vy
bmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90
OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2Vy
bmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0g
X19rZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4
X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgdW1vZGVfdDsKCgoKCgoKdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cgp0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19z
MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50
IF9fczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18g
bG9uZyBsb25nIF9fczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKIyAzMiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBz
ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vdHlwZXMuaCIKdHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKCnR5cGVkZWYgdTY0IGRtYTY0X2Fk
ZHJfdDsKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCgoKCnR5
cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBkZXZf
dDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3Qg
bW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tlcm5l
bF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBfX2tl
cm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5cGVk
ZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5lbF91
aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYgX19r
ZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZfdDsK
CgoKdHlwZWRlZiBfX2tlcm5lbF9vbGRfdWlkX3Qgb2xkX3VpZF90Owp0eXBlZGVmIF9fa2VybmVs
X29sZF9naWRfdCBvbGRfZ2lkX3Q7CiMgNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
dHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU0ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVf
dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tl
cm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGlt
ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9f
a2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVf
aW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlw
ZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3Mz
MiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZf
dDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBl
ZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIgpzdHJ1Y3QgdXN0YXQgewogICAgICAgIF9f
a2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKICAgICAgICBfX2tlcm5lbF9pbm9fdCBmX3Rpbm9kZTsK
ICAgICAgICBjaGFyIGZfZm5hbWVbNl07CiAgICAgICAgY2hhciBmX2ZwYWNrWzZdOwp9OwojIDE3
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW5rYWdl
LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L3dhaXQuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMQojIDQzICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIgp0
eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIKdHlw
ZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2tlcm5lbC5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j
b21waWxlci5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi
IDIKIyA0MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0ZXJuIGlu
dCBjb25zb2xlX3ByaW50a1tdOwojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tl
cm5lbC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg
KnBhbmljX25vdGlmaWVyX2xpc3Q7CiB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikK
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkp
OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2Nv
ZGUpCiAgICAgICAgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIHZvaWQgY29tcGxldGVfYW5k
X2V4aXQoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChu
b3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1w
bGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9u
ZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoq
LHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hh
ciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYs
IGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChw
cmludGYsIDIsIDMpKSk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFy
ICosIHZhX2xpc3QpOwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXpl
LCBjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo
cHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgpleHRlcm4gaW50IHNzY2FuZihj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHNjYW5mLDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqLCB2YV9saXN0KTsKCmV4dGVybiBpbnQgZ2V0X29wdGlvbihjaGFyICoqc3RyLCBp
bnQgKnBpbnQpOwpleHRlcm4gY2hhciAqZ2V0X29wdGlvbnMoY2hhciAqc3RyLCBpbnQgbmludHMs
IGludCAqaW50cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFyc2UoY2hhciAqcHRy
LCBjaGFyICoqcmV0cHRyKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX2xvY2sodm9pZCk7CmV4dGVy
biB2b2lkIGRldl9wcm9iZV91bmxvY2sodm9pZCk7CgpleHRlcm4gaW50IHNlc3Npb25fb2ZfcGdy
cChpbnQgcGdycCk7CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBwcmludGsoY29u
c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50
ZiwgMSwgMikpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAg
ICAgICAgKGNvbnNvbGVfcHJpbnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25z
b2xlX3ZlcmJvc2Uodm9pZCkKewogICAgICAgIGlmICgoY29uc29sZV9wcmludGtbMF0pKQogICAg
ICAgICAgICAgICAgKGNvbnNvbGVfcHJpbnRrWzBdKSA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0
X3NwaW5sb2NrcyhpbnQgeWVzKTsKZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJu
IGludCB0YWludGVkOwpleHRlcm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKIyAx
NjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiB2b2lkIF9f
b3V0X29mX2xpbmVfYnVnKGludCBsaW5lKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCgoK
CnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVwdGltZTsKICAgICAgICB1bnNpZ25lZCBs
b25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxyYW07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhcmVkcmFtOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxz
d2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3YXA7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdG90YWxoaWdoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZWhpZ2g7CiAgICAgICAgdW5z
aWduZWQgaW50IG1lbV91bml0OwogICAgICAgIGNoYXIgX2ZbMjAtMipzaXplb2YobG9uZyktc2l6
ZW9mKGludCldOwp9OwojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCgoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEKIyAxMyAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3By
b2Nlc3Nvci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIgMQojIDY4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCnN0cnVjdCB2bTg2X3JlZ3MgewoK
CgogICAgICAgIGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4Owog
ICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAg
ICAgIGxvbmcgZWF4OwogICAgICAgIGxvbmcgX19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxs
X2VzOwogICAgICAgIGxvbmcgX19udWxsX2ZzOwogICAgICAgIGxvbmcgX19udWxsX2dzOwogICAg
ICAgIGxvbmcgb3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY3MsIF9fY3NoOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBl
cywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07
CgpzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19tYXBb
OF07Cn07CgpzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bTg2X3JlZ3MgcmVn
czsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Ny
ZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90eXBlOwogICAgICAgIHN0cnVj
dCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0
b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKfTsKCgoKCgoKc3RydWN0IHZtODZwbHVzX2lu
Zm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZvcmNlX3JldHVybl9mb3JfcGljOjE7
CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bTg2ZGJnX2FjdGl2ZToxOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgdm04NmRiZ19URnBlbmRpZzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdW51c2VkOjI4
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXNfdm04NnB1czoxOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgdm04NmRiZ19pbnR4eHRhYlszMl07Cn07CgpzdHJ1Y3Qgdm04NnBsdXNfc3RydWN0IHsKICAg
ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y
ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiAg
ICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHZtODZwbHVzOwp9OwojIDE0NSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7
CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7
CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAg
ICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251
bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9u
ZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2ln
bmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz
LCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBr
ZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92
bTg2LmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBz
dHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJl
dmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVz
X2luZm9fc3RydWN0IHZtODZwbHVzOwogICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMg
MjAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCn07Cgp2b2lkIGhhbmRsZV92
bTg2X2ZhdWx0KHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcpOwppbnQgaGFuZGxlX3Zt
ODZfdHJhcChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nLCBpbnQpOwojIDExICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2ln
Y29udGV4dC5oIgpzdHJ1Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZp
Y2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4
cmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBleHBvbmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9
OwoKc3RydWN0IF94bW1yZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsK
CnN0cnVjdCBfZnBzdGF0ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGlwb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkYXRhb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBz
dHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vu
dls2XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
cmVzZXJ2ZWQ7CiAgICAgICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3Ry
dWN0IF94bW1yZWcgX3htbVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9
OwoKCgpzdHJ1Y3Qgc2lnY29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3No
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBlcywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZWJ4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZWN4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
dHJhcG5vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGVmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3Rh
dGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
Y3IyOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDIKCmlu
dCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7Cmlu
dCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoK
CnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25nIF9fX29yaWdfZWlwOwogICAgICAgIGxvbmcgX19f
ZWJ4OwogICAgICAgIGxvbmcgX19fZWN4OwogICAgICAgIGxvbmcgX19fZWR4OwogICAgICAgIGxv
bmcgX19fZXNpOwogICAgICAgIGxvbmcgX19fZWRpOwogICAgICAgIGxvbmcgX19fZWJwOwogICAg
ICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxvbmcgX19fZHM7CiAgICAgICAgbG9uZyBfX19lczsK
ICAgICAgICBsb25nIF9fX29yaWdfZWF4OwogICAgICAgIGxvbmcgX19fZWlwOwogICAgICAgIGxv
bmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19lZmxhZ3M7CiAgICAgICAgbG9uZyBfX19lc3A7CiAg
ICAgICAgbG9uZyBfX19zczsKICAgICAgICBsb25nIF9fX3ZtODZfZXM7CiAgICAgICAgbG9uZyBf
X192bTg2X2RzOwogICAgICAgIGxvbmcgX19fdm04Nl9mczsKICAgICAgICBsb25nIF9fX3ZtODZf
Z3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgMTMgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vcGFnZS5oIiAxCiMgNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2Uu
aCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVk
ZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsg
dW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVk
IGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDExMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcGFnZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcg
c2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXplLTEpID4+ICgx
MiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBz
aXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdoaWxlIChzaXpl
KTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vcHJvY2Vzc29yLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2NwdWZl
YXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQoKCgoKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jYWNoZS5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3Byb2Nlc3Nvci5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGhyZWFk
cy5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMg
MzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5m
b194ODYgewogICAgICAgIF9fdTggeDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAg
ICBfX3U4IHg4Nl9tb2RlbDsKICAgICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bf
d29ya3Nfb2s7CiAgICAgICAgY2hhciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21h
dGg7CiAgICAgICAgY2hhciByZnU7CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9f
dTMyIHg4Nl9jYXBhYmlsaXR5WzRdOwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAg
ICAgICAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsK
CiAgICAgICAgaW50IGZkaXZfYnVnOwogICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBpbnQg
Y29tYV9idWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAgICAg
dW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWlj
azsKICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgo
NSkpKSkpKTsKIyA3MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4
dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0c3Nf
c3RydWN0IGluaXRfdHNzWzMyXTsKCgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGNwdV9kYXRh
W107CiMgOTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4g
Y2hhciBpZ25vcmVfaXJxMTM7CgpleHRlcm4gdm9pZCBpZGVudGlmeV9jcHUoc3RydWN0IGNwdWlu
Zm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYg
Kik7CmV4dGVybiB2b2lkIGRvZGd5X3RzYyh2b2lkKTsKIyAxMjUgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIHZvaWQgY3B1aWQoaW50IG9wLCBp
bnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkKewogICAgICAgIF9fYXNtX18o
ImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiICgqZWF4KSwKICAgICAgICAgICAgICAgICAg
Ij1iIiAoKmVieCksCiAgICAgICAgICAgICAgICAgICI9YyIgKCplY3gpLAogICAgICAgICAgICAg
ICAgICAiPWQiICgqZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKSk7Cn0KCgoKCnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VheCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZWF4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAg
ICAgIDogIj1hIiAoZWF4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAg
ICAgOiAiYngiLCAiY3giLCAiZHgiKTsKICAgICAgICByZXR1cm4gZWF4Owp9CnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgaW50IGNwdWlkX2VieCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAgICB1bnNp
Z25lZCBpbnQgZWF4LCBlYng7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAg
ICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAg
ICAgICAgICAgICAgICA6ICJjeCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWJ4Owp9CnN0YXRp
YyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZWF4LCBlY3g7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAg
ICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWMiIChlY3gpCiAgICAgICAgICAgICAgICA6ICIwIiAo
b3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWN4Owp9
CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNpZ25lZCBpbnQgb3ApCnsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgog
ICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpCiAgICAgICAgICAgICAgICA6
ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIpOwogICAgICAgIHJldHVybiBl
ZHg7Cn0KIyAyMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRl
cm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3RhdGljIGlubGluZSB2b2lkIHNl
dF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRfZmVhdHVyZXMg
fD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAg
ICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJSVlYXgsJSVj
cjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykKICAgICAgICAgICAgICAgIDoi
YXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2NyNCAodW5zaWduZWQgbG9uZyBt
YXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFzazsKICAgICAgICBfX2FzbV9f
KCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJhbmRsICUwLCUlZWF4XG5c
dCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAgICAgICAgICA6
IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CiMgMjYwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGludCBNQ0FfYnVzOwoKCgpl
eHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgbWFjaGlu
ZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBCSU9TX3JldmlzaW9uOwpleHRlcm4g
dW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2ZsYWc7CiMgMjg2ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdfZnNhdmVfc3RydWN0IHsKICAgICAgICBs
b25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBsb25nIHR3ZDsKICAgICAgICBsb25n
IGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZv
czsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAgICBsb25nIHN0YXR1czsKfTsKCnN0
cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGN3ZDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHdkOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZj
czsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIG14Y3Ny
OwogICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgbG9uZyBzdF9zcGFjZVszMl07CiAgICAg
ICAgbG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxvbmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRy
aWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0IGkzODdfc29mdF9zdHJ1Y3QgewogICAg
ICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAgIGxvbmcgdHdkOwogICAgICAg
IGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxv
bmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
ZnRvcCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRhdGUsIHJtLCBhbGltaXQ7CiAgICAgICAg
c3RydWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1
bmlvbiBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7
CiAgICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCBmeHNhdmU7CiAgICAgICAgc3RydWN0
IGkzODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxoOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZXNwMDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAsX19zczBoOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczEsX19zczFoOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczIsX19zczJoOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXgsZWN4LGVk
eCxlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl
YnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
bGR0LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHJhY2UsIGJpdG1hcDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07CgoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVycm9yX2NvZGU7CgogICAgICAgIHVuaW9u
IGkzODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0IHZtODZfc3RydWN0ICogdm04Nl9pbmZv
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBzYXZlZF9lc3AwOwoKICAgICAgICBpbnQg
aW9wZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsKfTsKIyA0Mjgg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1
Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0
IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4gaW50IGtlcm5lbF90aHJlYWQoaW50ICgqZm4pKHZv
aWQgKiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwoKCmV4dGVybiB2b2lkIGNv
cHlfc2VnbWVudHMoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgbW1fc3RydWN0ICogbW0p
OwpleHRlcm4gdm9pZCByZWxlYXNlX3NlZ21lbnRzKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSk7CgoK
CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGhyZWFkX3NhdmVkX3BjKHN0cnVjdCB0aHJl
YWRfc3RydWN0ICp0KQp7CiAgICAgICAgcmV0dXJuICgodW5zaWduZWQgbG9uZyAqKXQtPmVzcClb
M107Cn0KCnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CiMg
NDYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3Jv
Y29kZSB7CiAgICAgICAgdW5zaWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQg
cmV2OwogICAgICAgIHVuc2lnbmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7
CiAgICAgICAgdW5zaWduZWQgaW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7
CiAgICAgICAgdW5zaWduZWQgaW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1
XTsKICAgICAgICB1bnNpZ25lZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCByZXBfbm9wKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25v
cCIpOwp9CgoKCgoKCgpleHRlcm4gaW5saW5lIHZvaWQgcHJlZmV0Y2goY29uc3Qgdm9pZCAqeCkK
ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgicHJlZmV0Y2hudGEgKCUwKSIgOiA6ICJy
Iih4KSk7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAy
CiMgNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlu
bGluZSB2b2lkIHByZWZldGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2xpc3QuaCIKc3RydWN0IGxpc3RfaGVhZCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq
bmV4dCwgKnByZXY7Cn07CiMgMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5o
IgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqIG5l
dywKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkICogbmV4dCkKewogICAgICAgIG5leHQtPnByZXYgPSBuZXc7CiAgICAgICAgbmV3LT5uZXh0
ID0gbmV4dDsKICAgICAgICBuZXctPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5leHQgPSBu
ZXc7Cn0KIyA1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlz
dF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQp
Owp9CiMgNjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgX19p
bmxpbmVfXyB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3Qg
bGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQtPnByZXYsIGhl
YWQpOwp9CiMgODAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIF9fbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewog
ICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5leHQgPSBuZXh0Owp9CgoK
CgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50
cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7Cn0KCgoK
CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfZGVsX2luaXQoc3RydWN0IGxpc3RfaGVhZCAq
ZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7CiAg
ICAgICAgZG8geyAoZW50cnkpLT5uZXh0ID0gKGVudHJ5KTsgKGVudHJ5KS0+cHJldiA9IChlbnRy
eSk7IH0gd2hpbGUgKDApOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gaW50IGxpc3RfZW1wdHko
c3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhl
YWQ7Cn0KCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlz
dF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0OwoKICAgICAgICBpZiAoZmlyc3QgIT0gbGlzdCkg
ewogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICphdCA9IGhlYWQtPm5leHQ7CgogICAgICAg
ICAgICAgICAgZmlyc3QtPnByZXYgPSBoZWFkOwogICAgICAgICAgICAgICAgaGVhZC0+bmV4dCA9
IGZpcnN0OwoKICAgICAgICAgICAgICAgIGxhc3QtPm5leHQgPSBhdDsKICAgICAgICAgICAgICAg
IGF0LT5wcmV2ID0gbGFzdDsKICAgICAgICB9Cn0KIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC93YWl0LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlu
bG9jay5oIiAxCiMgNDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZ2lmeS5oIiAxCiMgNDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDU2ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc3BpbmxvY2suaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgp0eXBl
ZGVmIHN0cnVjdCB7IHZvbGF0aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190OwojIDUzICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBh
dG9taWNfYWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJhZGRsICUxLCUwIgogICAgICAgICAgICAg
ICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+
Y291bnRlcikpOwp9CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1
YmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAg
ICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2Fu
ZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1
YmwgJTIsJTA7IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9
cW0iIChjKQogICAgICAgICAgICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBjOwp9CiMgMTA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfaW5jKGF0b21pY190
ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9j
ayA7ICIgImluY2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAg
ICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9t
aWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
ImxvY2sgOyAiICJkZWNsICUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAg
ICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19h
bmRfdGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTA7
IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9cW0iIChjKQog
ICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0
dXJuIGMgIT0gMDsKfQojIDE1NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgi
CnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7
CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK
ICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiaW5jbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAg
ICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2
LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTc4ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg
ICJsb2NrIDsgIiAiYWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2
LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+
Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyA1ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vcndsb2NrLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zcGlubG9j
ay5oIiAyCgoKCmV4dGVybiBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiMgMjYgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2
b2xhdGlsZSB1bnNpZ25lZCBpbnQgbG9jazsKCgoKfSBzcGlubG9ja190OwojIDgwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc3Bpbl91
bmxvY2soc3BpbmxvY2tfdCAqbG9jaykKewoKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgICAgIm1vdmIgJDEsJTAiIDoiPW0iIChsb2NrLT5sb2NrKSA6IDog
Im1lbW9yeSIKICAgICAgICApOwp9CiMgMTE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9z
cGlubG9jay5oIgpzdGF0aWMgaW5saW5lIGludCBzcGluX3RyeWxvY2soc3BpbmxvY2tfdCAqbG9j
aykKewogICAgICAgIGNoYXIgb2xkdmFsOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgInhjaGdiICViMCwlMSIKICAgICAgICAgICAgICAgIDoiPXEiIChvbGR2
YWwpLCAiPW0iIChsb2NrLT5sb2NrKQogICAgICAgICAgICAgICAgOiIwIiAoMCkgOiAibWVtb3J5
Iik7CiAgICAgICAgcmV0dXJuIG9sZHZhbCA+IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzcGlu
X2xvY2soc3BpbmxvY2tfdCAqbG9jaykKewojIDEzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h
c20vc3BpbmxvY2suaCIKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAg
ICAgICJcbjE6XHQiICJsb2NrIDsgZGVjYiAlMFxuXHQiICJqcyAyZlxuIiAiLnN1YnNlY3Rpb24g
MVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiXG5cdCIgIi50
ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpcdCIgImNtcGIg
JDAsJTBcblx0IiAicmVwO25vcFxuXHQiICJqbGUgMmJcblx0IiAiam1wIDFiXG4iICIucHJldmlv
dXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKGxvY2stPmxvY2spIDogOiAibWVtb3J5Iik7
Cn0KIyAxNTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgbG9jazsKCgoKfSByd2xvY2tf
dDsKIyAxODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnN0YXRpYyBp
bmxpbmUgdm9pZCByZWFkX2xvY2socndsb2NrX3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYg
KF9fYnVpbHRpbl9jb25zdGFudF9wKHJ3KSkgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAk
MSwlMFxuXHQiICJqcyAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRl
ZiAiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFw
aG9yZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIgIjI6XHRwdXNobCAlJWVheFxuXHQiICJsZWFsICUw
LCUlZWF4XG5cdCIgImNhbGwgIiAiX19yZWFkX2xvY2tfZmFpbGVkIiAiXG5cdCIgInBvcGwgJSVl
YXhcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6Ij1tIiAoKih2b2xhdGlsZSBpbnQg
KilydykgOiA6ICJtZW1vcnkiKTsgZWxzZSBhc20gdm9sYXRpbGUoImxvY2sgOyAiICJzdWJsICQx
LCglMClcblx0IiAianMgMmZcbiIgIjE6XG4iICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k
ZWYgIiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1h
cGhvcmUiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0Y2FsbCAiICJfX3JlYWRfbG9ja19mYWls
ZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6OiJhIiAocncpIDogIm1lbW9y
eSIpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX2xvY2socndsb2Nr
X3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHJ3KSkg
YXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAwMDAwMCIgIiwoJTApXG5cdCIg
ImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4
dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpc
blx0IiAiLmVuZGlmXG5cdCIgIjI6XHRwdXNobCAlJWVheFxuXHQiICJsZWFsICUwLCUlZWF4XG5c
dCIgImNhbGwgIiAiX193cml0ZV9sb2NrX2ZhaWxlZCIgIlxuXHQiICJwb3BsICUlZWF4XG5cdCIg
ImptcCAxYlxuIiAiLnByZXZpb3VzXG5cdCIgOiI9bSIgKCoodm9sYXRpbGUgaW50ICopcncpIDog
OiAibWVtb3J5Iik7IGVsc2UgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAw
MDAwMCIgIiwoJTApXG5cdCIgImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAi
IiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2Nr
LiIgInNlbWFwaG9yZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIgIjI6XHRjYWxsICIgIl9fd3JpdGVf
bG9ja19mYWlsZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6OiJhIiAocncp
IDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgd3JpdGVf
dHJ5bG9jayhyd2xvY2tfdCAqbG9jaykKewogICAgICAgIGF0b21pY190ICpjb3VudCA9IChhdG9t
aWNfdCAqKWxvY2s7CiAgICAgICAgaWYgKGF0b21pY19zdWJfYW5kX3Rlc3QoMHgwMTAwMDAwMCwg
Y291bnQpKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgYXRvbWljX2FkZCgweDAx
MDAwMDAwLCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KIyA1NyAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NwaW5sb2NrLmgiCmV4dGVybiBpbnQgYXRvbWljX2RlY19hbmRfbG9jayhhdG9taWNf
dCAqYXRvbWljLCBzcGlubG9ja190ICpsb2NrKTsKCgoKCgp0eXBlZGVmIHVuaW9uIHsKICAgIHNw
aW5sb2NrX3QgbG9jazsKICAgIGNoYXIgZmlsbF91cFsoKDEgPDwgKCg1KSkpKV07Cn0gc3Bpbmxv
Y2tfY2FjaGVsaW5lX3QgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoKDEgPDwgKCg1KSkpKSkpOwoj
IDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDMxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZSB7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNr
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1
Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVfdDsKIyA3NyAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB7CiAgICAgICAgc3Bpbmxv
Y2tfdCBsb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlw
ZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CiMgMTU1ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RhdGljIGlubGluZSB2b2lkIGlu
aXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCiAgICAgICAgcS0+
bG9jayA9IChzcGlubG9ja190KSB7IDEgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+
bmV4dCA9ICgmcS0+dGFza19saXN0KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNr
X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRx
dWV1ZV9lbnRyeSh3YWl0X3F1ZXVlX3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoK
ICAgICAgICBxLT5mbGFncyA9IDA7CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBp
bmxpbmUgaW50IHdhaXRxdWV1ZV9hY3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoK
ICAgICAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX2FkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1
ZXVlX3QgKm5ldykKewojIDIwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0Lmgi
CiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoK
CgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hl
YWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkX3RhaWwoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+
dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX3dhaXRfcXVldWUod2Fp
dF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpvbGQpCnsKCgoKCgogICAgICAgIGxp
c3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCgoKdHlw
ZWRlZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZzIHsKICAgICAgICBs
b25nIGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9uZyBmX2Jsb2NrczsK
ICAgICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsKICAgICAgICBsb25n
IGZfZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2VybmVsX2ZzaWRfdCBm
X2ZzaWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBmX3NwYXJlWzZdOwp9
OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDIKIyAxNSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9uZXQuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvY2tldC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vc29ja2V0LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tl
dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NraW9zLmgiIDEKIyA4
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC91aW8uaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3Vpby5oIgpzdHJ1Y3QgaW92ZWMKewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAg
ICAgIF9fa2VybmVsX3NpemVfdCBpb3ZfbGVuOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvc29ja2V0LmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHNhX2ZhbWlseV90
OwoKCgoKCnN0cnVjdCBzb2NrYWRkciB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5Owog
ICAgICAgIGNoYXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAgICBpbnQg
bF9vbm9mZjsKICAgICAgICBpbnQgbF9saW5nZXI7Cn07CgoKCgoKCgpzdHJ1Y3QgbXNnaGRyIHsK
ICAgICAgICB2b2lkICogbXNnX25hbWU7CiAgICAgICAgaW50IG1zZ19uYW1lbGVuOwogICAgICAg
IHN0cnVjdCBpb3ZlYyAqIG1zZ19pb3Y7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IG1zZ19pb3Zs
ZW47CiAgICAgICAgdm9pZCAqIG1zZ19jb250cm9sOwogICAgICAgIF9fa2VybmVsX3NpemVfdCBt
c2dfY29udHJvbGxlbjsKICAgICAgICB1bnNpZ25lZCBtc2dfZmxhZ3M7Cn07CgoKCgoKCgpzdHJ1
Y3QgY21zZ2hkciB7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGNtc2dfbGVuOwogICAgICAgIGlu
dCBjbXNnX2xldmVsOwogICAgICAgIGludCBjbXNnX3R5cGU7Cn07CiMgMTAyICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRy
ICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hk
ciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19w
dHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChf
X2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsK
ICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBf
X2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICop
MDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRy
ICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19j
bXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBf
X21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAg
ICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07
CiMgMjQ5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpleHRlcm4gaW50
IG1lbWNweV9mcm9taW92ZWModW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92
LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIg
KmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgb2Zmc2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBjc3VtX3BhcnRpYWxfY29weV9mcm9t
aW92ZWNlbmQodW5zaWduZWQgY2hhciAqa2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgKmNzdW1wKTsKCmV4dGVybiBp
bnQgdmVyaWZ5X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0sIHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFy
ICphZGRyZXNzLCBpbnQgbW9kZSk7CmV4dGVybiBpbnQgbWVtY3B5X3RvaW92ZWMoc3RydWN0IGlv
dmVjICp2LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNw
eV90b2tlcm5lbGlvdmVjKHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBjaGFyICprZGF0YSwg
aW50IGxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX3VzZXIodm9pZCAqa2FkZHIsIGludCBr
bGVuLCB2b2lkICp1YWRkciwgaW50ICp1bGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2Vy
bmVsKHZvaWQgKnVhZGRyLCBpbnQgdWxlbiwgdm9pZCAqa2FkZHIpOwpleHRlcm4gaW50IHB1dF9j
bXNnKHN0cnVjdCBtc2doZHIqLCBpbnQgbGV2ZWwsIGludCB0eXBlLCBpbnQgbGVuLCB2b2lkICpk
YXRhKTsKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIgMgoKCnN0cnVj
dCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA0OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9u
ZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBT
U19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0
X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIgpzdHJ1Y3Qg
c29ja2V0CnsKICAgICAgICBzb2NrZXRfc3RhdGUgc3RhdGU7CgogICAgICAgIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHByb3RvX29wcyAqb3BzOwogICAgICAgIHN0cnVjdCBp
bm9kZSAqaW5vZGU7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19saXN0Owog
ICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOwogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAg
ICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgcGFzc2NyZWQ7Cn07CgoKCnN0cnVjdCBzY21fY29va2llOwpzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3Q7CnN0cnVjdCBwYWdlOwoKc3RydWN0IHByb3RvX29wcyB7CiAgaW50IGZhbWls
eTsKCiAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBzb2NrZXQgKnNvY2spOwogIGludCAoKmJpbmQp
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVteWFkZHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuKTsKICBpbnQgKCpjb25uZWN0KSAoc3Ry
dWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpOwogIGludCAoKnNvY2tl
dHBhaXIpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrMSwgc3RydWN0IHNvY2tldCAqc29jazIpOwogIGlu
dCAoKmFjY2VwdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ss
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogIGludCAoKmdldG5hbWUpIChz
dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50
ICgqcG9sbCkgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
cG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAq
c29jaywgdW5zaWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVu
KTsKICBpbnQgKCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAg
aW50ICgqc2V0c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9w
dG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4p
OwogIGludCAoKmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu
dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9w
dGxlbik7CiAgaW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2do
ZHIgKm0sIGludCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJl
Y3Ztc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxf
bGVuLCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChz
dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogdm1hKTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz
dHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07
CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp
bnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAg
ICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAg
IHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICop
Owp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0IHNvY2tldCAqc2ssIGludCBo
b3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVyKHN0cnVjdCBuZXRfcHJvdG9f
ZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3RlcihpbnQgZmFtaWx5KTsKZXh0
ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4dGVybiBpbnQgc29ja19jcmVh
dGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3RydWN0IHNvY2tldCAqKik7CmV4
dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tf
c2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGludCBsZW4pOwpleHRl
cm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGlu
dCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFkdl93cml0ZXYoaW50IHR5cGUs
IHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKiBpb3YsIGxvbmcgY291bnQs
IGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQodm9pZCk7CmV4dGVybiB1bnNp
Z25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lkIG5ldF9zcmFuZG9tKHVuc2ln
bmVkIGxvbmcpOwojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90LmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rl
dl90OwojIDc2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgpleHRlcm4g
Y29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CiMgOTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19u
cihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+
IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0K
CnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1h
am9yLCBtaW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90Lmgi
CiAgICAgICAgbWFqb3IgPSAoZGV2ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYp
OwoKICAgICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAxNyAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
aW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgoj
IDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMQoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt
bnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3Ry
dWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jv
b3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwog
ICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAg
IGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7Cn07
CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50Z2V0KHN0cnVjdCB2ZnNtb3VudCAq
bW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJm1udC0+
bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9CgpleHRlcm4gdm9pZCBfX21udHB1dChz
dHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgbW50cHV0KHN0cnVjdCB2
ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewogICAgICAgICAgICAgICAgaWYgKGF0
b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkKICAgICAgICAgICAgICAgICAgICAg
ICAgX19tbnRwdXQobW50KTsKICAgICAgICB9Cn0KIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNh
Y2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoK
c3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50
IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2Vz
OwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRl
bnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxf
bmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAg
ICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3Rh
dGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcg
aGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9f
aW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIg
KiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0g
MDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9u
YW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFz
aCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAg
ICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwog
ICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGlyczsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRlZDsKICAg
ICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7CiAg
ICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBzdXBl
cl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsKICAgICAg
ICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2XTsKfTsK
CnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlkYXRlKShz
dHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1Y3QgZGVu
dHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfZGVs
ZXRlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBk
ZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg
aW5vZGUgKik7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o
IgpleHRlcm4gc3BpbmxvY2tfdCBkY2FjaGVfbG9jazsKIyAxNDYgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9kcm9wKHN0cnVj
dCBkZW50cnkgKiBkZW50cnkpCnsKICAgICAgICBzcGluX2xvY2soJmRjYWNoZV9sb2NrKTsKICAg
ICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRvIHsgKCZkZW50cnktPmRf
aGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnktPmRfaGFzaCktPnByZXYg
PSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc3Bpbl91bmxvY2soJmRj
YWNoZV9sb2NrKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGRuYW1lX2V4dGVybmFsKHN0cnVj
dCBkZW50cnkgKmQpCnsKICAgICAgICByZXR1cm4gZC0+ZF9uYW1lLm5hbWUgIT0gZC0+ZF9pbmFt
ZTsKfQoKCgoKZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRl
cm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3Qg
cXN0ciAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sg
Kik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfcGFyZW50KHN0cnVjdCBkZW50cnkgKik7CmV4
dGVybiBpbnQgZF9pbnZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKik7CgoKc3RydWN0IHpvbmVfc3Ry
dWN0OwoKZXh0ZXJuIGludCBzaHJpbmtfZGNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7
CmV4dGVybiB2b2lkIHBydW5lX2RjYWNoZShpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2ljYWNo
ZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50KTsKCgpleHRl
cm4gaW50IHNocmlua19kcWNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7CgoKZXh0ZXJu
IHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX3Jvb3Qoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2
b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpk
X2ZpbmRfYWxpYXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX3BydW5lX2FsaWFzZXMo
c3RydWN0IGlub2RlICopOwoKCmV4dGVybiBpbnQgaGF2ZV9zdWJtb3VudHMoc3RydWN0IGRlbnRy
eSAqKTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50cnkgKik7CiMgMjEwICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIGRfYWRkKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3RydWN0IGlub2RlICogaW5vZGUpCnsK
ICAgICAgICBkX2luc3RhbnRpYXRlKGVudHJ5LCBpbm9kZSk7CiAgICAgICAgZF9yZWhhc2goZW50
cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRy
eSAqKTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9va3VwKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGgoc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgdmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAqLAogICAgICAgIHN0cnVjdCB2ZnNt
b3VudCAqLCBjaGFyICosIGludCk7CiMgMjQzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBp
ZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAg
ICBfX291dF9vZl9saW5lX2J1ZygyNDcpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVu
dHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJu
IHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IGRfdW5oYXNoZWQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGxpc3Rf
ZW1wdHkoJmRlbnRyeS0+ZF9oYXNoKTsKfQoKZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3QgZGVudHJ5
ICopOwoKc3RhdGljIF9faW5saW5lX18gaW50IGRfbW91bnRwb2ludChzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnkpCnsKICAgICAgICByZXR1cm4gZGVudHJ5LT5kX21vdW50ZWQ7Cn0KCmV4dGVybiBzdHJ1
Y3QgdmZzbW91bnQgKmxvb2t1cF9tbnQoc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkg
Kik7CiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5v
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGlt
ZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfaW5vOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
bmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0YXQ2NCB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19w
YWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAgIHVuc2ln
bmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7CgogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3BhZDNb
MTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0
X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5o
IiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gY2hhciAqIF9fX3N0cnRvazsKZXh0ZXJu
IGNoYXIgKiBzdHJwYnJrKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAq
IHN0cnRvayhjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJzZXAoY2hhciAq
Kixjb25zdCBjaGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbihjb25zdCBjaGFy
ICosY29uc3QgY2hhciAqKTsKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0
cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0
aWMgaW5saW5lIGNoYXIgKiBzdHJjcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqc3JjKQp7Cmlu
dCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5c
dCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAg
ICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIp
CiAgICAgICAgOiIwIiAoc3JjKSwiMSIgKGRlc3QpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsK
fQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cm5jcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAq
c3JjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICIxOlx0ZGVjbCAlMlxuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAg
ICAibG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVh
bFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgInN0
b3NiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0m
YyIgKGQyKSwgIj0mYSIgKGQzKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIgKGNv
dW50KSA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBz
dHJjYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYykKewppbnQgZDAsIGQxLCBkMiwgZDM7
Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNi
XG5cdCIKICAgICAgICAiZGVjbCAlMVxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAg
ICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAx
YiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMiksICI9JmMiIChk
MykKICAgICAgICA6ICIwIiAoc3JjKSwgIjEiIChkZXN0KSwgIjIiICgwKSwgIjMiICgweGZmZmZm
ZmZmKToibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3Ry
bmNhdChjaGFyICogZGVzdCxjb25zdCBjaGFyICogc3JjLHNpemVfdCBjb3VudCkKewppbnQgZDAs
IGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAg
ICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiZGVjbCAlMVxuXHQiCiAgICAgICAgIm1vdmwgJTgs
JTNcbiIKICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAg
ICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUl
YWxcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMjpcdHhvcmwgJTIsJTJcblx0Igog
ICAgICAgICJzdG9zYiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChk
MiksICI9JmMiIChkMykKICAgICAgICA6ICIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoMCksIjMi
ICgweGZmZmZmZmZmKSwgImciIChjb3VudCkKICAgICAgICA6ICJtZW1vcnkiKTsKcmV0dXJuIGRl
c3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJjbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNo
YXIgKiBjdCkKewppbnQgZDAsIGQxOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xh
dGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg
ICAgImpuZSAyZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpu
ZSAxYlxuXHQiCiAgICAgICAgInhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgM2Zc
biIKICAgICAgICAiMjpcdHNiYmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVh
bFxuIgogICAgICAgICIzOiIKICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZE
IiAoZDEpCiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSk7CnJldHVybiBf
X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IHN0cm5jbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0
IGNoYXIgKiBjdCxzaXplX3QgY291bnQpCnsKcmVnaXN0ZXIgaW50IF9fcmVzOwppbnQgZDAsIGQx
LCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAg
ICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIK
ICAgICAgICAiam5lIDNmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAg
ICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAi
am1wIDRmXG4iCiAgICAgICAgIjM6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3Ji
ICQxLCUlYWxcbiIKICAgICAgICAiNDoiCiAgICAgICAgICAgICAgICAgICAgIDoiPWEiIChfX3Jl
cyksICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmMiIChkMikKICAgICAgICAgICAgICAgICAg
ICAgOiIxIiAoY3MpLCIyIiAoY3QpLCIzIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3Rh
dGljIGlubGluZSBjaGFyICogc3RyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDA7
CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1v
dmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVh
aCwlJWFsXG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxc
blx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJtb3ZsICQxLCUxXG4iCiAgICAgICAg
IjI6XHRtb3ZsICUxLCUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1hIiAoX19y
ZXMpLCAiPSZTIiAoZDApIDogIjEiIChzKSwiMCIgKGMpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3Rh
dGljIGlubGluZSBjaGFyICogc3RycmNocihjb25zdCBjaGFyICogcywgaW50IGMpCnsKaW50IGQw
LCBkMTsKcmVnaXN0ZXIgY2hhciAqIF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAiY21w
YiAlJWFoLCUlYWxcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJsZWFsIC0xKCUl
ZXNpKSwlMFxuIgogICAgICAgICIyOlx0dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5l
IDFiIgogICAgICAgIDoiPWciIChfX3JlcyksICI9JlMiIChkMCksICI9JmEiIChkMSkgOiIwIiAo
MCksIjEiIChzKSwiMiIgKGMpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBzaXpl
X3Qgc3RybGVuKGNvbnN0IGNoYXIgKiBzKQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxu
XHQiCiAgICAgICAgIm5vdGwgJTBcblx0IgogICAgICAgICJkZWNsICUwIgogICAgICAgIDoiPWMi
IChfX3JlcyksICI9JkQiIChkMCkgOiIxIiAocyksImEiICgwKSwgIjAiICgweGZmZmZmZmZmKSk7
CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1jcHkodm9pZCAqIHRv
LCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBtb3ZzbFxuXHQiCiAgICAgICAgInRlc3RiICQy
LCViNFxuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAibW92c3dcbiIKICAgICAgICAi
MTpcdHRlc3RiICQxLCViNFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAibW92c2Jc
biIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAo
ZDIpCiAgICAgICAgOiIwIiAobi80KSwgInEiIChuKSwiMSIgKChsb25nKSB0byksIjIiICgobG9u
ZykgZnJvbSkKICAgICAgICA6ICJtZW1vcnkiKTsKcmV0dXJuICh0byk7Cn0KCgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBm
cm9tLCBzaXplX3QgbikKewogICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgY2Fz
ZSAwOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBj
YXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgY2hhciAqKXRvID0gKihj
b25zdCB1bnNpZ25lZCBjaGFyICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVu
c2lnbmVkIHNob3J0ICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbTsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAg
ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopdG8gPSAqKGNvbnN0IHVuc2ln
bmVkIHNob3J0ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBj
aGFyICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBjaGFyICopZnJvbSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAg
ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxv
bmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAg
ICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRv
ID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAg
KigyKyh1bnNpZ25lZCBzaG9ydCAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgc2hvcnQgKilm
cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAg
Y2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICoo
Y29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSso
dW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDEy
OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3Qg
dW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWdu
ZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwog
ICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25l
ZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAg
ICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVk
IGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQg
bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAg
ICAgICAgICBjYXNlIDIwOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcg
Kil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg
ICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAq
KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykg
PSAqKDIrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgKigzKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooNCsodW5zaWduZWQgbG9uZyAqKXRvKSA9
ICooNCsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdG87CiAgICAgICAgfQoKCgoKCgoKewogICAgICAgIGludCBkMCwgZDEsIGQyOwog
ICAgICAgIHN3aXRjaCAobiAlIDQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogX19hc21fXyBf
X3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6
ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTogX19hc21fXyBf
X3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZE
IiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25n
KSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjog
X19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3ZzdyIgOiAiPSZjIiAo
ZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwi
MiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAg
IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c3dc
blx0bW92c2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80
KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4g
dG87CiAgICAgICAgfQp9CgoKfQojIDMzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3Ry
aW5nLmgiCmV4dGVybiB2b2lkIF9fc3RydWN0X2NweV9idWcgKHZvaWQpOwojIDM0NSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1v
dmUodm9pZCAqIGRlc3QsY29uc3Qgdm9pZCAqIHNyYywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwg
ZDI7CmlmIChkZXN0PHNyYykKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQi
CiAgICAgICAgIm1vdnNiIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIg
KGQyKQogICAgICAgIDoiMCIgKG4pLCIxIiAoc3JjKSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVt
b3J5Iik7CmVsc2UKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAg
ICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiXG5cdCIKICAgICAgICAiY2xkIgogICAgICAgIDog
Ij0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLAogICAg
ICAgICAiMSIgKG4tMSsoY29uc3QgY2hhciAqKXNyYyksCiAgICAgICAgICIyIiAobi0xKyhjaGFy
ICopZGVzdCkKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsK
aW50IGQwOwpyZWdpc3RlciB2b2lkICogX19yZXM7CmlmICghY291bnQpCiAgICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0Igog
ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAibW92bCAkMSwl
MFxuIgogICAgICAgICIxOlx0ZGVjbCAlMCIKICAgICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAo
ZDApIDogImEiIChjKSwiMCIgKGNzKSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKc3Rh
dGljIGlubGluZSB2b2lkICogX19tZW1zZXRfZ2VuZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVf
dCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVw
XG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAg
ICAgICAgOiJhIiAoYyksIjEiIChzKSwiMCIgKGNvdW50KQogICAgICAgIDoibWVtb3J5Iik7CnJl
dHVybiBzOwp9CiMgNDA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3Rh
dGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX21lbXNldCh2b2lkICogcywgdW5zaWduZWQg
bG9uZyBjLCBzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18o
CiAgICAgICAgInJlcCA7IHN0b3NsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWIzXG5cdCIKICAg
ICAgICAiamUgMWZcblx0IgogICAgICAgICJzdG9zd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEs
JWIzXG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIy
OiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwgInEi
IChjb3VudCksICIwIiAoY291bnQvNCksICIxIiAoKGxvbmcpIHMpCiAgICAgICAgOiJtZW1vcnki
KTsKcmV0dXJuIChzKTsKfQoKCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJubGVuKGNvbnN0IGNo
YXIgKiBzLCBzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZsICUyLCUwXG5cdCIKICAgICAgICAiam1wIDJm
XG4iCiAgICAgICAgIjE6XHRjbXBiICQwLCglMClcblx0IgogICAgICAgICJqZSAzZlxuXHQiCiAg
ICAgICAgImluY2wgJTBcbiIKICAgICAgICAiMjpcdGRlY2wgJTFcblx0IgogICAgICAgICJjbXBs
ICQtMSwlMVxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIzOlx0c3VibCAlMiwlMCIK
ICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZkIiAoZDApCiAgICAgICAgOiJjIiAocyksIjEiIChj
b3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgoKCmV4dGVybiBjaGFyICpzdHJzdHIoY29uc3QgY2hh
ciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0
YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBwYXR0ZXJuLCBz
aXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAg
Y2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKilzID0gcGF0
dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBj
YXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0
dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBj
YXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0
dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopcykgPSBw
YXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAg
IGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopcyA9IHBh
dHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH0KCgoKCgoK
CnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAoY291bnQgJSA0KSB7CiAgICAg
ICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICIi
IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwi
MSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNl
IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc2IiIDogIj0m
YyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChs
b25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9f
YXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3ciIDogIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBz
KSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9f
IF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9JmMi
IChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9u
ZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0KfQoKCn0KIyA1MTUgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1z
Y2FuKHZvaWQgKiBhZGRyLCBpbnQgYywgc2l6ZV90IHNpemUpCnsKICAgICAgICBpZiAoIXNpemUp
CiAgICAgICAgICAgICAgICByZXR1cm4gYWRkcjsKICAgICAgICBfX2FzbV9fKCJyZXBuejsgc2Nh
c2Jcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAiZGVj
ICUlZWRpXG4iCiAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICA6ICI9RCIgKGFk
ZHIpLCAiPWMiIChzaXplKQogICAgICAgICAgICAgICAgOiAiMCIgKGFkZHIpLCAiMSIgKHNpemUp
LCAiYSIgKGMpKTsKICAgICAgICByZXR1cm4gYWRkcjsKfQojIDI2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICosIF9fa2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c3RyaW5nLmgiCmV4dGVybiBpbnQgX19idWlsdGluX21lbWNtcChjb25zdCB2b2lkICosY29uc3Qg
dm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEK
IyAzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0c2wgJTEs
JTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAg
ICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJi
dHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk
cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50
IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f
KCAibG9jayA7ICIKICAgICAgICAgICAgICAgICJidHJsICUxLCUwIgogICAgICAgICAgICAgICAg
OiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpKTsKfQojIDkwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGlj
IF9faW5saW5lX18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wg
JTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkK
ICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygg
ImxvY2sgOyAiCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoi
PW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5y
KSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh
ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAg
ICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk
cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVy
biBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUg
dm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAg
ICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoi
PXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAg
ICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf
YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAg
ICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIi
IChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg
ICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxODIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBp
bnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewog
ICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRy
bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1t
IiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikp
OwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0
X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBp
bnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg
ICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0
KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg
KG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjEzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf
YW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAibG9jayA7ICIKICAgICAg
ICAgICAgICAgICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1y
IiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAg
ICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjMz
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
aW50IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIp
CnsKICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxl
IHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7
CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg
ICAgICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1y
IiAob2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy
KSksIklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfZmly
c3RfemVyb19iaXQodm9pZCAqIGFkZHIsIHVuc2lnbmVkIHNpemUpCnsKICAgICAgICBpbnQgZDAs
IGQxLCBkMjsKICAgICAgICBpbnQgcmVzOwoKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAg
ICAgICAibW92bCAkLTEsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJSVlZHgsJSVl
ZHhcblx0IgogICAgICAgICAgICAgICAgInJlcGU7IHNjYXNsXG5cdCIKICAgICAgICAgICAgICAg
ICJqZSAxZlxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAtNCglJWVkaSksJSVlYXhcblx0Igog
ICAgICAgICAgICAgICAgInN1YmwgJDQsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImJzZmwg
JSVlYXgsJSVlZHhcbiIKICAgICAgICAgICAgICAgICIxOlx0c3VibCAlJWVieCwlJWVkaVxuXHQi
CiAgICAgICAgICAgICAgICAic2hsbCAkMywlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAiYWRk
bCAlJWVkaSwlJWVkeCIKICAgICAgICAgICAgICAgIDoiPWQiIChyZXMpLCAiPSZjIiAoZDApLCAi
PSZEIiAoZDEpLCAiPSZhIiAoZDIpCiAgICAgICAgICAgICAgICA6IjEiICgoc2l6ZSArIDMxKSA+
PiA1KSwgIjIiIChhZGRyKSwgImIiIChhZGRyKSk7CiAgICAgICAgcmV0dXJuIHJlczsKfQoKCgoK
CgoKc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfbmV4dF96ZXJvX2JpdCAodm9pZCAqIGFkZHIs
IGludCBzaXplLCBpbnQgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqIHAgPSAoKHVu
c2lnbmVkIGxvbmcgKikgYWRkcikgKyAob2Zmc2V0ID4+IDUpOwogICAgICAgIGludCBzZXQgPSAw
LCBiaXQgPSBvZmZzZXQgJiAzMSwgcmVzOwoKICAgICAgICBpZiAoYml0KSB7CgoKCiAgICAgICAg
ICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAg
ImpuZSAxZlxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJtb3ZsICQzMiwgJTBcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgIjE6IgogICAgICAgICAgICAgICAgICAgICAgICA6ICI9ciIg
KHNldCkKICAgICAgICAgICAgICAgICAgICAgICAgOiAiciIgKH4oKnAgPj4gYml0KSkpOwogICAg
ICAgICAgICAgICAgaWYgKHNldCA8ICgzMiAtIGJpdCkpCiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzZXQgKyBvZmZzZXQ7CiAgICAgICAgICAgICAgICBzZXQgPSAzMiAtIGJpdDsKICAg
ICAgICAgICAgICAgIHArKzsKICAgICAgICB9CgoKCiAgICAgICAgcmVzID0gZmluZF9maXJzdF96
ZXJvX2JpdCAocCwgc2l6ZSAtIDMyICogKHAgLSAodW5zaWduZWQgbG9uZyAqKSBhZGRyKSk7CiAg
ICAgICAgcmV0dXJuIChvZmZzZXQgKyBzZXQgKyByZXMpOwp9CgoKCgoKCgpzdGF0aWMgX19pbmxp
bmVfXyB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCnsKICAgICAgICBfX2Fz
bV9fKCJic2ZsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKHdvcmQpCiAgICAgICAgICAg
ICAgICA6InIiICh+d29yZCkpOwogICAgICAgIHJldHVybiB3b3JkOwp9CiMgMzQzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGZmcyhp
bnQgeCkKewogICAgICAgIGludCByOwoKICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwXG5cdCIK
ICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUw
XG4iCiAgICAgICAgICAgICAgICAiMToiIDogIj1yIiAocikgOiAiZyIgKHgpKTsKICAgICAgICBy
ZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoK
c3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDUwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2ZzLmgiCnN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCB7CiAgICAgICAgaW50IG5yX2ZpbGVz
OwogICAgICAgIGludCBucl9mcmVlX2ZpbGVzOwogICAgICAgIGludCBtYXhfZmlsZXM7Cn07CmV4
dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmlsZXNfc3RhdDsKCnN0cnVjdCBpbm9kZXNf
c3RhdF90IHsKICAgICAgICBpbnQgbnJfaW5vZGVzOwogICAgICAgIGludCBucl91bnVzZWQ7CiAg
ICAgICAgaW50IGR1bW15WzVdOwp9OwpleHRlcm4gc3RydWN0IGlub2Rlc19zdGF0X3QgaW5vZGVz
X3N0YXQ7CgpleHRlcm4gaW50IGxlYXNlc19lbmFibGUsIGRpcl9ub3RpZnlfZW5hYmxlLCBsZWFz
ZV9icmVha190aW1lOwojIDIwMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCiMgMzkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2luaXQuaCIgMQojIDQ4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2luaXQuaCIK
dHlwZWRlZiBpbnQgKCppbml0Y2FsbF90KSh2b2lkKTsKdHlwZWRlZiB2b2lkICgqZXhpdGNhbGxf
dCkodm9pZCk7CgpleHRlcm4gaW5pdGNhbGxfdCBfX2luaXRjYWxsX3N0YXJ0LCBfX2luaXRjYWxs
X2VuZDsKIyA2MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbml0LmgiCnN0cnVjdCBr
ZXJuZWxfcGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICBpbnQgKCpzZXR1
cF9mdW5jKShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFyYW0gX19zZXR1cF9z
dGFydCwgX19zZXR1cF9lbmQ7CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVt
LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIgMQojIDEx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIGlu
dCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAgICAgIGludCByID0gMTsKCiAgICAgICAgaWYgKCF4
KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikpIHsK
ICAgICAgICAgICAgICAgIHggPj49IDE2OwogICAgICAgICAgICAgICAgciArPSAxNjsKICAgICAg
ICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4Owog
ICAgICAgICAgICAgICAgciArPSA4OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmKSkg
ewogICAgICAgICAgICAgICAgeCA+Pj0gNDsKICAgICAgICAgICAgICAgIHIgKz0gNDsKICAgICAg
ICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSAyOwogICAg
ICAgICAgICAgICAgciArPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsKICAg
ICAgICAgICAgICAgIHggPj49IDE7CiAgICAgICAgICAgICAgICByICs9IDE7CiAgICAgICAgfQog
ICAgICAgIHJldHVybiByOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVy
aWNfaHdlaWdodDMyKHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9
ICh3ICYgMHg1NTU1NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTU1NTU1KTsKICAgICAgICByZXMg
PSAocmVzICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMzMzMzMpOwogICAgICAg
IHJlcyA9IChyZXMgJiAweDBGMEYwRjBGKSArICgocmVzID4+IDQpICYgMHgwRjBGMEYwRik7CiAg
ICAgICAgcmVzID0gKHJlcyAmIDB4MDBGRjAwRkYpICsgKChyZXMgPj4gOCkgJiAweDAwRkYwMEZG
KTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDAwMEZGRkYpICsgKChyZXMgPj4gMTYpICYgMHgw
MDAwRkZGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDE2
KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1NTU1
KSArICgodyA+PiAxKSAmIDB4NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMykgKyAo
KHJlcyA+PiAyKSAmIDB4MzMzMyk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRikgKyAoKHJl
cyA+PiA0KSAmIDB4MEYwRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwRkYpICsgKChyZXMg
Pj4gOCkgJiAweDAwRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3
ZWlnaHQ4KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYg
MHg1NSkgKyAoKHcgPj4gMSkgJiAweDU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMykgKyAo
KHJlcyA+PiAyKSAmIDB4MzMpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwRikgKyAoKHJlcyA+
PiA0KSAmIDB4MEYpOwp9CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgi
IDIKCgoKc3RydWN0IHRhc2tfc3RydWN0OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVf
XygocmVncGFybSgzKSkpOwojIDY0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVk
aFxuXHQiCiAgICAgICAgICAgICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAg
ICJzaGxsICQxNiwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAg
ICAgICAgICAgICAgOiI9JmQiIChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRy
KSsyKSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAg
ICAgIm0iICgqKChhZGRyKSs3KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk
IGxvbmcgZ2V0X2xpbWl0KHVuc2lnbmVkIGxvbmcgc2VnbWVudCkKewogICAgICAgIHVuc2lnbmVk
IGxvbmcgX19saW1pdDsKICAgICAgICBfX2FzbV9fKCJsc2xsICUxLCUwIgogICAgICAgICAgICAg
ICAgOiI9ciIgKF9fbGltaXQpOiJyIiAoc2VnbWVudCkpOwogICAgICAgIHJldHVybiBfX2xpbWl0
KzE7Cn0KCgoKCgoKCnN0cnVjdCBfX3hjaGdfZHVtbXkgeyB1bnNpZ25lZCBsb25nIGFbMTAwXTsg
fTsKIyAxNTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5s
aW5lIHZvaWQgX19zZXRfNjRiaXQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHB0ciwKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBsb3csIHVuc2lnbmVkIGludCBoaWdoKQp7CiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgICAgICAgIlxuMTpcdCIKICAgICAgICAgICAg
ICAgICJtb3ZsICglMCksICUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsIDQoJTApLCAl
JWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiY21weGNoZzhiICglMClcblx0IgogICAgICAgICAg
ICAgICAgImpueiAxYiIKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgIDogIkQiKHB0
ciksCiAgICAgICAgICAgICAgICAgICAgICAgICJiIihsb3cpLAogICAgICAgICAgICAgICAgICAg
ICAgICAiYyIoaGlnaCkKICAgICAgICAgICAgICAgIDogImF4IiwiZHgiLCJtZW1vcnkiKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0X2NvbnN0YW50ICh1bnNpZ25lZCBsb25nIGxv
bmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwodW5z
aWduZWQgaW50KSh2YWx1ZSksICh1bnNpZ25lZCBpbnQpKCh2YWx1ZSk+PjMyVUxMKSk7Cn0KCgoK
c3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0X3ZhciAodW5zaWduZWQgbG9uZyBsb25nICpw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsK
ICAgICAgICBfX3NldF82NGJpdChwdHIsKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzApLCAq
KCgodW5zaWduZWQgaW50KikmKHZhbHVlKSkrMSkpOwp9CiMgMjAzICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1
bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAg
c3dpdGNoIChzaXplKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiI9cSIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAg
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wgJTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAo
Kigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHg7Cn0KIyAyMzcgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jbXB4Y2hn
KHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvbGQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcsIGludCBzaXplKQp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwcmV2OwogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgIGNh
c2UgMToKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21w
eGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEi
KHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAi
bSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJl
dHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ3cgJXcxLCUyIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSks
ICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnki
KTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgNDoKICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ2wgJTEsJTIiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194
Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAg
ICAgfQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzMjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3N5c3RlbS5oIgpleHRlcm4gdm9pZCBfX2dsb2JhbF9jbGkodm9pZCk7CmV4dGVybiB2b2lk
IF9fZ2xvYmFsX3N0aSh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19nbG9iYWxfc2F2ZV9m
bGFncyh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nbG9iYWxfcmVzdG9yZV9mbGFncyh1bnNpZ25lZCBs
b25nKTsKIyAzNTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgp2b2lkIGRp
c2FibGVfaGx0KHZvaWQpOwp2b2lkIGVuYWJsZV9obHQodm9pZCk7CgpleHRlcm4gdW5zaWduZWQg
bG9uZyBkbWlfYnJva2VuOwpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3A7CiMgNDAgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9yd3NlbS5oIgpzdHJ1Y3Qgcndfc2VtYXBob3JlOwoKCgoKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL3J3c2VtLmgiCnN0cnVjdCByd3NlbV93YWl0ZXI7CgpleHRlcm4gc3RydWN0IHJ3X3NlbWFw
aG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3
c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fd2Fr
ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoK
CnN0cnVjdCByd19zZW1hcGhvcmUgewogICAgICAgIHNpZ25lZCBsb25nIGNvdW50OwoKCgoKCgog
ICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9sb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd2Fp
dF9saXN0OwoKCgp9OwojIDg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgaW5pdF9yd3NlbShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsK
ICAgICAgICBzZW0tPmNvdW50ID0gMHgwMDAwMDAwMDsKICAgICAgICBkbyB7ICooJnNlbS0+d2Fp
dF9sb2NrKSA9IChzcGlubG9ja190KSB7IDEgfTsgfSB3aGlsZSgwKTsKICAgICAgICBkbyB7ICgm
c2VtLT53YWl0X2xpc3QpLT5uZXh0ID0gKCZzZW0tPndhaXRfbGlzdCk7ICgmc2VtLT53YWl0X2xp
c3QpLT5wcmV2ID0gKCZzZW0tPndhaXRfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgX19kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcg
ZG93bl9yZWFkXG5cdCIKImxvY2sgOyAiICIgIGluY2wgICAgICAoJSVlYXgpXG5cdCIKICAgICAg
ICAgICAgICAgICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0Igog
ICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5s
b2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpcblx0
IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAi
ICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWR4
XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRfZmFpbGVk
XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAg
ICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAg
IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIj
IGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQp
CiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAi
Y2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93cml0ZShzdHJ1Y3Qgcndfc2Vt
YXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAgICB0bXAgPSAoKC0weDAwMDEw
MDAwKSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0IgoibG9jayA7ICIgIiAgeGFkZCAg
ICAgICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAgICUwLCUwXG5c
dCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAi
MTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAi
ICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9y
ZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAg
ICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAg
ICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwg
ICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAg
ICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25f
d3JpdGUiCiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQogICAg
ICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7
Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAq
c2VtKQp7CiAgICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19hc21fXyBf
X3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFkXG5cdCIK
ImxvY2sgOyAiICIgIHhhZGQgICAgICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAg
ICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAg
ICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNl
bWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpcblx0IiAiLmVuZGlm
XG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBkZWN3ICAg
ICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMWJcblx0IgogICAgICAg
ICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwg
ICAgICByd3NlbV93YWtlXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxu
XHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIu
cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfcmVhZFxuIgogICAg
ICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpLCAiK2QiKHRtcCkKICAgICAgICAgICAgICAg
IDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0
aWMgaW5saW5lIHZvaWQgX191cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBf
X3VwX3dyaXRlXG5cdCIKICAgICAgICAgICAgICAgICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQi
CiJsb2NrIDsgIiAiICB4YWRkbCAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAg
ICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAg
ICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJz
ZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRp
ZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgZGVjdyAg
ICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5cdCIKICAgICAg
ICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxs
ICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hc
blx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBfX3VwX3dyaXRlXG4iCiAg
ICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNl
bSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSkKICAgICAgICAgICAgICAgIDog
Im1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJ3c2VtX2F0
b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygKImxvY2sgOyAiICJhZGRsICUxLCUwIgogICAgICAgICAgICAg
ICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIiKGRlbHRhKSwgIm0iKHNl
bS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1fYXRvbWljX3VwZGF0ZShp
bnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXAgPSBk
ZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiJsb2NrIDsgIiAieGFkZCAlMCwo
JTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCksICI9bSIoc2VtLT5jb3VudCkKICAgICAg
ICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAi
bWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVsdGE7Cn0KIyAyOCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvcndzZW0uaCIKc3RhdGljIGlubGluZSB2b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2Vt
YXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAgX19kb3duX3JlYWQoc2VtKTsKICAgICAg
ICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv
cmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX2Rvd25fd3JpdGUoc2VtKTsKICAgICAgICA7
Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgIDsKICAgICAgICBfX3VwX3JlYWQoc2VtKTsKICAgICAgICA7Cn0KCgoKCnN0
YXRpYyBpbmxpbmUgdm9pZCB1cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg
ICAgICA7CiAgICAgICAgX191cF93cml0ZShzZW0pOwogICAgICAgIDsKfQojIDQzICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAg
ICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRf
cXVldWVfaGVhZF90IHdhaXQ7CgoKCn07CiMgNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt
L3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBo
b3JlICpzZW0sIGludCB2YWwpCnsKCgoKCgoKICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50
ZXIpID0gKHZhbCkpOwogICAgICAgIHNlbS0+c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2Fp
dHF1ZXVlX2hlYWQoJnNlbS0+d2FpdCk7CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01V
VEVYIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfTVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3Jl
ICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMCkpKSB2b2lkIF9fZG93bl9mYWlsZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVkX2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRy
aWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICog
c2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGli
bGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg
aW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIHZvaWQgX191cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoK
c3RhdGljIGlubGluZSB2b2lkIGRvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3du
IG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTBcblx0Igog
ICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAg
ICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJz
ZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRp
ZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZFxuXHQiCiAgICAg
ICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAg
ICAgICAgICAgICAgIDoiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2Vt
KQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRv
d25faW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJl
c3VsdDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg
IiMgYXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAg
ICAgImxvY2sgOyAiICJkZWNsICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAg
ICAgICAgICAgICAgICAieG9ybCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAg
ICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2su
IiAic2VtYXBob3JlIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiOlxuXHQiICIu
ZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfaW50ZXJy
dXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAi
LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChzZW0t
PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v
cnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93
bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoK
CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9t
aWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9j
ayA7ICIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAg
ICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAg
ICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzZW1h
cGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRpZlxu
XHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG5cdCIK
ICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcblx0
IgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAg
ICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAg
IHJldHVybiByZXN1bHQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2Vt
YXBob3JlICogc2VtKQp7CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiIyBhdG9taWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICJsb2Nr
IDsgIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAiamxlIDJmXG4iCiAgICAgICAgICAg
ICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k
ZWYgIiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1h
cGhvcmUiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX191
cF93YWtldXBcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAg
Ii5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMFxuIgogICAgICAg
ICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAg
ICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CiMgMjAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu
aCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKc3RhdGlj
IF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7Cgog
ICAgICAgIF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgog
ICAgICAgIHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19f
YXJjaF9fc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6
ICI9cSIgKHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoKCgp9CiMgNDUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3Rf
XyBfX3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2Fi
MTYoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7CiAg
ICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2
b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2Fy
Y2hfX3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18g
X19jb25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2Fy
Y2hfX3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIg
KngpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lu
bGluZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIp
ID0gX19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9f
aW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9f
dTMyIGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAg
ICAgICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/
ICh7IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIp
MHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAw
VUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8
ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9f
ZnN3YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChf
X3UzMikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194
KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMy
KTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAw
VUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkg
KSk7IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQg
X19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCoo
eCkpIDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCko
X194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChf
X3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2
NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8
IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8
IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVM
TCkgPj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAw
MDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAw
MDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhm
ZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVf
XyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7
IF9fdTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9f
dTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVM
TCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAw
ZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw
MDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4
MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191
NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAm
IChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCko
X194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChf
X3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7
IH0pOyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5
dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIp
OwpleHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGlu
dCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0
b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRpbWUgKHN0cnVjdCBpbm9kZSAqKTsKCgpl
eHRlcm4gdm9pZCBidWZmZXJfaW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgaW5vZGVf
aW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgbW50X2luaXQodW5zaWduZWQgbG9uZyk7
CgoKZW51bSBiaF9zdGF0ZV9iaXRzIHsKICAgICAgICBCSF9VcHRvZGF0ZSwKICAgICAgICBCSF9E
aXJ0eSwKICAgICAgICBCSF9Mb2NrLAogICAgICAgIEJIX1JlcSwKICAgICAgICBCSF9NYXBwZWQs
CiAgICAgICAgQkhfTmV3LAogICAgICAgIEJIX0FzeW5jLAogICAgICAgIEJIX1dhaXRfSU8sCiAg
ICAgICAgQkhfTGF1bmRlciwKICAgICAgICBCSF9KQkQsCgogICAgICAgIEJIX1ByaXZhdGVTdGFy
dCwKCgp9OwojIDI0MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3Qg
YnVmZmVyX2hlYWQgewoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGJfYmxvY2tucjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX3NpemU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9saXN0OwogICAgICAgIGtkZXZfdCBiX2RldjsKCiAg
ICAgICAgYXRvbWljX3QgYl9jb3VudDsKICAgICAgICBrZGV2X3QgYl9yZGV2OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfZmx1c2h0aW1lOwoK
ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dF9mcmVlOwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqYl9wcmV2X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3Ro
aXNfcGFnZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcmVxbmV4dDsKCiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICoqYl9wcHJldjsKICAgICAgICBjaGFyICogYl9kYXRhOwogICAg
ICAgIHN0cnVjdCBwYWdlICpiX3BhZ2U7CiAgICAgICAgdm9pZCAoKmJfZW5kX2lvKShzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwogICAgICAgIHZvaWQgKmJfcHJpdmF0ZTsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3JzZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3QgYl93YWl0OwoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiX2lub2RlOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgYl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9f
dCkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZl
cihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyODggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2Uo
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0KTsKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9waXBlX2ZzX2ku
aCIgMQoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVkIGludCBsZW47CiAg
ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0OwogICAgICAgIHVuc2lnbmVkIGludCByZWFkZXJzOwog
ICAgICAgIHVuc2lnbmVkIGludCB3cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5n
X3JlYWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfd3JpdGVyczsKICAgICAgICB1
bnNpZ25lZCBpbnQgcl9jb3VudGVyOwogICAgICAgIHVuc2lnbmVkIGludCB3X2NvdW50ZXI7Cn07
CiMgNDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiCnZvaWQgcGlw
ZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9kZSogcGlwZV9uZXcoc3Ry
dWN0IGlub2RlKiBpbm9kZSk7CiMgMjk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX2kuaCIgMQoK
CgoKCgpzdHJ1Y3QgbWluaXhfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgX191MTYgaTFfZGF0YVsxNl07CiAgICAgICAgICAgICAgICBfX3UzMiBpMl9kYXRhWzE2
XTsKICAgICAgICB9IHU7Cn07CiMgMjk1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIiAxCiMg
MjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiCnN0cnVjdCBleHQy
X2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgX191MzIgaV9m
bGFnczsKICAgICAgICBfX3UzMiBpX2ZhZGRyOwogICAgICAgIF9fdTggaV9mcmFnX25vOwogICAg
ICAgIF9fdTggaV9mcmFnX3NpemU7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBf
X3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Js
b2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3Uz
MiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2NrOwogICAg
ICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3RhcnRfbG9v
a3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI5NiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9l
eHQzX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNf
aS5oIgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsKICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwog
ICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
MiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfc3RhdGU7CiAgICAgICAgX191MzIgaV9u
ZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwoKCgoKICAg
ICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
aV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0M19mc19pLmgi
CiAgICAgICAgbG9mZl90IGlfZGlza3NpemU7CiMgNzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvZXh0M19mc19pLmgiCiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSB0cnVuY2F0ZV9z
ZW07Cn07CiMgMjk3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hwZnNfZnNfaS5oIiAxCgoKCnN0cnVjdCBocGZz
X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAg
aW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5vOwogICAgICAgIHVuc2ln
bmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAgICAgICAgdW5zaWduZWQg
aV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwogICAgICAgIHVuc2lnbmVk
IGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBp
X2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lkIDogMTsKICAgICAgICB1
bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAg
ICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2Zz
X2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbnRmc19hdHRyaWJ1dGU7CnN0cnVjdCBudGZzX3NiX2luZm87
CgoKCgp0eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVkZWYgdTE2IG50ZnNfdTE2Owp0eXBlZGVmIHUz
MiBudGZzX3UzMjsKdHlwZWRlZiB1NjQgbnRmc191NjQ7CnR5cGVkZWYgczggbnRmc19zODsKdHlw
ZWRlZiBzMTYgbnRmc19zMTY7CnR5cGVkZWYgczMyIG50ZnNfczMyOwp0eXBlZGVmIHM2NCBudGZz
X3M2NDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG50bW9kZV90OwoKCgp0eXBlZGVmIHVp
ZF90IG50ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lkX3QgbnRmc19naWRfdDsKCgoKdHlwZWRlZiBf
X2tlcm5lbF9zaXplX3QgbnRmc19zaXplX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IG50
ZnNfdGltZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50ZnNfd2NoYXJfdDsKCgoKCnR5cGVkZWYgczY0
IG50ZnNfb2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2NCBudGZzX3RpbWU2NF90OwojIDY5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0eXBlZGVmIHMzMiBudGZzX2Ns
dXN0ZXJfdDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG50ZnNf
c2JfaW5mbyAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9udW1iZXI7CiAgICAgICAgX191
MTYgc2VxdWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0dHI7CiAgICAgICAg
aW50IGF0dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0cmlidXRlICphdHRyczsKICAg
ICAgICBpbnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVjb3JkczsKCiAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHJlY29yZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbHVzdGVyc19wZXJfcmVj
b3JkOwogICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjk5ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKc3RydWN0IG1zZG9zX2lub2RlX2luZm8g
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgaW50IGlfc3RhcnQ7
CiAgICAgICAgaW50IGlfbG9nc3RhcnQ7CiAgICAgICAgaW50IGlfYXR0cnM7CiAgICAgICAgaW50
IGlfY3RpbWVfbXM7CiAgICAgICAgaW50IGlfbG9jYXRpb247CiAgICAgICAgc3RydWN0IGlub2Rl
ICppX2ZhdF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hhc2g7Cn07CiMg
MzAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDEKIyAzOSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIgpzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAg
ICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcDsKICAgICAgICBzaG9ydCBpbnQgbG9va2luZzsKICAg
ICAgICBzaG9ydCBpbnQgY3JlYXRpbmc7CgoKCiAgICAgICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0
IHVtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rv
c19pbmZvOwogICAgICAgIHN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIGRpcl9pbmZvOwogICAgICAg
IGludCBpX3BhdGNoZWQ7CiAgICAgICAgaW50IGlfaXNfaGxpbms7CiAgICAgICAgb2ZmX3QgcG9z
Owp9OwojIDMwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pc29fZnNfaS5oIiAxCgoKCmVudW0gaXNvZnNfZmls
ZV9mb3JtYXQgewogICAgICAgIGlzb2ZzX2ZpbGVfbm9ybWFsID0gMCwKICAgICAgICBpc29mc19m
aWxlX3NwYXJzZSA9IDEsCiAgICAgICAgaXNvZnNfZmlsZV9jb21wcmVzc2VkID0gMiwKfTsKCgoK
CnN0cnVjdCBpc29faW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3RfZXh0
ZW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGlfZm9ybWF0X3Bhcm1bM107CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25leHRfc2Vj
dGlvbl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMzAyICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25mc19mc19pLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5oIiAxCiMgMTQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19wcm90LmgiCmVudW0gcnBj
X2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9OVUxMID0gMCwKICAgICAgICBSUENfQVVU
SF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9SVCA9IDIsCiAgICAgICAgUlBDX0FVVEhf
REVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0LAp9OwoKZW51bSBycGNfbXNnX3R5cGUg
ewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBSUENfUkVQTFkgPSAxCn07CgplbnVtIHJw
Y19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FDQ0VQVEVEID0gMCwKICAgICAgICBSUENf
TVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2VwdF9zdGF0IHsKICAgICAgICBSUENfU1VD
Q0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJTCA9IDEsCiAgICAgICAgUlBDX1BST0df
TUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VOQVZBSUwgPSAzLAogICAgICAgIFJQQ19H
QVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNURU1fRVJSID0gNQp9OwoKZW51bSBycGNf
cmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRDSCA9IDAsCiAgICAgICAgUlBDX0FVVEhf
RVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQgewogICAgICAgIFJQQ19BVVRIX09LID0g
MCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwKICAgICAgICBSUENfQVVUSF9SRUpFQ1RF
RENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZFUkYgPSAzLAogICAgICAgIFJQQ19BVVRI
X1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FVVEhfVE9PV0VBSyA9IDUKfTsKIyAxMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L25mcy5oIgogZW51bSBuZnNfc3RhdCB7CiAgICAgICAgTkZTX09LID0g
MCwKICAgICAgICBORlNFUlJfUEVSTSA9IDEsCiAgICAgICAgTkZTRVJSX05PRU5UID0gMiwKICAg
ICAgICBORlNFUlJfSU8gPSA1LAogICAgICAgIE5GU0VSUl9OWElPID0gNiwKICAgICAgICBORlNF
UlJfRUFHQUlOID0gMTEsCiAgICAgICAgTkZTRVJSX0FDQ0VTID0gMTMsCiAgICAgICAgTkZTRVJS
X0VYSVNUID0gMTcsCiAgICAgICAgTkZTRVJSX1hERVYgPSAxOCwKICAgICAgICBORlNFUlJfTk9E
RVYgPSAxOSwKICAgICAgICBORlNFUlJfTk9URElSID0gMjAsCiAgICAgICAgTkZTRVJSX0lTRElS
ID0gMjEsCiAgICAgICAgTkZTRVJSX0lOVkFMID0gMjIsCiAgICAgICAgTkZTRVJSX0ZCSUcgPSAy
NywKICAgICAgICBORlNFUlJfTk9TUEMgPSAyOCwKICAgICAgICBORlNFUlJfUk9GUyA9IDMwLAog
ICAgICAgIE5GU0VSUl9NTElOSyA9IDMxLAogICAgICAgIE5GU0VSUl9PUE5PVFNVUFAgPSA0NSwK
ICAgICAgICBORlNFUlJfTkFNRVRPT0xPTkcgPSA2MywKICAgICAgICBORlNFUlJfTk9URU1QVFkg
PSA2NiwKICAgICAgICBORlNFUlJfRFFVT1QgPSA2OSwKICAgICAgICBORlNFUlJfU1RBTEUgPSA3
MCwKICAgICAgICBORlNFUlJfUkVNT1RFID0gNzEsCiAgICAgICAgTkZTRVJSX1dGTFVTSCA9IDk5
LAogICAgICAgIE5GU0VSUl9CQURIQU5ETEUgPSAxMDAwMSwKICAgICAgICBORlNFUlJfTk9UX1NZ
TkMgPSAxMDAwMiwKICAgICAgICBORlNFUlJfQkFEX0NPT0tJRSA9IDEwMDAzLAogICAgICAgIE5G
U0VSUl9OT1RTVVBQID0gMTAwMDQsCiAgICAgICAgTkZTRVJSX1RPT1NNQUxMID0gMTAwMDUsCiAg
ICAgICAgTkZTRVJSX1NFUlZFUkZBVUxUID0gMTAwMDYsCiAgICAgICAgTkZTRVJSX0JBRFRZUEUg
PSAxMDAwNywKICAgICAgICBORlNFUlJfSlVLRUJPWCA9IDEwMDA4CiB9OwoKCgplbnVtIG5mc19m
dHlwZSB7CiAgICAgICAgTkZOT04gPSAwLAogICAgICAgIE5GUkVHID0gMSwKICAgICAgICBORkRJ
UiA9IDIsCiAgICAgICAgTkZCTEsgPSAzLAogICAgICAgIE5GQ0hSID0gNCwKICAgICAgICBORkxO
SyA9IDUsCiAgICAgICAgTkZTT0NLID0gNiwKICAgICAgICBORkJBRCA9IDcsCiAgICAgICAgTkZG
SUZPID0gOAp9OwoKCgoKCgpzdHJ1Y3QgbmZzX2ZoIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
aXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGF0YVs2NF07Cn07CiMgMTA3ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAgICAg
TkZTX1VOU1RBQkxFID0gMCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBORlNf
RklMRV9TWU5DID0gMgp9OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2Zz
X2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmaWxl
aWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGZsYWdzOwojIDQ0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgi
CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQg
cmVhZF9jYWNoZV9jdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAg
IF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87
CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBjYWNoZV9tdGltZV9qaWZmaWVzOwoKCgoKCiAgICAgICAgX191MzIgY29v
a2lldmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBu
cmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5mc19sb2Nr
X2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAgICAgc3Ry
dWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDMwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2kuaCIg
MQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzEr
MSsxXTsKCgoKCiAgICAgICAgdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKfTsKIyAzMDQgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvYWZmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2Eub3V0LmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYS5v
dXQuaCIgMQoKCgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5zaWdu
ZWQgYV90ZXh0OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNpZ25l
ZCBhX3N5bXM7CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1bnNp
Z25lZCBhX2Ryc2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0
LmgiIDIKCgoKCmVudW0gbWFjaGluZV90eXBlIHsKCgoKICBNX09MRFNVTjIgPSAwLAoKCgoKICBN
XzY4MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9IDIsCgoKCgogIE1fU1BBUkMgPSAzLAoKCiAgTV8z
ODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwKICBNX01JUFMyID0gMTUyCn07CiMgMTU3ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCBubGlzdCB7CiAgdW5pb24g
ewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25leHQ7CiAgICBsb25nIG5f
c3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAgY2hhciBuX290aGVyOwog
IHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07CiMgMjM1ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCByZWxvY2F0aW9uX2luZm8KewoK
ICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQgcl9zeW1ib2xudW06MjQ7CgoKCiAgdW5z
aWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVkIGludCByX2xlbmd0aDoyOwoKCgoKCgog
IHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoKICB1bnNpZ25lZCBpbnQgcl9wYWQ6NDsK
Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA5ICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1l
X3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKdGlt
ZXNwZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcgbnNlYyA9IHZhbHVlLT50
dl9uc2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSktMSkgLyAxMDApKQogICAg
ICAgICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAgICBuc2VjICs9IDEwMDAw
MDAwMDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAwMDBMIC8gMTAwOwogICAg
ICAgIHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmpp
ZmZpZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzLCBzdHJ1Y3QgdGltZXNwZWMg
KnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2X25zZWMgPSAoamlmZmllcyAlIDEwMCkgKiAoMTAw
MDAwMDAwMEwgLyAxMDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBqaWZmaWVzIC8gMTAwOwp9
CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGxvbmcKbWt0aW1lICh1bnNpZ25lZCBpbnQgeWVhciwgdW5zaWduZWQgaW50IG1v
biwKICAgICAgICB1bnNpZ25lZCBpbnQgZGF5LCB1bnNpZ25lZCBpbnQgaG91ciwKICAgICAgICB1
bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgc2VjKQp7CiAgICAgICAgaWYgKDAgPj0gKGlu
dCkgKG1vbiAtPSAyKSkgewogICAgICAgICAgICAgICAgbW9uICs9IDEyOwogICAgICAgICAgICAg
ICAgeWVhciAtPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoKAogICAgICAgICAgICAg
ICAgKHVuc2lnbmVkIGxvbmcpICh5ZWFyLzQgLSB5ZWFyLzEwMCArIHllYXIvNDAwICsgMzY3Km1v
bi8xMiArIGRheSkgKwogICAgICAgICAgICAgICAgICAgICAgICB5ZWFyKjM2NSAtIDcxOTQ5OQog
ICAgICAgICAgICApKjI0ICsgaG91cgogICAgICAgICAgKSo2MCArIG1pbgogICAgICAgICkqNjAg
KyBzZWM7Cn0KCgoKCnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAg
ICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdGltZXpvbmUgewogICAgICAgIGlu
dCB0el9taW51dGVzd2VzdDsKICAgICAgICBpbnQgdHpfZHN0dGltZTsKfTsKCgoKCmV4dGVybiB2
b2lkIGRvX2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCBkb19z
ZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsK
CnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwog
ICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9hZmZzX2ZzX2kuaCIKc3RydWN0IGFmZnNfZXh0X2tleSB7CiAgICAgICAgdTMyIGV4dDsK
ICAgICAgICB1MzIga2V5Owp9OwoKCgoKc3RydWN0IGFmZnNfaW5vZGVfaW5mbyB7CiAgICAgICAg
dTMyIGlfb3BlbmNudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfbGlua19sb2NrOwogICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9leHRfbG9jazsKCiAgICAgICAgdTMyIGlfYmxrY250Owog
ICAgICAgIHUzMiBpX2V4dGNudDsKICAgICAgICB1MzIgKmlfbGM7CiAgICAgICAgdTMyIGlfbGNf
c2l6ZTsKICAgICAgICB1MzIgaV9sY19zaGlmdDsKICAgICAgICB1MzIgaV9sY19tYXNrOwogICAg
ICAgIHN0cnVjdCBhZmZzX2V4dF9rZXkgKmlfYWM7CiAgICAgICAgdTMyIGlfZXh0X2xhc3Q7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICppX2V4dF9iaDsKICAgICAgICB1bnNpZ25lZCBsb25n
IG1tdV9wcml2YXRlOwogICAgICAgIHUzMiBpX3Byb3RlY3Q7CiAgICAgICAgdTMyIGlfbGFzdGFs
bG9jOwogICAgICAgIGludCBpX3BhX2NudDsKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAzMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQoj
IDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNf
aW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MzIgaV9kYXRh
WzE1XTsKICAgICAgICAgICAgICAgIF9fdTggaV9zeW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91
MTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9f
dTMyIGlfc2hhZG93OwogICAgICAgIF9fdTMyIGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3Vu
dXNlZDI7CiAgICAgICAgX191MzIgaV9vZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwog
ICAgICAgIF9fdTMyIGlfbGFzdGZyYWc7Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vmc19mc19p
LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0eXBl
ZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoKCgoK
Cgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4XTsK
ICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4
X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0eXBl
ZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25lZCBp
bnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAgdV9z
aG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQgZGlf
dWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsKICAg
ICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAgICAg
aW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hvcnQg
ZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2NoYXIg
ZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNfZXh0
ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2OwogICAg
ICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBudW1l
eHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4dGVu
dHNbMTJdOwp9OwojIDMwNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMQojIDE0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvY29kYS5oIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2NvZGEuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IHZlbnVzX2RpcmVudCB7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX2ZpbGVubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBk
X3JlY2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfdHlwZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGRfbmFtbGVuOwogICAgICAgIGNoYXIgZF9uYW1lWzI1NSArIDFdOwp9OwojIDE5OCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9sb25nIFZvbHVtZUlk
Owp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBlZGVmIHVfbG9uZyBVbmlxdWVfdDsKdHlwZWRl
ZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBlZGVmIHN0cnVjdCBWaWNlRmlkIHsKICAgIFZv
bHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5vZGU7CiAgICBVbmlxdWVfdCBVbmlxdWU7Cn0g
VmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlub190IGNvZGFfZjJpKHN0cnVjdCBWaWNl
RmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlkICkKICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4ZmZmZmZmZmUgfHwgZmlkLT5Wbm9kZSA9PSAw
eGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuICgoZmlkLT5Wb2x1bWUgPDwgMjApIHwg
KGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJl
dHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9kZTw8MTApICsgKGZpZC0+Vm9sdW1lPDwyMCkp
Owp9CiMgMjMzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1
X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVfaW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29k
YV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQsIGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwog
ICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2VnaWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoK
CgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9OLCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZD
SFIsIENfVkxOSywgQ19WU09DSywgQ19WRklGTywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0
ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwogICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAg
ICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2
YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxlaWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsK
ICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRp
bWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1l
c3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xvbmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9m
bGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9yZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVz
OwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVyZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMg
ewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAgIGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3Qg
Zl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmlsZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMg
MzM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IGNvZGFfaW5f
aGRyIHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2RlOwogICAgdW5zaWduZWQgbG9uZyB1bmlxdWU7
CiAgICB1X3Nob3J0IHBpZDsKICAgIHVfc2hvcnQgcGdpZDsKICAgIHVfc2hvcnQgc2lkOwogICAg
c3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCnN0cnVjdCBjb2RhX291dF9oZHIgewogICAgdW5z
aWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVuc2lnbmVk
IGxvbmcgcmVzdWx0Owp9OwoKCnN0cnVjdCBjb2RhX3Jvb3Rfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9yb290X2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2luIHsKICAg
IHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsK
fTsKCnN0cnVjdCBjb2RhX29wZW5fb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAg
ICB1X3F1YWRfdCBkZXY7CiAgICBpbm9fdCBpbm9kZTsKfTsKCgoKc3RydWN0IGNvZGFfc3RvcmVf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfc3RvcmVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o
ZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf
cmVsZWFzZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNv
ZGFfY2xvc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk
OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfY2xvc2Vfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2lvY3RsX2luIHsKICAgIHN0cnVjdCBj
b2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBjbWQ7CiAgICBpbnQgbGVu
OwogICAgaW50IHJ3ZmxhZzsKICAgIGNoYXIgKmRhdGE7Cn07CgpzdHJ1Y3QgY29kYV9pb2N0bF9v
dXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBsZW47CiAgICBjYWRkcl90
IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2dldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07
CgoKCnN0cnVjdCBjb2RhX3NldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCnN0cnVjdCBj
b2RhX3NldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVj
dCBjb2RhX2FjY2Vzc19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9hY2Nlc3Nfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgoKCgoKc3RydWN0IGNvZGFfbG9va3VwX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1l
OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfbG9va3VwX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBlOwp9OwoKCgpz
dHJ1Y3QgY29kYV9jcmVhdGVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmlj
ZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCBleGNsOwogICAg
aW50IG1vZGU7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2Rh
X3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbW92ZV9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBj
b2RhX3JlbW92ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0
IGNvZGFfbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNv
dXJjZUZpZDsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCB0bmFtZTsKfTsKCnN0cnVjdCBj
b2RhX2xpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgpzdHJ1Y3Qg
Y29kYV9yZW5hbWVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBz
b3VyY2VGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCBk
ZXN0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbmFtZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbWtkaXJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f
aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAg
IGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfbWtkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291
dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9
OwoKCgpzdHJ1Y3QgY29kYV9ybWRpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg
ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JtZGlyX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9zeW1saW5rX2lu
IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBz
cmNuYW1lOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCB0bmFtZTsKfTsKCnN0
cnVjdCBjb2RhX3N5bWxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoK
CnN0cnVjdCBjb2RhX3JlYWRsaW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX291dCB7CiAgICBzdHJ1Y3Qg
Y29kYV9vdXRfaGRyIG9oOwogICAgaW50IGNvdW50OwogICAgY2FkZHJfdCBkYXRhOwp9OwoKCgpz
dHJ1Y3QgY29kYV9mc3luY19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl
RmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9mc3luY19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfdmdldF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV92Z2V0X291dCB7CiAgICBz
dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBlOwp9
OwojIDYxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2Rh
X3B1cmdldXNlcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBj
b2RhX2NyZWQgY3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFf
emFwZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2Rh
RmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsK
CgoKc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQg
T2xkRmlkOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFf
aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNv
ZGFfb3Blbl9ieV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBm
ZDsKCgogICAgc3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19p
biB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3Rh
dDsKfTsKIyA3MDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgp1bmlvbiBp
bnB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Bl
bl9pbiBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9zdG9yZV9pbiBjb2RhX3N0b3JlOwogICAg
c3RydWN0IGNvZGFfcmVsZWFzZV9pbiBjb2RhX3JlbGVhc2U7CiAgICBzdHJ1Y3QgY29kYV9jbG9z
ZV9pbiBjb2RhX2Nsb3NlOwogICAgc3RydWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAg
IHN0cnVjdCBjb2RhX2dldGF0dHJfaW4gY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0
YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nl
c3M7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29k
YV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9y
ZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9saW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2Rh
X3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsKICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtk
aXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRpcl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFf
c3ltbGlua19pbiBjb2RhX3N5bWxpbms7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2Rh
X3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVj
dCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBj
b2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVu
X2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlv
biBvdXRwdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29k
YV9yb290X291dCBjb2RhX3Jvb3Q7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47
CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9vdXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dl
dGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9s
b29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0
IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQg
Y29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0
cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQgY29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96
YXBmaWxlX291dCBjb2RhX3phcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFf
emFwZGlyOwogICAgc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBz
dHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgY29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3Jl
cGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNv
ZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVu
X2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5p
b24gY29kYV9kb3duY2FsbHMgewoKCiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdl
dXNlcjsKICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29k
YV96YXBkaXJfb3V0IHphcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9k
ZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2Rh
X3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAg
ICBjYWRkcl90IGluLCBvdXQ7CiAgICAgICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBv
dXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9jdGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRo
OwogICAgICAgIGludCBmb2xsb3c7CiAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3
OTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9tb3Vu
dF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICBpbnQgZmQ7Cn07CiMgMTUgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKCgoKCnN0cnVjdCBjb2Rh
X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNlRmlkIGNfZmlkOwogICAgICAgIHVfc2hv
cnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIGlu
dCBjX21hcGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNoZWRfY3JlZDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgpzdHJ1Y3QgY29kYV9maWxl
X2luZm8gewogICAgICAgIGludCBjZmlfbWFnaWM7CiAgICAgICAgaW50IGNmaV9tYXBjb3VudDsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqY2ZpX2NvbnRhaW5lcjsKICAgICAgICBzdHJ1Y3QgY29kYV9j
cmVkIGNmaV9jcmVkOwp9OwojIDQ3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFf
ZnNfaS5oIgppbnQgY29kYV9jbm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0IFZpY2VG
aWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfaWdldChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgVmljZUZpZCAqZmlkLCBzdHJ1Y3QgY29kYV92YXR0
ciAqYXR0cik7CmludCBjb2RhX2Nub2RlX21ha2VjdGwoc3RydWN0IGlub2RlICoqaW5vZGUsIHN0
cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfZmlkX3RvX2lub2RlKFZp
Y2VGaWQgKmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgY29kYV9yZXBsYWNlX2Zp
ZChzdHJ1Y3QgaW5vZGUgKiwgVmljZUZpZCAqLCBWaWNlRmlkICopOwojIDMwOCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9yb21mc19mc19pLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRh
b2Zmc2V0Owp9OwojIDMwOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIiAxCiMgMTYgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKZXh0ZXJuIGF0b21pY190IHNo
bWVtX25ycGFnZXM7CgpzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyB7CiAgICAgICAgc3BpbmxvY2tf
dCBsb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgbmV4dF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAg
dm9pZCAqKmlfaW5kaXJlY3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwcGVkOwogICAgICAg
IGludCBsb2NrZWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHN0cnVj
dCBpbm9kZSAqaW5vZGU7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJl
ZV9pbm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzEwICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
bWJfZnNfaS5oIgpzdHJ1Y3Qgc21iX2lub2RlX2luZm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQg
aW50IG9wZW47CiAgICAgICAgX191MTYgZmlsZWlkOwogICAgICAgIF9fdTE2IGF0dHI7CgogICAg
ICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBs
b25nIG9sZG10aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2ln
bmVkIG9wZW5lcnM7Cn07CiMgMzExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2Rl
X2luZm8gewogICAgICAgIGludCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp
dmF0ZTsKICAgICAgICBzdHJ1Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1
Y3QgaGZzX2ZvcmsgKmZvcms7CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBm
aWxlX3R5cGU7CiAgICAgICAgY2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBo
ZnNfaGRyX2xheW91dCAqZGVmYXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5
b3V0ICpsYXlvdXQ7CgoKICAgICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lk
ICgqZF9kcm9wX29wKShzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMTIgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsKICAg
ICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1bnNp
Z25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAgaW50
IHN0YW1wZWQ6MTsKfTsKIyAzMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRl
ZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50
X2JsazsKICAgICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9f
dTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2
IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54
NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5o
IiAyCgoKCgpzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRb
MTZdOwogICAgICAgIHFueDRfb2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmly
c3RfeHRudDsKICAgICAgICBfX3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAg
ICAgICBfX3MzMiBpX210aW1lOwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIg
aV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9t
b2RlX3QgaV9tb2RlOwogICAgICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdp
ZF90IGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96
ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1
czsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMxNCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9yZWlzZXJmc19mc19pLmgiIDEKCgoKCgoKdHlwZWRlZiBlbnVtIHsKCgoKICAgIGlfaXRl
bV9rZXlfdmVyc2lvbl9tYXNrID0gMHgwMDAxLAoKCiAgICBpX3N0YXRfZGF0YV92ZXJzaW9uX21h
c2sgPSAweDAwMDIsCgogICAgaV9wYWNrX29uX2Nsb3NlX21hc2sgPSAweDAwMDQsCgogICAgaV9u
b3BhY2tfbWFzayA9IDB4MDAwOCwKCgoKICAgIGlfbGlua19zYXZlZF91bmxpbmtfbWFzayA9IDB4
MDAxMCwKICAgIGlfbGlua19zYXZlZF90cnVuY2F0ZV9tYXNrID0gMHgwMDIwCn0gcmVpc2VyZnNf
aW5vZGVfZmxhZ3M7CgoKc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gewogICAgX191MzIgaV9r
ZXkgWzRdOwoKCgogICAgX191MzIgaV9mbGFnczsKCiAgICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i
eXRlOwoKCiAgICBfX3UzMiBpX2F0dHJzOwoKICAgIGludCBpX3ByZWFsbG9jX2Jsb2NrOwogICAg
aW50IGlfcHJlYWxsb2NfY291bnQ7CiAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfcHJlYWxsb2NfbGlz
dDsKCgoKCgogICAgdW5zaWduZWQgbG9uZyBpX3RyYW5zX2lkIDsKICAgIHVuc2lnbmVkIGxvbmcg
aV90cmFuc19pbmRleCA7Cn07CiMgMzE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiIDEKIyAx
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lu
b2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgaV9zYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAz
MTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBfX3UzMiBsb2dp
Y2FsQmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVmZXJlbmNlTnVtOwp9IF9fYXR0
cmlidXRlX18gKChwYWNrZWQpKSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7CiAg
ICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxvbmcg
aV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9sb2Nh
dGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRyOwog
ICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwogICAg
ICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2Nf
Z29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVk
IGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAg
ICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVk
IDogMjY7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8g
ewogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
dm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsK
ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5l
ZDsKICAgICAgICBpbnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDMxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2kuaCIg
MQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh
c2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50
ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0cnVj
dCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVjdCB0
YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBzdHJ1
Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdXNiZGV2X2ZzX2kuaCIgMQpz
dHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9idXM7CgpzdHJ1Y3QgdXNiZGV2X2lub2RlX2lu
Zm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGxpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2Rl
dmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3RydWN0IHVzYl9idXMgKmJ1czsKICAgICAgICB9
IHA7Cn07CiMgMzIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lub2RlX2lu
Zm8gewojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lv
bjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAg
ICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBq
ZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2Fj
aGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2Vy
Y29tcHI7Cn07CiMgMzIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCgoKCgoKCnN0
cnVjdCBjcmFtZnNfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbWFnaWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgZmxhZ3M7Cn07CiMgMzIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAzNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0
IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBp
YV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAg
ICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVf
dCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50
IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzcyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz
bS9lcnJuby5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAy
CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgojIDEwOSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFibGsgewogICAgICAg
IF9fdTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAg
ICAgIF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAg
ICAgICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsK
ICAgICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMg
MTM0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXN0YXRz
IHsKICAgICAgICBfX3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRyb3BzOwogICAgICAgIF9f
dTMyIHJlYWRzOwogICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBfX3UzMiBjYWNoZV9oaXRz
OwogICAgICAgIF9fdTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAgX191MzIgZnJlZV9kcXVv
dHM7CiAgICAgICAgX191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQgbnJfZHF1b3RzLCBucl9m
cmVlX2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsKIyAxNTkgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxdW90IHsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGRxX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9pbnVzZTsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ZyZWU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3QgZHFfd2FpdF9sb2NrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRxX3dhaXRfZnJlZTsK
ICAgICAgICBpbnQgZHFfY291bnQ7CgoKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRxX3Ni
OwogICAgICAgIHVuc2lnbmVkIGludCBkcV9pZDsKICAgICAgICBrZGV2X3QgZHFfZGV2OwogICAg
ICAgIHNob3J0IGRxX3R5cGU7CiAgICAgICAgc2hvcnQgZHFfZmxhZ3M7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBkcV9yZWZlcmVuY2VkOwoKICAgICAgICBzdHJ1Y3QgZHFibGsgZHFfZHFiOwp9Owoj
IDM3MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgoKc3RydWN0IHBh
Z2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nf
c3BhY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAq
KTsKICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7
CiAgICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKCgoKCiAgICAgICAgaW50
ICgqcHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQs
IHVuc2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0
cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0
cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcpOwogICAgICAgIGludCAoKmZsdXNocGFnZSkgKHN0
cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnJlbGVhc2VwYWdlKSAo
c3RydWN0IHBhZ2UgKiwgaW50KTsKCiAgICAgICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1
Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsK
ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAg
ICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3Qg
aW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAg
ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2Nr
X3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9k
ZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBj
b3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAg
ICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAg
ICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVy
YXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFf
YnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBp
X2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAg
ICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3Qg
aV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAg
ICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVf
dCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2Vt
OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7
CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVh
ZF90IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0
cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3Bh
Y2UgaV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAq
aV9waXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1
Y3QgY2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlf
bWFzazsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAg
dW5zaWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50
OwogICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5l
cmF0aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9k
ZV9pbmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4
dDJfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2luZm8gZXh0M19pOwogICAg
ICAgICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBt
c2Rvc19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lu
b2RlX2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8g
aXNvZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAg
ICAgc3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
dWZzX2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2lu
Zm8gZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19p
OwogICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAg
c3RydWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZz
X2lub2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZv
IGFkZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwog
ICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAg
IHN0cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bf
aW5vZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5m
byBwcm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAg
ICAgICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAg
ICAgc3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQg
KmdlbmVyaWNfaXA7CiAgICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAg
ICBpbnQgcGlkOwogICAgICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9
OwoKc3RydWN0IGZpbGUgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAg
IHN0cnVjdCBkZW50cnkgKmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNt
bnQ7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNf
dCBmX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBm
X21vZGU7CiAgICAgICAgbG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFk
YSwgZl9yYW1heCwgZl9yYWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93
bl9zdHJ1Y3QgZl9vd25lcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAg
ICAgIGludCBmX2Vycm9yOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAg
ICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKCgogICAgICAgIHN0cnVjdCBraW9idWYgKmZfaW9idWY7
CiAgICAgICAgbG9uZyBmX2lvYnVmX2xvY2s7Cn07CmV4dGVybiBzcGlubG9ja190IGZpbGVzX2xv
Y2s7CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3Ry
dWN0IGRlbnRyeSAqLCBpbnQpOwojIDU3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m
cy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmls
ZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICpmbF9uZXh0OwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwog
ICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZsX3BpZDsK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmbF93YWl0OwogICAgICAgIHN0cnVjdCBmaWxlICpm
bF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBmbF90eXBlOwogICAgICAgIGxvZmZfdCBmbF9zdGFydDsKICAgICAgICBsb2ZmX3QgZmxf
ZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAg
ICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAo
KmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9jayAqKTsKCiAgICAgICAgc3RydWN0IGZhc3luY19z
dHJ1Y3QgKiBmbF9mYXN5bmM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVj
dCBuZnNfbG9ja19pbmZvIG5mc19mbDsKICAgICAgICB9IGZsX3U7Cn07CiMgNjExICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVf
bG9ja19saXN0OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDEK
CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9mY250bC5oIiAxCiMgNjkgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hv
cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7
CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxv
Y2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAg
ICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBs
X3BpZDsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIKIyA2
MTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIGludCBmY250
bF9nZXRsayh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKZXh0ZXJuIGludCBmY250bF9z
ZXRsayh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwoKZXh0ZXJu
IGludCBmY250bF9nZXRsazY0KHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrNjQgKik7CmV4dGVy
biBpbnQgZmNudGxfc2V0bGs2NCh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZs
b2NrNjQgKik7CgoKZXh0ZXJuIHZvaWQgbG9ja3NfaW5pdF9sb2NrKHN0cnVjdCBmaWxlX2xvY2sg
Kik7CmV4dGVybiB2b2lkIGxvY2tzX2NvcHlfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVj
dCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9wb3NpeChzdHJ1Y3QgZmls
ZSAqLCBmbF9vd25lcl90KTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX2Zsb2NrKHN0cnVjdCBm
aWxlICopOwpleHRlcm4gc3RydWN0IGZpbGVfbG9jayAqcG9zaXhfdGVzdF9sb2NrKHN0cnVjdCBm
aWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja19maWxlKHN0
cnVjdCBmaWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZv
aWQgcG9zaXhfYmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sg
Kik7CmV4dGVybiB2b2lkIHBvc2l4X3VuYmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpl
eHRlcm4gaW50IHBvc2l4X2xvY2tzX2RlYWRsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0
IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwgbG9m
Zl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93cml0
ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKCnN0
cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZhX2Zk
OwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVjdCBm
aWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3RydWN0
IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBraWxs
X2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZvaWQg
X19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1Y3Qg
bmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90YV9t
b3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3RydWN0
IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3NlbTsK
ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4cGly
ZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNxdWFz
aFsyXTsKfTsKIyA2ODEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0
IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNf
bmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsK
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVu
OwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2ODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5o
IiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIgpzdHJ1
Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19zaXplOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9n
cm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
aXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
Z3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwogICAgICAg
IHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVkX2lub2Rl
X2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tfYml0bWFwczsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRfb3B0Owog
ICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19wYWQ7
CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19kZXNjX3Bl
cl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAgaW50IHNfZmly
c3RfaW5vOwp9OwojIDY4MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiIDEKIyAyMCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
bGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQgbG9uZyk7Cn07Cgpl
eHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBp
bnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwoKCmV4dGVybiBpbnQgZGVs
X3RpbWVyX3N5bmMoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiB2b2lkIHN5bmNf
dGltZXJzKHZvaWQpOwojIDQxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi
CmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4
cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBp
bmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAg
ICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9Cgpz
dGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAq
IHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7
Cn0KIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiIDIKIyAz
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCnN0cnVjdCBleHQz
X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5v
ZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVy
X2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNf
Y291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0
IGV4dDNfc3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBz
X2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFw
czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBi
dWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19i
bG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxv
Y2tfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAg
dWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAg
ICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2Nr
X2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87
CiAgICAgICAgdTMyIHNfbmV4dF9nZW5lcmF0aW9uOwoKCiAgICAgICAgc3RydWN0IGlub2RlICog
c19qb3VybmFsX2lub2RlOwogICAgICAgIHN0cnVjdCBqb3VybmFsX3MgKiBzX2pvdXJuYWw7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
Y29tbWl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmpvdXJuYWxfYmRl
djsKCgoKCn07CiMgNjg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hwZnNfZnNfc2IuaCIgMQoKCgpzdHJ1Y3Qg
aHBmc19zYl9pbmZvIHsKICAgICAgICBpbm9fdCBzYl9yb290OwogICAgICAgIHVuc2lnbmVkIHNi
X2ZzX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBz
Yl9kaXJiYW5kX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBzYl9kbWFwOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZTsKICAgICAgICB1
bnNpZ25lZCBzYl9uX2ZyZWVfZG5vZGVzOwogICAgICAgIHVpZF90IHNiX3VpZDsKICAgICAgICBn
aWRfdCBzYl9naWQ7CiAgICAgICAgdW1vZGVfdCBzYl9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNi
X2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VhcyA6IDI7CiAgICAgICAgdW5zaWduZWQg
c2JfZXJyIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9jaGsgOiAyOwogICAgICAgIHVuc2lnbmVk
IHNiX2xvd2VyY2FzZSA6IDE7CiAgICAgICAgdW5zaWduZWQgc2Jfd2FzX2Vycm9yIDogMTsKICAg
ICAgICB1bnNpZ25lZCBzYl9jaGtkc2sgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2Zub2Rl
IDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9pbm9kZSA6IDI7CgoKICAgICAgICB3YWl0X3F1
ZXVlX2hlYWRfdCBzYl9pZ2V0X3E7CiAgICAgICAgdW5zaWduZWQgY2hhciAqc2JfY3BfdGFibGU7
CgoKICAgICAgICB1bnNpZ25lZCAqc2JfYm1wX2RpcjsKICAgICAgICB1bnNpZ25lZCBzYl9jX2Jp
dG1hcDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzYl9jcmVhdGlvbl9kZTsKCiAgICAgICAg
dW5zaWduZWQgc2JfY3JlYXRpb25fZGVfbG9jayA6IDE7CgogICAgICAgIGludCBzYl90aW1lc2hp
ZnQ7Cn07CiMgNjg1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCBu
dGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50ZnNfZ2lkX3Qg
Z2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19tYXA7CiAgICAg
ICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRpcGxpZXI7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3Qg
bWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0YXJ0OwogICAg
ICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBk
YXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25lX3BvczsKCgog
ICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZzX3UzMiBhdF9z
dGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1dGVfbGlzdDsK
ICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1l
X3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRvcjsKICAgICAg
ICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfaW5m
b3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZzX3UzMiBhdF9p
bmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247CiAgICAgICAg
bnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7CgogICAgICAg
IGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAgICAgIGludCBj
bHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAg
ICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplX2Jp
dHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IGlu
ZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9iaXRzOwogICAg
ICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1m
dF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAgICAgICB1bnNp
Z25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5m
byAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRtaXJyOwogICAg
ICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJf
YmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9OwojIDY4NiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50IGN2Zl92ZXJz
aW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBmbGFnczsKICBp
bnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQgKCptb3VudF9j
dmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQgKCp1bm1vdW50
X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2
Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0cnVjdCBidWZm
ZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7
CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lzX3VwdG9kYXRl
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lk
ICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5icmVxLAog
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMyXSk7CiAgaW50
ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGludCBuZXdfdmFs
dWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBz
dGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1Y3QgaW5vZGUg
Kmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICggc3RydWN0IGZp
bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfd3Jp
dGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBp
bnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsK
ICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKik7CiAg
aW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBp
bnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICog
ZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg
bG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlub2RlKiwgaW50
IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3ZmX2Zvcm1h
dCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3ZmX2Zvcm1h
dCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291bnRfYnlfdmVyc2lvbihp
bnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKmZv
cmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1hdHNbXTsKZXh0ZXJuIGlu
dCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvbXNkb3NfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyB7CiAgICAg
ICAgdWlkX3QgZnNfdWlkOwogICAgICAgIGdpZF90IGZzX2dpZDsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBmc191bWFzazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2RlcGFnZTsKICAgICAgICBj
aGFyICppb2NoYXJzZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2hvcnRuYW1lOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnZlcnNp
b247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAgICAgICAgICBzaG93ZXhlYzox
LAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAgICAgICAgICAgICAgICBkb3Rz
T0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAgICAgICAgICAgICB1dGY4OjEs
CiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAgICAgICAgICAgICAgIHBvc2l4
ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAgICAgICAgICAgICAgYXRhcmk6
MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAgICAgICAgIG5vY2FzZToxOwp9
OwoKc3RydWN0IG1zZG9zX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJf
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX2JpdHM7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBmYXRzLGZhdF9iaXRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZhdF9zdGFydDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZhdF9sZW5ndGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
aXJfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGlyX2VudHJpZXM7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBkYXRhX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2x1c3RlcnM7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyByb290X2NsdXN0ZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm
c2luZm9fc2VjdG9yOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZmF0X2xvY2s7CiAgICAgICAg
aW50IHByZXZfZnJlZTsKICAgICAgICBpbnQgZnJlZV9jbHVzdGVyczsKICAgICAgICBzdHJ1Y3Qg
ZmF0X21vdW50X29wdGlvbnMgb3B0aW9uczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNf
ZGlzazsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CiAgICAgICAgc3RydWN0IGN2
Zl9mb3JtYXQqIGN2Zl9mb3JtYXQ7CiAgICAgICAgdm9pZCAqZGlyX29wczsKICAgICAgICB2b2lk
ICpwcml2YXRlX2RhdGE7CiAgICAgICAgaW50IGRpcl9wZXJfYmxvY2s7CiAgICAgICAgaW50IGRp
cl9wZXJfYmxvY2tfYml0czsKfTsKIyA2ODcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEK
CgoKCgoKc3RydWN0IGlzb2ZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5v
ZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFy
IHNfaGlnaF9zaWVycmE7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAg
aW50IHNfcm9ja19vZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAg
dW5zaWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRm
ODsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFy
IHNfdW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBzX25vZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2NvbXByZXNzOwoKICAg
ICAgICBtb2RlX3Qgc19tb2RlOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNf
dWlkOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnNfbmxzX2lvY2hhcnNldDsKfTsKIyA2ODgg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L25mc19mc19zYi5oIgpzdHJ1Y3QgbmZzX3NlcnZlciB7CiAgICAgICAgc3RydWN0IHJw
Y19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBjX29wcyAqIHJwY19vcHM7CiAg
ICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCByc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3c2l6ZTsKICAgICAgICB1bnNp
Z25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBkdHNpemU7CiAgICAgICAgdW5z
aWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21pbjsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWluOwogICAg
ICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZWxlbjsK
ICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0IG5mc19yZXFsaXN0ICogcndf
cmVxdWVzdHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnVfcmVhZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBscnVfZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbHJ1X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscnVfYnVz
eTsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIg
c19zZXJ2ZXI7Cn07CiMgNjg5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIgMQojIDEzICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIKc3RydWN0IHN5c3Zfc2Jf
aW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFyIHNfYnl0ZXNleDsKICAgICAg
ICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qgc19saW5rX21heDsKICAgICAgICB1
bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lu
b2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2Nr
X2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9jazsKICAgICAgICB1bnNp
Z25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5k
X3Blcl9ibG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmlj
X3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoK
CiAgICAgICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUx
NiAqc19zYl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAg
dTE2ICpzX3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19iY2FjaGVfY291bnQ7
CiAgICAgICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIgKnNfZnJlZV9ibG9ja3M7CiAgICAg
ICAgdTMyICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3NiX3N0YXRlOwoKCiAgICAgICAgdTMy
IHNfZmlyc3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1
MzIgc19uaW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9uZXM7CiAgICAgICAgdTMyIHNfbnpv
bmVzOwogICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjkwICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNf
ZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2Iu
aCIKc3RydWN0IGFmZnNfYm1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIg
Ym1fZnJlZTsKfTsKCnN0cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlv
bl9zaXplOwogICAgICAgIGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3Np
emU7CiAgICAgICAgdTMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAg
Z2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICpzX3Jvb3RfYmg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAg
ICAgICBzdHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2Nv
dW50OwogICAgICAgIHUzMiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAg
ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVm
aXg7CiAgICAgICAgaW50IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsK
fTsKIyA2OTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3Vmc19mcy5oIiAxCiMgMjM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vm
c19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAg
ICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewogICAgICAgIF9fdTMy
IGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTgg
ZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAg
X191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMy
IGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJmcmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJl
ZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2Nr
IHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAg
IF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIg
ZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29m
ZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAg
ICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMy
IGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsK
ICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAg
IF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAgICAgICAgX191MzIg
ZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0
OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwog
ICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAg
ICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9f
dTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZz
X25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoK
ICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAg
ICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2Owog
ICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3Uz
MiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3Uz
MiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nn
c2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAg
ICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoKICAgICAgICBfX3Uz
MiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAg
ICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsK
ICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19z
OCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAgICAgIF9fdTMyIGZz
X2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhj
bHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2
XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw
YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy
ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK
ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVb
Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191
MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7
CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwog
ICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDE1
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGlu
ZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2lj
OwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAgIF9f
dTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2dfbmRi
bGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9y
OwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAg
ICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9m
ZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAg
ICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
Y2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJi
bGtzOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAg
ICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZd
OwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVj
dCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlfbmxp
bms7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYg
dWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191MzIg
dWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVp
X3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVp
X2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1
Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlfYWRk
cjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAgIH0g
dWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwog
ICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAg
ICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1
aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAg
ICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlf
Z2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy
IHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07
CiMgNTE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9p
ZCB1ZnNfZnJlZV9mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQp
OwpleHRlcm4gdm9pZCB1ZnNfZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwg
dW5zaWduZWQpOwpleHRlcm4gdW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9k
ZSAqLCB1MzIgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVy
biBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3Bl
cmF0aW9ucyB1ZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rp
cl9lbnRyeSAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50
cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHVm
c19hZGRfbGluayAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9f
dCB1ZnNfaW5vZGVfYnlfbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0
ZXJuIGludCB1ZnNfbWFrZV9lbXB0eShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlICopOwpl
eHRlcm4gc3RydWN0IHVmc19kaXJfZW50cnkgKiB1ZnNfZmluZF9lbnRyeSAoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiopOwpleHRlcm4gaW50IHVmc19kZWxldGVfZW50cnkg
KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKik7CmV4dGVybiBpbnQgdWZzX2VtcHR5X2RpciAoc3RydWN0IGlub2RlICopOwpleHRlcm4g
c3RydWN0IHVmc19kaXJfZW50cnkgKiB1ZnNfZG90ZG90IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGJ1ZmZlcl9oZWFkICoqKTsKZXh0ZXJuIHZvaWQgdWZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlu
b2RlICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9v
cGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRp
b25zOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoK
ZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4g
c3RydWN0IGlub2RlICogdWZzX25ld19pbm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCk7
CgoKZXh0ZXJuIGludCB1ZnNfZnJhZ19tYXAgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4g
dm9pZCB1ZnNfcmVhZF9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfcHV0
X2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc193cml0ZV9pbm9kZSAoc3Ry
dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgdWZzX3N5bmNfaW5vZGUgKHN0cnVjdCBpbm9k
ZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX2RlbGV0ZV9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2dldGZyYWcgKHN0cnVjdCBpbm9kZSAqLCB1bnNp
Z25lZCwgaW50LCBpbnQgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfYnJlYWQg
KHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50LCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgdWZzX2Rpcl9vcGVyYXRpb25zOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSB1ZnNfZnNfdHlwZTsKZXh0ZXJuIHZvaWQgdWZzX3dhcm5pbmcgKHN0cnVjdCBz
dXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0
ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19lcnJvciAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0
cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3Bhbmlj
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikg
X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNf
d3JpdGVfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCgpleHRlcm4gc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgdWZzX2Zhc3Rfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKCmV4dGVybiB2
b2lkIHVmc190cnVuY2F0ZSAoc3RydWN0IGlub2RlICopOwojIDE4ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IHVmc19idWZmZXJfaGVhZCB7
CiAgICAgICAgdW5zaWduZWQgZnJhZ21lbnQ7CiAgICAgICAgdW5zaWduZWQgY291bnQ7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhbKDgxOTIgLyAxMDI0KV07Cn07CgpzdHJ1Y3QgdWZz
X2NnX3ByaXZhdGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB1Y2c7
CiAgICAgICAgX191MzIgY19jZ3g7CiAgICAgICAgX191MTYgY19uY3lsOwogICAgICAgIF9fdTE2
IGNfbmlibGs7CiAgICAgICAgX191MzIgY19uZGJsazsKICAgICAgICBfX3UzMiBjX3JvdG9yOwog
ICAgICAgIF9fdTMyIGNfZnJvdG9yOwogICAgICAgIF9fdTMyIGNfaXJvdG9yOwogICAgICAgIF9f
dTMyIGNfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjX2JvZmY7CiAgICAgICAgX191MzIgY19pdXNl
ZG9mZjsKICAgICAgICBfX3UzMiBjX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY19uZXh0ZnJlZW9m
ZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVy
b2ZmOwogICAgICAgIF9fdTMyIGNfbmNsdXN0ZXJibGtzOwp9OwoKc3RydWN0IHVmc19zYl9wcml2
YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgc191Ymg7CiAgICAgICAg
X191MzIgc19zYmxrbm87CiAgICAgICAgX191MzIgc19jYmxrbm87CiAgICAgICAgX191MzIgc19p
Ymxrbm87CiAgICAgICAgX191MzIgc19kYmxrbm87CiAgICAgICAgX191MzIgc19jZ29mZnNldDsK
ICAgICAgICBfX3UzMiBzX2NnbWFzazsKICAgICAgICBfX3UzMiBzX3NpemU7CiAgICAgICAgX191
MzIgc19kc2l6ZTsKICAgICAgICBfX3UzMiBzX25jZzsKICAgICAgICBfX3UzMiBzX2JzaXplOwog
ICAgICAgIF9fdTMyIHNfZnNpemU7CiAgICAgICAgX191MzIgc19mcGI7CiAgICAgICAgX191MzIg
c19taW5mcmVlOwogICAgICAgIF9fdTMyIHNfYm1hc2s7CiAgICAgICAgX191MzIgc19mbWFzazsK
ICAgICAgICBfX3UzMiBzX2JzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzaGlmdDsKICAgICAgICBf
X3UzMiBzX2ZwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNidG9kYjsKICAgICAgICBfX3UzMiBz
X3Nic2l6ZTsKICAgICAgICBfX3UzMiBzX2NzbWFzazsKICAgICAgICBfX3UzMiBzX2Nzc2hpZnQ7
CiAgICAgICAgX191MzIgc19uaW5kaXI7CiAgICAgICAgX191MzIgc19pbm9wYjsKICAgICAgICBf
X3UzMiBzX25zcGY7CiAgICAgICAgX191MzIgc19ucHNlY3Q7CiAgICAgICAgX191MzIgc19pbnRl
cmxlYXZlOwogICAgICAgIF9fdTMyIHNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIHNfY3NhZGRy
OwogICAgICAgIF9fdTMyIHNfY3NzaXplOwogICAgICAgIF9fdTMyIHNfY2dzaXplOwogICAgICAg
IF9fdTMyIHNfbnRyYWs7CiAgICAgICAgX191MzIgc19uc2VjdDsKICAgICAgICBfX3UzMiBzX3Nw
YzsKICAgICAgICBfX3UzMiBzX2lwZzsKICAgICAgICBfX3UzMiBzX2ZwZzsKICAgICAgICBfX3Uz
MiBzX2NwYzsKICAgICAgICBfX3MzMiBzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgX19zNjQgc19x
Ym1hc2s7CiAgICAgICAgX19zNjQgc19xZm1hc2s7CiAgICAgICAgX19zMzIgc19wb3N0Ymxmb3Jt
YXQ7CiAgICAgICAgX19zMzIgc19ucnBvczsKICAgICAgICBfX3MzMiBzX3Bvc3RibG9mZjsKICAg
ICAgICBfX3MzMiBzX3JvdGJsb2ZmOwoKICAgICAgICBfX3UzMiBzX2ZwYm1hc2s7CiAgICAgICAg
X191MzIgc19hcGI7CiAgICAgICAgX191MzIgc18yYXBiOwogICAgICAgIF9fdTMyIHNfM2FwYjsK
ICAgICAgICBfX3UzMiBzX2FwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGJzaGlmdDsKICAgICAg
ICBfX3UzMiBzXzJhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzNhcGJzaGlmdDsKICAgICAgICBf
X3UzMiBzX25zcGZzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGI7CiAgICAgICAgX191MzIgc19p
bm9wZjsKICAgICAgICBfX3UzMiBzX3NiYmFzZTsKICAgICAgICBfX3UzMiBzX2JwZjsKICAgICAg
ICBfX3UzMiBzX2JwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfYnBmbWFzazsKCiAgICAgICAgX191
MzIgc19tYXhzeW1saW5rbGVuOwp9OwoKCgoKCnN0cnVjdCB1ZnNfc2JfaW5mbyB7CiAgICAgICAg
c3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8gKiBzX3VzcGk7CiAgICAgICAgc3RydWN0IHVmc19j
c3VtICogc19jc3BbMzFdOwogICAgICAgIHVuc2lnbmVkIHNfYnl0ZXNleDsKICAgICAgICB1bnNp
Z25lZCBzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX3VjZzsKICAgICAg
ICBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHNfdWNwaVs4XTsKICAgICAgICB1bnNpZ25l
ZCBzX2Nnbm9bOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19jZ19sb2FkZWQ7CiAgICAgICAg
dW5zaWduZWQgc19tb3VudF9vcHQ7Cn07CgoKCgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2Zp
cnN0IHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAg
ICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191
MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19j
Z29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsK
ICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9f
dTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6
ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAg
ICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwogICAgICAgIF9fdTMy
IGZzX2JtYXNrOwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlm
dDsKICAgICAgICBfX3UzMiBmc19mc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwog
ICAgICAgIF9fdTMyIGZzX21heGJwZzsKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAg
ICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191
MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNf
bmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CiAg
ICAgICAgX191MzIgZnNfb3B0aW07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAg
ICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAg
ICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBm
c190cmFja3NrZXc7CiAgICAgICAgX191MzIgZnNfaWRbMl07CiAgICAgICAgX191MzIgZnNfY3Nh
ZGRyOwogICAgICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CiAg
ICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191
MzIgZnNfc3BjOwogICAgICAgIF9fdTMyIGZzX25jeWw7CiAgICAgICAgX191MzIgZnNfY3BnOwog
ICAgICAgIF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7CiAgICAgICAgc3RydWN0
IHVmc19jc3VtIGZzX2NzdG90YWw7CiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczgg
ZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwog
ICAgICAgIF9fczggZnNfZnNtbnRbNTEyIC0gMjEyXTsKCn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Js
b2NrX3NlY29uZCB7CiAgICAgICAgX19zOCBmc19mc21udFsyMTJdOwogICAgICAgIF9fdTMyIGZz
X2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhj
bHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzgy
XTsKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfdGhpcmQgewogICAgICAgIF9fdTE2IGZzX29w
b3N0YmxbNDZdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg
ZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz
X3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
dTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNr
WzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxl
c2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9
IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19u
cnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90Ymxv
ZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsK
IyA2OTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIKc3RydWN0IGVmc19zdXBlciB7CiAgICAgICAgaW50
MzJfdCBmc19zaXplOwogICAgICAgIGludDMyX3QgZnNfZmlyc3RjZzsKICAgICAgICBpbnQzMl90
IGZzX2NnZnNpemU7CiAgICAgICAgc2hvcnQgZnNfY2dpc2l6ZTsKICAgICAgICBzaG9ydCBmc19z
ZWN0b3JzOwogICAgICAgIHNob3J0IGZzX2hlYWRzOwogICAgICAgIHNob3J0IGZzX25jZzsKICAg
ICAgICBzaG9ydCBmc19kaXJ0eTsKICAgICAgICBpbnQzMl90IGZzX3RpbWU7CiAgICAgICAgaW50
MzJfdCBmc19tYWdpYzsKICAgICAgICBjaGFyIGZzX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZnNf
ZnBhY2tbNl07CiAgICAgICAgaW50MzJfdCBmc19ibXNpemU7CiAgICAgICAgaW50MzJfdCBmc190
ZnJlZTsKICAgICAgICBpbnQzMl90IGZzX3Rpbm9kZTsKICAgICAgICBpbnQzMl90IGZzX2JtYmxv
Y2s7CiAgICAgICAgaW50MzJfdCBmc19yZXBsc2I7CiAgICAgICAgaW50MzJfdCBmc19sYXN0aWFs
bG9jOwogICAgICAgIGNoYXIgZnNfc3BhcmVbMjBdOwogICAgICAgIGludDMyX3QgZnNfY2hlY2tz
dW07Cn07CgoKc3RydWN0IGVmc19zYl9pbmZvIHsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwog
ICAgICAgIGludDMyX3QgZnNfc3RhcnQ7CiAgICAgICAgaW50MzJfdCBmaXJzdF9ibG9jazsKICAg
ICAgICBpbnQzMl90IHRvdGFsX2Jsb2NrczsKICAgICAgICBpbnQzMl90IGdyb3VwX3NpemU7CiAg
ICAgICAgaW50MzJfdCBkYXRhX2ZyZWU7CiAgICAgICAgaW50MzJfdCBpbm9kZV9mcmVlOwogICAg
ICAgIHNob3J0IGlub2RlX2Jsb2NrczsKICAgICAgICBzaG9ydCB0b3RhbF9ncm91cHM7Cn07CiMg
NjkzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfc2Jf
aW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heHNpemU7Cn07CiMgNjk0ICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3NtYl9mc19zYi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
c21iX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWIuaCIgMQoj
IDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYi5oIgplbnVtIHNtYl9wcm90b2Nv
bCB7CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUs
CiAgICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5N
QU4xLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9O
VDEKfTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAg
ICAgICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNt
Yl9kc2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2Nr
czsKICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVj
dCBzbWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVt
IHNtYl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9o
YW5kbGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJf
dWlkOwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAg
X191MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2Rl
OwogICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAg
X191MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1
Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAg
ICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9zbWIuaCIKc3RydWN0IHNtYl9mYXR0ciB7CgogICAgICAgIF9fdTE2IGF0dHI7CgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZl9pbm87CiAgICAgICAgdW1vZGVfdCBmX21vZGU7CiAgICAgICAg
bmxpbmtfdCBmX25saW5rOwogICAgICAgIHVpZF90IGZfdWlkOwogICAgICAgIGdpZF90IGZfZ2lk
OwogICAgICAgIGtkZXZfdCBmX3JkZXY7CiAgICAgICAgb2ZmX3QgZl9zaXplOwogICAgICAgIHRp
bWVfdCBmX2F0aW1lOwogICAgICAgIHRpbWVfdCBmX210aW1lOwogICAgICAgIHRpbWVfdCBmX2N0
aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZl9ibG9ja3M7Cn07CgplbnVtIHNtYl9jb25uX3N0YXRlIHsKICAgICAgICBDT05OX1ZBTElE
LAogICAgICAgIENPTk5fSU5WQUxJRCwKCiAgICAgICAgQ09OTl9SRVRSSUVELAogICAgICAgIENP
Tk5fUkVUUllJTkcKfTsKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNf
c2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9pbmZvIHsKICAgICAgICBlbnVtIHNtYl9jb25u
X3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBmaWxlICogc29ja19maWxlOwoKICAgICAgICBz
dHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICptbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
dGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCBnZW5lcmF0aW9uOwogICAgICAgIHBp
ZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBzbWJfY29ubl9vcHQgb3B0OwoKICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAg
ICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICogcGFja2V0Owog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyOwoK
CiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnJl
bW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAgICAg
ICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50ICgqY29udmVydCkoY2hhciAqLCBpbnQsIGNv
bnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubHNfdGFibGUg
Kiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX2xvY2tf
c2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAgICAgZG93bigmKHNlcnZl
ci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qg
c21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIHVwKCYoc2VydmVyLT5zZW0pKTsKfQojIDY5
NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhm
c19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2
b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBp
bnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3Qs
IGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2lj
OwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAg
ICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNf
dmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25h
bWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAg
ICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3Ry
dWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAg
X191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qg
c191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjk2
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFkZnNf
ZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZzX2Rp
c2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAgICAg
ICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfb3du
ZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIgc19p
ZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21hcF9z
aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQgc19t
YXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAgdW5z
aWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9Owoj
IDY5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9xbng0X2ZzLmgiIDEKIyA0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0
X2ZzLmgiCnN0cnVjdCBxbng0X2lub2RlX2VudHJ5IHsKICAgICAgICBjaGFyIGRpX2ZuYW1lWzE2
XTsKICAgICAgICBxbng0X29mZl90IGRpX3NpemU7CiAgICAgICAgcW54NF94dG50X3QgZGlfZmly
c3RfeHRudDsKICAgICAgICBfX3UzMiBkaV94YmxrOwogICAgICAgIF9fczMyIGRpX2Z0aW1lOwog
ICAgICAgIF9fczMyIGRpX210aW1lOwogICAgICAgIF9fczMyIGRpX2F0aW1lOwogICAgICAgIF9f
czMyIGRpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBkaV9udW1feHRudHM7CiAgICAgICAg
cW54NF9tb2RlX3QgZGlfbW9kZTsKICAgICAgICBxbng0X211aWRfdCBkaV91aWQ7CiAgICAgICAg
cW54NF9tZ2lkX3QgZGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBkaV9ubGluazsKICAgICAg
ICBfX3U4IGRpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90IGRpX3R5cGU7CiAgICAgICAg
X191OCBkaV9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF9saW5rX2luZm8gewogICAgICAgIGNoYXIg
ZGxfZm5hbWVbNDhdOwogICAgICAgIF9fdTMyIGRsX2lub2RlX2JsazsKICAgICAgICBfX3U4IGRs
X2lub2RlX25keDsKICAgICAgICBfX3U4IGRsX3NwYXJlWzEwXTsKICAgICAgICBfX3U4IGRsX3N0
YXR1czsKfTsKCnN0cnVjdCBxbng0X3hibGsgewogICAgICAgIF9fdTMyIHhibGtfbmV4dF94Ymxr
OwogICAgICAgIF9fdTMyIHhibGtfcHJldl94YmxrOwogICAgICAgIF9fdTggeGJsa19udW1feHRu
dHM7CiAgICAgICAgX191OCB4YmxrX3NwYXJlWzNdOwogICAgICAgIF9fczMyIHhibGtfbnVtX2Js
b2NrczsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX3h0bnRzWzYwXTsKICAgICAgICBjaGFyIHhi
bGtfc2lnbmF0dXJlWzhdOwogICAgICAgIHFueDRfeHRudF90IHhibGtfZmlyc3RfeHRudDsKfTsK
CnN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRy
eSBSb290RGlyOwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IElub2RlOwogICAgICAg
IHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEJvb3Q7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVf
ZW50cnkgQWx0Qm9vdDsKfTsKIyAxMDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54
NF9mcy5oIgpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2RlICpk
aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291
bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25lZCBs
b25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsKCmV4
dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBpbnQs
IGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlub2Rl
ICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIs
IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlX29w
ZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5vZGVf
b3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVf
b3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0bWFw
KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJuIGlu
dCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnks
IGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRl
cm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50
cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50
cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUs
IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5vZGUo
c3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0IGlu
b2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBjcmVh
dGUpOwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMgoK
CgoKCnN0cnVjdCBxbng0X3NiX2luZm8gewogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc2Jf
YnVmOwogICAgICAgIHN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25l
ZCBpbnQgVmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSAqQml0TWFwOwp9
OwojIDY5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAxCgoKCgoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAzOCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKc3RydWN0IHRxX3N0cnVjdCB7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3luYzsKICAgICAgICB2
b2lkICgqcm91dGluZSkodm9pZCAqKTsKICAgICAgICB2b2lkICpkYXRhOwp9OwojIDY0ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hl
YWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlh
dGUsIHRxX2Rpc2s7CiMgOTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
CmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9sb2NrOwoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHF1
ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqYmhfcG9pbnRlciwgdGFza19xdWV1ZSAqYmhfbGlz
dCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCgw
LCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn
czsKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv
cGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ0cXVldWVf
bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmYmhfcG9p
bnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZ0
cXVldWVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn
IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBy
ZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQg
X19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBy
dW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9lbXB0
eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIKIyAyNiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVp
c2VyZnNfc3VwZXJfYmxvY2sKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVl
X2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwog
IF9fdTMyIHNfam91cm5hbF9kZXY7CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
cmVpc2VyZnNfZnNfc2IuaCIKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNf
am91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191
MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdl
IDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7
CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNf
c3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsK
ICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNp
b247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwog
IF9fdTMyIHNfZmxhZ3M7CiAgdW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNo
YXIgc19sYWJlbFsxNl07CiAgY2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18g
KChfX3BhY2tlZF9fKSk7Cgp0eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQg
PSAweDAwMDAwMDAxLAp9IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNf
c3VwZXJfYmxvY2tfdjEKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVlX2Js
b2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwogIF9f
dTMyIHNfam91cm5hbF9kZXY7CiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBz
X2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9f
dTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2Fn
ZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXpl
OwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBz
X3N0YXRlOwogIGNoYXIgc19tYWdpY1sxNl07CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3Ux
NiBzX2JtYXBfbnI7CiAgX191MzIgc19yZXNlcnZlZDsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNr
ZWRfXykpOwojIDIxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19z
Yi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5zaWduZWQgbG9uZyBibG9ja25yIDsKICBsb25nIHN0
YXRlIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0ICpqbGlzdCA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfY25vZGUgKm5leHQgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
b2RlICpwcmV2IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqaHByZXYgOwogIHN0
cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpobmV4dCA7Cn07CgpzdHJ1Y3QgcmVpc2VyZnNf
Yml0bWFwX25vZGUgewogIGludCBpZCA7CiAgY2hhciAqZGF0YSA7CiAgc3RydWN0IGxpc3RfaGVh
ZCBsaXN0IDsKfSA7CgpzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgewogIHN0cnVjdCByZWlz
ZXJmc19qb3VybmFsX2xpc3QgKmpvdXJuYWxfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2JpdG1h
cF9ub2RlICoqYml0bWFwcyA7Cn0gOwoKCgoKc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh
bmRsZSB7CgogIGNoYXIgKnRfY2FsbGVyIDsKICBpbnQgdF9ibG9ja3NfbG9nZ2VkIDsKICBpbnQg
dF9ibG9ja3NfYWxsb2NhdGVkIDsKICB1bnNpZ25lZCBsb25nIHRfdHJhbnNfaWQgOwogIHN0cnVj
dCBzdXBlcl9ibG9jayAqdF9zdXBlciA7Cgp9IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xl
biA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVuIDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsK
ICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAg
YXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2RvbmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19p
ZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAg
KmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBidWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0
cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRsaXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2Nv
bW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVj
dCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVj
dCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2NrcyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf
Y25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3Qg
OwoKICBsb25nIGpfc3RhdGUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdW5zaWdu
ZWQgbG9uZyBqX21vdW50X2lkIDsKICB1bnNpZ25lZCBsb25nIGpfc3RhcnQgOwogIHVuc2lnbmVk
IGxvbmcgal9sZW4gOwogIHVuc2lnbmVkIGxvbmcgal9sZW5fYWxsb2MgOwogIGF0b21pY190IGpf
d2NvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfYmNvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfZmly
c3RfdW5mbHVzaGVkX29mZnNldCA7CiAgdW5zaWduZWQgbG9uZyBqX2xhc3RfZmx1c2hfdHJhbnNf
aWQgOwogIHN0cnVjdCBidWZmZXJfaGVhZCAqal9oZWFkZXJfYmggOwoKCgoKICBzdHJ1Y3QgcmVp
c2VyZnNfcGFnZV9saXN0ICpqX2ZsdXNoX3BhZ2VzIDsKICB0aW1lX3Qgal90cmFuc19zdGFydF90
aW1lIDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX3dhaXQgOwogIGF0b21pY190IGpfd2xvY2sgOwog
IHdhaXRfcXVldWVfaGVhZF90IGpfam9pbl93YWl0IDsKICBhdG9taWNfdCBqX2psb2NrIDsKICBp
bnQgal9qb3VybmFsX2xpc3RfaW5kZXggOwogIGludCBqX2xpc3RfYml0bWFwX2luZGV4IDsKICBp
bnQgal9tdXN0X3dhaXQgOwogIGludCBqX25leHRfZnVsbF9mbHVzaCA7CiAgaW50IGpfbmV4dF9h
c3luY19mbHVzaCA7CgogIGludCBqX2Nub2RlX3VzZWQgOwogIGludCBqX2Nub2RlX2ZyZWUgOwoK
ICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9jbm9kZV9mcmVlX2xpc3QgOwogIHN0
cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2Nub2RlX2ZyZWVfb3JpZyA7CgogIGludCBq
X2ZyZWVfYml0bWFwX25vZGVzIDsKICBpbnQgal91c2VkX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0
IGxpc3RfaGVhZCBqX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0IGlub2RlIGpfZHVtbXlfaW5vZGUg
OwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCBqX2xpc3RfYml0bWFwWzVdIDsKICBzdHJ1
Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0IGpfam91cm5hbF9saXN0WzY0XSA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfaGFzaF90YWJsZVs4MTkyXSA7CiAgc3RydWN0IHJlaXNl
cmZzX2pvdXJuYWxfY25vZGUgKmpfbGlzdF9oYXNoX3RhYmxlWzgxOTJdIDsKCiAgc3RydWN0IGxp
c3RfaGVhZCBqX3ByZWFsbG9jX2xpc3Q7Cn07CgoKCgp0eXBlZGVmIF9fdTMyICgqaGFzaGZfdCkg
KGNvbnN0IHNpZ25lZCBjaGFyICosIGludCk7CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgMzk3
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnR5cGVkZWYg
c3RydWN0IHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhCnt9IHJlaXNlcmZzX3Byb2NfaW5mb19kYXRh
X3Q7CgoKCnN0cnVjdCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHNfc2JoOwoKCiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJu
YWwgKnNfam91cm5hbCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2
b2lkICgqZW5kX2lvX2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFz
aGZfdCBzX2hhc2hfZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoK
CgogICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlv
bl9jb3VudGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNf
a21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAg
ICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVk
ZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAg
IGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19k
aXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19p
c191bmxpbmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9f
ZGF0YTsKICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKfTsKIyA1MTAgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKdm9pZCByZWlzZXJmc19m
aWxlX2J1ZmZlciAoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNl
cmZzX2lzX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcykgOwppbnQgam91cm5hbF9tYXJrX2Rp
cnR5KHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Js
b2NrICosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKaW50IGZsdXNoX29sZF9jb21taXRzKHN0
cnVjdCBzdXBlcl9ibG9jayAqcywgaW50KSA7CmludCBzaG93X3JlaXNlcmZzX2xvY2tzKHZvaWQp
IDsKaW50IHJlaXNlcmZzX3Jlc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9u
ZykgOwojIDY5OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIgMQojIDEyICIvdXNyL3NyYy9s
aW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5oIgpzdHJ1Y3QgYmZzX3NiX2luZm8gewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2lfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJl
ZWI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlaTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNpX2xmX2lvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sZl9zYmxrOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc2lfbGZfZWJsazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xhc3RpOwog
ICAgICAgIGNoYXIgKiBzaV9pbWFwOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNpX3Ni
aDsKICAgICAgICBzdHJ1Y3QgYmZzX3N1cGVyX2Jsb2NrICogc2lfYmZzX3NiOwp9OwojIDcwMCAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L3VkZl9mc19zYi5oIgojcHJhZ21hIHBhY2soMSkKIyAzMCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEKewogICAg
ICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfc3Bh
cl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7CiAgICAgICAgX191MzIgc19u
dW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNldDsKfTsKCnN0cnVjdCB1ZGZf
Yml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAgICAgICBfX3UzMiBzX2V4dFBv
c2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9wYXJ0X21hcAp7CiAgICAgICAg
dW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1hcCAqc19iaXRt
YXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAgICAgfSBzX3Vz
cGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZf
Yml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqc190YWJsZTsK
ICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFydGl0aW9uX3Jvb3Q7CiAgICAg
ICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX3R5cGU7
CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAgIHVuaW9uCiAgICAgICAgewog
ICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEgc19zcGFyaW5nOwogICAgICAg
ICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0dWFsOwogICAgICAgIH0gc190
eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRpb25fZnVuYykoc3RydWN0IHN1
cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAgICAgIF9fdTE2IHNfdm9sdW1l
c2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdzOwp9OwoKI3ByYWdtYSBwYWNr
KCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0IHVkZl9wYXJ0X21hcCAqc19w
YXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoKCiAgICAgICAgX191MTYgc19w
YXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoKCiAgICAgICAgX19zMzIgc19z
ZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAgICAgIF9fdTMyIHNfbGFzdGJs
b2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZpZGJoOwoKCiAgICAgICAgbW9k
ZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CgoK
ICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAgX191MTYgc19zZXJpYWxudW07
CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9fdTMyIHNfZmxhZ3M7CgoKICAg
ICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUg
KnNfdmF0Owp9OwojIDcwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvbmNwX21vdW50LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25j
cC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBu
Y3BfcmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
dGFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
fTsKCgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBj
b25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9u
X2NvZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0
YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAg
X191MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9f
dTMyIHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxv
Y2tzOwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWls
YWJsZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAg
IGNoYXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X2luZm9fc3RydWN0IHsKICAgICAgICBfX3UzMiBz
cGFjZUFsbG9jIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGF0dHJpYnV0
ZXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgZmxhZ3MgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgZGF0YVN0cmVhbVNpemUgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgdG90YWxTdHJlYW1TaXplIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG51bWJlck9mU3RyZWFtcyBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgY3JlYXRpb25EYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBtb2RpZnlUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1v
ZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJ
RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBsYXN0QWNjZXNzRGF0ZSBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRlZFJpZ2h0c01hc2sgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFE
YXRhU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleUNvdW50
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5U2l6ZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBOU0NyZWF0b3IgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191OCBuYW1lTGVuIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTggZW50cnlOYW1lWzI1Nl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMg
MTU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5
X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5
VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7
CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVy
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIKc3RydWN0
IG5jcF9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBp
bnQgbmNwX2ZkOwogICAgICAgIF9fa2VybmVsX3VpZF90IG1vdW50ZWRfdWlkOwogICAgICAgIF9f
a2VybmVsX3BpZF90IHdkb2dfcGlkOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s
WygxNikgKyAxXTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln
bmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAgICAg
IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg
X19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21v
ZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV92NCB7CiAgICAgICAgaW50IHZlcnNpb247
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbW91
bnRlZF91aWQ7CgogICAgICAgIGxvbmcgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBu
Y3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBp
bnQgcmV0cnlfY291bnQ7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB1aWQ7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnaWQ7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZV9tb2RlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGlyX21vZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV9rZXJu
ZWwgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGlu
dF9mbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBtb3VudGVkX3VpZDsKICAgICAgICBf
X2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAg
ICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2Nv
dW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg
IF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAg
ICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGRp
cl9tb2RlOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o
IiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2Rh
dGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAg
ICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1
OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwog
ICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAg
ICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt
YXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1
YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rf
c2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3Rp
dmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZd
OwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAg
ICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCog
b2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBh
dXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAg
ICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5s
c190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAg
ICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5
MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKc3RhdGljIGlubGlu
ZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAg
IHJldHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlu
bGluZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikK
ewogICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDcwMiAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAg
ICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3Qg
ZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAg
ICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90
IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDMgIi91c3Ivc3JjL2xp
bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2pmZnMyX2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j
b21wbGV0aW9uLmgiCnN0cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9u
ZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkIGluaXRfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHgt
PmRvbmUgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9CgpleHRl
cm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmli
dXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp
b24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl
L2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1
Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5z
aWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAg
ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhp
dDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191
MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGly
dHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19z
aXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoK
CgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdf
YmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2Vy
YXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRi
bG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRp
cnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9s
aXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRp
b25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBz
dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3Bpbmxv
Y2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDcwNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9mcy5oIiAyCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7CmV4dGVybiBz
cGlubG9ja190IHNiX2xvY2s7CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBzX2xpc3Q7CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgc19ibG9ja3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nrc2l6ZV9iaXRz
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBzX21heGJ5dGVzOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CiAg
ICAgICAgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3RydWN0IGRxdW90
X29wZXJhdGlvbnMgKmRxX29wOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqc19yb290Owog
ICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgc191bW91bnQ7CiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBzX2xvY2s7CiAgICAgICAgaW50IHNfY291bnQ7CiAgICAgICAgYXRvbWljX3Qgc19hY3Rp
dmU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19kaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHNfbG9ja2VkX2lub2RlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZmlsZXM7
CgogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnNfYmRldjsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIHNfaW5zdGFuY2VzOwogICAgICAgIHN0cnVjdCBxdW90YV9tb3VudF9vcHRpb25zIHNf
ZHF1b3Q7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zYl9p
bmZvIG1pbml4X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfc2JfaW5mbyBleHQyX3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDNfc2JfaW5mbyBleHQzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IG50ZnNfc2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IG1zZG9zX3NiX2lu
Zm8gbXNkb3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvZnNfc2JfaW5mbyBpc29mc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5mbyBuZnNfc2I7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YWZmc19zYl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX3NiX2luZm8g
dWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19zYl9pbmZvIGVmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVtX3NiOwogICAgICAgICAgICAgICAg
c3RydWN0IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc21i
X3NiX2luZm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX3NiX2luZm8gaGZz
X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2JfaW5mbyBhZGZzX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3NiOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHJlaXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YmZzX3NiX2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zYl9pbmZvIHVk
Zl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2VydmVyIG5jcGZzX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRldmZzX3NiOwogICAgICAgICAgICAg
ICAgc3RydWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
Y3JhbWZzX3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19z
YnA7CiAgICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFt
ZV9zZW07CiMgNzc4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiAgICAgICAg
c3RydWN0IHNlbWFwaG9yZSBzX25mc2RfZnJlZV9wYXRoX3NlbTsKfTsKCgoKCmV4dGVybiBpbnQg
dmZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4g
aW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRl
cm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQsIGRl
dl90KTsKZXh0ZXJuIGludCB2ZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy
eSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JtZGlyKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc191bmxpbmsoc3Ry
dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1
Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy
eSAqKTsKIyA4MTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBp
bnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3Qs
IHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50
ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpy
ZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlv
Y3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBs
b25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAg
IGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVy
Owp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxl
ICpvd25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3Qs
IGludCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNp
emVfdCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikg
KHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQg
KCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAg
ICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVk
IGludCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICos
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlu
b2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUg
Kik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwg
aW50IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICos
IGludCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZp
bGVfbG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25z
dCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXpl
X3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu
ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBm
aWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAg
ICB1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9
OwoKc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVj
dCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAo
Kmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgq
bGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwog
ICAgICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAg
ICAgICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25z
dCBjaGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl
bnRyeSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3Qg
ZGVudHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl
bnRyeSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAq
LCBjaGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3Qg
aW5vZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu
dCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBp
bnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1
Y3Qgc2VxX2ZpbGU7CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQg
KCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVh
ZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5
X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0
cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5v
ZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAg
ICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZv
aWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgq
d3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQg
KCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMp
IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpy
ZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAg
IHZvaWQgKCpjbGVhcl9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1v
dW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwojIDkyMCAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmZoX3RvX2RlbnRy
eSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgKmZoLCBpbnQgbGVuLCBpbnQgZmh0eXBl
LCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQgKCpkZW50cnlfdG9fZmgpKHN0cnVjdCBkZW50cnkg
KiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGludCBuZWVkX3BhcmVudCk7CiAgICAgICAgaW50ICgq
c2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IHZmc21vdW50ICopOwp9Owoj
IDkzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBfX21h
cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICosIGludCk7CnN0YXRpYyBpbmxpbmUgdm9pZCBt
YXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
ZGVfZGlydHkoaW5vZGUsICgxIHwgMiB8IDQpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf
aW5vZGVfZGlydHlfc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lu
b2RlX2RpcnR5KGlub2RlLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfaW5vZGVfZGly
dHlfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0
eShpbm9kZSwgNCk7Cn0KCnN0cnVjdCBkcXVvdF9vcGVyYXRpb25zIHsKICAgICAgICB2b2lkICgq
aW5pdGlhbGl6ZSkgKHN0cnVjdCBpbm9kZSAqLCBzaG9ydCk7CiAgICAgICAgdm9pZCAoKmRyb3Ap
IChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgaW50ICgqYWxsb2NfYmxvY2spIChzdHJ1Y3QgaW5v
ZGUgKiwgdW5zaWduZWQgbG9uZywgY2hhcik7CiAgICAgICAgaW50ICgqYWxsb2NfaW5vZGUpIChj
b25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmZyZWVf
YmxvY2spIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmZy
ZWVfaW5vZGUpIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAg
aW50ICgqdHJhbnNmZXIpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwp9OwoKc3Ry
dWN0IGZpbGVfc3lzdGVtX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg
aW50IGZzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqKCpyZWFkX3N1cGVyKSAo
c3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KTsKICAgICAgICBzdHJ1Y3QgbW9kdWxl
ICpvd25lcjsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqIG5leHQ7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBmc19zdXBlcnM7Cn07CiMgOTkzICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmls
ZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0
IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW91bnQo
c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3Qg
dmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICos
IHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVybiB2b2lkIHVtb3VudF90cmVlKHN0cnVjdCB2
ZnNtb3VudCAqKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAq
LCBzdHJ1Y3Qgc3RhdGZzICopOwojIDEwMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv
ZnMuaCIKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZmlsZSAqLCBsb2ZmX3QsIHNpemVfdCk7CiMgMTAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVj
dCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYg
KDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAw
KSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKGlub2RlKTsK
ICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X2FyZWEo
aW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsKICAgICAgICBpZiAo
aW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChp
bm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAg
ICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRlLCBpbm9kZSwgZmls
cCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50
IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlf
ZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlf
bW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJl
dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5v
ZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8g
c2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5v
ZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAg
ICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1
cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUs
IHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmIChpbm9k
ZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRf
bGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBfX2F0dHJpYnV0ZV9f
KChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGludCwgaW50KTsKIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpl
eHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4
dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRl
cm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNt
b3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3du
ZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2
b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwg
QkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2
KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv
bnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBj
aGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4g
aW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkX2Zvcmdl
dChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3RydWN0IGJsb2NrX2Rl
dmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2X3QpOwpleHRlcm4g
dm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW4o
c3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGJsa2Rldl9jbG9zZShz
dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIGRlZl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMg
ZGVmX2Jsa19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3Bz
OwpleHRlcm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25l
ZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2
aWNlICosIG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1
Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZp
Y2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdp
c3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJh
dGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25z
dCBjaGFyICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29u
c3QgY2hhciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUo
a2Rldl90KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1
bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAq
KTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVj
dCBmaWxlX29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVy
YXRpb25zIHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3
cl9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3Bz
OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlf
cmVtb3VudF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVl
X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICog
YnVmKTsKZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwga2Rl
dl90LCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZl
cl9hc3luY19pbyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCBnZXRfYmgoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5j
KCYoYmgpLT5iX2NvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v
cnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxp
bmUgdm9pZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50
IG9uKQp7CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0
ZSwgJmJoLT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQo
QkhfVXB0b2RhdGUsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFy
a19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9i
dWZmZXIoYmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0
IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0Rp
cnR5LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFu
KGJoKTsKfQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9k
aXJ0eShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CmV4dGVybiB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9f
YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9k
ZV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9kYXRhX3F1
ZXVlKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKikgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSBpbnQgYXRvbWljX3NldF9idWZmZXJfZGlydHko
c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0
KEJIX0RpcnR5LCAmYmgtPmJfc3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZm
ZXJfYXN5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChv
bikKICAgICAgICAgICAgICAgIHNldF9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgY2xlYXJfYml0KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUp
Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9yKHN0cnVjdCBidWZm
ZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgpOwoKCgogICAgICAg
IGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9k
aXJ0eV9pbm9kZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7
CiAgICAgICAgbWFya19idWZmZXJfZGlydHkoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5v
ZGVfcXVldWUoYmgsIGlub2RlKTsKfQoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9mbHVzaHRpbWUo
c3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KHZvaWQpOwpl
eHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBpbnQgaW52YWxpZGF0
ZV9pbm9kZXMoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRhdGVfZGV2
aWNlKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlcyhzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBh
ZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGludmFsaWRhdGVfYmRldihzdHJ1Y3QgYmxvY2tf
ZGV2aWNlICosIGludCk7CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBk
ZXYsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5
bmNfdW5sb2NrZWRfaW5vZGVzKHZvaWQpOwpleHRlcm4gdm9pZCB3cml0ZV9pbm9kZV9ub3coc3Ry
dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19idWZmZXJzKGtkZXZfdCwgaW50KTsK
ZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90
KTsKZXh0ZXJuIGludCBmc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBp
bnQgZnN5bmNfbm9fc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNfc2Ioc3Ry
dWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGZzeW5jX2J1ZmZlcnNfbGlzdChzdHJ1Y3Qg
bGlzdF9oZWFkICopOwpzdGF0aWMgaW5saW5lIGludCBmc3luY19pbm9kZV9idWZmZXJzKHN0cnVj
dCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICByZXR1cm4gZnN5bmNfYnVmZmVyc19saXN0KCZpbm9k
ZS0+aV9kaXJ0eV9idWZmZXJzKTsKfQpzdGF0aWMgaW5saW5lIGludCBmc3luY19pbm9kZV9kYXRh
X2J1ZmZlcnMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIHJldHVybiBmc3luY19idWZm
ZXJzX2xpc3QoJmlub2RlLT5pX2RpcnR5X2RhdGFfYnVmZmVycyk7Cn0KZXh0ZXJuIGludCBpbm9k
ZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXN5
bmMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXQo
c3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIHN5bmNfc3VwZXJzKGtkZXZfdCk7
CmV4dGVybiBpbnQgYm1hcChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBub3RpZnlf
Y2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IHBlcm1p
c3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgdmZzX3Blcm1pc3Npb24oc3Ry
dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiBpbnQgZGVueV93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKik7CnN0YXRp
YyBpbmxpbmUgdm9pZCBwdXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAg
ICAgICAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3JpdGVjb3VudCk7Cn0Kc3RhdGljIGlubGluZSB2
b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKewogICAgICAgIGlmIChm
aWxlKQogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUt
Pmlfd3JpdGVjb3VudCk7Cn0KZXh0ZXJuIGludCBkb19waXBlKGludCAqKTsKCmV4dGVybiBpbnQg
b3Blbl9uYW1laShjb25zdCBjaGFyICosIGludCwgaW50LCBzdHJ1Y3QgbmFtZWlkYXRhICopOwoK
ZXh0ZXJuIGludCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFy
ICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBvcGVuX2V4ZWMoY29uc3Qg
Y2hhciAqKTsKCgpleHRlcm4gaW50IGlzX3N1YmRpcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBk
ZW50cnkgKik7CmV4dGVybiBpbm9fdCBmaW5kX2lub2RlX251bWJlcihzdHJ1Y3QgZGVudHJ5ICos
IHN0cnVjdCBxc3RyICopOwojIDEyNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu
aCIKc3RhdGljIGlubGluZSB2b2lkICpFUlJfUFRSKGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1
cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZv
aWQgKnB0cikKewogICAgICAgIHJldHVybiAobG9uZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxv
bmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9u
ZylwdHIgPiAodW5zaWduZWQgbG9uZyktMTAwMEw7Cn0KIyAxMzA0ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwg
TEFTVF9ET1RET1QsIExBU1RfQklORH07CiMgMTMxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAg
ICAgc2l6ZV90IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9
IHJlYWRfZGVzY3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVz
Y3JpcHRvcl90ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
OwoKCmV4dGVybiBsb2ZmX3QgZGVmYXVsdF9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZf
dCBvZmZzZXQsIGludCBvcmlnaW4pOwoKZXh0ZXJuIGludCBfX3VzZXJfd2Fsayhjb25zdCBjaGFy
ICosIHVuc2lnbmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKZXh0ZXJuIGludCBwYXRoX2luaXQoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0
IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0
aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgbGlua19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1
Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg
cGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd24o
c3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIGludCBmb2xsb3df
dXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIHN0cnVjdCBk
ZW50cnkgKiBsb29rdXBfb25lX2xlbihjb25zdCBjaGFyICosIHN0cnVjdCBkZW50cnkgKiwgaW50
KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu
IHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq
IGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1cGVy
X2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYgaW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3QgaW5v
ZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXQ0
KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZvaWQg
Kik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAq
c2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8sICgo
dm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lkKTsK
CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICogbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IpCnsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZ2V0X2VtcHR5X2lub2RlKCk7
CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9zYiA9IHNiOwog
ICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2ID0gc2ItPnNfZGV2OwogICAgICAgICAgICAgICAg
aW5vZGUtPmlfYmxrYml0cyA9IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlub2RlICpp
bm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4
dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVj
dCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9pZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1
Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBi
dWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgbGxfcndf
YmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4gdm9pZCBz
dWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgaXNfcmVhZF9v
bmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsK
c3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAg
ICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYpOwp9CmV4dGVybiB2b2lk
IF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBiZm9y
Z2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAg
ICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShrZGV2X3Qs
IGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg
aW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxvY2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBp
bnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7
CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfYnJlYWQoc3RydWN0IHN1cGVy
X2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGJyZWFkKHNiLT5zX2Rldiwg
YmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0Kc3RhdGljIGlubGluZSBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAg
ICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYsIGJsb2NrLCBzYi0+c19ibG9ja3NpemUpOwp9CnN0
YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfZ2V0X2hhc2hfdGFibGUoc3RydWN0
IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldF9oYXNoX3Rh
YmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0KZXh0ZXJuIHZvaWQgd2Fr
ZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2b2lkIHB1dF91bnVzZWRfYnVmZmVyX2hlYWQoc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X3Vu
dXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMpOwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0
cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9j
a190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVy
biBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShzdHJ1Y3QgcGFnZSAqIHBhZ2UsIGludCBnZnBfbWFz
ayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv
bmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25z
dCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBw
YWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1
Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShz
dHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGlu
dCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdl
dF9ibG9ja190KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
ICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29udF9leHBhbmQoc3RydWN0IGlub2RlICppbm9kZSwg
bG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2Ug
KnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5j
X3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19ibWFwKHN0cnVjdCBhZGRy
ZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2VuZXJpY19jb21taXRfd3Jp
dGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKaW50
IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90LCBnZXRf
YmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2RpcmVjdF9JTyhpbnQsIHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7
CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB3
cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCmV4dGVybiBpbnQgZ2VuZXJpY19maWxl
X21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gaW50
IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdlICpw
YWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIHNz
aXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxv
ZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dlbmVyaWNf
ZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCBy
ZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwg
bG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xs
c2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVy
biBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3Qs
IGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBp
bm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z
IGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkg
KiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5r
KHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3JlYWRs
aW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93
X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3RydWN0
IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRlcm4g
aW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJu
IGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRl
cm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpl
eHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQp
OwpleHRlcm4gaW50IGRjYWNoZV9kaXJfZnN5bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRy
eSAqLCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQg
KiwgZmlsbGRpcl90KTsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGNhY2hlX2Rpcl9v
cHM7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNo
YXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsK
ZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlu
bGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3RydWN0IHN1cGVyX2Js
b2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwogICAgICAgIGlmIChzYikgewogICAgICAgICAgICAg
ICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyKGtkZXZfdCwg
aW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3YWIzMihrZGV2
X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJv
b3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CgoKCgoK
ZXh0ZXJuIHNzaXplX3QgY2hhcl9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBs
b2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAq
LCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCByZWFkX2FoZWFkW107CgpleHRlcm4gc3Np
emVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2Zm
X3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CgpleHRlcm4gaW50IGZpbGVfZnN5bmMoc3RydWN0IGZp
bGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IGdlbmVyaWNfYnVmZmVyX2Zk
YXRhc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2lkeCwgdW5z
aWduZWQgbG9uZyBlbmRfaWR4KTsKZXh0ZXJuIGludCBnZW5lcmljX29zeW5jX2lub2RlKHN0cnVj
dCBpbm9kZSAqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBpbm9kZV9jaGFuZ2Vfb2soc3RydWN0IGlu
b2RlICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBpbm9kZV9zZXRhdHRyKHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiMgMTUxOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmxvY2tfcGFyZW50KHN0cnVj
dCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciA9IGRnZXQoZGVu
dHJ5LT5kX3BhcmVudCk7CgogICAgICAgIGRvd24oJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAg
ICAgIHJldHVybiBkaXI7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqZ2V0X3BhcmVu
dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGdldChkZW50cnktPmRf
cGFyZW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVubG9ja19kaXIoc3RydWN0IGRlbnRyeSAq
ZGlyKQp7CiAgICAgICAgdXAoJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXQoZGly
KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfZG93bihzdHJ1Y3Qgc2VtYXBob3Jl
ICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAg
ICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgZG93bihzMSk7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwp9
CiMgMTU2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5l
IHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7
CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcp
IHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAo
dW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
MyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0g
czI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykg
czMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0
bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRt
cDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAg
ICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7
CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAg
ICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAgICAg
ICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2VtYXBo
b3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAg
aWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChzMSAh
PSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRpYyBp
bmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAq
ZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRfaW5v
ZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0IGRl
bnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+ZF9p
bm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAgICAg
ICAgZHB1dChkMik7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmls
aXR5LmgiIDIKIyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5Lmgi
CnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiAgICAgICAgX191MzIg
dmVyc2lvbjsKICAgICAgICBpbnQgcGlkOwp9ICpjYXBfdXNlcl9oZWFkZXJfdDsKCnR5cGVkZWYg
c3RydWN0IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewogICAgICAgIF9fdTMyIGVmZmVjdGl2ZTsK
ICAgICAgICBfX3UzMiBwZXJtaXR0ZWQ7CiAgICAgICAgX191MzIgaW5oZXJpdGFibGU7Cn0gKmNh
cF91c2VyX2RhdGFfdDsKIyA1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmls
aXR5LmgiCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCmV4dGVybiBrZXJuZWxfY2FwX3QgY2FwX2JzZXQ7
CiMgMzE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RhdGlj
IGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJpbmUoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9j
YXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpIHwgKGIp
OwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW50
ZXJzZWN0KGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBf
dCBkZXN0OwogICAgIChkZXN0KSA9IChhKSAmIChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3Rh
dGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2Ryb3Aoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9j
YXBfdCBkcm9wKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYg
fihkcm9wKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3Qg
Y2FwX2ludmVydChrZXJuZWxfY2FwX3QgYykKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAg
IChkZXN0KSA9IH4oYyk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KIyA2ICIvdXNyL3NyYy9saW51eC9p
bmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp
bnV4L2JpbmZtdHMuaCIKc3RydWN0IGxpbnV4X2JpbnBybXsKICAgICAgICBjaGFyIGJ1ZlsxMjhd
OwogICAgICAgIHN0cnVjdCBwYWdlICpwYWdlWzMyXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7
CiAgICAgICAgaW50IHNoX2Jhbmc7CiAgICAgICAgc3RydWN0IGZpbGUgKiBmaWxlOwogICAgICAg
IGludCBlX3VpZCwgZV9naWQ7CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9pbmhlcml0YWJsZSwg
Y2FwX3Blcm1pdHRlZCwgY2FwX2VmZmVjdGl2ZTsKICAgICAgICBpbnQgYXJnYywgZW52YzsKICAg
ICAgICBjaGFyICogZmlsZW5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2FkZXIsIGV4ZWM7
Cn07CgoKCgoKc3RydWN0IGxpbnV4X2JpbmZtdCB7CiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZt
dCAqIG5leHQ7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlOwogICAgICAgIGludCAoKmxv
YWRfYmluYXJ5KShzdHJ1Y3QgbGludXhfYmlucHJtICosIHN0cnVjdCBwdF9yZWdzICogcmVncyk7
CiAgICAgICAgaW50ICgqbG9hZF9zaGxpYikoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgq
Y29yZV9kdW1wKShsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBmaWxl
ICogZmlsZSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5fY29yZWR1bXA7Cn07CgpleHRlcm4g
aW50IHJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVu
cmVnaXN0ZXJfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CgpleHRlcm4gaW50IHByZXBh
cmVfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CmV4dGVybiB2b2lkIHJlbW92ZV9hcmdf
emVybyhzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlfaGFu
ZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICosc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQg
Zmx1c2hfb2xkX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IHNl
dHVwX2FyZ19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29w
eV9zdHJpbmdzKGludCBhcmdjLGNoYXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJt
KTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3Nfa2VybmVsKGludCBhcmdjLGNoYXIgKiogYXJndixz
dHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIHZvaWQgY29tcHV0ZV9jcmVkcyhzdHJ1
Y3QgbGludXhfYmlucHJtICpiaW5wcm0pOwpleHRlcm4gaW50IGRvX2NvcmVkdW1wKGxvbmcgc2ln
bnIsIHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiB2b2lkIHNldF9iaW5mbXQoc3RydWN0
IGxpbnV4X2JpbmZtdCAqbmV3KTsKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lcy5oIiAx
CgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3QgdG1zX3V0aW1lOwogICAgICAgIGNsb2Nr
X3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2N1dGltZTsKICAgICAgICBjbG9ja190
IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDE1MiAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
dGltZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzcgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL3RpbWV4LmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGN5Y2xlc190
OwoKZXh0ZXJuIGN5Y2xlc190IGNhY2hlZmx1c2hfdGltZTsKCnN0YXRpYyBpbmxpbmUgY3ljbGVz
X3QgZ2V0X2N5Y2xlcyAodm9pZCkKewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXQ7
CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEiIChyZXQpKTsKICAg
ICAgICByZXR1cm4gcmV0OwoKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1X2toejsKIyAxNTMg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE2MSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2ln
bmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAg
ICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBz
dGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAg
ICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAg
ICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7
CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0
Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxv
bmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwog
ICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDoz
MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4L2lu
Y2x1ZGUvbGludXgvdGltZXguaCIKZXh0ZXJuIGxvbmcgdGljazsKZXh0ZXJuIGludCB0aWNrYWRq
OwoKCgoKZXh0ZXJuIGludCB0aW1lX3N0YXRlOwpleHRlcm4gaW50IHRpbWVfc3RhdHVzOwpleHRl
cm4gbG9uZyB0aW1lX29mZnNldDsKZXh0ZXJuIGxvbmcgdGltZV9jb25zdGFudDsKZXh0ZXJuIGxv
bmcgdGltZV90b2xlcmFuY2U7CmV4dGVybiBsb25nIHRpbWVfcHJlY2lzaW9uOwpleHRlcm4gbG9u
ZyB0aW1lX21heGVycm9yOwpleHRlcm4gbG9uZyB0aW1lX2VzdGVycm9yOwoKZXh0ZXJuIGxvbmcg
dGltZV9waGFzZTsKZXh0ZXJuIGxvbmcgdGltZV9mcmVxOwpleHRlcm4gbG9uZyB0aW1lX2FkajsK
ZXh0ZXJuIGxvbmcgdGltZV9yZWZ0aW1lOwoKZXh0ZXJuIGxvbmcgdGltZV9hZGp1c3Q7CgoKZXh0
ZXJuIGxvbmcgcHBzX29mZnNldDsKZXh0ZXJuIGxvbmcgcHBzX2ppdHRlcjsKZXh0ZXJuIGxvbmcg
cHBzX2ZyZXE7CmV4dGVybiBsb25nIHBwc19zdGFiaWw7CmV4dGVybiBsb25nIHBwc192YWxpZDsK
CgpleHRlcm4gaW50IHBwc19zaGlmdDsKZXh0ZXJuIGxvbmcgcHBzX2ppdGNudDsKZXh0ZXJuIGxv
bmcgcHBzX2NhbGNudDsKZXh0ZXJuIGxvbmcgcHBzX2VycmNudDsKZXh0ZXJuIGxvbmcgcHBzX3N0
YmNudDsKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIgMQojIDEwMCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsK
ICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xv
cjsKCgogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3Qg
cmJfbm9kZV9zICogcmJfbGVmdDsKfQpyYl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290
X3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoK
CgpleHRlcm4gdm9pZCByYl9pbnNlcnRfY29sb3IocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsK
ZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBp
bmxpbmUgdm9pZCByYl9saW5rX25vZGUocmJfbm9kZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFy
ZW50LCByYl9ub2RlX3QgKiogcmJfbGluaykKewogICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBh
cmVudDsKICAgICAgICBub2RlLT5yYl9jb2xvciA9IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9
IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CgogICAgICAgICpyYl9saW5rID0gbm9kZTsK
fQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICAgICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxp
ZDsKfSBtbV9jb250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMgMTQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiCiMgMSAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9hc20vc21wLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc21w
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEKIyAxOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vYXBpY2RlZi5oIiAxCiMgMTIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9h
cGljZGVmLmgiCnN0cnVjdCBsb2NhbF9hcGljIHsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMTsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMjsKCiAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAg
ICAgICAgICAgICAgICAgICAgcGh5c19hcGljX2lkIDogNCwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19yZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzNdOwogICAgICAgIH0gaWQ7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19yZXNlcnZlZF8xIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2x2dCA6
IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDg7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHZlcnNpb247CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDM7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMDQ7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMDU7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd
OyB9IF9fcmVzZXJ2ZWRfMDY7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVk
XzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAg
ICAgICAgfSB0cHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f
cmVzZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf
MlszXTsKICAgICAgICB9IGFwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y
ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGVvaTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkWzNdOwogICAgICAgIH0gZW9pOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg
X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA3OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAg
ICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IGxkcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgICAgICAgICAgICAgICAg
ICAgICAgbW9kZWwgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf
MlszXTsKICAgICAgICB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzcHVyaW91c192ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBh
cGljX2VuYWJsZWQgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c19jcHUgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyMjsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBzdnI7CgogICAgICAgIHN0
cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlzciBbOF07CgogICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHRtciBbOF07
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGly
ciBbOF07CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZW5kX2NzX2Vycm9yIDogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZW5kX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjZWl2ZV9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVjZWl2ZV9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWxsZWdhbF9yZWdpc3Rlcl9hZGRyZXNzIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyNDsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gZXJy
b3JfYml0czsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBlcnJvcnM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGFsbF9lcnJvcnM7CiAgICAgICAg
fSBlc3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMDg7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd
OyB9IF9fcmVzZXJ2ZWRfMDk7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy
dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTA7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTI7CgogICAgICAgIHN0cnVjdCB7IHVu
c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTM7CgogICAgICAgIHN0cnVj
dCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTQ7CgogICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RpbmF0aW9uX21vZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVy
eV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg
IHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyLAog
ICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmQgOiAyLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzMgOiAxMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzRbM107CiAgICAgICAgfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19kZXN0IDog
NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zIDogMjQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAg
ICAgIH0gZGVzdDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107
CiAgICAgICAgfSBpY3IyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6
IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAg
IG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9tb2RlIDogMSwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X3RpbWVyOwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE1OwoKICAg
ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVy
eV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAog
ICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg
X19yZXNlcnZlZF8zIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl
ZF80WzNdOwogICAgICAgIH0gbHZ0X3BjOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2
ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAg
ICAgICAgICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9p
cnIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf
MiA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAg
ICAgICB9IGx2dF9saW50MDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2Rl
IDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgcG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwK
ICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBs
dnRfbGludDE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
dmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9lcnJvcjsK
CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsX2Nv
dW50OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAg
ICB9IHRpbWVyX2ljcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGN1cnJfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfY2NyOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE2OwoKICAgICAgICBz
dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE3OwoKICAg
ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE4
OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy
dmVkXzE5OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRp
dmlzb3IgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyODsKICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1l
cl9kY3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMjA7Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyAxOSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vZml4bWFwLmgiCmVudW0gZml4ZWRfYWRkcmVzc2VzIHsKCiAgICAgICAgRklYX0FQSUNf
QkFTRSwKCgogICAgICAgIEZJWF9JT19BUElDX0JBU0VfMCwKICAgICAgICBGSVhfSU9fQVBJQ19C
QVNFX0VORCA9IEZJWF9JT19BUElDX0JBU0VfMCArIDggLTEsCiMgNjggIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIF9fZW5kX29mX3Blcm1hbmVudF9maXhlZF9h
ZGRyZXNzZXMsCgoKICAgICAgICBGSVhfQlRNQVBfRU5EID0gX19lbmRfb2ZfcGVybWFuZW50X2Zp
eGVkX2FkZHJlc3NlcywKICAgICAgICBGSVhfQlRNQVBfQkVHSU4gPSBGSVhfQlRNQVBfRU5EICsg
MTYgLSAxLAogICAgICAgIF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQg
X19zZXRfZml4bWFwIChlbnVtIGZpeGVkX2FkZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdz
KTsKIyA5OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCmV4dGVybiB2b2lk
IF9fdGhpc19maXhtYXBfZG9lc19ub3RfZXhpc3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgbG9uZyBmaXhfdG9fdmlydChjb25zdCB1bnNpZ25lZCBpbnQgaWR4KQp7CiMgMTE3
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBpZiAoaWR4ID49
IF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcykKICAgICAgICAgICAgICAgIF9fdGhpc19maXhtYXBf
ZG9lc19ub3RfZXhpc3QoKTsKCiAgICAgICAgcmV0dXJuICgoMHhmZmZmZTAwMFVMKSAtICgoaWR4
KSA8PCAxMikpOwp9CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIiAyCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAxCiMgMjcgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL21wc3BlYy5oIgpzdHJ1Y3QgaW50ZWxfbXBfZmxvYXRpbmcKewog
ICAgICAgIGNoYXIgbXBmX3NpZ25hdHVyZVs0XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1wZl9w
aHlzcHRyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2xlbmd0aDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIG1wZl9zcGVjaWZpY2F0aW9uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2NoZWNr
c3VtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmUxOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgbXBmX2ZlYXR1cmUyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmUzOwog
ICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmU0OwogICAgICAgIHVuc2lnbmVkIGNoYXIg
bXBmX2ZlYXR1cmU1Owp9OwoKc3RydWN0IG1wX2NvbmZpZ190YWJsZQp7CiAgICAgICAgY2hhciBt
cGNfc2lnbmF0dXJlWzRdOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfbGVuZ3RoOwogICAg
ICAgIGNoYXIgbXBjX3NwZWM7CiAgICAgICAgY2hhciBtcGNfY2hlY2tzdW07CiAgICAgICAgY2hh
ciBtcGNfb2VtWzhdOwogICAgICAgIGNoYXIgbXBjX3Byb2R1Y3RpZFsxMl07CiAgICAgICAgdW5z
aWduZWQgbG9uZyBtcGNfb2VtcHRyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1wY19vZW1zaXpl
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1wY19vZW1jb3VudDsKICAgICAgICB1bnNpZ25lZCBs
b25nIG1wY19sYXBpYzsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2VydmVkOwp9OwojIDY2ICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKc3RydWN0IG1wY19jb25maWdfcHJv
Y2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgbXBjX2FwaWNpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19hcGljdmVyOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgbXBjX2NwdWZsYWc7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIG1w
Y19jcHVmZWF0dXJlOwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX2ZlYXR1cmVmbGFnOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX3Jlc2VydmVkWzJdOwp9OwoKc3RydWN0IG1wY19jb25m
aWdfYnVzCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgbXBjX2J1c2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2J1c3R5cGVbNl0gX19h
dHRyaWJ1dGUoKHBhY2tlZCkpOwp9OwojIDEwOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v
bXBzcGVjLmgiCnN0cnVjdCBtcGNfY29uZmlnX2lvYXBpYwp7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBtcGNfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19hcGljaWQ7CiAgICAgICAgdW5z
aWduZWQgY2hhciBtcGNfYXBpY3ZlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19mbGFnczsK
CiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGNfYXBpY2FkZHI7Cn07CgpzdHJ1Y3QgbXBjX2NvbmZp
Z19pbnRzcmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfaXJxZmxhZzsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
cGNfc3JjYnVzaXJxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2RzdGFwaWM7CiAgICAgICAg
dW5zaWduZWQgY2hhciBtcGNfZHN0aXJxOwp9OwoKZW51bSBtcF9pcnFfc291cmNlX3R5cGVzIHsK
ICAgICAgICBtcF9JTlQgPSAwLAogICAgICAgIG1wX05NSSA9IDEsCiAgICAgICAgbXBfU01JID0g
MiwKICAgICAgICBtcF9FeHRJTlQgPSAzCn07CgoKCgoKCnN0cnVjdCBtcGNfY29uZmlnX2xpbnRz
cmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfaXJxZmxhZzsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXNpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19z
cmNidXNpcnE7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfZGVzdGFwaWM7CgogICAgICAgIHVu
c2lnbmVkIGNoYXIgbXBjX2Rlc3RhcGljbGludDsKfTsKCnN0cnVjdCBtcF9jb25maWdfb2VtdGFi
bGUKewogICAgICAgIGNoYXIgb2VtX3NpZ25hdHVyZVs0XTsKCiAgICAgICAgdW5zaWduZWQgc2hv
cnQgb2VtX2xlbmd0aDsKICAgICAgICBjaGFyIG9lbV9yZXY7CiAgICAgICAgY2hhciBvZW1fY2hl
Y2tzdW07CiAgICAgICAgY2hhciBtcGNfb2VtWzhdOwp9OwoKc3RydWN0IG1wY19jb25maWdfdHJh
bnNsYXRpb24KewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciB0cmFuc19sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciB0cmFuc190eXBlOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNfcXVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5z
X2dsb2JhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5zX2xvY2FsOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHRyYW5zX3Jlc2VydmVkOwp9OwojIDE5NCAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9hc20vbXBzcGVjLmgiCmVudW0gbXBfYnVzdHlwZSB7CiAgICAgICAgTVBfQlVTX0lTQSA9IDEs
CiAgICAgICAgTVBfQlVTX0VJU0EsCiAgICAgICAgTVBfQlVTX1BDSSwKICAgICAgICBNUF9CVVNf
TUNBCn07CmV4dGVybiBpbnQgbXBfYnVzX2lkX3RvX3R5cGUgWzMyXTsKZXh0ZXJuIGludCBtcF9i
dXNfaWRfdG9fbm9kZSBbMzJdOwpleHRlcm4gaW50IG1wX2J1c19pZF90b19sb2NhbCBbMzJdOwpl
eHRlcm4gaW50IHF1YWRfbG9jYWxfdG9fbXBfYnVzX2lkIFszMi80XVs0XTsKZXh0ZXJuIGludCBt
cF9idXNfaWRfdG9fcGNpX2J1cyBbMzJdOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBib290X2NwdV9w
aHlzaWNhbF9hcGljaWQ7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBoeXNfY3B1X3ByZXNlbnRfbWFw
OwpleHRlcm4gaW50IHNtcF9mb3VuZF9jb25maWc7CmV4dGVybiB2b2lkIGZpbmRfc21wX2NvbmZp
ZyAodm9pZCk7CmV4dGVybiB2b2lkIGdldF9zbXBfY29uZmlnICh2b2lkKTsKZXh0ZXJuIGludCBu
cl9pb2FwaWNzOwpleHRlcm4gaW50IGFwaWNfdmVyc2lvbiBbMTZdOwpleHRlcm4gaW50IG1wX2J1
c19pZF90b190eXBlIFszMl07CmV4dGVybiBpbnQgbXBfaXJxX2VudHJpZXM7CmV4dGVybiBzdHJ1
Y3QgbXBjX2NvbmZpZ19pbnRzcmMgbXBfaXJxcyBbMjU2XTsKZXh0ZXJuIGludCBtcGNfZGVmYXVs
dF90eXBlOwpleHRlcm4gaW50IG1wX2J1c19pZF90b19wY2lfYnVzIFszMl07CmV4dGVybiBpbnQg
bXBfY3VycmVudF9wY2lfaWQ7CmV4dGVybiB1bnNpZ25lZCBsb25nIG1wX2xhcGljX2FkZHI7CmV4
dGVybiBpbnQgcGljX21vZGU7CmV4dGVybiBpbnQgdXNpbmdfYXBpY190aW1lcjsKIyAxOCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc21wLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9hc20vaW9fYXBpYy5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lv
X2FwaWMuaCIKc3RydWN0IElPX0FQSUNfcmVnXzAwIHsKICAgICAgICBfX3UzMiBfX3Jlc2VydmVk
XzIgOiAyNCwKICAgICAgICAgICAgICAgIElEIDogNCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMSA6IDQ7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IElPX0FQSUNfcmVn
XzAxIHsKICAgICAgICBfX3UzMiB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2
ZWRfMiA6IDcsCiAgICAgICAgICAgICAgICBQUlEgOiAxLAogICAgICAgICAgICAgICAgZW50cmll
cyA6IDgsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA4Owp9IF9fYXR0cmlidXRlX18g
KChwYWNrZWQpKTsKCnN0cnVjdCBJT19BUElDX3JlZ18wMiB7CiAgICAgICAgX191MzIgX19yZXNl
cnZlZF8yIDogMjQsCiAgICAgICAgICAgICAgICBhcmJpdHJhdGlvbiA6IDQsCiAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzEgOiA0Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgoKCmV4
dGVybiBpbnQgbnJfaW9hcGljczsKZXh0ZXJuIGludCBucl9pb2FwaWNfcmVnaXN0ZXJzWzhdOwoK
ZW51bSBpb2FwaWNfaXJxX2Rlc3RpbmF0aW9uX3R5cGVzIHsKICAgICAgICBkZXN0X0ZpeGVkID0g
MCwKICAgICAgICBkZXN0X0xvd2VzdFByaW8gPSAxLAogICAgICAgIGRlc3RfU01JID0gMiwKICAg
ICAgICBkZXN0X19yZXNlcnZlZF8xID0gMywKICAgICAgICBkZXN0X05NSSA9IDQsCiAgICAgICAg
ZGVzdF9JTklUID0gNSwKICAgICAgICBkZXN0X19yZXNlcnZlZF8yID0gNiwKICAgICAgICBkZXN0
X0V4dElOVCA9IDcKfTsKCnN0cnVjdCBJT19BUElDX3JvdXRlX2VudHJ5IHsKICAgICAgICBfX3Uz
MiB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCgoKCiAgICAg
ICAgICAgICAgICBkZXN0X21vZGUgOiAxLAogICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVz
IDogMSwKICAgICAgICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgIGlyciA6
IDEsCiAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgIG1hc2sgOiAx
LAogICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CgogICAgICAgIHVuaW9uIHsgc3Ry
dWN0IHsgX191MzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5
c2ljYWxfZGVzdCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgICAgICAgICB9IHBoeXNpY2FsOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgX191MzIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSBsb2dpY2FsOwogICAgICAgIH0gZGVzdDsKCn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tl
ZCkpOwoKCgoKCgpleHRlcm4gc3RydWN0IG1wY19jb25maWdfaW9hcGljIG1wX2lvYXBpY3NbOF07
CgoKZXh0ZXJuIGludCBtcF9pcnFfZW50cmllczsKCgpleHRlcm4gc3RydWN0IG1wY19jb25maWdf
aW50c3JjIG1wX2lycXNbMjU2XTsKCgpleHRlcm4gaW50IG1wY19kZWZhdWx0X3R5cGU7CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGludCBpb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVu
c2lnbmVkIGludCByZWcpCnsKICAgICAgICAqKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAw
VUwpIC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3Nb
YXBpY10ubXBjX2FwaWNhZGRyICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpKSA9IHJlZzsKICAgICAg
ICByZXR1cm4gKigoKHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19B
UElDX0JBU0VfMCArIGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2Fk
ZHIgJiB+KH4oKDFVTCA8PCAxMiktMSkpKSkpKzQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW9f
YXBpY193cml0ZSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQg
aW50IHZhbHVlKQp7CiAgICAgICAgKigodm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAt
ICgoRklYX0lPX0FQSUNfQkFTRV8wICsgYXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNd
Lm1wY19hcGljYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKSkgPSByZWc7CiAgICAgICAgKigo
KHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCAr
IGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFV
TCA8PCAxMiktMSkpKSkpKzQpID0gdmFsdWU7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW9f
YXBpY19tb2RpZnkodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCB2YWx1ZSkKewogICAg
ICAgICooKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhfSU9fQVBJQ19C
QVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2FwaWNhZGRyICYg
fih+KCgxVUwgPDwgMTIpLTEpKSkpKSs0KSA9IHZhbHVlOwp9CgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIGlvX2FwaWNfc3luYyh1bnNpZ25lZCBpbnQgYXBpYykKewogICAgICAgICh2b2lkKSAqKCgo
dm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQSUNfQkFTRV8wICsg
YXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRkciAmIH4ofigoMVVM
IDw8IDEyKS0xKSkpKSkrNCk7Cn0KCgpleHRlcm4gaW50IHNraXBfaW9hcGljX3NldHVwOwojIDIw
ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2FzbS9hcGljLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9wbS5oIiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG0uaCIKZW51
bQp7CiAgICAgICAgUE1fU1VTUEVORCwKICAgICAgICBQTV9SRVNVTUUsCgogICAgICAgIFBNX1NB
VkVfU1RBVEUsCgoKICAgICAgICBQTV9TRVRfV0FLRVVQLAoKCiAgICAgICAgUE1fR0VUX1JFU09V
UkNFUywKICAgICAgICBQTV9TRVRfUkVTT1VSQ0VTLAoKCiAgICAgICAgUE1fRUpFQ1QsCiAgICAg
ICAgUE1fTE9DSywKfTsKCnR5cGVkZWYgaW50IHBtX3JlcXVlc3RfdDsKCgoKCmVudW0KewogICAg
ICAgIFBNX1VOS05PV05fREVWID0gMCwKICAgICAgICBQTV9TWVNfREVWLAogICAgICAgIFBNX1BD
SV9ERVYsCiAgICAgICAgUE1fVVNCX0RFViwKICAgICAgICBQTV9TQ1NJX0RFViwKICAgICAgICBQ
TV9JU0FfREVWLAogICAgICAgIFBNX01URF9ERVYsCn07Cgp0eXBlZGVmIGludCBwbV9kZXZfdDsK
CgoKCmVudW0KewogICAgICAgIFBNX1NZU19VTktOT1dOID0gMHgwMDAwMDAwMCwKICAgICAgICBQ
TV9TWVNfS0JDID0gMHg0MWQwMDMwMywKICAgICAgICBQTV9TWVNfQ09NID0gMHg0MWQwMDUwMCwK
ICAgICAgICBQTV9TWVNfSVJEQSA9IDB4NDFkMDA1MTAsCiAgICAgICAgUE1fU1lTX0ZEQyA9IDB4
NDFkMDA3MDAsCiAgICAgICAgUE1fU1lTX1ZHQSA9IDB4NDFkMDA5MDAsCiAgICAgICAgUE1fU1lT
X1BDTUNJQSA9IDB4NDFkMDBlMDAsCn07CiMgOTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvcG0uaCIKc3RydWN0IHBtX2RldjsKCnR5cGVkZWYgaW50ICgqcG1fY2FsbGJhY2spKHN0cnVj
dCBwbV9kZXYgKmRldiwgcG1fcmVxdWVzdF90IHJxc3QsIHZvaWQgKmRhdGEpOwoKCgoKc3RydWN0
IHBtX2Rldgp7CiAgICAgICAgcG1fZGV2X3QgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlk
OwogICAgICAgIHBtX2NhbGxiYWNrIGNhbGxiYWNrOwogICAgICAgIHZvaWQgKmRhdGE7CgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHByZXZfc3RhdGU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZW50cnk7Cn07CiMgMTU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BtLmgiCnN0YXRp
YyBpbmxpbmUgc3RydWN0IHBtX2RldiAqcG1fcmVnaXN0ZXIocG1fZGV2X3QgdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGlkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX2NhbGxiYWNrIGNhbGxiYWNr
KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwbV91bnJlZ2lzdGVy
KHN0cnVjdCBwbV9kZXYgKmRldikge30KCnN0YXRpYyBpbmxpbmUgdm9pZCBwbV91bnJlZ2lzdGVy
X2FsbChwbV9jYWxsYmFjayBjYWxsYmFjaykge30KCnN0YXRpYyBpbmxpbmUgaW50IHBtX3NlbmQo
c3RydWN0IHBtX2RldiAqZGV2LCBwbV9yZXF1ZXN0X3QgcnFzdCwgdm9pZCAqZGF0YSkKewogICAg
ICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBwbV9zZW5kX2FsbChwbV9yZXF1ZXN0
X3QgcnFzdCwgdm9pZCAqZGF0YSkKewogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5l
IHN0cnVjdCBwbV9kZXYgKnBtX2ZpbmQocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBtX2RldiAqZnJv
bSkKewogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0
cnVjdCBwbV9kZXYgKmRldikge30Kc3RhdGljIGlubGluZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVj
dCBwbV9kZXYgKmRldikge30KCgoKZXh0ZXJuIHZvaWQgKCpwbV9pZGxlKSh2b2lkKTsKZXh0ZXJu
IHZvaWQgKCpwbV9wb3dlcl9vZmYpKHZvaWQpOwojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv
YXNtL2FwaWMuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hcGljLmgiCnN0
YXRpYyBfX2lubGluZSB2b2lkIGFwaWNfd3JpdGUodW5zaWduZWQgbG9uZyByZWcsIHVuc2lnbmVk
IGxvbmcgdikKewogICAgICAgICooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192
aXJ0KEZJWF9BUElDX0JBU0UpKStyZWcpKSA9IHY7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGFw
aWNfd3JpdGVfYXRvbWljKHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25lZCBsb25nIHYpCnsKICAg
ICAgICAoKF9fdHlwZW9mX18oKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3Zp
cnQoRklYX0FQSUNfQkFTRSkpK3JlZykpKSlfX3hjaGcoKHVuc2lnbmVkIGxvbmcpKHYpLCgodm9s
YXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpK3JlZykp
LHNpemVvZigqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJ
Q19CQVNFKSkrcmVnKSkpKSk7Cn0KCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBsb25nIGFwaWNf
cmVhZCh1bnNpZ25lZCBsb25nIHJlZykKewogICAgICAgIHJldHVybiAqKCh2b2xhdGlsZSB1bnNp
Z25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkrcmVnKSk7Cn0KCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCnsKICAgICAgICBkbyB7
IH0gd2hpbGUgKCBhcGljX3JlYWQoIDB4MzAwICkgJiAweDAxMDAwICk7Cn0KIyA1MyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgYWNrX0FQSUNf
aXJxKHZvaWQpCnsKIyA2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5oIgogICAg
ICAgIGFwaWNfd3JpdGUoKDB4QjApLCgwKSk7Cn0KCmV4dGVybiBpbnQgZ2V0X21heGx2dCh2b2lk
KTsKZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgY29ubmVj
dF9ic3BfQVBJQyAodm9pZCk7CmV4dGVybiB2b2lkIGRpc2Nvbm5lY3RfYnNwX0FQSUMgKHZvaWQp
OwpleHRlcm4gdm9pZCBkaXNhYmxlX2xvY2FsX0FQSUMgKHZvaWQpOwpleHRlcm4gaW50IHZlcmlm
eV9sb2NhbF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgY2FjaGVfQVBJQ19yZWdpc3RlcnMgKHZv
aWQpOwpleHRlcm4gdm9pZCBzeW5jX0FyYl9JRHMgKHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2Jz
cF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfbG9jYWxfQVBJQyAodm9pZCk7CmV4dGVy
biB2b2lkIGluaXRfYXBpY19tYXBwaW5ncyAodm9pZCk7CmV4dGVybiB2b2lkIHNtcF9sb2NhbF90
aW1lcl9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiB2b2lkIHNldHVw
X0FQSUNfY2xvY2tzICh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfYXBpY19ubWlfd2F0Y2hkb2cg
KHZvaWQpOwpleHRlcm4gaW5saW5lIHZvaWQgbm1pX3dhdGNoZG9nX3RpY2sgKHN0cnVjdCBwdF9y
ZWdzICogcmVncyk7CmV4dGVybiBpbnQgQVBJQ19pbml0X3VuaXByb2Nlc3NvciAodm9pZCk7CmV4
dGVybiB2b2lkIGRpc2FibGVfQVBJQ190aW1lcih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5hYmxlX0FQ
SUNfdGltZXIodm9pZCk7CgpleHRlcm4gc3RydWN0IHBtX2RldiAqYXBpY19wbV9yZWdpc3Rlcihw
bV9kZXZfdCwgdW5zaWduZWQgbG9uZywgcG1fY2FsbGJhY2spOwpleHRlcm4gdm9pZCBhcGljX3Bt
X3VucmVnaXN0ZXIoc3RydWN0IHBtX2RldiopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBhcGljX3Rp
bWVyX2lycXMgWzMyXTsKZXh0ZXJuIGludCBjaGVja19ubWlfd2F0Y2hkb2cgKHZvaWQpOwoKZXh0
ZXJuIHVuc2lnbmVkIGludCBubWlfd2F0Y2hkb2c7CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvYXNtL3NtcC5oIiAyCiMgNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIgpl
eHRlcm4gdm9pZCBzbXBfYWxsb2NfbWVtb3J5KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
aHlzX2NwdV9wcmVzZW50X21hcDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1X29ubGluZV9tYXA7
CmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9pbnZhbGlkYXRlX25lZWRlZDsKZXh0
ZXJuIGludCBwaWNfbW9kZTsKZXh0ZXJuIGludCBzbXBfbnVtX3NpYmxpbmdzOwpleHRlcm4gaW50
IGNwdV9zaWJsaW5nX21hcFtdOwoKZXh0ZXJuIHZvaWQgc21wX2ZsdXNoX3RsYih2b2lkKTsKZXh0
ZXJuIHZvaWQgc21wX21lc3NhZ2VfaXJxKGludCBjcGwsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0
X3JlZ3MgKnJlZ3MpOwpleHRlcm4gdm9pZCBzbXBfc2VuZF9yZXNjaGVkdWxlKGludCBjcHUpOwpl
eHRlcm4gdm9pZCBzbXBfaW52YWxpZGF0ZV9yY3Yodm9pZCk7CmV4dGVybiB2b2lkICgqbXRycl9o
b29rKSAodm9pZCk7CmV4dGVybiB2b2lkIHphcF9sb3dfbWFwcGluZ3MgKHZvaWQpOwoKCgoKCgpz
dGF0aWMgaW5saW5lIGludCBjcHVfbG9naWNhbF9tYXAoaW50IGNwdSkKewogICAgICAgIHJldHVy
biBjcHU7Cn0Kc3RhdGljIGlubGluZSBpbnQgY3B1X251bWJlcl9tYXAoaW50IGNwdSkKewogICAg
ICAgIHJldHVybiBjcHU7Cn0KCgoKCgoKZXh0ZXJuIHZvbGF0aWxlIGludCBjcHVfdG9fcGh5c2lj
YWxfYXBpY2lkWzMyXTsKZXh0ZXJuIHZvbGF0aWxlIGludCBwaHlzaWNhbF9hcGljaWRfdG9fY3B1
WzI1Nl07CmV4dGVybiB2b2xhdGlsZSBpbnQgY3B1X3RvX2xvZ2ljYWxfYXBpY2lkWzMyXTsKZXh0
ZXJuIHZvbGF0aWxlIGludCBsb2dpY2FsX2FwaWNpZF90b19jcHVbMjU2XTsKCgoKCgpleHRlcm4g
dm9pZCBzbXBfYm9vdF9jcHVzKHZvaWQpOwpleHRlcm4gdm9pZCBzbXBfc3RvcmVfY3B1X2luZm8o
aW50IGlkKTsKIyAxMDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIgpzdGF0aWMg
X19pbmxpbmUgaW50IGhhcmRfc21wX3Byb2Nlc3Nvcl9pZCh2b2lkKQp7CgogICAgICAgIHJldHVy
biAoKCgqKHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0UpKSsweDIw
KSk+PjI0KSYweDBGKTsKfQoKc3RhdGljIF9faW5saW5lIGludCBsb2dpY2FsX3NtcF9wcm9jZXNz
b3JfaWQodm9pZCkKewoKICAgICAgICByZXR1cm4gKCgoKih1bnNpZ25lZCBsb25nICopKChmaXhf
dG9fdmlydChGSVhfQVBJQ19CQVNFKSkrMHhEMCkpPj4yNCkmMHhGRik7Cn0KIyAxNSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3NtcC5oIgpleHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0
ZXJuIHZvaWQgc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgoKCgoKZXh0ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKCgoKCmV4dGVy
biB2b2lkIHNtcF9jYWxsaW4odm9pZCk7CgoKCgpleHRlcm4gdm9pZCBzbXBfY29tbWVuY2Uodm9p
ZCk7CgoKCgpleHRlcm4gaW50IHNtcF9jYWxsX2Z1bmN0aW9uICh2b2lkICgqZnVuYykgKHZvaWQg
KmluZm8pLCB2b2lkICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0
cnksIGludCB3YWl0KTsKCgoKCmV4dGVybiBpbnQgc21wX3RocmVhZHNfcmVhZHk7CgpleHRlcm4g
aW50IHNtcF9udW1fY3B1czsKCmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9tc2df
ZGF0YTsKZXh0ZXJuIHZvbGF0aWxlIGludCBzbXBfc3JjX2NwdTsKZXh0ZXJuIHZvbGF0aWxlIGlu
dCBzbXBfbXNnX2lkOwojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMjEgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk
ZS9saW51eC9tYWpvci5oIiAxCiMgMTc5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21h
am9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAg
ICAgIHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0p
ID09IDExKTsKfQojIDE5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tYWpvci5oIgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpvcihpbnQgbSkKewogICAgICAgIHJldHVy
biAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9PSAzMyB8fCAobSkgPT0gMzQgfHwgKG0p
ID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODggfHwgKG0pID09IDg5IHx8IChtKSA9PSA5
MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgoK
IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIiAxCgoKCgoKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIGNjX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHRjZmxhZ190OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lm
bGFnOwogICAgICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsK
ICAgICAgICB0Y2ZsYWdfdCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAgIGNj
X3QgY19jY1sxOV07Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEKIyA2ICIvdXNy
L3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDIKCnN0cnVjdCB3aW5zaXplIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfY29s
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29mbGFnOwogICAgICAgIHVuc2lnbmVk
IHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19sZmxhZzsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfY2NbOF07Cn07CiMg
NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDIKIyAyMyAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs
dWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC90dHlfZHJpdmVyLmgiCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFnaWM7
CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFt
ZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAgIHNo
b3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBlOwog
ICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJtaW9z
OwogICAgICAgIGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0cnVj
dCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAq
b3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAgc3Ry
dWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvc19s
b2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgqb3Bl
bikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAg
dm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxw
KTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBmcm9t
X3VzZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGlu
dCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHkpOwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1
Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0
cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1
bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5
X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRocm90
dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0bGUp
KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0IHR0
eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg
ICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3RhdGUp
OwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwog
ICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg
IHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0aW1l
b3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwg
Y2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoqc3Rh
cnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAq
ZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmlsZSAq
ZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZl
ciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL3Vzci9z
cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvdHR5X2xkaXNjLmgiIDEKIyAxMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu
dXgvdHR5X2xkaXNjLmgiCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdpYzsKICAg
ICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdzOwoKCgog
ICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCpj
bG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZlciko
c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2luX2J1ZmZl
cikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpKHN0cnVj
dCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3NpemVfdCAo
KndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90IG5y
KTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBm
aWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVu
c2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlf
c3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25lZCBpbnQg
KCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAgICAgICAg
dm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNpZ25lZCBj
aGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBpbnQgY291
bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAg
ICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07CiMgMjYg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHNjcmVlbl9pbmZvIHsKICAgICAgICB1bnNp
Z25lZCBjaGFyIG9yaWdfeDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfeTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBkb250dXNlMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVv
X3BhZ2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX21vZGU7CiAgICAgICAgdW5z
aWduZWQgY2hhciBvcmlnX3ZpZGVvX2NvbHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2Vk
MjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVvX2VnYV9ieDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCB1bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19saW5l
czsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9faXNWR0E7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgb3JpZ192aWRlb19wb2ludHM7CgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJf
d2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2hlaWdodDsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBsZmJfZGVwdGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZmJfYmFzZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGxmYl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRvbnR1c2Uy
LCBkb250dXNlMzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfbGluZWxlbmd0aDsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHJlZF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkX3BvczsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBn
cmVlbl9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBibHVlX3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBibHVlX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJzdmRfc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHJzdmRfcG9zOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZlc2FwbV9z
ZWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBtX29mZjsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBwYWdlczsKCn07CgpleHRlcm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwoj
IDEzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0eV9mbGlw
X2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAgICAgc3RydWN0
IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsKICAgICAgICB1
bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIGlu
dCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJdOwogICAgICAg
IGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xvcFs0XTsKfTsK
IyAyNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfc3Ry
dWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgZHJpdmVy
OwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAgc3RydWN0IHRlcm1pb3Mg
KnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdycDsKICAgICAgICBpbnQg
c2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5zaXplIHdpbnNpemU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVk
OjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xhdGVuY3k6MSwgd2FybmVk
OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAgICAgICAgc3RydWN0IHR0
eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luYzsKICAg
ICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAgaW50IG1heF9mbGlwX2Nu
dDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdyaXRl
X3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0OwogICAgICAgIHN0cnVj
dCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2NfZGF0YTsKICAgICAgICB2
b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHR0eV9maWxlczsKCgoK
CgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxu
ZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5vbjoxOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbmltdW1fdG9f
d2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAgICAgaW50IG51bV9vdmVy
cnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21hcFsyNTYvKDgqc2l6ZW9m
KHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7CiAgICAgICAgaW50IHJl
YWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGludCByZWFkX2NudDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXplb2YodW5zaWduZWQgbG9u
ZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhbm9u
X2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dy
aXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAgICBzdHJ1Y3QgdHFfc3Ry
dWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5Lmgi
CmV4dGVybiB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVy
biBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVj
dCAqIHJlZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGlu
dCBmZ19jb25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21z
Z19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25z
b2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5
X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2Vy
X2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9p
bml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0
KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsK
ZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFs
X2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9pbml0KHZvaWQpOwoKZXh0ZXJuIGlu
dCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwga2Rldl90IGRldmlj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcm91dGluZSk7CmV4
dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyICpidWYpOwpl
eHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBs
b25nIHRpbWVvdXQpOwpleHRlcm4gaW50IHR0eV9jaGVja19jaGFuZ2Uoc3RydWN0IHR0eV9zdHJ1
Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCBzdG9wX3R0eShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7
CmV4dGVybiB2b2lkIHN0YXJ0X3R0eShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiBp
bnQgdHR5X3JlZ2lzdGVyX2xkaXNjKGludCBkaXNjLCBzdHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRp
c2MpOwpleHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRy
aXZlcik7CmV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVy
ICpkcml2ZXIpOwpleHRlcm4gdm9pZCB0dHlfcmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJp
dmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZz
IChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiBpbnQg
dHR5X3JlYWRfcmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciAq
YnVmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmbGVuKTsKZXh0ZXJuIHZv
aWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqbXNnKTsK
CmV4dGVybiBpbnQgaXNfb3JwaGFuZWRfcGdycChpbnQgcGdycCk7CmV4dGVybiBpbnQgaXNfaWdu
b3JlZChpbnQgc2lnKTsKZXh0ZXJuIGludCB0dHlfc2lnbmFsKGludCBzaWcsIHN0cnVjdCB0dHlf
c3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3ZoYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpl
eHRlcm4gdm9pZCB0dHlfdW5oYW5ndXAoc3RydWN0IGZpbGUgKmZpbHApOwpleHRlcm4gaW50IHR0
eV9odW5nX3VwX3Aoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FLKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBkaXNhc3NvY2lhdGVfY3R0eShpbnQgcHJp
dik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9wdXNoKHN0cnVjdCB0dHlfc3RydWN0ICp0
dHkpOwpleHRlcm4gaW50IHR0eV9nZXRfYmF1ZF9yYXRlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
OwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9sZGlzY19OX1RUWTsKCgpleHRlcm4gaW50
IG5fdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh
cmcpOwoKCgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29sZV9pbml0KHZvaWQpOwoKCgpleHRlcm4g
aW50IHBjeGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCk7
CgoKCmV4dGVybiB2b2lkIGNvbnNvbGVfcHJpbnQoY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGlu
dCB2dF9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwoj
IDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9pcGMuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBj
LmgiCnN0cnVjdCBpcGNfcGVybQp7CiAgICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAg
IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg
X19rZXJuZWxfdWlkX3QgY3VpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBjZ2lkOwogICAgICAg
IF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKfTsKCgoj
IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIiAxCiMgMTQgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3QgaXBjNjRfcGVybQp7CiAgICAgICAg
X19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAg
IF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgY3VpZDsKICAg
ICAgICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNl
cTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf
X3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi91c3Iv
c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Blcm0KewogICAgICAgIGtleV90IGtl
eTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVpZF90IGN1
aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5o
IiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW1p
ZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVs
X3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsKICAg
ICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1f
cGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAg
ICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX25z
ZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVmLmgiIDEKIyAx
NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVmLmgiCnN0cnVjdCBzZW1pZDY0X2Rz
IHsKICAgICAgICBzdHJ1Y3QgaXBjNjRfcGVybSBzZW1fcGVybTsKICAgICAgICBfX2tlcm5lbF90
aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAg
IF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNl
ZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDQ7Cn07CiMgMzYgIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiIDIKCgpzdHJ1Y3Qgc2VtYnVmIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzZW1fbnVtOwogICAgICAgIHNob3J0IHNlbV9vcDsKICAgICAg
ICBzaG9ydCBzZW1fZmxnOwp9OwoKCnVuaW9uIHNlbXVuIHsKICAgICAgICBpbnQgdmFsOwogICAg
ICAgIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICphcnJheTsK
ICAgICAgICBzdHJ1Y3Qgc2VtaW5mbyAqX19idWY7CiAgICAgICAgdm9pZCAqX19wYWQ7Cn07Cgpz
dHJ1Y3Qgc2VtaW5mbyB7CiAgICAgICAgaW50IHNlbW1hcDsKICAgICAgICBpbnQgc2VtbW5pOwog
ICAgICAgIGludCBzZW1tbnM7CiAgICAgICAgaW50IHNlbW1udTsKICAgICAgICBpbnQgc2VtbXNs
OwogICAgICAgIGludCBzZW1vcG07CiAgICAgICAgaW50IHNlbXVtZTsKICAgICAgICBpbnQgc2Vt
dXN6OwogICAgICAgIGludCBzZW12bXg7CiAgICAgICAgaW50IHNlbWFlbTsKfTsKIyA4MiAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0IHNlbSB7CiAgICAgICAgaW50
IHNlbXZhbDsKICAgICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAg
ICAgIHN0cnVjdCBrZXJuX2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3Rp
bWU7CiAgICAgICAgdGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFz
ZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qg
c2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVu
ZG87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1
ZSB7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9x
dWV1ZSAqKiBwcmV2OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAg
ICBzdHJ1Y3Qgc2VtX3VuZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0
YXR1czsKICAgICAgICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAg
ICAgICBzdHJ1Y3Qgc2VtYnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50
IGFsdGVyOwp9OwoKCgoKc3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8g
KiBwcm9jX25leHQ7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBp
bnQgc2VtaWQ7CiAgICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIGxvbmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5LCBpbnQgbnNlbXMsIGludCBzZW1m
bGcpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbW9wIChpbnQgc2Vt
aWQsIHN0cnVjdCBzZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5zb3BzKTsKIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwgaW50IHNlbW51bSwgaW50
IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaWduYWwuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAxCgoKCgoKCnN0
cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIG9sZF9zaWdzZXRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNpZ1soNjQgLyAzMildOwp9IHNpZ3NldF90OwojIDEyOSAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFu
ZGxlcl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3NpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdo
YW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRfc2lnc2V0X3Qgc2FfbWFzazsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jlcikodm9p
ZCk7Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5k
bGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jl
c3RvcmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2ln
YWN0aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwp9OwojIDE3MSAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrIHsK
ICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAgICAgc2l6ZV90
IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdhZGRz
ZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHNsICUxLCUw
IiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxp
bmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9f
YXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7
Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2NvbnN0X3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpz
ZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAg
ICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tzaWcgLyAzMl0gPj4gKHNpZyAlIDMyKSk7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQg
X3NpZykKewogICAgICAgIGludCByZXQ7CiAgICAgICAgX19hc21fXygiYnRsICUyLCUxXG5cdHNi
YmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSA6ICJtIigqc2V0KSwgIklyIihf
c2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHJldDsKfQojIDIxMyAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzaWdmaW5kaW53
b3JkKHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTAiIDog
Ij1yIih3b3JkKSA6ICJybSIod29yZCkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gd29yZDsKfQoj
IDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2ln
dmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0cjsKfSBz
aWd2YWxfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdu
bzsKICAgICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAgICAgIHVu
aW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAtIDMpXTsK
CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3Qg
X3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAg
IH0gX2tpbGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgX3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAg
ICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBzaWd2YWxf
dCBfc2lndmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3RhdHVzOwog
ICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgY2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYWRkcjsK
ICAgICAgICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3NpZmllbGRz
Owp9IHNpZ2luZm9fdDsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2luZm8u
aCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVl
OwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0g
MyldOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq
X2F0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9z
aWdldl91bjsKfSBzaWdldmVudF90OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfc2ln
aW5mbyhzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+
c2lfY29kZSA8IDApCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9m
KHNpZ2luZm9fdCkpID8gX19jb25zdGFudF9tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdp
bmZvX3QpKSkgOiBfX21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSk7CiAg
ICAgICAgZWxzZQoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgzKnNpemVv
ZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpID8gX19jb25zdGFudF9t
ZW1jcHkoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRz
Ll9zaWdjaGxkKSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGludCkgKyBzaXpl
b2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkpKTsKfQoKZXh0ZXJuIGludCBjb3B5X3NpZ2lu
Zm9fdG9fdXNlcihzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20pOwojIDYgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3RydWN0IHNpZ3F1ZXVlIHsK
ICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKm5leHQ7CiAgICAgICAgc2lnaW5mb190IGluZm87Cn07
CgpzdHJ1Y3Qgc2lncGVuZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpoZWFkLCAqKnRh
aWw7CiAgICAgICAgc2lnc2V0X3Qgc2lnbmFsOwp9OwojIDEwOCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNpZ29yc2V0cyhzaWdzZXRf
dCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxv
bmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAo
aSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBh
LT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAg
PSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsg
YjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2ln
WzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyBy
LT5zaWdbNCppKzNdID0gKChhMykgfCAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsg
Y2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5z
aWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBi
LT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsx
XSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyBicmVhazsg
Y2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5z
aWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChi
MCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBh
LT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8
IChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2FuZHNldHMoc2lnc2V0
X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBs
b25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3Ig
KGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0g
YS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIw
ID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07
IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNp
Z1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsg
ci0+c2lnWzQqaSszXSA9ICgoYTMpICYgKGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7
IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+
c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0g
Yi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0Kmkr
MV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsgYnJlYWs7
IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+
c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAo
YjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0g
YS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkg
JiAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWduYW5kc2V0cyhzaWdz
ZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVk
IGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZv
ciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEg
PSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsg
YjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsy
XTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHIt
PnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihi
MikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiB+KGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikg
JSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEy
ID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07
IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5z
aWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIp
KTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07
IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0g
KChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgYnJlYWs7IGNh
c2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0Kmkr
MF0gPSAoKGEwKSAmIH4oYjApKTsgYnJlYWs7IH0gfQojIDE0MCAiL3Vzci9zcmMvbGludXgvaW5j
bHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNpZ25vdHNldChzaWdzZXRf
dCAqc2V0KSB7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyAr
K2kpIHsgc2V0LT5zaWdbNCppKzBdID0gKH4oc2V0LT5zaWdbNCppKzBdKSk7IHNldC0+c2lnWzQq
aSsxXSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBzZXQtPnNpZ1s0KmkrMl0gPSAofihzZXQtPnNp
Z1s0KmkrMl0pKTsgc2V0LT5zaWdbNCppKzNdID0gKH4oc2V0LT5zaWdbNCppKzNdKSk7IH0gc3dp
dGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogc2V0LT5zaWdbNCppKzJdID0gKH4oc2V0LT5z
aWdbNCppKzJdKSk7IGNhc2UgMjogc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFd
KSk7IGNhc2UgMTogc2V0LT5zaWdbNCppKzBdID0gKH4oc2V0LT5zaWdbNCppKzBdKSk7IH0gfQoK
CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2VtcHR5c2V0KHNpZ3NldF90ICpzZXQpCnsKICAgICAg
ICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihz
aWdzZXRfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoc2V0KSksKCgweDAx
MDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19j
b25zdGFudF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw
KSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVv
ZihzaWdzZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkpLCgoKDApKSksKCgoc2l6
ZW9mKHNpZ3NldF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoc2V0KSksKCgwKSksKChzaXpl
b2Yoc2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6
IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gMDsKICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2ZpbGxz
ZXQoc2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgtMSkgPyAoX19i
dWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihzaWdzZXRfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRf
Y291bnRfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkp
LCgoc2l6ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzZXQpKSwoKDB4
MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6
IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2Vu
ZXJpYygoKChzZXQpKSksKCgoLTEpKSksKCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiBfX21lbXNl
dF9nZW5lcmljKCgoc2V0KSksKCgtMSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkpOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IC0xOwogICAgICAg
IGNhc2UgMTogc2V0LT5zaWdbMF0gPSAtMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KfQoKZXh0ZXJuIGNoYXIgKiByZW5kZXJfc2lnc2V0X3Qoc2lnc2V0X3QgKnNldCwgY2hhciAq
YnVmZmVyKTsKCgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2FkZHNldG1hc2soc2lnc2V0X3QgKnNl
dCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gfD0gbWFzazsKfQoK
c3RhdGljIGlubGluZSB2b2lkIHNpZ2RlbHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQg
bG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gJj0gfm1hc2s7Cn0KCnN0YXRpYyBpbmxp
bmUgaW50IHNpZ3Rlc3RzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK
ewogICAgICAgIHJldHVybiAoc2V0LT5zaWdbMF0gJiBtYXNrKSAhPSAwOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgc2lnaW5pdHNldChzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsK
ICAgICAgICBzZXQtPnNpZ1swXSA9IG1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDAp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8g
X19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAx
MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkp
IDogX19jb25zdGFudF9jX21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1
bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1z
ZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdbMV0pKSksKCgoMCkpKSwoKChzaXplb2YobG9uZykqKCg2
NCAvIDMyKS0xKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2lnWzFdKSksKCgwKSks
KChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkpOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IDA7CiAgICAgICAgY2FzZSAxOiA7CiAgICAg
ICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnaW5pdHNldGludihzaWdzZXRfdCAqc2V0LCB1
bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSA9IH5tYXNrOwogICAgICAg
IHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChf
X2J1aWx0aW5fY29uc3RhbnRfcCgtMSkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihs
b25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZz
ZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVv
Zihsb25nKSooKDY0IC8gMzIpLTEpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKCZzZXQtPnNp
Z1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihsb25n
KSooKDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcp
KigoNjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoJnNldC0+c2lnWzFdKSkpLCgo
KC0xKSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVy
aWMoKCgmc2V0LT5zaWdbMV0pKSwoKC0xKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkp
KSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9
IC0xOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQg
aW5pdF9zaWdwZW5kaW5nKHN0cnVjdCBzaWdwZW5kaW5nICpzaWcpCnsKICAgICAgICBzaWdlbXB0
eXNldCgmc2lnLT5zaWduYWwpOwogICAgICAgIHNpZy0+aGVhZCA9ICgodm9pZCAqKTApOwogICAg
ICAgIHNpZy0+dGFpbCA9ICZzaWctPmhlYWQ7Cn0KCmV4dGVybiBsb25nIGRvX3NpZ3BlbmRpbmco
dm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZWN1cmViaXRz
LmgiIDEKCgoKCgpleHRlcm4gdW5zaWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGlu
dXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s
aW51eC9mc19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAgYXRvbWlj
X3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7CiAgICAg
ICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAyMCAiL3Vz
ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQgZXhpdF9m
cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRyb290KHZvaWQp
OwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAq
ZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAq
ZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAgICAgc3RydWN0
IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICB3cml0ZV9sb2NrKCZmcy0+bG9jayk7CiAg
ICAgICAgb2xkX3Jvb3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1udCA9IGZzLT5yb290
bW50OwogICAgICAgIGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnJvb3Qg
PSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgw
MTAwMDAwMCIgIiwlMCI6Ij1tIiAoKCZmcy0+bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CiAg
ICAgICAgaWYgKG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9yb290KTsKICAg
ICAgICAgICAgICAgIG1udHB1dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRfZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0
cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAg
ICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRf
cHdkbW50OwogICAgICAgIHdyaXRlX2xvY2soJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0g
ZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdk
bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAg
ICBhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQiICIweDAxMDAwMDAwIiAiLCUwIjoiPW0iICgo
JmZzLT5sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICBpZiAob2xkX3B3ZCkgewog
ICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRf
cHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3RydWN0KHN0
cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0
ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKc3Ry
dWN0IGV4ZWNfZG9tYWluOwojIDU5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NiAiL3Vzci9zcmMvbGludXgv
aW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7
CmV4dGVybiBpbnQgbGFzdF9waWQ7CgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51
eC9wYXJhbS5oIiAxCiMgODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQojIDIxICIv
dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2Ugewog
ICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1
X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAg
ICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcg
cnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7
CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAg
ICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBsb25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1
X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7
Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7Cn07CiMgNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1
ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yZXNv
dXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIg
MgojIDgzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxMjggIi91
c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsK
ICAgICAgICBpbnQgc2NoZWRfcHJpb3JpdHk7Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKIyAxNDQg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHJ3bG9ja190IHRh
c2tsaXN0X2xvY2s7CmV4dGVybiBzcGlubG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlu
bG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJu
IHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRl
cm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRh
dGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50
IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVkdWxlX3RpbWVvdXQoc2lnbmVkIGxvbmcg
dGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIHZvaWQgc2NoZWR1bGUodm9pZCk7CgpleHRlcm4gaW50IHNjaGVkdWxlX3Rhc2so
c3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNr
cyh2b2lkKTsKZXh0ZXJuIGludCBzdGFydF9jb250ZXh0X3RocmVhZCh2b2lkKTsKZXh0ZXJuIGlu
dCBjdXJyZW50X2lzX2tldmVudGQodm9pZCk7CgoKCgoKCgpzdHJ1Y3QgbmFtZXNwYWNlOwoKCgpz
dHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xv
Y2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNl
dDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAg
ICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAg
ICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0
OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwOCAiL3Vzci9zcmMv
bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG1heF9tYXBfY291bnQ7Cgpz
dHJ1Y3QgbW1fc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwOwog
ICAgICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBt
bWFwX2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAgICAgIGF0b21pY190IG1tX3VzZXJz
OwogICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAgIGludCBtYXBfY291bnQ7CiAgICAg
ICAgc3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAgICAgICBzcGlubG9ja190IHBhZ2Vf
dGFibGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbWxpc3Q7CgoKCgogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRh
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5kLCBlbnZfc3RhcnQsIGVudl9lbmQ7
CiAgICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3ZtLCBsb2NrZWRfdm07CiAgICAgICAg
dW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdm1fbWFz
azsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVzczsKCiAgICAgICAgdW5zaWduZWQg
ZHVtcGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBjb250ZXh0Owp9OwoKZXh0ZXJuIGlu
dCBtbWxpc3RfbnI7CiMgMjUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
CnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBz
dHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7
Cn07CiMgMjY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1
c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3VudDsKICAgICAgICBhdG9taWNfdCBw
cm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1Y3QgdXNlcl9z
dHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3QgdWlkOwp9OwoKCgoKCgpleHRlcm4g
c3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3QgewoKCgog
ICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
ICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsK
CgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNfZG9tYWluOwogICAgICAgIHZvbGF0
aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlOwoKICAg
ICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBsb25nIGNvdW50ZXI7CiAgICAgICAg
bG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAgIHN0cnVjdCBt
bV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBwcm9jZXNzb3I7CiMgMzIyICIvdXNyL3NyYy9saW51
eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVzX3J1bm5h
YmxlLCBjcHVzX2FsbG93ZWQ7CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVlcF90aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFzazsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICph
Y3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRlciwgbnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBz
dHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAgICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9z
aWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWduYWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
cGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9leGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwog
ICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlkX3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBp
ZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdpZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoK
CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwg
KnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3Vw
OwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3Ry
dWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJldjsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
aXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAg
ICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBsb25nIHBlcl9jcHVf
dXRpbWVbMzJdLCBwZXJfY3B1X3N0aW1lWzMyXTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5f
Zmx0LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNtYWpfZmx0LCBjbnN3YXA7CiAgICAgICAg
aW50IHN3YXBwYWJsZToxOwoKICAgICAgICB1aWRfdCB1aWQsZXVpZCxzdWlkLGZzdWlkOwogICAg
ICAgIGdpZF90IGdpZCxlZ2lkLHNnaWQsZnNnaWQ7CiAgICAgICAgaW50IG5ncm91cHM7CiAgICAg
ICAgZ2lkX3QgZ3JvdXBzWzMyXTsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwg
Y2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkOwogICAgICAgIGludCBrZWVwX2NhcGFiaWxp
dGllczoxOwogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKCiAgICAgICAgc3RydWN0
IHJsaW1pdCBybGltWzExXTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1c2VkX21hdGg7CiAgICAg
ICAgY2hhciBjb21tWzE2XTsKCiAgICAgICAgaW50IGxpbmtfY291bnQsIHRvdGFsX2xpbmtfY291
bnQ7CiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eTsKICAgICAgICB1bnNpZ25lZCBpbnQg
bG9ja3M7CgogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqc2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qg
c2VtX3F1ZXVlICpzZW1zbGVlcGluZzsKCiAgICAgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhy
ZWFkOwoKICAgICAgICBzdHJ1Y3QgZnNfc3RydWN0ICpmczsKCiAgICAgICAgc3RydWN0IGZpbGVz
X3N0cnVjdCAqZmlsZXM7CgogICAgICAgIHN0cnVjdCBuYW1lc3BhY2UgKm5hbWVzcGFjZTsKCiAg
ICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAgICAgICAgc3RydWN0IHNpZ25hbF9zdHJ1
Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tlZDsKICAgICAgICBzdHJ1Y3Qgc2lncGVu
ZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHNhc19zc19zcDsKICAgICAgICBz
aXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpOwog
ICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAgICAgc2lnc2V0X3QgKm5vdGlmaWVyX21h
c2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7CiAgICAgICAgdTMyIHNlbGZfZXhlY19p
ZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2NrOwoKCiAgICAgICAgdm9pZCAqam91cm5h
bF9pbmZvOwp9OwojIDQ2MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgog
X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3lpZWxkKHZvaWQpOwoK
CgoKCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVmYXVsdF9leGVjX2RvbWFpbjsKIyA1MjEg
Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5pb24gdGFza191bmlvbiB7
CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dGFja1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRh
c2tfdW5pb24gaW5pdF90YXNrX3VuaW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9t
bTsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaW5pdF90YXNrc1szMl07CgoKCmV4dGVybiBz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hbKDQwOTYgPj4gMildOwoKCgpzdGF0aWMgaW5saW5l
IHZvaWQgaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3RydWN0IHRh
c2tfc3RydWN0ICoqaHRhYmxlID0gJnBpZGhhc2hbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlk
KSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0g
Kmh0YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhh
c2hfcHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAg
IHAtPnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hf
cGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkK
ICAgICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhh
c2hfcHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0K
CnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBw
aWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hb
KCgoKHBpZCkgPj4gOCkgXiAocGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBm
b3IocCA9ICpodGFibGU7IHAgJiYgcC0+cGlkICE9IHBpZDsgcCA9IHAtPnBpZGhhc2hfbmV4dCkK
ICAgICAgICAgICAgICAgIDsKCiAgICAgICAgcmV0dXJuIHA7Cn0KCgoKc3RhdGljIGlubGluZSB2
b2lkIHRhc2tfc2V0X2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgaW50IGNw
dSkKewogICAgICAgIHRzay0+cHJvY2Vzc29yID0gY3B1OwogICAgICAgIHRzay0+Y3B1c19ydW5u
YWJsZSA9IDFVTCA8PCBjcHU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3JlbGVhc2VfY3B1
KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiAgICAgICAgdHNrLT5jcHVzX3J1bm5hYmxlID0g
fjBVTDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQodWlkX3QpOwpl
eHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CgojIDEgIi91c3Ivc3Jj
L2xpbnV4L2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7Cgpz
dGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqIGdldF9jdXJyZW50KHZvaWQpCnsKICAg
ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJlbnQ7CiAgICAgICAgX19hc21fXygiYW5kbCAl
JWVzcCwlMDsgIjoiPXIiIChjdXJyZW50KSA6ICIwIiAofjgxOTFVTCkpOwogICAgICAgIHJldHVy
biBjdXJyZW50OwogfQojIDU4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1lcl9uZXh0Owpl
eHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVjdCBw
dF9yZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5z
aWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoK
ZXh0ZXJuIHZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQg
bW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9f
d2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50
IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uKHdh
aXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBs
b25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNpZ25lZCBsb25nIHRp
bWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGludGVycnVw
dGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KHdhaXRf
cXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KiB0c2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MTUgIi91c3Ivc3JjL2xpbnV4
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n
IHN5c193YWl0NChwaWRfdCBwaWQsdW5zaWduZWQgaW50ICogc3RhdF9hZGRyLCBpbnQgb3B0aW9u
cywgc3RydWN0IHJ1c2FnZSAqIHJ1KTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcChnaWRfdCk7CmV4
dGVybiBpbnQgaW5fZWdyb3VwX3AoZ2lkX3QpOwoKZXh0ZXJuIHZvaWQgcHJvY19jYWNoZXNfaW5p
dCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFscyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbF9oYW5kbGVycyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIHNpZ19leGl0KGludCwgaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqKTsKZXh0ZXJu
IGludCBkZXF1ZXVlX3NpZ25hbChzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKik7CmV4dGVybiB2b2lk
IGJsb2NrX2FsbF9zaWduYWxzKGludCAoKm5vdGlmaWVyKSh2b2lkICpwcml2KSwgdm9pZCAqcHJp
diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnc2V0X3QgKm1hc2spOwpleHRlcm4g
dm9pZCB1bmJsb2NrX2FsbF9zaWduYWxzKHZvaWQpOwpleHRlcm4gaW50IHNlbmRfc2lnX2luZm8o
aW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQg
Zm9yY2Vfc2lnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Kik7CmV4dGVybiBpbnQga2lsbF9wZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
OwpleHRlcm4gaW50IGtpbGxfc2xfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsK
ZXh0ZXJuIGludCBraWxsX3Byb2NfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsK
ZXh0ZXJuIHZvaWQgbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0
ZXJuIHZvaWQgZG9fbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0
ZXJuIHZvaWQgZm9yY2Vfc2lnKGludCwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50
IHNlbmRfc2lnKGludCwgc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiBpbnQga2ls
bF9wZyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGtpbGxfc2wocGlkX3QsIGludCwgaW50
KTsKZXh0ZXJuIGludCBraWxsX3Byb2MocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBkb19z
aWdhY3Rpb24oaW50LCBjb25zdCBzdHJ1Y3Qga19zaWdhY3Rpb24gKiwgc3RydWN0IGtfc2lnYWN0
aW9uICopOwpleHRlcm4gaW50IGRvX3NpZ2FsdHN0YWNrKGNvbnN0IHN0YWNrX3QgKiwgc3RhY2tf
dCAqLCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgaW50IHNpZ25hbF9wZW5kaW5nKHN0
cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+c2lncGVuZGluZyAhPSAw
KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGhhc19wZW5kaW5nX3NpZ25hbHMoc2lnc2V0X3Qg
KnNpZ25hbCwgc2lnc2V0X3QgKmJsb2NrZWQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWR5
OwogICAgICAgIGxvbmcgaTsKCiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgZm9yIChpID0gKDY0IC8gMzIpLCByZWFkeSA9IDA7IC0t
aSA+PSAwIDspCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnW2ld
ICZ+IGJsb2NrZWQtPnNpZ1tpXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
IDQ6IHJlYWR5ID0gc2lnbmFsLT5zaWdbM10gJn4gYmxvY2tlZC0+c2lnWzNdOwogICAgICAgICAg
ICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMl0gJn4gYmxvY2tlZC0+c2lnWzJdOwogICAgICAg
ICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAg
ICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjogcmVhZHkgPSBzaWduYWwtPnNp
Z1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwt
PnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgY2FzZSAxOiByZWFkeSA9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHJlYWR5ICE9IDA7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZv
aWQgcmVjYWxjX3NpZ3BlbmRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICp0KQp7CiAgICAgICAgdC0+
c2lncGVuZGluZyA9IGhhc19wZW5kaW5nX3NpZ25hbHMoJnQtPnBlbmRpbmcuc2lnbmFsLCAmdC0+
YmxvY2tlZCk7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQgb25fc2lnX3N0YWNrKHVuc2lnbmVkIGxv
bmcgc3ApCnsKICAgICAgICByZXR1cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NwIDwg
Z2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUpOwp9CgpzdGF0aWMgaW5saW5lIGludCBzYXNfc3Nf
ZmxhZ3ModW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoZ2V0X2N1cnJlbnQoKS0+
c2FzX3NzX3NpemUgPT0gMCA/IDIKICAgICAgICAgICAgICAgIDogb25fc2lnX3N0YWNrKHNwKSA/
IDEgOiAwKTsKfQoKZXh0ZXJuIGludCByZXF1ZXN0X2lycSh1bnNpZ25lZCBpbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVn
cyAqKSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICos
IHZvaWQgKik7CmV4dGVybiB2b2lkIGZyZWVfaXJxKHVuc2lnbmVkIGludCwgdm9pZCAqKTsKIyA3
MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RhdGljIGlubGluZSBp
bnQgc3VzZXIodm9pZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAw
MCA/ICgxIDw8ICgwKSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAm
JiBnZXRfY3VycmVudCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50
KCktPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7
CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAm
IDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCkt
PmZzdWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4
MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIDA7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGNhcGFibGUoaW50IGNhcCkKewoKICAg
ICAgICBpZiAoKChnZXRfY3VycmVudCgpLT5jYXBfZWZmZWN0aXZlKSAmICgxIDw8IChjYXApKSkp
CgoKCiAgICAgICAgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgw
MDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gMDsKfQoKCgoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbV9hbGxvYyh2b2lkKTsKCmV4
dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogc3RhcnRfbGF6eV90bGIodm9pZCk7CmV4dGVybiB2b2lk
IGVuZF9sYXp5X3RsYihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CgoKZXh0ZXJuIGlubGluZSB2b2lk
IF9fbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSkKewogICAg
ICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fY291bnQpKQogICAgICAgICAgICAg
ICAgX19tbWRyb3AobW0pOwp9CgoKZXh0ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAq
KTsKCmV4dGVybiB2b2lkIG1tX3JlbGVhc2Uodm9pZCk7CgoKCgpleHRlcm4gc3RydWN0IGZpbGUg
KiogYWxsb2NfZmRfYXJyYXkoaW50KTsKZXh0ZXJuIGludCBleHBhbmRfZmRfYXJyYXkoc3RydWN0
IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2ZkX2FycmF5KHN0cnVj
dCBmaWxlICoqLCBpbnQpOwoKZXh0ZXJuIGZkX3NldCAqYWxsb2NfZmRzZXQoaW50KTsKZXh0ZXJu
IGludCBleHBhbmRfZmRzZXQoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4g
dm9pZCBmcmVlX2Zkc2V0KGZkX3NldCAqLCBpbnQpOwoKZXh0ZXJuIGludCBjb3B5X3RocmVhZChp
bnQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCB0
YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGhyZWFk
KHZvaWQpOwpleHRlcm4gdm9pZCBleGl0X3RocmVhZCh2b2lkKTsKCmV4dGVybiB2b2lkIGV4aXRf
bW0oc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0
YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVj
dCAqKTsKCmV4dGVybiB2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGRh
ZW1vbml6ZSh2b2lkKTsKCmV4dGVybiBpbnQgZG9fZXhlY3ZlKGNoYXIgKiwgY2hhciAqKiwgY2hh
ciAqKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZG9fZm9yayh1bnNpZ25lZCBsb25n
LCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy
biB2b2lkIGFkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3Qg
KiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFkZF93YWl0
X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2Fp
dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9x
dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1
dGVfXygocmVncGFybSgzKSkpOwojIDg5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z
Y2hlZC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tf
c3RydWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1l
ID0gamlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1
bl9saXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9y
dW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9s
aXN0Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3By
b2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVl
dWUocCkpCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Zyg5MDgpOwogICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgd3JpdGVfbG9jaygm
dGFza2xpc3RfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVhZHMtLTsKICAgICAg
ICB1bmhhc2hfcGlkKHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9
IChwKS0+cHJldl90YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0gKHApLT5uZXh0X3Rh
c2s7IGlmICgocCktPnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9IChwKS0+cF95c3B0
cjsgaWYgKChwKS0+cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0gKHApLT5wX29zcHRy
OyBlbHNlIChwKS0+cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0gd2hpbGUgKDApOwog
ICAgICAgIGxpc3RfZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRvIHsgYXNtIHZvbGF0
aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1tIiAoKCZ0YXNrbGlzdF9s
b2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDog
OiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19sb2Nr
KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHNwaW5fbG9jaygmcC0+YWxsb2NfbG9j
ayk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnApCnsKICAgICAgICBzcGluX3VubG9jaygmcC0+YWxsb2NfbG9jayk7Cn0KCgpzdGF0aWMgaW5s
aW5lIGNoYXIgKiBkX3BhdGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQg
KnZmc21udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBi
dWZsZW4pCnsKICAgICAgICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290
bW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgcmVhZF9sb2NrKCZnZXRf
Y3VycmVudCgpLT5mcy0+bG9jayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChnZXRfY3VycmVu
dCgpLT5mcy0+cm9vdG1udCk7CiAgICAgICAgcm9vdCA9IGRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMt
PnJvb3QpOwogICAgICAgIGFzbSB2b2xhdGlsZSgibG9jayA7IGluY2wgJTAiIDoiPW0iICgoJmdl
dF9jdXJyZW50KCktPmZzLT5sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICBzcGlu
X2xvY2soJmRjYWNoZV9sb2NrKTsKICAgICAgICByZXMgPSBfX2RfcGF0aChkZW50cnksIHZmc21u
dCwgcm9vdCwgcm9vdG1udCwgYnVmLCBidWZsZW4pOwogICAgICAgIHNwaW5fdW5sb2NrKCZkY2Fj
aGVfbG9jayk7CiAgICAgICAgZHB1dChyb290KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAg
ICAgICAgcmV0dXJuIHJlczsKfQojIDE3ICJzZW1hcGhvcmUuYyIgMgojIDUwICJzZW1hcGhvcmUu
YyIKdm9pZCBfX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fd2FrZV91cCgo
JnNlbS0+d2FpdCksMiB8IDEsIDEpOwp9CgpzdGF0aWMgc3BpbmxvY2tfdCBzZW1hcGhvcmVfbG9j
ayA9IChzcGlubG9ja190KSB7IDEgfTsKCnZvaWQgX19kb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBz
ZW0pCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGdldF9jdXJyZW50KCk7CiAg
ICAgICAgd2FpdF9xdWV1ZV90IHdhaXQgPSB7IHRhc2s6IHRzaywgdGFza19saXN0OiB7ICgodm9p
ZCAqKTApLCAoKHZvaWQgKikwKSB9LCB9OwogICAgICAgIHRzay0+c3RhdGUgPSAyOwogICAgICAg
IGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSgmc2VtLT53YWl0LCAmd2FpdCk7CgogICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZz
ZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIHNlbS0+c2xlZXBlcnMrKzsKICAg
ICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpbnQgc2xlZXBlcnMgPSBzZW0tPnNsZWVw
ZXJzOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAoIWF0b21pY19hZGRfbmVnYXRpdmUoc2xlZXBl
cnMgLSAxLCAmc2VtLT5jb3VudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VtLT5zbGVl
cGVycyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgc2VtLT5zbGVlcGVycyA9IDE7CiAgICAgICAgICAgICAgICBkbyB7
IHNwaW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGki
OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgIHNjaGVkdWxlKCk7
CiAgICAgICAgICAgICAgICB0c2stPnN0YXRlID0gMjsKICAgICAgICAgICAgICAgIGRvIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZzZW1hcGhv
cmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBkbyB7IHNwaW5fdW5sb2Nr
KCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5
Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHJlbW92ZV93YWl0X3F1ZXVlKCZzZW0tPndhaXQsICZ3
YWl0KTsKICAgICAgICB0c2stPnN0YXRlID0gMDsKICAgICAgICBfX3dha2VfdXAoKCZzZW0tPndh
aXQpLDIgfCAxLCAxKTsKfQoKaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhv
cmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAgICAgICBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKnRzayA9IGdldF9jdXJyZW50KCk7CiAgICAgICAgd2FpdF9xdWV1ZV90IHdhaXQgPSB7
IHRhc2s6IHRzaywgdGFza19saXN0OiB7ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSB9LCB9Owog
ICAgICAgIHRzay0+c3RhdGUgPSAxOwogICAgICAgIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSgm
c2VtLT53YWl0LCAmd2FpdCk7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs
aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZzZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDAp
OwogICAgICAgIHNlbS0+c2xlZXBlcnMgKys7CiAgICAgICAgZm9yICg7OykgewogICAgICAgICAg
ICAgICAgaW50IHNsZWVwZXJzID0gc2VtLT5zbGVlcGVyczsKIyAxMTAgInNlbWFwaG9yZS5jIgog
ICAgICAgICAgICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nKGdldF9jdXJyZW50KCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IC00OwogICAgICAgICAgICAgICAgICAgICAgICBz
ZW0tPnNsZWVwZXJzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljX2FkZChzbGVl
cGVycywgJnNlbS0+Y291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgIH0KCgoKCgoKCiAgICAgICAgICAgICAgICBpZiAoIWF0b21pY19hZGRfbmVnYXRp
dmUoc2xlZXBlcnMgLSAxLCAmc2VtLT5jb3VudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
c2VtLT5zbGVlcGVycyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgc2VtLT5zbGVlcGVycyA9IDE7CiAgICAgICAgICAg
ICAgICBkbyB7IHNwaW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGls
ZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgIHNj
aGVkdWxlKCk7CiAgICAgICAgICAgICAgICB0c2stPnN0YXRlID0gMTsKICAgICAgICAgICAgICAg
IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2Nr
KCZzZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBkbyB7IHNw
aW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6
IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHRzay0+c3RhdGUgPSAwOwogICAgICAg
IHJlbW92ZV93YWl0X3F1ZXVlKCZzZW0tPndhaXQsICZ3YWl0KTsKICAgICAgICBfX3dha2VfdXAo
KCZzZW0tPndhaXQpLDIgfCAxLCAxKTsKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CiMgMTQ5ICJz
ZW1hcGhvcmUuYyIKaW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsK
ICAgICAgICBpbnQgc2xlZXBlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAg
ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n
IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJnNlbWFwaG9yZV9sb2NrKTsgfSB3aGls
ZSAoMCk7CiAgICAgICAgc2xlZXBlcnMgPSBzZW0tPnNsZWVwZXJzICsgMTsKICAgICAgICBzZW0t
PnNsZWVwZXJzID0gMDsKCgoKCgogICAgICAgIGlmICghYXRvbWljX2FkZF9uZWdhdGl2ZShzbGVl
cGVycywgJnNlbS0+Y291bnQpKQogICAgICAgICAgICAgICAgX193YWtlX3VwKCgmc2VtLT53YWl0
KSwyIHwgMSwgMSk7CgogICAgICAgIGRvIHsgc3Bpbl91bmxvY2soJnNlbWFwaG9yZV9sb2NrKTsg
X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1l
bW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gMTsKfQojIDE4MCAic2Vt
YXBob3JlLmMiCmFzbSgKIi50ZXh0XG4iCiIuYWxpZ24gNFxuIgoiLmdsb2JsIF9fZG93bl9mYWls
ZWRcbiIKIl9fZG93bl9mYWlsZWQ6XG5cdCIKCgoKCiAgICAgICAgInB1c2hsICVlYXhcblx0Igog
ICAgICAgICJwdXNobCAlZWR4XG5cdCIKICAgICAgICAicHVzaGwgJWVjeFxuXHQiCiAgICAgICAg
ImNhbGwgX19kb3duXG5cdCIKICAgICAgICAicG9wbCAlZWN4XG5cdCIKICAgICAgICAicG9wbCAl
ZWR4XG5cdCIKICAgICAgICAicG9wbCAlZWF4XG5cdCIKCgoKCiAgICAgICAgInJldCIKKTsKCmFz
bSgKIi50ZXh0XG4iCiIuYWxpZ24gNFxuIgoiLmdsb2JsIF9fZG93bl9mYWlsZWRfaW50ZXJydXB0
aWJsZVxuIgoiX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlOlxuXHQiCgoKCgogICAgICAgICJw
dXNobCAlZWR4XG5cdCIKICAgICAgICAicHVzaGwgJWVjeFxuXHQiCiAgICAgICAgImNhbGwgX19k
b3duX2ludGVycnVwdGlibGVcblx0IgogICAgICAgICJwb3BsICVlY3hcblx0IgogICAgICAgICJw
b3BsICVlZHhcblx0IgoKCgoKICAgICAgICAicmV0IgopOwoKYXNtKAoiLnRleHRcbiIKIi5hbGln
biA0XG4iCiIuZ2xvYmwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG4iCiJfX2Rvd25fZmFpbGVkX3Ry
eWxvY2s6XG5cdCIKCgoKCiAgICAgICAgInB1c2hsICVlZHhcblx0IgogICAgICAgICJwdXNobCAl
ZWN4XG5cdCIKICAgICAgICAiY2FsbCBfX2Rvd25fdHJ5bG9ja1xuXHQiCiAgICAgICAgInBvcGwg
JWVjeFxuXHQiCiAgICAgICAgInBvcGwgJWVkeFxuXHQiCgoKCgogICAgICAgICJyZXQiCik7Cgph
c20oCiIudGV4dFxuIgoiLmFsaWduIDRcbiIKIi5nbG9ibCBfX3VwX3dha2V1cFxuIgoiX191cF93
YWtldXA6XG5cdCIKICAgICAgICAicHVzaGwgJWVheFxuXHQiCiAgICAgICAgInB1c2hsICVlZHhc
blx0IgogICAgICAgICJwdXNobCAlZWN4XG5cdCIKICAgICAgICAiY2FsbCBfX3VwXG5cdCIKICAg
ICAgICAicG9wbCAlZWN4XG5cdCIKICAgICAgICAicG9wbCAlZWR4XG5cdCIKICAgICAgICAicG9w
bCAlZWF4XG5cdCIKICAgICAgICAicmV0IgopOwoKCgoKCmFzbSgKIiIKLmFsaWduIDQKLmdsb2Js
IF9fd3JpdGVfbG9ja19mYWlsZWQKX193cml0ZV9sb2NrX2ZhaWxlZDoKICAgICAgICAiIExPQ0sg
ImFkZGwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQoxOiByZXA7IG5vcAogICAgICAgIGNt
cGwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQogICAgICAgIGpuZSAxYgoKICAgICAgICAi
IExPQ0sgInN1YmwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQogICAgICAgIGpueiBfX3dy
aXRlX2xvY2tfZmFpbGVkCiAgICAgICAgcmV0CgoKLmFsaWduIDQKLmdsb2JsIF9fcmVhZF9sb2Nr
X2ZhaWxlZApfX3JlYWRfbG9ja19mYWlsZWQ6CiAgICAgICAgbG9jayA7IGluY2wgKCVlYXgpCjE6
IHJlcDsgbm9wCiAgICAgICAgY21wbCAkMSwoJWVheCkKICAgICAgICBqcyAxYgoKICAgICAgICBs
b2NrIDsgZGVjbCAoJWVheCkKICAgICAgICBqcyBfX3JlYWRfbG9ja19mYWlsZWQKICAgICAgICBy
ZXQKIiIKKTsK


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