public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2002-08-12 4:36 aloeff
0 siblings, 0 replies; 3+ messages in thread
From: aloeff @ 2002-08-12 4:36 UTC (permalink / raw)
To: gcc-gnats
>Number: 7577
>Category: c
>Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Mon Aug 12 02:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Andreas Loeffler
>Release: gcc version 3.1
>Organization:
>Environment:
powerpc-linux cross compiler
Configured with: ../configure --host=i586-pc-linux-gnu --target=powerpc-linux --prefix=/opt/fsp/i586-pc-linux-gnu/local --enable-shared --enable-languages=c,c++,f77 --with-headers=/opt/fsp/powerpc-linux/include --with-libs=/opt/fsp/powerpc-linux/lib --with-cpu=403 --without-fp
Thread model: single
>Description:
while trying to compile and link the linux kernel we get
a lot of messeages like the lines below:
arch/ppc/kernel/kernel.o(.debug+0x4e678d): undefined reference to `.L_E7576'
arch/ppc/kernel/kernel.o(.debug+0x4e67a3): undefined reference to `.L_E7577'
arch/ppc/kernel/kernel.o(.debug+0x4e67b9): undefined reference to `.L_E7580'
we see this if we compile with -gdwarf+
we then tried to figure out where those .L_E* symbols came from
obviously they were generated by the compiler
our testcase is derived from one of the kernel source files
and it looks like that the __inline__ is causing the problem
we compiled the code with:
powerpc-linux-gcc -D__KERNEL__ -Wall -O2 -gdwarf+ -mcpu=403 -Wa,-m403 -save-temps -c bla.c
and then grep'ed for the symbols: powerpc-linux-objdump -Sawx bla.o | grep L_E
00000000 *UND* 00000000 .L_E9269
00000000 *UND* 00000000 .L_E9268
00000000 *UND* 00000000 .L_E9271
00000000 *UND* 00000000 .L_E9272
the symbols are gone without the __inline__
or using -gdwarf-2 option instead but that doesn't help us
we need dwarf+ for our debugger
>How-To-Repeat:
powerpc-linux-gcc -D__KERNEL__ -Wall -O2 -gdwarf+ -mcpu=403 -Wa,-m403 -save-temps -c bla.c
powerpc-linux-objdump -Sawx bla.o | grep L_E
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bla.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bla.c"
LyoqCiAqIEFuZHJlYXMgTG9lZmZsZXIgYW5kIEkgdHJpZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0
aGUgLkxfRSogc3ltYm9scyBjYW1lCiAqIGZyb20uIE9idmlvdXNseSB0aGV5IHdoZXJlIGdlbmVy
YXRlZCBieSB0aGUgY29tcGlsZXIgaW4gZnVuY3Rpb25zIHdpdGgKICogbWFnaWNhbCByZXBsYWNl
bWVudHMgbGlrZSB0aGUgb25lIGluIHRoZSBjb2RlIGJlbG93IC4uLiBTdXByaXNpbmdseSBpbiB0
aGlzCiAqIGNhc2UgdGhlIGNvZGUgY291bGQgbG9vayBtdWNoIHNpbXBsZXIuCiAqIHdpdGhvdXQg
X19pbmxpbmVfXyB0aGUgY29kZSBjb21waWxlcyB3aXRob3V0IHRoZSBMX0Ugc3ltYm9sCiAqIAog
KiBwb3dlcnBjLWxpbnV4LWdjYyAtRF9fS0VSTkVMX18gLVdhbGwgLU8yIC1nZHdhcmYrIC1tY3B1
PTQwMyBcCiAqICAgICAgICAgICAgICAgICAgIC1XYSwtbTQwMyAtYyBibGEuYwogKiBwb3dlcnBj
LWxpbnV4LW9iamR1bXAgLVNhd3ggYmxhLm8gfCBncmVwIExfRQogKi8KCgojaW5jbHVkZSA8bGlu
dXgvaWRlLmg+CgoKCi8qIGNhc3RzIGFyZSBuZWNlc3NhcnkgZm9yIGNvbnN0YW50cywgYmVjYXVz
ZSB3ZSBuZXZlciBrbm93IGhvdyBmb3Igc3VyZQogKiBob3cgVS9VTC9VTEwgbWFwIHRvIF9fdTE2
LCBfX3UzMiwgX191NjQuIEF0IGxlYXN0IG5vdCBpbiBhIHBvcnRhYmxlIHdheS4KICovCiNkZWZp
bmUgbXlfX19zd2FiMTYoeCkgXAooeyBcCiAgICAgICAgX191MTYgX194ID0gKHgpOyBcCiAgICAg
ICAgKChfX3UxNikoIFwKICAgICAgICAgICAgICAgICgoKF9fdTE2KShfX3gpICYgKF9fdTE2KTB4
MDBmZlUpIDw8IDgpIHwgXAogICAgICAgICAgICAgICAgKCgoX191MTYpKF9feCkgJiAoX191MTYp
MHhmZjAwVSkgPj4gOCkgKSk7IFwKfSkKCiNkZWZpbmUgbXlfX3N3YWIxNih4KSBcCiAgICAoX19i
dWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KSh4KSkgPyBcCiAgICAgbXlfX19zd2FiMTYoKHgpKSA6
IFwKICAgICBteV9fZnN3YWIxNigoeCkpKQoKI2RlZmluZSBteV9fYXJjaF9fc3dhYjE2KHgpICh7
IF9fdTE2IF9fdG1wID0gKHgpIDsgbXlfX19zd2FiMTYoX190bXApOyB9KQoKI2lmIDEKZXh0ZXJu
IF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IG15X19mc3dhYjE2KF9fdTE2IHgpCiNlbHNlCmV4
dGVybiBfX2NvbnN0X18gX191MTYgbXlfX2Zzd2FiMTYoX191MTYgeCkKI2VuZGlmCnsKICAgICAg
ICByZXR1cm4gbXlfX2FyY2hfX3N3YWIxNih4KTsKfQoKCnVuc2lnbmVkIHNob3J0IGJsYWJsYWJs
YShzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpCnsKICAgICAgICBpZC0+Y29uZmlnICAgICAgICAgPSBt
eV9fc3dhYjE2KGlkLT5jb25maWcpOwogICAgICAgIHJldHVybiAwOwp9Cg==
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2003-01-08 11:26 Andreas Loeffler
0 siblings, 0 replies; 3+ messages in thread
From: Andreas Loeffler @ 2003-01-08 11:26 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c/7577; it has been noted by GNATS.
From: "Andreas Loeffler" <ALOEFF@de.ibm.com>
To: bangerth@dealii.org, "Andreas Loeffler" <aloeff@de.ibm.com>,
gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org,
gcc-gnats@gcc.gnu.org
Cc:
Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux
kernel
Date: Wed, 8 Jan 2003 12:15:27 +0100
--0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489
Content-type: text/plain; charset=us-ascii
here's the file, i hope that helps you
(See attached file: bla.i)
Andreas Loeffler
--
EL HD S/390 SPP (Support Processor Platform Development)
IBM Entwicklungslabor Phone: +49 (0) 7031 16 5035
Schoenaicher Str. 220 Fax: +49 (0) 7031 16 4632
71032 Boeblingen URL: http://www.ibm.com
bangerth@dealii.o
rg To: "Andreas Loeffler" <aloeff@de.ibm.com>, gcc-bugs@gcc.gnu.org,
gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org
01/08/2003 03:13 cc:
AM Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux
Please respond to kernel
bangerth; Please
respond to
"Andreas
Loeffler"; Please
respond to
gcc-bugs; Please
respond to
gcc-prs; Please
respond to
nobody; Please
respond to
gcc-gnats
Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux
kernel
State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue Jan 7 18:13:28 2003
State-Changed-Why:
Thanks for your report (how unfortunate nobody has yet
looked at it). In trying to reproduce it, I saw that the
file still had an #include in it. Would you mind running
the testcase through the compiler again, and give it
-save-temps in addition? This would generate a file called
bla.i which we need (it's then self-contained).
Thanks
Wolfgang
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7577
--0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489
Content-type: application/octet-stream;
name="bla.i"
Content-Disposition: attachment; filename="bla.i"
Content-transfer-encoding: base64
IyAxICJibGEuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgImJs
YS5jIgojIDE0ICJibGEuYyIKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAxIDMKIyA5ICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lk
ZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9jb25maWcuaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hdXRvY29u
Zi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyIDMKIyAxMCAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIg
MiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9pbml0LmgiIDEgMwojIDQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwp0eXBl
ZGVmIGludCAoKmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2FsbF90KSh2
b2lkKTsKCmV4dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNhbGxfZW5k
OwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwpzdHJ1Y3Qga2VybmVsX3BhcmFtIHsKICAgICAgICBj
b25zdCBjaGFyICpzdHI7CiAgICAgICAgaW50ICgqc2V0dXBfZnVuYykoY2hhciAqKTsKfTsKCmV4
dGVybiBzdHJ1Y3Qga2VybmVsX3BhcmFtIF9fc2V0dXBfc3RhcnQsIF9fc2V0dXBfZW5kOwojIDEx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxIDMKIyAxNSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC9pb3BvcnQuaCIgMwpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIgKm5h
bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hp
bGQ7Cn07CgpzdHJ1Y3QgcmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNlX2xp
c3QgKm5leHQ7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0IHBj
aV9kZXYgKmRldjsKfTsKIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pb3BvcnQuaCIgMwpleHRlcm4gc3RydWN0IHJl
c291cmNlIGlvcG9ydF9yZXNvdXJjZTsKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNv
dXJjZTsKCmV4dGVybiBpbnQgZ2V0X3Jlc291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNo
YXIgKmJ1ZiwgaW50IHNpemUpOwoKZXh0ZXJuIGludCBjaGVja19yZXNvdXJjZShzdHJ1Y3QgcmVz
b3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJl
cXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5l
dyk7CmV4dGVybiBpbnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4
dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3Qg
cmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtaW4sIHVu
c2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmFsaWduZikodm9p
ZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcmVzb3Vy
Y2UgKiBfX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nIHN0
YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKZXh0ZXJuIGlu
dCBfX2NoZWNrX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZyk7CmV4dGVybiB2b2lkIF9fcmVsZWFzZV9yZWdpb24oc3RydWN0IHJlc291cmNlICos
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCgoKCmV4dGVybiB2b2lkIGF1dG9pcnFf
c2V0dXAoaW50IHdhaXR0aW1lKTsKZXh0ZXJuIGludCBhdXRvaXJxX3JlcG9ydChpbnQgd2FpdHRp
bWUpOwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkcmVnLmgiIDEgMwoj
IDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9nZW9tZXRyeSB7CiAgICAgIHVuc2ln
bmVkIGNoYXIgaGVhZHM7CiAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yczsKICAgICAgdW5zaWdu
ZWQgc2hvcnQgY3lsaW5kZXJzOwogICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0Owp9OwojIDIwNSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9iaWdfZ2VvbWV0cnkgewogICAgICAgIHVuc2ln
bmVkIGNoYXIgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWN0b3JzOwogICAgICAgIHVu
c2lnbmVkIGludCBjeWxpbmRlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydDsKfTsKCgoK
CgoKCnN0cnVjdCBoZF9kcml2ZWlkIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb25maWc7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXNlcnZl
ZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
dHJhY2tfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VjdG9yX2J5dGVzOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHNlY3RvcnM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yMDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3IxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl
bmRvcjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZXJpYWxfbm9bMjBdOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGJ1Zl90eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1Zl9zaXplOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGVjY19ieXRlczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZ3X3Jl
dls4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vZGVsWzQwXTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIG1heF9tdWx0c2VjdDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcjM7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgZHdvcmRfaW87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I0Owog
ICAgICAgIHVuc2lnbmVkIGNoYXIgY2FwYWJpbGl0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBy
ZXNlcnZlZDUwOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yNTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHRQSU87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I2OwogICAgICAgIHVuc2ln
bmVkIGNoYXIgdERNQTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmaWVsZF92YWxpZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBjdXJfY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfaGVh
ZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3VyX3NlY3RvcnM7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgY3VyX2NhcGFjaXR5MDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfY2FwYWNpdHkx
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXVsdHNlY3Q7CiAgICAgICAgdW5zaWduZWQgY2hhciBt
dWx0c2VjdF92YWxpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGJhX2NhcGFjaXR5OwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGRtYV8xd29yZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfbXdv
cmQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW9fbW9kZXM7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZWlkZV9kbWFfbWluOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVpZGVfZG1hX3Rp
bWU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW87CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZWlkZV9waW9faW9yZHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM2OV83MFsyXTsK
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM3MV83NFs0XTsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBxdWV1ZV9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3Jkczc2Xzc5WzRdOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IG1ham9yX3Jldl9udW07CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWlub3JfcmV2X251bTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb21tYW5kX3NldF8xOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGNvbW1hbmRfc2V0XzI7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY2Zzc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2ZzX2VuYWJsZV8xOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IGNmc19lbmFibGVfMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZfZGVm
YXVsdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfdWx0cmE7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgd29yZDg5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmQ5MDsKICAgICAgICB1bnNp
Z25lZCBzaG9ydCBDdXJBUE12YWx1ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZDkyOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IGh3X2NvbmZpZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3
b3Jkczk0XzEyNVszMl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGFzdF9sdW47CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgd29yZDEyNzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbGY7CiMgMjk0
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2hkcmVnLmgiIDMKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZvOwoKCgoKCgog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmRzMTMwXzE1NVsyNl07CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgd29yZDE1NjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3JkczE1N18xNTlbM107CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHMxNjBfMjU1Wzk1XTsKfTsKIyAxMyAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9p
ZGUuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9saW51eC9oZHNtYXJ0LmgiIDEgMwojIDI3ICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkc21h
cnQuaCIgMwp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfYXR0cmlidXRlX3MgewogICAgICAgIHVu
c2lnbmVkIGNoYXIgaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzX2ZsYWc7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBub3JtYWxpemVkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgd29yc2Vf
bm9ybWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzZdOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgcmVzZXJ2Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfYXR0cmlidXRl
X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3ZhbHVlc19zIHsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAgYXRhX3NtYXJ0X2F0dHJpYnV0ZV90IHZlbmRvcl9h
dHRyaWJ1dGVzIFszMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVj
dGlvbl9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWxmX3Rlc3RfZXhlY19zdGF0dXM7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdG90YWxfdGltZV90b19jb21wbGV0ZV9vZmZfbGluZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcl9zcGVjaWZpY18zNjY7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVjdGlvbl9jYXBhYmlsaXR5OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNtYXJ0X2NhcGFiaWxpdHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBlcnJvcmxv
Z19jYXBhYmlsaXR5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yX3NwZWNpZmljXzM3MTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNob3J0X3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgZXh0ZW5kX3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgcmVzZXJ2ZWRfMzc0XzM4NSBbMTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVu
ZG9yX3NwZWNpZmljXzM4Nl81MDkgWzEyNV07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtzdW07
Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF92YWx1ZXNfdDsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgYXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV9zIHsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbm9ybWFsaXplZF90aHJlc2hvbGQ7CiAgICAg
ICAgdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMF07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp
IGF0YV9zbWFydF90aHJlc2hvbGRfZW50cnlfdDsKCgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRf
dGhyZXNob2xkc19zIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAg
YXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV90IHRocmVzX2VudHJpZXNbMzBdOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTQ5XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNoa3N1bTsK
fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3RocmVzaG9sZHNfdDsKCnR5cGVk
ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF9zIHsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGRldmljZWNvbnRyb2xyZWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBmZWF0
dXJlc3JlZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY3Rvcl9jb3VudDsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHNlY3Rvcl9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9s
b3c7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9oaWdoOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgZHJpdmVfaGVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbW1hbmRyZWc7CiAgICAg
ICAgdW5zaWduZWQgaW50IHRpbWVzdGFtcDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRh
X3NtYXJ0X2Vycm9ybG9nX2NvbW1hbmRfc3RydWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21h
cnRfZXJyb3Jsb2dfZXJyb3Jfc3RydWN0X3MgewogICAgICAgIHVuc2lnbmVkIGNoYXIgZXJyb3Jf
Y29uZGl0aW9uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXh0ZW5kZWRfZXJyb3JbMTRdOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdGltZXN0YW1w
Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2dfZXJyb3Jfc3Ry
dWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfZXJyb3Jsb2dfc3RydWN0X3MgewogICAg
ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF90IGNvbW1hbmRzWzZdOwogICAg
ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19lcnJvcl9zdHJ1Y3RfdCBlcnJvcl9zdHJ1Y3Q7Cn0gX19h
dHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdDsKCnR5cGVk
ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19zIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJl
dm51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2xvZ19wb2ludGVyOwogICAgICAg
IGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdCBlcnJvcmxvZ19zdHJ1Y3RbNV07CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgYXRhX2Vycm9yX2NvdW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5v
bl9mYXRhbF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZV90aW1lb3V0X2NvdW50
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTNdOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgY2hrc3VtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2df
dDsKCnR5cGVkZWYgc3RydWN0IGF0YV9zbWFydF9zZWxmdGVzdGxvZ19zdHJ1Y3RfcyB7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzZWxmdGVzdG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNl
bGZ0ZXN0c3RhdHVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRpbWVzdGFtcDsKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNlbGZ0ZXN0ZmFpbHVyZWNoZWNrcG9pbnQ7CiAgICAgICAgdW5zaWduZWQg
aW50IGxiYWZpcnN0ZmFpbHVyZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcnNwZWNpZmlj
WzE1XTsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3N0
cnVjdF90OwoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3MgewogICAgICAg
IHVuc2lnbmVkIHNob3J0IHJldm51bWJlcjsKICAgICAgICBhdGFfc21hcnRfc2VsZnRlc3Rsb2df
c3RydWN0X3Qgc2VsZnRlc3Rfc3RydWN0WzIxXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRv
cnNwZWNpZmljWzJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW9zdHJlY2VudHRlc3Q7CiAgICAg
ICAgdW5zaWduZWQgY2hhciByZXNldmVyZWRbMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtz
dW07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9zZWxmdGVzdGxvZ190Owoj
IDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIiAxIDMKCgoKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L21ham9yLmgiIDEgMwojIDE3MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tYWpvci5oIiAzCnN0YXRpYyBf
X2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKCht
KSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDUg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvYmxrZGV2LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMSAzCgoKCiMgMSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9hc20vcGFyYW0uaCIgMSAzCiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMKCmV4dGVybiB1bnNp
Z25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDEgMwoKCgojIDEgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvcHRyYWNlLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAzCiMgMSAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
cHRyYWNlLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMwpzdHJ1Y3QgcHRfcmVncyB7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBncHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmlwOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbXNyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19ncHIz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3RyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGluazsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHhlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNjcjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG1xOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXA7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBkYXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkc2lzcjsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJlc3VsdDsKCgoKCgoKCn07CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHRyYWNlLmgi
IDIgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvYmluZm10cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku
aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5o
IiAxIDMKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxIDMKCgoKIyAxICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3N0ZGRlZi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIgMwojIDM2ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk
IGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9f
a2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGlu
dCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Bvc2l4X3R5cGVz
LmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fa2VybmVsX2Rldl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9pbm9fdDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IF9fa2VybmVsX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBp
bnQgX19rZXJuZWxfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZF90Owp0
eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGxv
bmcgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90Owp0eXBl
ZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9jbG9j
a190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5l
bF9jYWRkcl90Owp0eXBlZGVmIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy
bmVsX2dpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZDMyX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX29sZF9naWRf
dDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIGludCB2YWxbMl07Cn0gX19rZXJuZWxfZnNpZF90OwojIDU4ICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wb3Np
eF90eXBlcy5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19GRF9TRVQodW5zaWduZWQgbG9u
ZyBmZCwgX19rZXJuZWxfZmRfc2V0ICpmZHNldHApCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF90
bXAgPSBmZCAvICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICB1bnNpZ25lZCBs
b25nIF9yZW0gPSBmZCAlICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICBmZHNl
dHAtPmZkc19iaXRzW190bXBdIHw9ICgxVUw8PF9yZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18g
dm9pZCBfX0ZEX0NMUih1bnNpZ25lZCBsb25nIGZkLCBfX2tlcm5lbF9mZF9zZXQgKmZkc2V0cCkK
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgX3RtcCA9IGZkIC8gKDggKiBzaXplb2YodW5zaWduZWQg
bG9uZykpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX3JlbSA9IGZkICUgKDggKiBzaXplb2YodW5z
aWduZWQgbG9uZykpOwogICAgICAgIGZkc2V0cC0+ZmRzX2JpdHNbX3RtcF0gJj0gfigxVUw8PF9y
ZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fRkRfSVNTRVQodW5zaWduZWQgbG9uZyBm
ZCwgX19rZXJuZWxfZmRfc2V0ICpwKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfdG1wID0gZmQg
LyAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfcmVt
ID0gZmQgJSAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgcmV0dXJuIChwLT5m
ZHNfYml0c1tfdG1wXSAmICgxVUw8PF9yZW0pKSAhPSAwOwp9CgoKCgoKCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgX19GRF9aRVJPKF9fa2VybmVsX2ZkX3NldCAqcCkKewogICAgICAgIHVuc2lnbmVk
IGludCAqdG1wID0gKHVuc2lnbmVkIGludCAqKXAtPmZkc19iaXRzOwogICAgICAgIGludCBpOwoK
ICAgICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQvKDggKiBzaXplb2YodW5zaWdu
ZWQgbG9uZykpKSkpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoKDEwMjQvKDggKiBzaXplb2Yo
dW5zaWduZWQgbG9uZykpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wWzBdID0gMDsgdG1wWzFdID0gMDsgdG1wWzJd
ID0gMDsgdG1wWzNdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBbNF0g
PSAwOyB0bXBbNV0gPSAwOyB0bXBbNl0gPSAwOyB0bXBbN10gPSAwOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg
ICAgaSA9ICgxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSk7CiAgICAgICAgd2hpbGUg
KGkpIHsKICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICp0bXAgPSAwOwogICAg
ICAgICAgICAgICAgdG1wKys7CiAgICAgICAgfQp9CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMu
aCIgMiAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90eXBlcy5oIiAxIDMK
CgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
X191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBf
X3UzMiB1WzRdOwp9IF9fYXR0cmlidXRlKChhbGlnbmVkKDE2KSkpIF9fdmVjdG9yMTI4OwoKCgoK
CnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKCnR5cGVk
ZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cgp0eXBlZGVm
IHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cgp0eXBlZGVmIHNpZ25l
ZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Cgp0eXBlZGVm
IF9fdmVjdG9yMTI4IHZlY3RvcjEyODsKCgoKCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHlwZXMuaCIgMiAzCgoK
CnR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBk
ZXZfdDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2Rl
X3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tl
cm5lbF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBf
X2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5
cGVkZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5l
bF91aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYg
X19rZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZf
dDsKIyA0NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZf
dDsKIyA1NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVf
dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tl
cm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGlt
ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9f
a2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu
dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg
dW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVf
aW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlw
ZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3Mz
MiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZf
dDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBl
ZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC90eXBlcy5oIiAzCnN0cnVjdCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3Rm
cmVlOwogICAgICAgIF9fa2VybmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFt
ZVs2XTsKICAgICAgICBjaGFyIGZfZnBhY2tbNl07Cn07CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0
eS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2xpbmthZ2UuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC9saW1pdHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93
YWl0LmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2VybmVsLmgi
IDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9zdGRhcmcu
aCIgMSAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGli
L3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5f
dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMK
dHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAy
IDMKIyA0OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMwpzdHJ1Y3Qgc2VtYXBob3JlOwoKZXh0ZXJuIHN0
cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZpZXJfbGlzdDsKIHZvaWQgcGFuaWMoY29u
c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybiwgZm9y
bWF0IChwcmludGYsIDEsIDIpKSk7CiB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAg
ICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiB2b2lkIHVwX2FuZF9leGl0KHN0cnVjdCBz
ZW1hcGhvcmUgKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRl
cm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNp
Z25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoq
LHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxs
KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2lt
cGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGlu
dCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBpbnQg
dnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IGdl
dF9vcHRpb24oY2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25z
KGNoYXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBs
b25nIG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9w
cm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0
ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIGludCBwcmludGsoY29uc3QgY2hh
ciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwg
MikpKTsKCmV4dGVybiBpbnQgY29uc29sZV9sb2dsZXZlbDsKCnN0YXRpYyBpbmxpbmUgdm9pZCBj
b25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDA7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9pZCkKewogICAgICAgIGlmIChjb25z
b2xlX2xvZ2xldmVsKQogICAgICAgICAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDE1Owp9CiMg
MTE3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVw
dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3
YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0
b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hhciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2Yo
aW50KV07Cn07CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIg
MSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZl
dGNoLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgNjUwICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvYXNtL2Rjci5oIiAxIDMKIyA2NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy
IDMKIyA2ODMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCmV4dGVybiBpbnQgX3ByZXBfdHlwZTsKCgoK
CmV4dGVybiB1bnNpZ25lZCBjaGFyIHVjU3lzdGVtVHlwZTsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIg
dWNCb2FyZFJldjsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgdWNCb2FyZFJldk1haiwgdWNCb2FyZFJl
dk1pbjsKCnN0cnVjdCB0YXNrX3N0cnVjdDsKdm9pZCBzdGFydF90aHJlYWQoc3RydWN0IHB0X3Jl
Z3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgbmlwLCB1bnNpZ25lZCBsb25nIHNwKTsKdm9pZCByZWxl
YXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgoKCgpleHRlcm4gbG9uZyBrZXJuZWxf
dGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp
OwojIDcxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDMKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAq
bGFzdF90YXNrX3VzZWRfbWF0aDsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqbGFzdF90YXNr
X3VzZWRfYWx0aXZlYzsKIyA3MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnR5cGVkZWYgc3RydWN0
IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdGhy
ZWFkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrc3A7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB3Y2hhbjsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczsKICAgICAgICBtbV9zZWdt
ZW50X3QgZnM7CiAgICAgICAgdm9pZCAqcGdkaXI7CiAgICAgICAgc2lnbmVkIGxvbmcgbGFzdF9z
eXNjYWxsOwogICAgICAgIGRvdWJsZSBmcHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBz
Y3JfcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBzY3I7CgoKCgoKCgogICAgICAgIHVuc2ln
bmVkIGxvbmcgcHRyYWNlX2RiY3IwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlX2RiY3Ix
OwoKfTsKIyA3OTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
bG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAgICBy
ZXR1cm4gKHQtPnJlZ3MpID8gdC0+cmVncy0+bmlwIDogMDsKfQoKCgoKdW5zaWduZWQgbG9uZyBn
ZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA4MTUgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o
IiAzCmludCBsbF9wcmludGsoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIGxsX3B1dHMoY29uc3Qg
Y2hhciAqKTsKCgoKCgp2b2lkIF9ubWFza19hbmRfb3JfbXNyKHVuc2lnbmVkIGxvbmcgbm1hc2ss
IHVuc2lnbmVkIGxvbmcgb3JfdmFsKTsKdm9pZCBfcG93ZXJzYXZlX25tYXNrX2FuZF9vcl9tc3Io
dW5zaWduZWQgbG9uZyBubWFzaywgdW5zaWduZWQgbG9uZyBvcl92YWwpOwojIDE0ICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L3ByZWZldGNoLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDkgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hl
LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDIg
MwojIDQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2FzbS9jYWNoZS5oIiAzCmV4dGVybiB2b2lkIGNsZWFuX2RjYWNoZV9yYW5nZSh1
bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHN0b3ApOwpleHRlcm4gdm9pZCBmbHVz
aF9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzdG9wKTsK
ZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwg
dW5zaWduZWQgbG9uZyBzdG9wKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyIDMKIyA0MyAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9wcmVmZXRjaC5oIiAzCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaChjb25zdCB2
b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAq
eCkgezt9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDIgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMwpz
dHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsK
fTsKIyAzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3Rf
YWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHBy
ZXYsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2
ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3LT5wcmV2ID0gcHJl
djsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0
YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1
Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQt
Pm5leHQpOwp9CiMgNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg
bGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhl
YWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4MCAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVj
dCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAg
ICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3Rf
ZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+
cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2Rl
bF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRy
eS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRy
eSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBf
X2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAg
ICByZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZv
aWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAq
aGVhZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKCiAg
ICAgICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgKmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq
YXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKICAg
ICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAgICAgICAgICBsYXN0LT5u
ZXh0ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9IGxhc3Q7CiAgICAgICAgfQp9CiMg
MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxIDMKIyA1
MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9zcGlubG9jay5oIiAzCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHNwaW5sb2NrX3Q7
CiMgMTE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDMKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2Nr
X3Q7CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAxIDMKIyAy
MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9hc20vcGFnZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
bGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEgMwoj
IDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBj
LWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2Rldl90Lmgi
IDEgMwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rl
dl90OwojIDc2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5h
bWUoa2Rldl90KTsKCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga2Rldl90X3RvX25y
KGtkZXZfdCBkZXYpIHsKICAgICAgICByZXR1cm4gKCgodW5zaWduZWQgaW50KSAoKGRldikgPj4g
OCkpPDw4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0gMSkpKTsKfQoK
c3RhdGljIGlubGluZSBrZGV2X3QgdG9fa2Rldl90KGludCBkZXYpCnsKICAgICAgICBpbnQgbWFq
b3IsIG1pbm9yOwojIDk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCiAgICAgICAgbWFqb3IgPSAoZGV2
ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYpOwoKICAgICAgICByZXR1cm4gKCgo
bWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVt
LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMjMgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUv
YXNtL3N5c3RlbS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9hdG9taWMuaCIgMSAzCgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCB7IHZvbGF0aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190OwoKCgoKCgoKc3RhdGlj
IF9faW5saW5lX18gdm9pZCBhdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgYSkKewogICAgICAg
IGludCB0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4xOglsd2FyeAklMCwwLCUz
XG4Jb3JpCSUwLCUyLDBcbglzdHdjeC4JJTAsMCwlM1xuCWJuZS0JMWIiCgoKCgogICAgICAgIDog
Ij0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAgICAgIDogInIiIChhKSwgInIiICh2KSwg
Im0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7Cn0KCgoKZXh0ZXJuIHZvaWQgYXRvbWlj
X2NsZWFyX21hc2sodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nICphZGRyKTsKZXh0
ZXJuIHZvaWQgYXRvbWljX3NldF9tYXNrKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u
ZyAqYWRkcik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2FkZF9yZXR1cm4oaW50IGEs
IGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglhZGQJJTAsJTIsJTBcbglzdHdjeC4JJTAsMCwlM1xu
CWJuZS0JMWIiCgoKCgogICAgICAgIDogIj0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAg
ICAgIDogInIiIChhKSwgInIiICh2KSwgIm0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7
CgogICAgICAgIHJldHVybiB0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX3N1Yl9y
ZXR1cm4oaW50IGEsIGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglzdWJmCSUwLCUyLCUwXG4Jc3R3
Y3guCSUwLDAsJTNcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAodi0+
Y291bnRlcikKICAgICAgICA6ICJyIiAoYSksICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAg
ICAgICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50
IGF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwx
XG4Jc3R3Y3guCSUwLDAsJTJcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1t
IiAodi0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAg
ICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGF0
b21pY19kZWNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwtMVxu
CXN0d2N4LgklMCwwLCUyXG4JYm5lCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAo
di0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAgICA6
ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0
ZW0uaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9hc20vaHdfaXJxLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9od19pcnEuaCIg
MwpzdHJ1Y3QgaW50X2NvbnRyb2xfc3RydWN0CnsKICAgICAgICB2b2lkICgqaW50X2NsaSkodm9p
ZCk7CiAgICAgICAgdm9pZCAoKmludF9zdGkpKHZvaWQpOwogICAgICAgIHZvaWQgKCppbnRfcmVz
dG9yZV9mbGFncykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmludF9zYXZlX2ZsYWdz
KSh1bnNpZ25lZCBsb25nICopOwogICAgICAgIHZvaWQgKCppbnRfc2V0X2xvc3QpKHVuc2lnbmVk
IGxvbmcpOwp9OwpleHRlcm4gc3RydWN0IGludF9jb250cm9sX3N0cnVjdCBpbnRfY29udHJvbDsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdGltZXJfaW50ZXJydXB0X2ludGVyY2VwdDsKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgZG9fSVJRX2ludGVyY2VwdDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fY3Jp
dF9JUlFfaW50ZXJjZXB0OwppbnQgdGltZXJfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICopOwoK
ZXh0ZXJuIHZvaWQgX19ub191c2Vfc3RpKHZvaWQpOwpleHRlcm4gdm9pZCBfX25vX3VzZV9jbGko
dm9pZCk7CmV4dGVybiB2b2lkIF9fbm9fdXNlX3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyk7
CmV4dGVybiB2b2lkIF9fbm9fdXNlX3NhdmVfZmxhZ3ModW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJu
IHZvaWQgX19ub191c2Vfc2V0X2xvc3QodW5zaWduZWQgbG9uZyk7CiMgMzcgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2h3X2ly
cS5oIiAzCmV4dGVybiB2b2lkIGRvX2xvc3RfaW50ZXJydXB0cyh1bnNpZ25lZCBsb25nKTsKIyA0
NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9hc20vaHdfaXJxLmgiIDMKc3RydWN0IGh3X2ludGVycnVwdF90eXBlOwpzdGF0aWMgaW5s
aW5lIHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2ln
bmVkIGludCBpKSB7fQojIDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIv
Z2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMiAzCiMgNTkg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGlu
dXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCmV4dGVybiB2b2lkIHhtb25faXJxKGludCwg
dm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgeG1vbihzdHJ1Y3QgcHRfcmVn
cyAqZXhjcCk7CgoKCgpleHRlcm4gX19pbmxpbmVfXyB2b2lkIGRjYmYodm9pZCAqbGluZSkKewog
ICAgICAgIGFzbSBfX3ZvbGF0aWxlX18gKCJkY2JmICUwLCUxOyBzeW5jIiA6IDogInIiIChsaW5l
KSwgInIiICgwKSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgaWNiaSh2b2lkICpsaW5lKQp7
CiAgICAgICAgYXNtIF9fdm9sYXRpbGVfXyAoImljYmkgJTAsJTE7IHN5bmMiIDogOiAiciIgKGxp
bmUpLCAiciIgKDApKTsKfQoKZXh0ZXJuIHZvaWQgcHJpbnRfYmFja3RyYWNlKHVuc2lnbmVkIGxv
bmcgKik7CgoKCgoKCgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKiByZWdz
KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaW5zdHJ1Y3Rpb25fY2FjaGUodm9pZCk7CmV4dGVybiB2b2lk
IGhhcmRfcmVzZXRfbm93KHZvaWQpOwpleHRlcm4gdm9pZCBwb3dlcm9mZl9ub3codm9pZCk7CmV4
dGVybiBpbnQgX2dldF9QVlIodm9pZCk7CmV4dGVybiBsb25nIF9nZXRfTDJDUih2b2lkKTsKZXh0
ZXJuIHZvaWQgX3NldF9MMkNSKHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCB2aWFfY3VkYV9p
bml0KHZvaWQpOwpleHRlcm4gdm9pZCBwbWFjX252cmFtX2luaXQodm9pZCk7CmV4dGVybiB2b2lk
IHJlYWRfcnRjX3RpbWUodm9pZCk7CmV4dGVybiB2b2lkIHBtYWNfZmluZF9kaXNwbGF5KHZvaWQp
OwpleHRlcm4gdm9pZCBnaXZldXBfZnB1KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv
aWQgZW5hYmxlX2tlcm5lbF9mcCh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2l2ZXVwX2FsdGl2ZWMoc3Ry
dWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBsb2FkX3VwX2FsdGl2ZWMoc3RydWN0IHRh
c2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBjdnRfZmQoZmxvYXQgKmZyb20sIGRvdWJsZSAqdG8s
IHVuc2lnbmVkIGxvbmcgKmZwc2NyKTsKZXh0ZXJuIHZvaWQgY3Z0X2RmKGRvdWJsZSAqZnJvbSwg
ZmxvYXQgKnRvLCB1bnNpZ25lZCBsb25nICpmcHNjcik7CmV4dGVybiBpbnQgY2FsbF9ydGFzKGNv
bnN0IGNoYXIgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgLi4uKTsKZXh0ZXJuIGludCBh
YnMoaW50KTsKZXh0ZXJuIHZvaWQgY2FjaGVhYmxlX21lbXplcm8odm9pZCAqcCwgdW5zaWduZWQg
aW50IG5iKTsKCnN0cnVjdCBkZXZpY2Vfbm9kZTsKZXh0ZXJuIHZvaWQgbm90ZV9zY3NpX2hvc3Qo
c3RydWN0IGRldmljZV9ub2RlICosIHZvaWQgKik7CgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgoKZXh0
ZXJuIHZvaWQgX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHRhc2tfc3Ry
dWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqKTsKCnN0
cnVjdCB0aHJlYWRfc3RydWN0OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpfc3dpdGNoKHN0
cnVjdCB0aHJlYWRfc3RydWN0ICpwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0ICpuZXh0KTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgcnRh
c19kYXRhOwoKc3RydWN0IHB0X3JlZ3M7CmV4dGVybiB2b2lkIGR1bXBfcmVncyhzdHJ1Y3QgcHRf
cmVncyAqKTsKIyAxNTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2Mt
bGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCnN0YXRpYyBfX2lu
bGluZV9fIHVuc2lnbmVkIGxvbmcKeGNoZ191MzIodm9sYXRpbGUgdm9pZCAqcCwgdW5zaWduZWQg
bG9uZyB2YWwpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHByZXY7CgogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fICgiXG4iCiIxOglsd2FyeAklMCwwLCUyXG4iCiIJc3R3Y3guCSUzLDAsJTJc
biIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKHByZXYpLCAiPW0iICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGxvbmcgKilwKQogICAgICAgIDogInIiIChwKSwgInIiICh2YWwpLCAibSIgKCoodm9s
YXRpbGUgdW5zaWduZWQgbG9uZyAqKXApCiAgICAgICAgOiAiY2MiLCAibWVtb3J5Iik7CgogICAg
ICAgIHJldHVybiBwcmV2Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX194Y2hnX2NhbGxlZF93aXRoX2Jh
ZF9wb2ludGVyKHZvaWQpOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1
bnNpZ25lZCBsb25nIHgsIHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChz
aXplKSB7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBs
b25nICl4Y2hnX3UzMihwdHIsIHgpOwoKCgoKICAgICAgICB9CiAgICAgICAgX194Y2hnX2NhbGxl
ZF93aXRoX2JhZF9wb2ludGVyKCk7CiAgICAgICAgcmV0dXJuIHg7CgoKfQoKZXh0ZXJuIGlubGlu
ZSB2b2lkICogeGNoZ19wdHIodm9pZCAqIG0sIHZvaWQgKiB2YWwpCnsKICAgICAgICByZXR1cm4g
KHZvaWQgKikgeGNoZ191MzIobSwgKHVuc2lnbmVkIGxvbmcpIHZhbCk7Cn0KCgoKCnN0YXRpYyBf
X2lubGluZV9fIHVuc2lnbmVkIGxvbmcKX19jbXB4Y2hnX3UzMih2b2xhdGlsZSBpbnQgKnAsIGlu
dCBvbGQsIGludCBuZXcpCnsKICAgICAgICBpbnQgcHJldjsKCiAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJcbiIKIjE6CWx3YXJ4CSUwLDAsJTJcbiIKIgljbXB3CTAsJTAsJTNcbiIKIgli
bmUJMmZcbiIKIglzdHdjeC4JJTQsMCwlMlxuIgoiCWJuZS0JMWJcbiIKCgoKIjI6IgogICAgICAg
IDogIj0mciIgKHByZXYpLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAob2xkKSwg
InIiIChuZXcpLCAibSIgKCpwKQogICAgICAgIDogImNjIiwgIm1lbW9yeSIpOwoKICAgICAgICBy
ZXR1cm4gcHJldjsKfQoKCgpleHRlcm4gdm9pZCBfX2NtcHhjaGdfY2FsbGVkX3dpdGhfYmFkX3Bv
aW50ZXIodm9pZCk7CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCl9fY21weGNoZyh2
b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgb2xkLCB1bnNpZ25lZCBsb25nIG5ldywg
aW50IHNpemUpCnsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDQ6CiAgICAg
ICAgICAgICAgICByZXR1cm4gX19jbXB4Y2hnX3UzMihwdHIsIG9sZCwgbmV3KTsKCgoKCiAgICAg
ICAgfQogICAgICAgIF9fY21weGNoZ19jYWxsZWRfd2l0aF9iYWRfcG9pbnRlcigpOwogICAgICAg
IHJldHVybiBvbGQ7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5o
IiAzCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGU7IH0gcHRlX3Q7CnR5cGVkZWYg
c3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5z
aWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBw
Z3Byb3Q7IH0gcGdwcm90X3Q7CiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BhZ2UuaCIgMwpleHRlcm4gdm9pZCBjbGVh
cl9wYWdlKHZvaWQgKnBhZ2UpOwpleHRlcm4gdm9pZCBjb3B5X3BhZ2Uodm9pZCAqdG8sIHZvaWQg
KmZyb20pOwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZyBfX19wYSh1bnNpZ25lZCBsb25nIHYpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7CiAgICAg
ICAgYXNtIHZvbGF0aWxlICgiMTogYWRkaXMgJTAsICUxLCAlMjsiCiAgICAgICAgICAgICAgICAg
ICAgICAiLnNlY3Rpb24gXCIudnRvcF9maXh1cFwiLFwiYXdcIjsiCiAgICAgICAgICAgICAgICAg
ICAgICAiLmFsaWduICAxOyIKICAgICAgICAgICAgICAgICAgICAgICIubG9uZyAgIDFiOyIKICAg
ICAgICAgICAgICAgICAgICAgICIucHJldmlvdXM7IgogICAgICAgICAgICAgICAgICAgICAgOiAi
PXIiIChwKQogICAgICAgICAgICAgICAgICAgICAgOiAiYiIgKHYpLCAiSyIgKCgoLTB4YzAwMDAw
MDApID4+IDE2KSAmIDB4ZmZmZikpOwoKICAgICAgICByZXR1cm4gcDsKfQpzdGF0aWMgaW5saW5l
IHZvaWQqIF9fX3ZhKHVuc2lnbmVkIGxvbmcgcCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgdjsK
ICAgICAgICBhc20gdm9sYXRpbGUgKCIxOiBhZGRpcyAlMCwgJTEsICUyOyIKICAgICAgICAgICAg
ICAgICAgICAgICIuc2VjdGlvbiBcIi5wdG92X2ZpeHVwXCIsXCJhd1wiOyIKICAgICAgICAgICAg
ICAgICAgICAgICIuYWxpZ24gIDE7IgogICAgICAgICAgICAgICAgICAgICAgIi5sb25nICAgMWI7
IgogICAgICAgICAgICAgICAgICAgICAgIi5wcmV2aW91czsiCiAgICAgICAgICAgICAgICAgICAg
ICA6ICI9ciIgKHYpCiAgICAgICAgICAgICAgICAgICAgICA6ICJiIiAocCksICJLIiAoKCgweGMw
MDAwMDAwKSA+PiAxNikgJiAweGZmZmYpKTsKCiAgICAgICAgcmV0dXJuICh2b2lkKikgdjsKfQoj
IDE2MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9hc20vcGFnZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2Vf
ZmFzdCh2b2lkKTsKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxv
bmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXplLTEpID4+
ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAg
ICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdoaWxlIChz
aXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoj
IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyAyMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoKCgoK
CgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAg
ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0
YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1ZV90
OwojIDcyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwpzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAg
ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsK
CgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90
OwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1
ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChz
cGlubG9ja190KSB7IH07CiAgICAgICAgZG8geyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEt
PnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3
aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnko
d2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+
ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sgPSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3
YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0
dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19h
ZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcp
CnsKIyAxOTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19s
aXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dh
aXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMTUg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT50YXNrX2xpc3Qs
ICZoZWFkLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfd2FpdF9x
dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm9sZCkKewoKCgoKCiAg
ICAgICAgbGlzdF9kZWwoJm9sZC0+dGFza19saXN0KTsKfQojIDEzICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg
MwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3Zmcy5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMSAzCgoK
CgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZzaWRfdCBmc2lkX3Q7CgoKCnN0cnVjdCBzdGF0ZnMgewog
ICAgICAgIGxvbmcgZl90eXBlOwogICAgICAgIGxvbmcgZl9ic2l6ZTsKICAgICAgICBsb25nIGZf
YmxvY2tzOwogICAgICAgIGxvbmcgZl9iZnJlZTsKICAgICAgICBsb25nIGZfYmF2YWlsOwogICAg
ICAgIGxvbmcgZl9maWxlczsKICAgICAgICBsb25nIGZfZmZyZWU7CiAgICAgICAgX19rZXJuZWxf
ZnNpZF90IGZfZnNpZDsKICAgICAgICBsb25nIGZfbmFtZWxlbjsKICAgICAgICBsb25nIGZfc3Bh
cmVbNl07Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9saW51eC92ZnMuaCIgMiAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9uZXQuaCIgMSAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKIyAxICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3NvY2tldC5oIiAxIDMKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NvY2tldC5oIiAxIDMKIyA3ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3NvY2tldC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMSAzCiMgMjEgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvc29ja2lvcy5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyAyMiAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
b2NraW9zLmgiIDIgMwojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc29ja2V0LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWlv
LmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vpby5oIiAzCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9p
ZCAqaW92X2Jhc2U7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC9zb2NrZXQuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsK
CgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWlseTsKICAg
ICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxf
b25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hkciB7CiAg
ICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAgICAgICBz
dHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfaW92bGVu
OwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNn
X2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0
IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAgICBpbnQg
Y21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zb2Nr
ZXQuaCIgMwpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lk
ICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAg
c3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIq
KSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXpl
b2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVk
IGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAg
ICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9f
cHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVj
dCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJu
IF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4s
IF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAg
ICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQwICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tl
dC5oIiAzCmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlYyh1bnNpZ25lZCBjaGFyICprZGF0YSwg
c3RydWN0IGlvdmVjICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNl
bmQodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpleHRlcm4gaW50IGNzdW1f
cGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0YSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlvdmVjICppb3YsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIGludCAq
Y3N1bXApOwoKZXh0ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1zZ2hkciAqbSwgc3RydWN0
IGlvdmVjICppb3YsIGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0ZXJuIGludCBtZW1jcHlf
dG9pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnYsIHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsK
ZXh0ZXJuIHZvaWQgbWVtY3B5X3Rva2VybmVsaW92ZWMoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln
bmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fdXNlcih2
b2lkICprYWRkciwgaW50IGtsZW4sIHZvaWQgKnVhZGRyLCBpbnQgKnVsZW4pOwpleHRlcm4gaW50
IG1vdmVfYWRkcl90b19rZXJuZWwodm9pZCAqdWFkZHIsIGludCB1bGVuLCB2b2lkICprYWRkcik7
CmV4dGVybiBpbnQgcHV0X2Ntc2coc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUs
IGludCBsZW4sIHZvaWQgKmRhdGEpOwojIDIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25ldC5oIiAyIDMKCgpzdHJ1Y3Qg
cG9sbF90YWJsZV9zdHJ1Y3Q7CiMgNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKdHlwZWRlZiBlbnVtIHsK
ICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NP
Tk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0YXRlOwojIDY1ICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L25ldC5oIiAzCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNvY2tldF9zdGF0ZSBzdGF0ZTsKCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcHJvdG9fb3BzICpvcHM7
CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVj
dCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7CiAgICAgICAgc3RydWN0
IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIHNob3J0
IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3JlZDsKfTsKCgoKc3RydWN0IHNjbV9j
b29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBm
YW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpi
aW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkg
KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpz
b2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsK
ICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdz
b2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1l
KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVk
IGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3Ry
dWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2Nr
ZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50
IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3Mp
OwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu
dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0
bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVs
LCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50
ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
bXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQg
KCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRv
dGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFw
KSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCAqIHZtYSk7Cn07CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50
IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBw
cm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBl
bmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90
bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShz
dHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0
IHNvY2tldCAqc2ssIGludCBob3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVy
KHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3Rl
cihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4
dGVybiBpbnQgc29ja19jcmVhdGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3Ry
dWN0IHNvY2tldCAqKik7CmV4dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICop
OwpleHRlcm4gaW50IHNvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIg
Km0sIGludCBsZW4pOwpleHRlcm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0
cnVjdCBtc2doZHIgKm0sIGludCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFk
dl93cml0ZXYoaW50IHR5cGUsIHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZp
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMg
KiBpb3YsIGxvbmcgY291bnQsIGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQo
dm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lk
IG5ldF9zcmFuZG9tKHVuc2lnbmVkIGxvbmcpOwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2lvY3RsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvY3RsLmgiIDEgMwojIDUgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvaW9jdGwuaCIgMiAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
ZGNhY2hlLmgiIDEgMwoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW91bnQuaCIgMSAzCiMgMTcgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvbW91bnQuaCIgMwpzdHJ1Y3QgdmZzbW91bnQKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm1u
dF9tb3VudHBvaW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0
cnVjdCB2ZnNtb3VudCAqbW50X3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9p
bnN0YW5jZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfY2xhc2g7CgogICAgICAgIHN0
cnVjdCBzdXBlcl9ibG9jayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21v
dW50czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNf
dCBtbnRfY291bnQ7CiAgICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2
bmFtZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0OwogICAgICAgIHVpZF90IG1u
dF9vd25lcjsKfTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQoc3RydWN0
IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAgKCh2b2lk
KSBhdG9taWNfaW5jX3JldHVybigoJm1udC0+bW50X2NvdW50KSkpOwogICAgICAgIHJldHVybiBt
bnQ7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsK
ICAgICAgICBpZiAobW50KSB7CiAgICAgICAgICAgICAgICBpZiAoKGF0b21pY19kZWNfcmV0dXJu
KCgmbW50LT5tbnRfY291bnQpKSA9PSAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBw
cmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tb3VudC5oIiwgNDYpOyBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiLmxvbmcgMHgwIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0K
fQojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAzCnN0
cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRl
bnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNl
ZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAgICAg
IGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0
OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNo
KHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVy
biAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5s
aW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewog
ICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18g
dW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1
bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAg
ICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2go
Km5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoK
c3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0
cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfdmZzbW50
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsK
ICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7
CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBz
dXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3JlZnRpbWU7CiAgICAg
ICAgdm9pZCAqIGRfZnNkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVsxNl07Cn07
CgpzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmRfcmV2YWxpZGF0ZSko
c3RydWN0IGRlbnRyeSAqLCBpbnQpOwogICAgICAgIGludCAoKmRfaGFzaCkgKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9jb21wYXJlKSAoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2Rl
bGV0ZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9yZWxlYXNlKShzdHJ1Y3Qg
ZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0
IGlub2RlICopOwp9OwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMwpleHRlcm4gc3BpbmxvY2tf
dCBkY2FjaGVfbG9jazsKIyAxNDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5l
X18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgm
ZGNhY2hlX2xvY2spOwogICAgICAgIGxpc3RfZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAg
ZG8geyAoJmRlbnRyeS0+ZF9oYXNoKS0+bmV4dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRy
eS0+ZF9oYXNoKS0+cHJldiA9ICgmZGVudHJ5LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAg
ICBkbyB7IH0gd2hpbGUoMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5h
bChzdHJ1Y3QgZGVudHJ5ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQt
PmRfaW5hbWU7Cn0KCgoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7
CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qg
c3RydWN0IHFzdHIgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVy
X2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5
ICopOwpleHRlcm4gaW50IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6
b25lX3N0cnVjdDsKCmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWdu
ZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoKZXh0ZXJuIHZvaWQgc2hy
aW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50
KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUgKik7
CgoKZXh0ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVj
dCBkZW50cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1
bmVfYWxpYXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50cyhz
dHJ1Y3QgZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZvaWQgZF9yZWhhc2goc3RydWN0IGRlbnRyeSAq
KTsKIyAyMDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Fk
ZChzdHJ1Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAg
ZF9pbnN0YW50aWF0ZShlbnRyeSwgaW5vZGUpOwogICAgICAgIGRfcmVoYXNoKGVudHJ5KTsKfQoK
CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgoK
ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBx
c3RyICopOwoKCmV4dGVybiBpbnQgZF92YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBk
ZW50cnkgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwoKZXh0ZXJuIGNoYXIgKiBfX2Rf
cGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICos
CiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDAgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
ZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0
IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAgICAgICAg
aWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVyKSkKCgoKICAgICAgICAgICAgICAgICAg
ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2Fj
aGUuaCIsIDI0Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo
MCk7CgogICAgICAgICAgICAgICAgKCh2b2lkKSBhdG9taWNfaW5jX3JldHVybigoJmRlbnRyeS0+
ZF9jb3VudCkpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0
cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MyAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC9kY2FjaGUuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gbGlzdF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gp
Owp9CgpleHRlcm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgZF9tb3VudHBvaW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy
biAhbGlzdF9lbXB0eSgmZGVudHJ5LT5kX3Zmc21udCk7Cn0KIyAyMCAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0LmgiIDEgMwoK
CgoKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz
dF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf
bXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsK
ICAgICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5vOwogICAgICAgIG1vZGVf
dCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgdWlkX3Qgc3RfdWlk
OwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2OwogICAgICAgIG9m
Zl90IHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9t
dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgX191bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9
OwoKCgpzdHJ1Y3Qgc3RhdDY0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfZGV2Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IHN0
X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwogICAg
ICAgIGxvbmcgbG9uZyBzdF9zaXplOwogICAgICAgIGxvbmcgc3RfYmxrc2l6ZTsKCiAgICAgICAg
bG9uZyBsb25nIHN0X2Jsb2NrczsKICAgICAgICBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgICAgICBsb25nIHN0X210aW1lOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgICAgICBsb25nIHN0X2N0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25nIGludCBf
X3VudXNlZDQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1Owp9OwojIDcgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvc3RhdC5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Nh
Y2hlLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FjaGUu
aCIgMiAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEg
MwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRl
cm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy
ICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFy
ICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNo
YXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEgMwojIDE4ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2FzbS9zdHJpbmcuaCIgMwpleHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25z
dCBjaGFyICopOwpleHRlcm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gY2hhciAqIHN0cmNweShjaGFyICosY29uc3QgY2hhciAqKTsKZXh0
ZXJuIGNoYXIgKiBzdHJuY3B5KGNoYXIgKixjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7
CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
c3RyY21wKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cmNhdChj
aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkICogbWVtc2V0KHZvaWQgKixpbnQsX19r
ZXJuZWxfc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKiBtZW1jcHkodm9pZCAqLGNvbnN0IHZvaWQgKixf
X2tlcm5lbF9zaXplX3QpOwpleHRlcm4gdm9pZCAqIG1lbW1vdmUodm9pZCAqLGNvbnN0IHZvaWQg
KixfX2tlcm5lbF9zaXplX3QpOwpleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosY29uc3Qg
dm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CmV4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQg
KixpbnQsX19rZXJuZWxfc2l6ZV90KTsKIyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMiAzCiMgMzMg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiwgY29uc3Qg
Y2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwoKCgoKCmV4dGVybiBpbnQgc3RybmNtcChjb25zdCBj
aGFyICosY29uc3QgY2hhciAqLF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIGludCBzdHJuaWNt
cChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKCgpleHRlcm4g
Y2hhciAqIHN0cmNocihjb25zdCBjaGFyICosaW50KTsKCgpleHRlcm4gY2hhciAqIHN0cnJjaHIo
Y29uc3QgY2hhciAqLGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLGNv
bnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJubGVuKGNvbnN0IGNo
YXIgKixfX2tlcm5lbF9zaXplX3QpOwojIDcwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiB2
b2lkICogbWVtc2Nhbih2b2lkICosaW50LF9fa2VybmVsX3NpemVfdCk7CiMgMjQgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
ZnMuaCIgMiAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5o
IiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIg
MwpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBsZF9sZTE2KGNvbnN0IHZvbGF0aWxlIHVuc2ln
bmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgdmFsOwoKICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoImxoYnJ4ICUwLDAsJTEiIDogIj1yIiAodmFsKSA6ICJyIiAoYWRkciks
ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gdmFsOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2
b2lkIHN0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGNvbnN0IHVuc2lnbmVk
IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3RoYnJ4ICUxLDAsJTIiIDog
Ij1tIiAoKmFkZHIpIDogInIiICh2YWwpLCAiciIgKGFkZHIpKTsKfQoKZXh0ZXJuIF9faW5saW5l
X18gdW5zaWduZWQgbGRfbGUzMihjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg
ICAgIHVuc2lnbmVkIHZhbDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsd2JyeCAl
MCwwLCUxIiA6ICI9ciIgKHZhbCkgOiAiciIgKGFkZHIpLCAibSIgKCphZGRyKSk7CiAgICAgICAg
cmV0dXJuIHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBzdF9sZTMyKHZvbGF0aWxlIHVu
c2lnbmVkICphZGRyLCBjb25zdCB1bnNpZ25lZCB2YWwpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXyAoInN0d2JyeCAlMSwwLCUyIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSwgInIi
IChhZGRyKSk7Cn0KIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVv
cmRlci9iaWdfZW5kaWFuLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFu
LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEgMwojIDEzMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9i
eXRlb3JkZXIvc3dhYi5oIiAzCmV4dGVybiBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zz
d2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiAoeyBfX3UxNiBfX3RtcCA9ICh4KSA7ICh7
IF9fdTE2IF9feCA9IChfX3RtcCk7ICgoX191MTYpKCAoKChfX3UxNikoX194KSAmIChfX3UxNikw
eDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KShfX3gpICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkp
OyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7
CiAgICAgICAgcmV0dXJuIGxkX2xlMTYoeCk7Cn0KZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3
YWIxNnMoX191MTYgKmFkZHIpCnsKICAgICAgICBzdF9sZTE2KGFkZHIsKmFkZHIpOwp9CgpleHRl
cm4gX19pbmxpbmVfXyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9fdTMyIHgpCnsKICAgICAg
ICByZXR1cm4gKHsgX191MzIgX190bXAgPSAoeCkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAo
KF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo
KChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9f
eCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMy
KTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191
MzIgX19zd2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIGxkX2xlMzIoeCk7Cn0KZXh0
ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIgKmFkZHIpCnsKICAgICAgICBzdF9s
ZTMyKGFkZHIsKmFkZHIpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9f
ZnN3YWI2NChfX3U2NCB4KQp7CgoKCgoKICAgICAgICByZXR1cm4gKHsgX191NjQgX190bXAgPSAo
eCkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShf
X3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9f
dTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0
KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwg
KF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwg
OCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxM
KSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAw
MDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAw
MDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZm
MDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwoKfQpleHRlcm4gX19pbmxpbmVf
XyBfX3U2NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAgICByZXR1cm4gKHsgX191NjQgX190
bXAgPSAoKih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9f
dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDAp
IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkg
PDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAw
MFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAw
MDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBm
ZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw
eDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwp9CmV4dGVybiBf
X2lubGluZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFk
ZHIpID0gKHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7ICh7IF9fdTY0IF9feCA9IChfX3Rt
cCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAw
MDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAw
MDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
MHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAo
X191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9f
dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYp
ICkpOyB9KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19l
bmRpYW4uaCIgMiAzCiMgNjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19lbmRpYW4uaCIgMwojIDEg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMSAzCiMgMTUwICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRl
ci9nZW5lcmljLmgiIDMKZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0
b25sKF9fdTMyKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQg
c2hvcnQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9y
dCBpbnQpOwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFuLmgiIDIgMwojIDg0ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2FzbS9ieXRlb3JkZXIuaCIgMiAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5oIiAyIDMKIyAzMiAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
c20vYml0b3BzLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9s
YXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZDsKICAgICAgICB1
bnNpZ25lZCBsb25nIG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgKnAgPSAoKHVuc2lnbmVkIGxvbmcgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18oIlxuIgoiMToJbHdhcngJJTAsMCwlM1xuIgoiCW9yCSUwLCUwLCUy
XG4iCiIJc3R3Y3guCSUwLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCks
ICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAg
ICA6ICJjYyIgKTsKfQoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5y
LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8
PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n
ICopYWRkcikgKyAobnIgPj4gNSk7CgogICAgICAgICpwIHw9IG1hc2s7Cn0KCgoKCgoKCnN0YXRp
YyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikK
ewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9
IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWduZWQg
bG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
XG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMCwlMCwlMlxuIgoiCXN0d2N4LgklMCww
LCUzXG4iCiIJYm5lLQkxYiIKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPW0iICgqcCkKICAgICAg
ICA6ICJyIiAobWFzayksICJyIiAocCksICJtIiAoKnApCiAgICAgICAgOiAiY2MiKTsKfQoKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRk
cikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFz
ayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWdu
ZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygiXG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJeG9yCSUwLCUwLCUyXG4iCiIJc3R3Y3guCSUw
LDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9bSIgKCpwKQogICAg
ICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIpOwp9CgoK
CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxl
IHZvaWQgKmFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgb2xkLCB0OwogICAgICAgIHVuc2ln
bmVkIGludCBtYXNrID0gMSA8PCAobnIgJiAweDFmKTsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKnAgPSAoKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKWFkZHIpICsgKG5yID4+IDUpOwoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIlxuIgoiMToJbHdhcngJJTAsMCwlNFxuIgoi
CW9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAg
ICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDogInIiICht
YXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAg
ICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKewogICAgICAg
IHVuc2lnbmVkIGxvbmcgbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQg
bG9uZyAqcCA9ICgodW5zaWduZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgb2xkID0gKnA7CgogICAgICAgICpwID0gb2xkIHwgbWFzazsKICAgICAgICBy
ZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2Fu
ZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWdu
ZWQgaW50IG9sZCwgdDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDEgPDwgKG5yICYgMHgx
Zik7CiAgICAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICpwID0gKCh2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
ICJcbiIKIjE6CWx3YXJ4CSUwLDAsJTRcbiIKIglhbmRjCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUx
LDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAo
dCksICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAg
ICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAw
Owp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5y
LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8
PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n
ICopYWRkcikgKyAobnIgPj4gNSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGQgPSAqcDsKCiAg
ICAgICAgKnAgPSBvbGQgJiB+bWFzazsKICAgICAgICByZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7
Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9s
YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIHVuc2lnbmVkIGludCBvbGQsIHQ7CiAgICAgICAg
dW5zaWduZWQgaW50IG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqcCA9ICgodm9sYXRpbGUgdW5zaWduZWQgaW50ICopYWRkcikgKyAobnIgPj4g
NSk7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiXG4iCiIxOglsd2FyeAklMCwwLCU0
XG4iCiIJeG9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAg
ICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDog
InIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsK
CiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CiMgMTkzICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMu
aCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9iaXQoaW50IG5yLCBfX2NvbnN0X18gdm9s
YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBpbnQgKnAgPSAo
X19jb25zdF9fIHVuc2lnbmVkIGludCAqKSBhZGRyOwoKICAgICAgICByZXR1cm4gKChwW25yID4+
IDVdID4+IChuciAmIDB4MWYpKSAmIDEpICE9IDA7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg
X19pbG9nMih1bnNpZ25lZCBpbnQgeCkKewogICAgICAgIGludCBsejsKCiAgICAgICAgYXNtICgi
Y250bHp3ICUwLCUxIiA6ICI9ciIgKGx6KSA6ICJyIiAoeCkpOwogICAgICAgIHJldHVybiAzMSAt
IGx6Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmZ6KHVuc2lnbmVkIGludCB4KQp7CiAgICAg
ICAgaWYgKCh4ID0gfngpID09IDApCiAgICAgICAgICAgICAgICByZXR1cm4gMzI7CiAgICAgICAg
cmV0dXJuIF9faWxvZzIoeCAmIC14KTsKfQojIDIyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKc3RhdGlj
IF9faW5saW5lX18gaW50IGZmcyhpbnQgeCkKewogICAgICAgIHJldHVybiBfX2lsb2cyKHggJiAt
eCkgKyAxOwp9CiMgMjQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyB1bnNp
Z25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdCh2b2lkICogYWRkciwKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgaW50
ICogcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICB1
bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAgdW5zaWduZWQgaW50
IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAgICAgICAgcmV0dXJu
IHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0ICY9IDMxVUw7CiAg
ICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gKnArKzsKICAgICAgICAg
ICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQpOwogICAgICAgICAgICAgICAgaWYgKHNp
emUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9maXJzdDsKICAgICAg
ICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZv
dW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUgLT0gMzI7CiAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChzaXplID49IDMyKSB7CiAgICAg
ICAgICAgICAgICBpZiAoKHRtcCA9ICpwKyspICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBmb3VuZF9taWRkbGU7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAg
ICAgICAgICAgICBzaXplIC09IDMyOwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIHRtcCA9ICpwOwpmb3VuZF9maXJzdDoK
ICAgICAgICB0bXAgfD0gfjBVTCA8PCBzaXplOwogICAgICAgIGlmICh0bXAgPT0gfjBVTCkKICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBzaXplOwpmb3VuZF9taWRkbGU6CiAgICAgICAg
cmV0dXJuIHJlc3VsdCArIGZmeih0bXApOwp9CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0
aWMgX19pbmxpbmVfXyBpbnQgZXh0Ml90ZXN0X2JpdChpbnQgbnIsIF9fY29uc3RfXyB2b2lkICog
YWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBjaGFyICpBRERSID0gKF9fY29uc3Rf
XyB1bnNpZ25lZCBjaGFyICopIGFkZHI7CgogICAgICAgIHJldHVybiAoQUREUltuciA+PiAzXSA+
PiAobnIgJiA3KSkgJiAxOwp9CiMgMzA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxp
bmVfXyB1bnNpZ25lZCBsb25nIGV4dDJfZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsCiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogICAgICAg
IHVuc2lnbmVkIGludCAqcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1
KTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAg
dW5zaWduZWQgaW50IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAg
ICAgICAgcmV0dXJuIHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0
ICY9IDMxVUw7CiAgICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gX19z
d2FiMzJwKChwKyspKTsKICAgICAgICAgICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQp
OwogICAgICAgICAgICAgICAgaWYgKHNpemUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAg
Z290byBmb3VuZF9maXJzdDsKICAgICAgICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUg
LT0gMzI7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdo
aWxlIChzaXplID49IDMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHRtcCA9IF9fc3dhYjMycCgo
cCsrKSkpICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9taWRkbGU7
CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgICAgICAgICBzaXplIC09IDMy
OwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgIHRtcCA9IF9fc3dhYjMycCgocCkpOwpmb3VuZF9maXJzdDoKICAgICAgICB0
bXAgfD0gfjBVIDw8IHNpemU7CiAgICAgICAgaWYgKHRtcCA9PSB+MFVMKQogICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdCArIHNpemU7CmZvdW5kX21pZGRsZToKICAgICAgICByZXR1cm4gcmVz
dWx0ICsgZmZ6KHRtcCk7Cn0KIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKCnN0cnVjdCBwb2xsX3Rh
YmxlX3N0cnVjdDsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBmaWxlc19zdGF0X3N0cnVj
dCB7CiAgICAgICAgaW50IG5yX2ZpbGVzOwogICAgICAgIGludCBucl9mcmVlX2ZpbGVzOwogICAg
ICAgIGludCBtYXhfZmlsZXM7Cn07CmV4dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmls
ZXNfc3RhdDsKCnN0cnVjdCBpbm9kZXNfc3RhdF90IHsKICAgICAgICBpbnQgbnJfaW5vZGVzOwog
ICAgICAgIGludCBucl91bnVzZWQ7CiAgICAgICAgaW50IGR1bW15WzVdOwp9OwpleHRlcm4gc3Ry
dWN0IGlub2Rlc19zdGF0X3QgaW5vZGVzX3N0YXQ7CgpleHRlcm4gaW50IG1heF9zdXBlcl9ibG9j
a3MsIG5yX3N1cGVyX2Jsb2NrczsKZXh0ZXJuIGludCBsZWFzZXNfZW5hYmxlLCBkaXJfbm90aWZ5
X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwojIDEgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
YXNtL3NlbWFwaG9yZS5oIiAxIDMKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDMKIyAxICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMu
MS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyIDMK
CgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBhdG9t
aWNfdCB3YWtpbmc7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA0NyAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9hc20vc2VtYXBob3JlLmgiIDMKZXh0ZXJuIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0
IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CiAgICAgICAgYXRvbWljX3NldCgmc2VtLT5jb3Vu
dCwgdmFsKTsKICAgICAgICBhdG9taWNfc2V0KCZzZW0tPndha2luZywgMCk7CiAgICAgICAgaW5p
dF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGlu
aXRfTVVURVggKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0s
IDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWF9MT0NLRUQgKHN0cnVjdCBzZW1h
cGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0sIDApOwp9CgpleHRlcm4gdm9pZCBf
X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX2ludGVycnVw
dGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX3RyeWxvY2so
c3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9y
ZSAqIHNlbSk7CgpleHRlcm4gaW5saW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2Vt
KQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfcmV0dXJuKCZzZW0tPmNvdW50KSA+PSAwKQogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJlaWVpbyIgOiA6IDogIm1lbW9yeSIp
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9fZG93bihzZW0pOwp9CgpleHRlcm4gaW5s
aW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAg
ICAgIGludCByZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291
bnQpID49IDApCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6
IDogOiAibWVtb3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3du
X2ludGVycnVwdGlibGUoc2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5l
IGludCBkb3duX3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCBy
ZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291bnQpID49IDAp
CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6IDogOiAibWVt
b3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3duX3RyeWxvY2so
c2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0
IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3luYyIg
OiA6IDogIm1lbW9yeSIpOwogICAgICAgIGlmIChhdG9taWNfaW5jX3JldHVybigmc2VtLT5jb3Vu
dCkgPD0gMCkKICAgICAgICAgICAgICAgIF9fdXAoc2VtKTsKfQoKCgoKc3RydWN0IHJ3X3NlbWFw
aG9yZQp7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIGludCByZCwgd3I7CiAgICAg
ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyAxMzcgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5o
IiAzCmV4dGVybiBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBzZW0tPnJkID0gc2VtLT53ciA9
IDA7CiAgICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKCgoKCmV4
dGVybiB2b2lkIGRvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKZXh0ZXJu
IHZvaWQgZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKCmV4dGVybiBp
bmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg
OwoKICAgICAgICBkbyB7IGludF9jb250cm9sLmludF9jbGkoKTsgKHZvaWQpKCZzZW0tPmxvY2sp
OyB9IHdoaWxlICgwKTsKICAgICAgICBpZiAoc2VtLT53cikKICAgICAgICAgICAgICAgIGRvd25f
cmVhZF9mYWlsZWQoc2VtKTsKICAgICAgICBzZW0tPnJkKys7CiAgICAgICAgZG8geyBkbyB7IH0g
d2hpbGUoMCk7IGludF9jb250cm9sLmludF9zdGkoKTsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiBp
bmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
IDsKCiAgICAgICAgKHZvaWQpKCZzZW0tPmxvY2spOwogICAgICAgIGlmKHNlbS0+cmQgfHwgc2Vt
LT53cikKICAgICAgICAgICAgICAgIGRvd25fd3JpdGVfZmFpbGVkKHNlbSk7CiAgICAgICAgc2Vt
LT53ciA9IDE7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CiMgMjAwICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIgMwoKCmV4dGVybiB2b2lkIHVwZGF0ZV9hdGltZSAoc3RydWN0IGlub2RlICopOwoKCmV4dGVy
biB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBpbm9kZV9pbml0
KHVuc2lnbmVkIGxvbmcpOwojIDIyOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBidWZmZXJfaGVh
ZCB7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVk
IGxvbmcgYl9ibG9ja25yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1
bnNpZ25lZCBzaG9ydCBiX2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9t
aWNfdCBiX2NvdW50OwogICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBiX3N0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0
cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICpiX3ByZXZfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwog
ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKipiX3BwcmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0
IHBhZ2UgKmJfcGFnZTsKICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgsIGludCB1cHRvZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1
bnNpZ25lZCBsb25nIGJfcnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7
CgogICAgICAgIHN0cnVjdCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBiX2lub2RlX2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBi
dWZmZXJfaGVhZCAqLCBiaF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI3NCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o
IiAzCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVj
dCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGlw
ZV9mc19pLmgiIDEgMwoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2FpdF9x
dWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBp
bnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwogICAgICAg
IHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHJfY291
bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQxICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bp
cGVfZnNfaS5oIiAzCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVj
dCBpbm9kZSogcGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjgwICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvbWluaXhfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IG1pbml4
X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGkxX2Rh
dGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9
OwojIDI4MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIiAxIDMK
IyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMwpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAg
ICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191
MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19z
aXplOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg
ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz
MiBub3RfdXNlZF8xOwogICAgICAgIF9fdTMyIGlfYmxvY2tfZ3JvdXA7CiAgICAgICAgX191MzIg
aV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwogICAg
ICAgIF9fdTMyIGlfcHJlYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19jb3Vu
dDsKICAgICAgICBfX3UzMiBpX2hpZ2hfc2l6ZTsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsK
fTsKIyAyODIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMSAz
CgoKCnN0cnVjdCBocGZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3By
aXZhdGU7CiAgICAgICAgaW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5v
OwogICAgICAgIHVuc2lnbmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAg
ICAgICAgdW5zaWduZWQgaV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwog
ICAgICAgIHVuc2lnbmVkIGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBpX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7
CiAgICAgICAgdW5zaWduZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lk
IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGlfc2VtOwogICAgICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI4MyAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxIDMKCgoKCnN0cnVjdCBudGZz
X2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5cGVkZWYgdTggbnRmc191ODsK
dHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNfdTMyOwp0eXBlZGVmIHU2NCBu
dGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMxNiBudGZzX3MxNjsKdHlwZWRl
ZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoKCgoKdHlwZWRlZiBfX2tlcm5l
bF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRmc191aWRfdDsKCgoKdHlwZWRl
ZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBudGZzX3NpemVf
dDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgbnRmc190aW1l
NjRfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IG50ZnNfY2x1c3Rlcl90OwoKCgpzdHJ1Y3Qg
bnRmc19pbm9kZV9pbmZvewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAg
ICAgc3RydWN0IG50ZnNfc2JfaW5mbyAqdm9sOwogICAgICAgIGludCBpX251bWJlcjsKICAgICAg
ICB1bnNpZ25lZCBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciogYXR0cjsK
ICAgICAgICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0
dHJzOwogICAgICAgIGludCByZWNvcmRfY291bnQ7CgoKICAgICAgICBpbnQgKnJlY29yZHM7CiAg
ICAgICAgdW5pb257CiAgICAgICAgICAgICAgICBzdHJ1Y3R7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlcnNf
cGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH1pbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjg0
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxIDMKCgoKCgoK
CnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2
YXRlOwogICAgICAgIGludCBpX3N0YXJ0OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAg
IGludCBpX2F0dHJzOwogICAgICAgIGludCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0
aW9uOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBpX2ZhdF9oYXNoOwp9OwojIDI4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3Vtc2Rvc19mc19pLmgiIDEgMwojIDM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDMKc3Ry
dWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAg
ICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAg
ICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3Ry
dWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tp
bmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lz
X2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAyODYgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9pc29fZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgaV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBpX2ZpbGVfZm9ybWF0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3NlY3Rpb25faW5v
OwogICAgICAgIG9mZl90IGlfc2VjdGlvbl9zaXplOwp9OwojIDI4NyAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uZnMuaCIg
MSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvbmZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5o
IiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMwplbnVtIHJwY19hdXRoX2Zs
YXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVMTCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9
IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQgPSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMs
CiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwKfTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAg
ICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBDX1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlf
c3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NFUFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5J
RUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRfc3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAw
LAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwgPSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENI
ID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFWQUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9B
UkdTID0gNCwKICAgICAgICBSUENfU1lTVEVNX0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9z
dGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0ggPSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0g
MQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsKICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAg
ICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0g
MiwKICAgICAgICBSUENfQVVUSF9CQURWRVJGID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RF
RFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRIX1RPT1dFQUsgPSA1Cn07CiMgMTEgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
bmZzLmgiIDIgMwojIDQxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mcy5oIiAzCiBlbnVtIG5mc19zdGF0IHsKICAgICAg
ICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9QRVJNID0gMSwKICAgICAgICBORlNFUlJfTk9F
TlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUsCiAgICAgICAgTkZTRVJSX05YSU8gPSA2LAog
ICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAgICAgICBORlNFUlJfQUNDRVMgPSAxMywKICAg
ICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAgICBORlNFUlJfWERFViA9IDE4LAogICAgICAg
IE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5GU0VSUl9OT1RESVIgPSAyMCwKICAgICAgICBO
RlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNFUlJfSU5WQUwgPSAyMiwKICAgICAgICBORlNF
UlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9OT1NQQyA9IDI4LAogICAgICAgIE5GU0VSUl9S
T0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5LID0gMzEsCiAgICAgICAgTkZTRVJSX09QTk9U
U1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1FVE9PTE9ORyA9IDYzLAogICAgICAgIE5GU0VS
Ul9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VSUl9EUVVPVCA9IDY5LAogICAgICAgIE5GU0VS
Ul9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9SRU1PVEUgPSA3MSwKICAgICAgICBORlNFUlJf
V0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JBREhBTkRMRSA9IDEwMDAxLAogICAgICAgIE5G
U0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAgIE5GU0VSUl9CQURfQ09PS0lFID0gMTAwMDMs
CiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAwNCwKICAgICAgICBORlNFUlJfVE9PU01BTEwg
PSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVSRkFVTFQgPSAxMDAwNiwKICAgICAgICBORlNF
UlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5GU0VSUl9KVUtFQk9YID0gMTAwMDgKIH07CgoK
CmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5PTiA9IDAsCiAgICAgICAgTkZSRUcgPSAxLAog
ICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJMSyA9IDMsCiAgICAgICAgTkZDSFIgPSA0LAog
ICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNPQ0sgPSA2LAogICAgICAgIE5GQkFEID0gNywK
ICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0cnVjdCBuZnNfZmggewogICAgICAgIHVuc2ln
bmVkIHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhWzY0XTsKfTsKIyAxMDcg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvbmZzLmgiIDMKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAgIE5GU19VTlNU
QUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZTX0ZJTEVfU1lO
QyA9IDIKfTsKIyA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIgMwoKCgoKc3RydWN0IG5mc19pbm9k
ZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmc2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoK
CiAgICAgICAgc3RydWN0IG5mc19maCBmaDsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxh
Z3M7CiMgNDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
ZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAg
X191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2F0aW1lOwog
ICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRy
dGltZW87CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAg
ICAgICAgX191MzIgY29va2lldmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBy
ZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAg
IHVuc2lnbmVkIGludCBucmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGly
dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hf
bmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47Cn07CiMgOTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwpz
dHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwogICAgICAgIHUzMiBmbGFn
czsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjg4ICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi
IDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEgMwoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9k
ZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjg5ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDEgMwoKCgojIDEgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x
L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMSAzCiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvbGludXgvYS5v
dXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvYXNtL2Eub3V0LmgiIDEgMwoKCgoKCgoKc3RydWN0IGV4ZWMKewogIHVu
c2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2RhdGE7
CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50cnk7
CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNpemU7Cn07CiMgMTggIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x
L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMiAzCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAg
TV9PTERTVU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoK
ICBNX1NQQVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBT
MiA9IDE1Mgp9OwojIDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvbGliL2dj
Yy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9saW51eC9hLm91dC5oIiAzCnN0cnVjdCBu
bGlzdCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25l
eHQ7CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAg
Y2hhciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07
CiMgMjQ0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dl
cnBjLWxpbnV4LzMuMS9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDMKc3RydWN0IHJlbG9jYXRpb25f
aW5mbwp7CgogIGludCByX2FkZHJlc3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsK
CgoKICB1bnNpZ25lZCBpbnQgcl9wY3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7
CgoKCgoKCiAgdW5zaWduZWQgaW50IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCBy
X3BhZDo0OwoKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Rp
bWUuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjIHsKICAgICAg
ICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
aW1lLmgiIDMKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZm
aWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9
IHZhbHVlLT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAg
ICAgIGlmIChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gKCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAg
LSAxOwogICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEw
MCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1l
c3BlYyh1bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAg
ICAgICB2YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAvIDEw
MCk7CiAgICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC90aW1lLmgiIDMKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQg
aW50IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5z
aWduZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNl
YykKewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAg
IG1vbiArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAg
IHJldHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVh
ci8xMDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAg
ICAgICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAg
ICkqNjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAg
ICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3Ry
dWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6
X2RzdHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2
YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7
CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWUoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZv
aWQgKCpkb19nZXRfZmFzdF90aW1lKShzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxMjEgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
dGltZS5oIiAzCnN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf
aW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0
aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3Ry
dWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMiAzCgoK
CgpzdHJ1Y3Qga2V5X2NhY2hlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBrY19scnVfdGltZTsK
ICAgICAgICBzMzIga2NfZmlyc3Q7CiAgICAgICAgczMyIGtjX2xhc3Q7CiAgICAgICAgczMyIGtj
X3RoaXNfa2V5OwogICAgICAgIGludCBrY190aGlzX3NlcTsKICAgICAgICBzMzIga2NfbmV4dF9r
ZXk7CiAgICAgICAgczMyIGtjX2tleXNbNzNdOwp9OwoKCgpzdHJ1Y3QgZXh0X2NhY2hlIHsKICAg
ICAgICBzdHJ1Y3Qga2V5X2NhY2hlIGtjWzRdOwogICAgICAgIHMzMiBlY1soKDFVTCA8PCAxMikg
LSA0ICogc2l6ZW9mKHN0cnVjdCBrZXlfY2FjaGUpIC0gNCkgLyA0XTsKICAgICAgICBpbnQgbWF4
X2V4dDsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxv
bmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICBzMzIgaV9wYXJl
bnQ7CiAgICAgICAgczMyIGlfb3JpZ2luYWw7CiAgICAgICAgczMyIGlfZGF0YVsxNl07CiAgICAg
ICAgc3RydWN0IGV4dF9jYWNoZSAqaV9lYzsKICAgICAgICBpbnQgaV9jYWNoZV91c2VyczsKICAg
ICAgICBpbnQgaV9sYXN0YmxvY2s7CiAgICAgICAgc2hvcnQgaV9wYV9jbnQ7CiAgICAgICAgc2hv
cnQgaV9wYV9uZXh0OwogICAgICAgIHNob3J0IGlfcGFfbGFzdDsKICAgICAgICBzaG9ydCBpX3pv
bmU7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2hsaW5rOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
aV9wYWQ7Cn07CiMgMjkwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2ku
aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMwpzdHJ1Y3QgdWZzX2lub2RlX2luZm8g
ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAg
ICAgICAgICAgICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAg
X191NjQgaV9zaXplOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47
CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAg
IF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2
IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAyOTEgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMu
aCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNf
aS5oIiAzCnR5cGVkZWYgaW50MzJfdCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNf
aW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNo
YXIgcmF3WzhdOwogICAgICAgIHN0cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZXhfbWFnaWM6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoy
NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBleF9vZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4
dGVudDsKCnR5cGVkZWYgc3RydWN0IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAg
IHVuc2lnbmVkIGludCBuZGV2Owp9IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsK
ICAgICAgICB1X3Nob3J0IGRpX21vZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAg
dV9zaG9ydCBkaV91aWQ7CiAgICAgICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBk
aV9zaXplOwogICAgICAgIGludDMyX3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGlt
ZTsKICAgICAgICBpbnQzMl90IGRpX2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAg
ICAgICBzaG9ydCBkaV9udW1leHRlbnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAg
ICAgIHVfY2hhciBkaV9zcGFyZTsKICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAg
ICAgIGVmc19leHRlbnQgZGlfZXh0ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBk
aV9kZXY7CiAgICAgICAgfSBkaV91Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAg
ICAgaW50IG51bWV4dGVudHM7CiAgICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19l
eHRlbnQgZXh0ZW50c1sxMl07Cn07CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvY29kYV9mc19pLmgiIDEgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAzCiMgMSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC9jb2RhLmgiIDEgMwojIDEwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgdmVu
dXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVuc2ln
bmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07Cn07
CiMgMTk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlwZWRl
ZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9sb25n
IEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJZCBW
b2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VGaWQ7
CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAqZmlk
KQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZm
ZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQtPlVu
aXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKGZp
ZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQojIDIz
MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVf
aW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29kYV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQs
IGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwogICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2Vn
aWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoKCgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9O
LCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZDSFIsIENfVkxOSywgQ19WU09DSywgQ19WRklG
TywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwog
ICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAgICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2
dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxl
aWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsKICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsK
ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj
IHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xv
bmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9mbGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9y
ZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVzOwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVy
ZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMgewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAg
IGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3QgZl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmls
ZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMgMzM1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1
Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBs
b25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9y
dCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hk
ciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwog
ICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2Rh
X3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29w
ZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0
X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3Qg
Y29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG
aWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0
IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBs
ZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3Rs
X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRy
X3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p
bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7
CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsK
fTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7
CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0
IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry
dWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4g
ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5h
bWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoK
CnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW
aWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAg
ICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAg
ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNv
ZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBj
b2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0
IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1
Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQg
c291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0
IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVj
dCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk
IHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50
IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p
bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwog
ICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7
Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK
ICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50
IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoK
c3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07
CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog
ICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoK
CnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2lu
X2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAg
IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7
Cn07CiMgNTkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsK
ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07
CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7
CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAg
c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0
IGNvZGFfemFwdm5vZGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1
Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1
cmdlZmlkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2Rh
RmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9yZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf
aGRyIG9oOwogICAgVmljZUZpZCBOZXdGaWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1
Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp
Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgZmQ7Cn07CgoKc3RydWN0IGNv
ZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG
aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQg
ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1
Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0
IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0
IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNjc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp1bmlvbiBpbnB1
dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Blbl9p
biBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9jbG9zZV9pbiBjb2RhX2Nsb3NlOwogICAgc3Ry
dWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfaW4g
Y29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAg
ICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nlc3M7CiAgICBzdHJ1Y3QgY29kYV9sb29r
dXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7
CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9yZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9s
aW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2RhX3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsK
ICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRp
cl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFfc3ltbGlua19pbiBjb2RhX3N5bWxpbms7
CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNv
ZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0
OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1
Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k
YV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBvdXRwdXRBcmdzIHsKICAgIHN0cnVj
dCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9yb290X291dCBjb2RhX3Jvb3Q7CiAg
ICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9v
dXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsK
ICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9j
cmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtk
aXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgY29kYV9yZWFkbGluazsKICAgIHN0cnVj
dCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQg
Y29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCBjb2RhX3phcGZpbGU7
CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFfemFwZGlyOwogICAgc3RydWN0IGNvZGFf
emFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQg
Y29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsK
ICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVj
dCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k
YV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5pb24gY29kYV9kb3duY2FsbHMgewoKCiAg
ICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdldXNlcjsKICAgIHN0cnVjdCBjb2RhX3ph
cGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IHphcGRpcjsKICAg
IHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdl
ZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07
CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAgICBjYWRkcl90IGluLCBvdXQ7CiAgICAg
ICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBvdXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9j
dGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRoOwogICAgICAgIGludCBmb2xsb3c7CiAg
ICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3NjcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY29kYS5oIiAzCnN0
cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBm
ZDsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMiAzCgoKCgoKc3RydWN0IGNvZGFfaW5v
ZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAgdV9zaG9ydCBj
X2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY192b2xyb290bGlzdDsKICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIHN0cnVjdCBpbm9kZSAqY192bm9kZTsK
ICAgICAgICB1bnNpZ25lZCBpbnQgY19jb250Y291bnQ7CiAgICAgICAgc3RydWN0IGNvZGFfY3Jl
ZCBjX2NhY2hlZF9jcmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NhY2hlZF9wZXJtOwogICAg
ICAgIGludCBjX21hZ2ljOwp9OwoKCgoKCgoKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5v
ZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKaW50IGNvZGFf
Y25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpz
Yik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9kZSAqLCBW
aWNlRmlkICosIFZpY2VGaWQgKik7CiMgMjkzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvcm9tZnNfZnNfaS5oIiAxIDMKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRh
b2Zmc2V0Owp9OwojIDI5NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2Zz
LmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKc3RydWN0IHNobWVtX2lub2Rl
X2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIG1h
eF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgc3dwX2Vu
dHJ5X3QgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAg
ICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnN0cnVjdCBz
aG1lbV9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9ibG9ja3M7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBmcmVlX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbm9k
ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX2lub2RlczsKICAgICAgICBzcGlubG9ja190
IHN0YXRfbG9jazsKfTsKIyAyOTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJf
ZnNfaS5oIiAxIDMKIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAzCnN0cnVjdCBzbWJfaW5vZGVf
aW5mbyB7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAgICAgICBfX3UxNiBmaWxl
aWQ7CiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNjZXNzOwogICAgICAgIF9f
dTE2IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsKfTsKIyAyOTYgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIiAxIDMKIyAxOSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o
ZnNfZnNfaS5oIiAzCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoK
ICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0
X2VudHJ5ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBp
bnQgY29udmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9z
aXplOwoKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91
dDsKICAgICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0
el9zZWNvbmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkg
KiwgY29uc3QgaW5vX3QpOwp9OwojIDI5NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L2FkZnNfZnNfaS5oIiAxIDMKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIgMwpzdHJ1Y3QgYWRm
c19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwogICAgICAgIF9fdTMyIGxvYWRhZGRyOwogICAgICAg
IF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBmaWxldHlwZTsKICAgICAgICB1
bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBpbnQgc3RhbXBlZDoxOwp9OwojIDI5OCAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAxIDMKIyAxNCAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9x
bng0X2ZzX2kuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMSAzCiMgMTUgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
cW54dHlwZXMuaCIgMwp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFu
eDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50X2JsazsKICAg
ICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRf
bW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdp
ZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54NF9ubGlua190
OwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyIDMKCgoKCnN0cnVjdCBxbng0X2lub2RlX2lu
Zm8gewogICAgICAgIGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3Np
emU7CiAgICAgICAgcW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJs
azsKICAgICAgICBfX3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAg
X19zMzIgaV9hdGltZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRf
dCBpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9t
dWlkX3QgaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlu
a190IGlfbmxpbms7CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90
IGlfdHlwZTsKICAgICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11
X3ByaXZhdGU7Cn07CiMgMjk5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2Vy
ZnNfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg
cmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3Zl
cnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i
eXRlOwoKCgoKCgoKICBzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0ICppX2NvbnZlcnRlZF9wYWdl
IDsKCgoKCgoKICBpbnQgaV9jb252ZXJzaW9uX3RyYW5zX2lkIDsKIyA1MyAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZWlz
ZXJmc19mc19pLmgiIDMKICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICBpbnQgaV9wcmVhbGxvY19j
b3VudDsKCgoKCiAgaW50IG5vcGFjazsKfTsKIyAzMDAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9iZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAzCnN0cnVj
dCBiZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rza19pbm87CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBpX3NibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZWJsb2Nr
Owp9OwojIDMwMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEg
MwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIF9f
dTMyIGxvZ2ljYWxCbG9ja051bTsKICAgICAgICBfX3UxNiBwYXJ0aXRpb25SZWZlcmVuY2VOdW07
Cn0gbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91YXRp
bWU7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwoKICAgICAg
ICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAgX191NjQgaV91bmlxdWU7CiAgICAgICAgX191
MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBpX2xlbkFsbG9jOwogICAgICAgIF9fdTMyIGlf
bmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAg
ICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRf
ZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMg
MzAyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIgMSAzCiMgMTcg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvbmNwX2ZzX2kuaCIgMwpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9f
dTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NE
aXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBp
bnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwp9OwojIDMwMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnNf
aS5oIiAxIDMKc3RydWN0IHByb2NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry
dWN0ICp0YXNrOwogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
ICAgIGludCAoKnByb2NfZ2V0X2xpbmspKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICoq
LCBzdHJ1Y3QgdmZzbW91bnQgKiopOwogICAgICAgICAgICAgICAgaW50ICgqcHJvY19yZWFkKShz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKnBhZ2UpOwogICAgICAgIH0gb3A7CiAgICAg
ICAgc3RydWN0IGZpbGUgKmZpbGU7Cn07CiMgMzA0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvdXNiZGV2X2ZzX2kuaCIgMSAzCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1Y3QgdXNiX2J1
czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBk
bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMDUgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC92ZXJzaW9u
LmgiIDEgMwojIDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIiAyIDMKCnN0cnVjdCBqZmZzMl9pbm9k
ZV9pbmZvIHsKCgoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIHVp
bnQzMl90IGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcg
KmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0
YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBz
dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKICAgICAgICB1aW50MTZfdCBmbGFn
czsKICAgICAgICB1aW50OF90IHVzZXJjb21wcjsKCgoKfTsKIyAzMDYgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIg
MiAzCiMgMzMyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25l
ZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlh
X3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAg
ICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1l
X3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzU2
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2ZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDEgMwojIDQyICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L3F1b3RhLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2Vycm5v
LmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIg
MiAzCiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJl
ZV9kcXVvdHM7CmV4dGVybiBpbnQgbWF4X2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3Nx
dWFzaDsKIyAxMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHFibGsgewogICAgICAgIF9f
dTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAgICAg
IF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAgICAg
ICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsKICAg
ICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMgMTQx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L3F1b3RhLmgiIDMKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1
cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191
MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh
dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j
czsKfTsKIyAxNjcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0
cnVjdCBkcXVvdCAqZHFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKipkcV9wcHJldjsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ZyZWU7CiAgICAgICAgc3RydWN0IGRxdW90ICpkcV9o
YXNoX25leHQ7CiAgICAgICAgc3RydWN0IGRxdW90ICoqZHFfaGFzaF9wcHJldjsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0OwogICAgICAgIGludCBkcV9jb3VudDsKCgogICAgICAg
IHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lkOwog
ICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAgICAgICBzaG9y
dCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7CgogICAgICAg
IHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKCgoKCnN0
cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29w
ZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAg
ICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwogICAgICAg
IGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcHJlcGFyZV93
cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsK
ICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICos
IHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0cnVjdCBhZGRyZXNz
X3NwYWNlICosIGxvbmcpOwp9OwoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgY2xlYW5fcGFnZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9w
YWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNp
Z25lZCBsb25nIG5ycGFnZXM7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9u
cyAqYV9vcHM7CiAgICAgICAgc3RydWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqaV9tbWFwOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFw
X3NoYXJlZDsKICAgICAgICBzcGlubG9ja190IGlfc2hhcmVkX2xvY2s7Cn07CgpzdHJ1Y3QgYmxv
Y2tfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRv
bWljX3QgYmRfY291bnQ7CgogICAgICAgIGRldl90IGJkX2RldjsKICAgICAgICBhdG9taWNfdCBi
ZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAq
YmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07Cn07CgpzdHJ1Y3QgaW5vZGUg
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgaV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlf
aW5vOwogICAgICAgIGF0b21pY190IGlfY291bnQ7CiAgICAgICAga2Rldl90IGlfZGV2OwogICAg
ICAgIHVtb2RlX3QgaV9tb2RlOwogICAgICAgIG5saW5rX3QgaV9ubGluazsKICAgICAgICB1aWRf
dCBpX3VpZDsKICAgICAgICBnaWRfdCBpX2dpZDsKICAgICAgICBrZGV2X3QgaV9yZGV2OwogICAg
ICAgIGxvZmZfdCBpX3NpemU7CiAgICAgICAgdGltZV90IGlfYXRpbWU7CiAgICAgICAgdGltZV90
IGlfbXRpbWU7CiAgICAgICAgdGltZV90IGlfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp
X2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1bnNpZ25l
ZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAgICAg
IHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29wZXJhdGlv
bnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgICAgICAg
c3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGlfd2Fp
dDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVjdCBhZGRy
ZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRh
OwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKICAgICAgICBzdHJ1Y3QgcGlwZV9p
bm9kZV9pbmZvICppX3BpcGU7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqaV9iZGV2OwoK
ICAgICAgICB1bnNpZ25lZCBsb25nIGlfZG5vdGlmeV9tYXNrOwogICAgICAgIHN0cnVjdCBkbm90
aWZ5X3N0cnVjdCAqaV9kbm90aWZ5OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc3RhdGU7Cgog
ICAgICAgIHVuc2lnbmVkIGludCBpX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9zb2Nr
OwoKICAgICAgICBhdG9taWNfdCBpX3dyaXRlY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGlf
YXR0cl9mbGFnczsKICAgICAgICBfX3UzMiBpX2dlbmVyYXRpb247CiAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X2lub2RlX2luZm8gbWluaXhfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBleHQyX2lub2RlX2luZm8gZXh0Ml9pOwogICAgICAgICAgICAgICAgc3Ry
dWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19p
bm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZv
IG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gdW1zZG9z
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8gaXNvZnNfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAgICAgICAgICAgICAgIHN0
cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNf
aW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX2lub2RlX2luZm8g
dWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2luZm8gZWZzX2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19pOwogICAgICAgICAgICAg
ICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAgICAgICAgICAgIHN0cnVj
dCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9pbm9k
ZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX2lub2RlX2luZm8gaGZz
X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIGFkZnNfaTsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwogICAgICAgICAgICAgICAg
c3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAgICAgICAgICAgICAgIHN0
cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfaW5v
ZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3BfaW5vZGVfaW5mbyBuY3Bm
c19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5mbyBwcm9jX2k7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAgICAgICAgICAgc3RydWN0
IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMy
X2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNfaXA7CiAg
ICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAgICBpbnQgcGlkOwogICAg
ICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9OwoKc3RydWN0IGZpbGUg
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAgIHN0cnVjdCBkZW50cnkg
KmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNtbnQ7CiAgICAgICAgc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNfdCBmX2NvdW50OwogICAg
ICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBmX21vZGU7CiAgICAgICAg
bG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFkYSwgZl9yYW1heCwgZl9y
YWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93bl9zdHJ1Y3QgZl9vd25l
cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAgICAgIGludCBmX2Vycm9y
OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAgICAgIHZvaWQgKnByaXZh
dGVfZGF0YTsKfTsKZXh0ZXJuIHNwaW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGlu
dCBpbml0X3ByaXZhdGVfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7
CiMgNTIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmbF9v
d25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqZmxf
bmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwogICAgICAgIHVu
c2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxfd2FpdDsKICAg
ICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX2ZsYWdz
OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3QgZmxfc3RhcnQ7
CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlmeSkoc3RydWN0
IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3QgZmlsZV9sb2Nr
ICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sgKik7CgogICAg
ICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAgfSBmbF91
Owp9OwojIDU1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVf
bG9ja19saXN0OwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2ZjbnRs
LmgiIDEgMwojIDc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2FzbS9mY250bC5oIiAzCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hv
cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7
CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxv
Y2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAg
ICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBs
X3BpZDsKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIgMwojIDU1OSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy
IDMKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7
CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVj
dCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVj
dCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNp
Z25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9j
ayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0
IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1v
dmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3Jl
bW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4
X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50
IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2ln
bmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Jsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAq
LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3Ry
dWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu
b2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShz
dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwg
bG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93
cml0ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsK
CnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZh
X2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVj
dCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3Ry
dWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBr
aWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZv
aWQgX19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1
Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3Ry
dWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNp
Z25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90
YV9tb3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3Ry
dWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3Nl
bTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4
cGlyZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNx
dWFzaFsyXTsKfTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9taW5peF9mc19zYi5oIiAxIDMKCgoKCgoK
c3RydWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256
b25lczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tz
OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19u
YW1lbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2MjUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9leHQyX2ZzX3NiLmgiIDEgMwojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIg
MwpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19zaXpl
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdz
X3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwog
ICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVk
X2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tfYml0
bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRf
b3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19k
ZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAgaW50
IHNfZmlyc3RfaW5vOwp9OwojIDYyNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hw
ZnNfZnNfc2IuaCIgMSAzCgoKCnN0cnVjdCBocGZzX3NiX2luZm8gewogICAgICAgIGlub190IHNi
X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9i
aXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3RhcnQ7CiAgICAgICAgdW5zaWdu
ZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2RtYXA7CiAgICAgICAgdW5z
aWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZV9kbm9kZXM7CiAgICAg
ICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsKICAgICAgICB1bW9kZV90IHNi
X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgc2Jf
ZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwogICAgICAgIHVuc2lnbmVkIHNi
X2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNlIDogMTsKICAgICAgICB1bnNp
Z25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVkIHNiX2Noa2RzayA6IDI7CiAg
ICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2lu
b2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNiX2lnZXRfcTsKICAgICAgICB1
bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVuc2lnbmVkICpzYl9ibXBfZGly
OwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90
IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9jcmVhdGlvbl9kZV9sb2NrIDog
MTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2MjcgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz
CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEgMwoKCgpzdHJ1Y3QgbnRmc19zYl9pbmZvewoK
ICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90IGdpZDsKICAgICAgICBu
dG1vZGVfdCB1bWFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgbmN0OwogICAgICAgIHZvaWQgKm5s
c19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKCiAgICAgICAgbnRmc19zaXplX3QgcGFy
dGl0aW9uX2JpYXM7CgogICAgICAgIG50ZnNfdTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwog
ICAgICAgIG50ZnNfdTMyIGF0X2F0dHJpYnV0ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2Zp
bGVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZz
X3UzMiBhdF9zZWN1cml0eV9kZXNjcmlwdG9yOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9u
YW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZz
X3UzMiBhdF9kYXRhOwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRm
c191MzIgYXRfaW5kZXhfYWxsb2NhdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAg
ICAgICAgbnRmc191MzIgYXRfc3ltbGluazsKCiAgICAgICAgaW50IGJsb2Nrc2l6ZTsKICAgICAg
ICBpbnQgY2x1c3RlcmZhY3RvcjsKICAgICAgICBpbnQgY2x1c3RlcnNpemU7CiAgICAgICAgaW50
IG1mdF9yZWNvcmRzaXplOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAg
ICAgICBpbnQgaW5kZXhfcmVjb3Jkc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVy
X3JlY29yZDsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXI7CgogICAgICAgIHVuc2lnbmVkIGNoYXIg
Km1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNlOwogICAgICAgIHVuc2lnbmVkIGlu
dCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRfaW5v
OwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdG1pcnI7CiAgICAgICAgc3RydWN0
IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7
Cn07CiMgNjI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfc2IuaCIg
MSAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMSAzCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQK
eyBpbnQgY3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBs
b25nIGZsYWdzOwogIGludCAoKmRldGVjdF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwog
IGludCAoKm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwog
IGludCAoKnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVm
ZmVyX2hlYWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7
CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sq
c2IsaW50IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAq
c2Isc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0
eSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqYmgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpj
dmZfaXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgpOwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbmJyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
YmhbMzJdKTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQg
bnIsaW50IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2Isc3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkg
KHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVh
ZCkgKCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3Qg
KCpjdmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
bG9mZl90ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBwYWdlICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwg
c3RydWN0IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1
Y3QgaW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0
cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0
cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3Vu
dF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Js
b2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0
c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tc2Rv
c19mc19zYi5oIiAyIDMKCgoKCgpzdHJ1Y3QgZmF0X21vdW50X29wdGlvbnMgewogICAgICAgIHVp
ZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAq
aW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNp
Z25lZCBjaGFyIGNvbnZlcnNpb247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAg
ICAgICAgICBzaG93ZXhlYzoxLAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAg
ICAgICAgICAgICAgICBkb3RzT0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAg
ICAgICAgICAgICB1dGY4OjEsCiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAg
ICAgICAgICAgICAgIHBvc2l4ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAg
ICAgICAgICAgICAgYXRhcmk6MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAg
ICAgICAgIG5vY2FzZToxOwp9OwoKc3RydWN0IHZmYXRfdW5pY29kZSB7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciB1bmkxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5pMjsKfTsKCnN0cnVjdCBtc2Rv
c19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxm
YXRfYml0czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmYXRfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGRpcl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0
YV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgcm9vdF9jbHVzdGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX29mZnNldDsK
ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmYXRfd2FpdDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1
c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAg
c3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz
X2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQg
KmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwojIDYyOSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9m
cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb2Zz
X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3Jv
Y2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1
bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAgICAgIG1vZGVfdCBzX21vZGU7CiAgICAg
ICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgc3RydWN0IG5sc190
YWJsZSAqc19ubHNfaW9jaGFyc2V0Owp9OwojIDYzMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L25mc19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAg
IHN0cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBy
cGNfb3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAg
ICAgICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAg
ICAgICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwog
ICAgICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47
CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rp
cm1pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50
IG5hbWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVx
bGlzdCAqIHJ3X3JlcXVlc3RzOwp9OwoKCgoKc3RydWN0IG5mc19zYl9pbmZvIHsKICAgICAgICBz
dHJ1Y3QgbmZzX3NlcnZlciBzX3NlcnZlcjsKfTsKIyA2MzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg
MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9zeXN2X2ZzX3NiLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIg
MwpzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHsKICAgICAgICBpbnQgc190eXBlOwogICAgICAgIHVuc2ln
bmVkIGludCBzX2Jsb2NrX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfc2l6ZV8x
OwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2NrX3NpemVfYml0czsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc19ibG9ja19zaXplX2luY19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2Nr
X3NpemVfZGVjX2JpdHM7CiAgICAgICAgY2hhciBzX2NvbnZlcnQ7CiAgICAgICAgY2hhciBzX2ts
dWRnZV9zeW1saW5rczsKICAgICAgICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qg
c19saW5rX21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAg
ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBp
bnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl
cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzE7CiAgICAgICAg
dW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz
X2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf
MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJfYml0czsKICAgICAgICB1
bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5k
X3Blcl9ibG9ja19ibG9ja19zaXplXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9i
bG9ja19ibG9ja19zaXplX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9j
a18yX2Jsb2NrX3NpemVfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf
YmxvY2tfc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZDBfc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBpbnQgc19pbmQxX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kMl9z
aXplOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNpZ25l
ZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o
ZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAgICAg
Y2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUxNiAqc19zYl9m
aWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpzX3Ni
X3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl9mbGNfY291bnQ7CiAgICAgICAg
dTMyICpzX3NiX2ZsY19ibG9ja3M7CiAgICAgICAgdTMyICpzX3NiX3RvdGFsX2ZyZWVfYmxvY2tz
OwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUzMiAqc19zYl9zdGF0ZTsKCgogICAg
ICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUzMiBzX2ZpcnN0ZGF0YXpvbmU7CiAg
ICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19uZGF0YXpvbmVzOwogICAgICAgIHUz
MiBzX256b25lczsKfTsKIyA2MzIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZz
X2ZzX3NiLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgYWZmc19i
bV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJtX2JoOwogICAgICAgIHMzMiBi
bV9maXJzdGJsazsKICAgICAgICBzMzIgYm1fa2V5OwogICAgICAgIGludCBibV9jb3VudDsKfTsK
CnN0cnVjdCBhZmZzX2FsbG9jX3pvbmUgewogICAgICAgIHNob3J0IGF6X3NpemU7CiAgICAgICAg
c2hvcnQgYXpfY291bnQ7CiAgICAgICAgaW50IGF6X2ZyZWU7Cn07CgpzdHJ1Y3QgYWZmc196b25l
IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHpfaW5vOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2lu
Zm8gKnpfYm07CiAgICAgICAgaW50IHpfc3RhcnQ7CiAgICAgICAgaW50IHpfZW5kOwogICAgICAg
IGludCB6X2F6X25vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgel9scnVfdGltZTsKfTsKCnN0cnVj
dCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAgICAgIGlu
dCBzX2Jsa3NpemU7CiAgICAgICAgczMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNo
c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgczE2IHNfdWlkOwog
ICAgICAgIHMxNiBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsKICAgICAgICBpbnQgc19y
ZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBz
dHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICBpbnQgc19ibV9jb3VudDsKICAg
ICAgICBpbnQgc19uZXh0em9uZTsKICAgICAgICBpbnQgc19udW1fYXo7CiAgICAgICAgc3RydWN0
IGFmZnNfem9uZSAqc196b25lczsKICAgICAgICBzdHJ1Y3QgYWZmc19hbGxvY196b25lICpzX2Fs
bG9jOwogICAgICAgIGNoYXIgKnNfem9uZW1hcDsKICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAg
ICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAgIGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDYz
MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAxIDMKIyAxNyAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC91ZnNfZnNfc2IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEgMwojIDI0OCAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC91ZnNfZnMuaCIgMwpzdHJ1Y3QgdWZzX3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2
X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewog
ICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgc3RydWN0
IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBk
X3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewog
ICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJmcmVlOwogICAgICAgIF9f
dTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZz
X3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3Js
aW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAg
ICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBf
X3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIg
ZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwog
ICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3Uz
MiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAgICBfX3UzMiBmc19taW5m
cmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAg
ICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191
MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNf
bWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJh
Z3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXpl
OwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAg
ICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3Uz
MiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBz
ZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0g
ZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsK
ICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoK
ICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAg
IF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIg
ZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoK
ICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMy
IGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9f
czggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7
CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAg
ICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBf
X3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBm
c19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAg
IF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf
c3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBm
c19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Jl
Y2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz
X3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
bWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1sy
XTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAg
ICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19z
MzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZz
X3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2Vb
MV07Cn07CiMgNDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAzCnN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3Jv
dXAgewogICAgICAgIF9fdTMyIGNnX2xpbms7CiAgICAgICAgX191MzIgY2dfbWFnaWM7CiAgICAg
ICAgX191MzIgY2dfdGltZTsKICAgICAgICBfX3UzMiBjZ19jZ3g7CiAgICAgICAgX191MTYgY2df
bmN5bDsKICAgICAgICBfX3UxNiBjZ19uaWJsazsKICAgICAgICBfX3UzMiBjZ19uZGJsazsKICAg
ICAgICBzdHJ1Y3QgdWZzX2NzdW0gY2dfY3M7CiAgICAgICAgX191MzIgY2dfcm90b3I7CiAgICAg
ICAgX191MzIgY2dfZnJvdG9yOwogICAgICAgIF9fdTMyIGNnX2lyb3RvcjsKICAgICAgICBfX3Uz
MiBjZ19mcnN1bVsoODE5MiAvIDEwMjQpXTsKICAgICAgICBfX3UzMiBjZ19idG90b2ZmOwogICAg
ICAgIF9fdTMyIGNnX2JvZmY7CiAgICAgICAgX191MzIgY2dfaXVzZWRvZmY7CiAgICAgICAgX191
MzIgY2dfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjZ19uZXh0ZnJlZW9mZjsKICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz
MiBjZ19jbHVzdGVyc3Vtb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVz
dGVyb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19uY2x1c3RlcmJsa3M7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzEzXTsKICAgICAgICAgICAg
ICAgIH0gY2dfNDQ7CiAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxNl07CiAgICAg
ICAgfSBjZ191OwogICAgICAgIF9fdTggY2dfc3BhY2VbMV07Cgp9OwoKCgoKc3RydWN0IHVmc19p
bm9kZSB7CiAgICAgICAgX191MTYgdWlfbW9kZTsKICAgICAgICBfX3UxNiB1aV9ubGluazsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UxNiB1aV9zdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zZ2lk
OwogICAgICAgICAgICAgICAgfSBvbGRpZHM7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9pbnVt
YmVyOwogICAgICAgICAgICAgICAgX191MzIgdWlfYXV0aG9yOwogICAgICAgIH0gdWlfdTE7CiAg
ICAgICAgX191NjQgdWlfc2l6ZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfYXRpbWU7
CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX210aW1lOwogICAgICAgIHN0cnVjdCB1ZnNf
dGltZXZhbCB1aV9jdGltZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9kYlsxMl07CiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdTMyIHVpX2liWzNdOwogICAgICAgICAgICAgICAgfSB1aV9hZGRyOwogICAg
ICAgICAgICAgICAgX191OCB1aV9zeW1saW5rWzQqKDEyICszKV07CiAgICAgICAgfSB1aV91MjsK
ICAgICAgICBfX3UzMiB1aV9mbGFnczsKICAgICAgICBfX3UzMiB1aV9ibG9ja3M7CiAgICAgICAg
X191MzIgdWlfZ2VuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3NoYWRvdzsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX29lZnRmbGFnOwogICAgICAgICAgICAg
ICAgfSB1aV9zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgdWlfc3BhcmVbMl07CiAgICAgICAgICAgICAg
ICB9IHVpXzQ0OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX21vZGVoOwogICAgICAgICAgICAgICAgICAg
ICAgICBfX3UxNiB1aV9zcGFyZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdHJh
bnM7CiAgICAgICAgICAgICAgICB9IHVpX2h1cmQ7CiAgICAgICAgfSB1aV91MzsKfTsKIyA1MjQg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvdWZzX2ZzLmgiIDMKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1
Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxv
Y2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVk
IHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNp
Z25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2lu
Zm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsK
ZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2ln
bmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVy
YXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3Ry
dWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAq
LCB1bnNpZ25lZCBsb25nKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zp
bGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2Zp
bGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVm
c19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2Rl
KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9k
ZSAqLCBpbnQsIGludCAqKTsKCgpleHRlcm4gaW50IHVmc19mcmFnX21hcCAoc3RydWN0IGlub2Rl
ICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4
dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZz
X3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB1ZnNfc3luY19p
bm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3Ry
dWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJf
aGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsK
CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0
ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19mc190eXBlOwpleHRlcm4gdm9pZCB1ZnNf
d2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZv
aWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRl
cm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7
CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4
dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJh
dGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRlIChzdHJ1Y3QgaW5vZGUgKik7CiMgMTgg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewog
ICAgICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAg
IHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19j
Z19wcml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwog
ICAgICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBj
X25pYmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAg
ICAgICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3Uz
MiBjX2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRv
ZmY7CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7
CiAgICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9m
ZjsKICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0
ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9f
dTMyIHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJs
a25vOwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAg
ICAgICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMy
IHNfZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAg
ICAgICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNf
bWluZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAg
ICAgICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191
MzIgc19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19z
YnNpemU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0Owog
ICAgICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191
MzIgc19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJs
ZWF2ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsK
ICAgICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBf
X3UzMiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7
CiAgICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIg
c19jcGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJt
YXNrOwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0
OwogICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAg
ICAgX19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9f
dTMyIHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAg
ICAgICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAg
X191MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191
MzIgc19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5v
cGY7CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAg
X191MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMy
IHNfbWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0
cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1
bSAqIHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQg
c19mbGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3Ry
dWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19j
Z25vWzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2ln
bmVkIHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7
CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBf
X3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZz
X2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZz
ZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAg
ICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBm
c19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAg
ICAgICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9f
dTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19i
bWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAg
ICAgICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAg
ICBfX3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9f
dTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZz
X2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRp
cjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAg
IF9fdTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAg
IH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9
IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJh
Y2tza2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsK
ICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAg
IF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZz
X3NwYzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAg
ICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNf
Y3N1bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2Ns
ZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAg
ICBfX3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19z
ZWNvbmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3Jv
dG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3Rl
cjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07
CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJs
WzQ2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg
ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw
YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy
ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm
c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK
ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm
c19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVb
Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg
ICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191
MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7
CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwog
ICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjM0
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEgMwojIDI1ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L2Vmc19mc19zYi5oIiAzCnN0cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3Qg
ZnNfc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19j
Z2ZzaXplOwogICAgICAgIHNob3J0IGZzX2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9y
czsKICAgICAgICBzaG9ydCBmc19oZWFkczsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAg
c2hvcnQgZnNfZGlydHk7CiAgICAgICAgaW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3Qg
ZnNfbWFnaWM7CiAgICAgICAgY2hhciBmc19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNr
WzZdOwogICAgICAgIGludDMyX3QgZnNfYm1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7
CiAgICAgICAgaW50MzJfdCBmc190aW5vZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwog
ICAgICAgIGludDMyX3QgZnNfcmVwbHNiOwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsK
ICAgICAgICBjaGFyIGZzX3NwYXJlWzIwXTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9
OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAg
ICBpbnQzMl90IGZzX3N0YXJ0OwogICAgICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAg
aW50MzJfdCB0b3RhbF9ibG9ja3M7CiAgICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAg
IGludDMyX3QgZGF0YV9mcmVlOwogICAgICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBz
aG9ydCBpbm9kZV9ibG9ja3M7CiAgICAgICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDYzNSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEgMwoKCgoKCnN0
cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsK
IyA2MzYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMSAzCiMg
MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NtYi5oIiAxIDMKIyAxNCAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9zbWIuaCIgMwplbnVtIHNtYl9wcm90b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09M
X05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NP
UkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NP
TF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5k
bCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAg
ICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3Ux
NiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2NrczsKICAgICAgICBfX3UxNiBibG9ja3Np
emU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAg
ICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsK
ICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3Uz
MiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsK
CgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAgX191MTYgbWF4bXV4OwogICAgICAgIF9f
dTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7
CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAg
ICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAg
ICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsK
fTsKIyA3OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9zbWIuaCIgMwpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191
MTYgYXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZf
bW9kZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAg
ICAgZ2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3Np
emU7CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAg
ICAgdGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAg
ICAgIENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJ
RUQKfTsKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMiAzCgoKCgoKCgpzdHJ1Y3Qgc21iX3Ni
X2luZm8gewogICAgICAgIGVudW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0
IGZpbGUgKiBzb2NrX2ZpbGU7CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwg
Km1udDsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWdu
ZWQgaW50IGdlbmVyYXRpb247CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0
IHNtYl9jb25uX29wdCBvcHQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAg
IHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgKiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoK
CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3Qgbmxz
X3RhYmxlICpsb2NhbF9ubHM7CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBp
bnQgKCpjb252ZXJ0KShjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9Owoj
IDYzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hmc19mc19zYi5oIiAxIDMKIyAx
NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAo
Kmhmc19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRl
ZiB2b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAq
LCBpbnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5v
X3QsIGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1h
Z2ljOwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsK
CiAgICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50
IHNfdmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZz
X25hbWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7Cgog
ICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qg
c3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAg
ICAgX191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlk
X3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMg
NjM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxIDMKIyAx
MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDMKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFk
ZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZz
X2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAg
ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf
b3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIg
c19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21h
cF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQg
c19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAg
dW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9
OwojIDYzOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMSAz
CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEg
MwojIDQ1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMwpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAg
ICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAg
ICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAg
ICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3Mz
MiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0X254dG50X3Qg
ZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9t
dWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25s
aW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5
cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlu
a19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9k
ZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsx
MF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAg
ICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAg
ICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAg
ICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50
c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRf
dCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAg
c3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9k
ZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAg
ICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Fu
eDRfZnMuaCIgMwpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2Rl
ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRf
Y291bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsK
CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBp
bnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlu
b2RlICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpk
aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5v
ZGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZp
bGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29w
ZXJhdGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0
bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJu
IGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50
cnksIGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlu
b2RlKTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpl
eHRlcm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpk
ZW50cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk
ZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZp
bGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5v
ZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0
IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBj
cmVhdGUpOwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMiAzCgoKCgoKc3RydWN0IHFueDRf
c2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7CiAgICAgICAgc3Ry
dWN0IHFueDRfc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGludCBWZXJzaW9uOwog
ICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMgNjQwICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvdHF1ZXVlLmgiIDEgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAzCiMgMSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
c20vYml0b3BzLmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyIDMKIyAxICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9p
bmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMjAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIgMwojIDM4
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L3RxdWV1ZS5oIiAzCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAo
KnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
cXVldWUuaCIgMwp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVy
biB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2ssIHRxX2JkZmx1c2g7
CiMgOTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDMKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1ZXVlX2xvY2s7
CgoKCgoKc3RhdGljIGlubGluZSBpbnQgcXVldWVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9w
b2ludGVyLCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAg
ICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8geyAoe2ludF9j
b250cm9sLmludF9zYXZlX2ZsYWdzKCh1bnNpZ25lZCBsb25nICopJmZsYWdzKTtpbnRfY29udHJv
bC5pbnRfY2xpKCk7fSk7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg
ICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwogICAg
ICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGludF9jb250cm9sLmludF9yZXN0b3Jl
X2ZsYWdzKCh1bnNpZ25lZCBsb25nKWZsYWdzKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg
ICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZv
aWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9l
bXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0K
IyA5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIgMwojIDI2ICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JlaXNlcmZz
X2ZzX3NiLmgiIDMKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2Nr
X2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9f
dTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwojIDQzICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L3JlaXNlcmZzX2ZzX3NiLmgiIDMKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMy
IHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAg
X191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRf
YWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3Np
emU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2
IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29k
ZTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3Zl
cnNpb247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgY2hhciBzX3VudXNlZFsxMjhdIDsKfSBf
X2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwoKCgoKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Js
b2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg
X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv
dXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFs
X3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pv
dXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9f
dTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3Ux
NiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsK
ICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFw
X25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsK
IyAxNDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h
bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z
aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy
bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7
CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj
aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm
c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s
aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz
dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog
IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln
bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCgp9
IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcg
al9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVu
IDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBh
dG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2Rv
bmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBi
dWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl
ICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRs
aXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hl
YWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3Ry
dWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2Nr
cyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJl
aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5zaWdu
ZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2ln
bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9u
ZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9i
Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNp
Z25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpq
X2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFn
ZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf
d2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dh
aXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAg
aW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4
dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVf
dXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
b2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg
KmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBq
X3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsK
ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgal9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pvdXJuYWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlz
ZXJmc19qb3VybmFsX2Nub2RlICpqX2hhc2hfdGFibGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJm
c19qb3VybmFsX2Nub2RlICpqX2xpc3RfaGFzaF90YWJsZVs4MTkyXSA7Cgp9OwoKCgoKdHlwZWRl
ZiBfX3UzMiAoKmhhc2hmX3QpIChjb25zdCBjaGFyICosIGludCk7CgoKc3RydWN0IHJlaXNlcmZz
X3NiX2luZm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CgoKICAgIHN0cnVjdCBy
ZWlzZXJmc19zdXBlcl9ibG9jayAqIHNfcnM7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19h
cF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCAqc19qb3VybmFsIDsKICAgIHVu
c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CgoKICAgIHZvaWQgKCplbmRfaW9faGFuZGxlciko
c3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7CiAgICBoYXNoZl90IHNfaGFzaF9mdW5jdGlvbjsK
CgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsKCgoKCiAgICB3YWl0X3F1ZXVlX2hlYWRf
dCBzX3dhaXQ7CgogICAgYXRvbWljX3Qgc19nZW5lcmF0aW9uX2NvdW50ZXI7CgoKCiAgICBpbnQg
c19rbWFsbG9jczsKICAgIGludCBzX2Rpc2tfcmVhZHM7CiAgICBpbnQgc19kaXNrX3dyaXRlczsK
ICAgIGludCBzX2ZpeF9ub2RlczsKICAgIGludCBzX2RvX2JhbGFuY2U7CiAgICBpbnQgc191bm5l
ZWRlZF9sZWZ0X25laWdoYm9yOwogICAgaW50IHNfZ29vZF9zZWFyY2hfYnlfa2V5X3JlYWRhOwog
ICAgaW50IHNfYm1hcHM7CiAgICBpbnQgc19ibWFwc193aXRob3V0X3NlYXJjaDsKICAgIGludCBz
X2RpcmVjdDJpbmRpcmVjdDsKICAgIGludCBzX2luZGlyZWN0MmRpcmVjdDsKfTsKIyAzNTcgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3Ry
dWN0IHN1cGVyX2Jsb2NrICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNl
cmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaCkgOwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2Nr
ICpzLCBpbnQpIDsKaW50IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNf
cmVzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNjQxICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEgMwojIDEyICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L2Jmc19mc19zYi5oIiAzCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9mZjsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9s
Zl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hhciAqIHNp
X2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAgIHN0cnVj
dCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNjQyICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg
MwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5o
IiAzCiNwcmFnbWEgcGFjaygxKQojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIiAzCnN0cnVjdCB1
ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBfX3UzMiBzX3NwYXJfbG9jWzRdOwogICAgICAgIF9f
dTggc19zcGFyX3BzaGlmdDsKICAgICAgICBfX3U4IHNfc3Bhcl9pbmRleHNpemU7CiAgICAgICAg
X191MzIgKnNfc3Bhcl9tYXA7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAg
ICBfX3U4ICpzX3NwYXJfcmVtYXA4OwogICAgICAgICAgICAgICAgX191MTYgKnNfc3Bhcl9yZW1h
cDE2OwogICAgICAgICAgICAgICAgX191MzIgKnNfc3Bhcl9yZW1hcDMyOwogICAgICAgIH0gc19z
cGFyX3JlbWFwOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNf
bnVtX2VudHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRm
X3BhcnRfbWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMy
IGJpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBz
X3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMyIGJp
dG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBzX2Zz
cGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9fdTMyIHNfcGFy
dGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2
IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAgICAgIHN0cnVj
dCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsK
ICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBf
X3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAg
ICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRm
X3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAg
ICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAg
ICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAgICAgIF9fdTMyIHNfc2Vzc2lvbjsKICAgICAg
ICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsKCiAgICAgICAgX191MTYgc19sb2FkZWRfYmxv
Y2tfYml0bWFwczsKICAgICAgICBfX3UzMiBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2Jsb2NrX2JpdG1hcFs4XTsKCgogICAgICAgIG1vZGVf
dCBzX3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAg
ICAgICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoK
CiAgICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAg
ICAgc3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA2NDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9uY3BfZnNfc2IuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L25jcF9tb3VudC5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwoj
IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvbmNwLmgiIDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcC5oIiAzCnN0cnVjdCBuY3Bf
cmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggdGFz
ayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsK
CgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u
X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9uX2Nv
ZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0YXRl
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0
ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAgX191
MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMy
IHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxvY2tz
OwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWlsYWJs
ZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAgIGNo
YXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3AuaCIgMwpzdHJ1
Y3QgbndfaW5mb19zdHJ1Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVf
XygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3UzMiBkYXRhU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiB0b3RhbFN0cmVhbVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MTYgbnVtYmVyT2ZTdHJlYW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2
IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVh
dGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklE
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tl
ZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f
dTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5o
ZXJpdGVkUmlnaHRzTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk
aXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVt
IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2Vk
KSk7CiAgICAgICAgX191MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTMyIE5TQ3JlYXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4
IG5hbWVMZW4gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVb
MjU2XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi9vcHQvZnNwL2k1ODYtcGMt
bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwLmgiIDMK
c3RydWN0IG53X21vZGlmeV9kb3NfaW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1
dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp
KTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MzIgbW9kaWZpZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNo
aXZlRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGlt
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7Cn07CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAg
ICBfX3U4IHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk
aXJCYXNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyIDMK
IyAyNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewogICAg
ICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgX19r
ZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7
CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAgIHVu
c2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50Owog
ICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwog
ICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9t
b2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9t
b3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAgbG9u
ZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25l
ZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoKICAg
ICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJfbW9k
ZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBfX2tl
cm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2dfcGlk
OwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf
b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7
CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGZp
bGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvbmNwX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAgICAgICAgc3Ry
dWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9fdTggbmFtZV9zcGFjZVso
NjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsKCiAgICAgICAgdTggc2Vx
dWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVjdGlvbjsKCiAgICAgICAg
dTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoKICAgICAgICBpbnQgYnVm
ZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAgICBpbnQgcGFja2V0X3Np
emU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAgICAgaW50IGxvY2s7CiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBjdXJyZW50X3NpemU7CiAg
ICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNwX3JlcGx5X3NpemU7Cgog
ICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2lnbl93YW50ZWQ7CiAgICAg
ICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290WzhdOwogICAgICAgIGNo
YXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQg
YXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9uYW1lX2xlbjsKICAgICAg
ICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAgICAgaW50IG9iamVjdF90
eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHNp
emVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAgICAgIH0gcHJpdjsKCgog
ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAgc3RydWN0IG5sc190YWJs
ZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAgICAgICB1bnNpZ25lZCBp
bnQgZmxhZ3M7Cn07CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKc3RhdGljIGlubGluZSBp
bnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHJl
dHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlubGlu
ZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewog
ICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDY0NCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o
IiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L3VzYmRldl9mc19zYi5oIiAxIDMKc3RydWN0IHVzYmRldl9zYl9p
bmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaWxpc3Q7CiAgICAgICAgdWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsK
ICAgICAgICB1bW9kZV90IGRldm1vZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdp
ZF90IGJ1c2dpZDsKICAgICAgICB1bW9kZV90IGJ1c21vZGU7Cn07CiMgNjQ1ICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvY29tcGxldGlvbi5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDMKc3RydWN0
IGNvbXBsZXRpb24gewogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgczsKfTsKIyA5ICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L2pmZnMyX2ZzX3NiLmgiIDIgMwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lci5oIiAxIDMKIyAyMCAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC90aW1lci5oIiAzCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9OwoK
ZXh0ZXJuIHZvaWQgYWRkX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4g
aW50IGRlbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKIyA0NSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90
aW1lci5oIiAzCmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25l
ZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsK
CnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIp
CnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAq
KTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGlt
ZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2
b2lkICopMCk7Cn0KIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyIDMKIyAyMiAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC9qZmZzMl9mc19zYi5oIiAzCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
bXRkX2luZm8gKm10ZDsKCiAgICAgICAgdWludDMyX3QgaGlnaGVzdF9pbm87CiAgICAgICAgdW5z
aWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdjX3Rhc2s7CiAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSBnY190aHJlYWRfc3RhcnQ7CiAgICAgICAgc3RydWN0IGNv
bXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYWxsb2Nf
c2VtOwoKCgoKICAgICAgICB1aW50MzJfdCBmbGFzaF9zaXplOwogICAgICAgIHVpbnQzMl90IHVz
ZWRfc2l6ZTsKICAgICAgICB1aW50MzJfdCBkaXJ0eV9zaXplOwogICAgICAgIHVpbnQzMl90IGZy
ZWVfc2l6ZTsKICAgICAgICB1aW50MzJfdCBlcmFzaW5nX3NpemU7CiAgICAgICAgdWludDMyX3Qg
YmFkX3NpemU7CiAgICAgICAgdWludDMyX3Qgc2VjdG9yX3NpemU7CgogICAgICAgIHVpbnQzMl90
IG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIHVpbnQzMl90IG5yX2VyYXNpbmdfYmxvY2tzOwoKICAg
ICAgICB1aW50MzJfdCBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sg
KmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsKCiAg
ICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHZlcnlfZGlydHlf
bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBlcmFzYWJsZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXJhc2Fi
bGVfcGVuZGluZ193YnVmX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xp
c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVy
YXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2Fp
dDsKCiAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICppbm9jYWNoZV9saXN0WzE0XTsK
ICAgICAgICBzcGlubG9ja190IGlub2NhY2hlX2xvY2s7CgogICAgICAgIHN0cnVjdCBqZmZzMl9p
bm9kZV9jYWNoZSAqaW5vY2FjaGVfbGFzdDsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBl
cmFzZV9mcmVlX3NlbTsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKndidWY7CiAgICAgICAgdWlu
dDMyX3Qgd2J1Zl9vZnM7CiAgICAgICAgdWludDMyX3Qgd2J1Zl9sZW47CiAgICAgICAgdWludDMy
X3Qgd2J1Zl9wYWdlc2l6ZTsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHdidWZfdGFzazsKICAg
ICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB3YnVmX3RpbWVyOwoKCiAgICAgICAgdm9pZCAqb3NfcHJp
djsKfTsKIyA2NDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBz
dXBlcl9ibG9ja3M7CgoKc3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIHNfbGlzdDsKICAgICAgICBrZGV2X3Qgc19kZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X2Jsb2Nrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfYmxvY2tzaXplX2JpdHM7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBzX2xvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2RpcnQ7CiAg
ICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKICAgICAgICBzdHJ1Y3Qgc3Vw
ZXJfb3BlcmF0aW9ucyAqc19vcDsKICAgICAgICBzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyAqZHFf
b3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
c19tYWdpYzsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpzX3Jvb3Q7CiAgICAgICAgd2FpdF9xdWV1
ZV9oZWFkX3Qgc193YWl0OwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNl
ICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX21vdW50czsKICAgICAgICBzdHJ1
Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgbWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3Ni
X2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2Jf
aW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3Ni
OwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2ht
ZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZv
IHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwog
ICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAg
IHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0
X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZv
IHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAg
ICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jk
ZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9p
bmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAg
fSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzEx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2xpbnV4L2ZzLmgiIDMKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3Bh
dGhfc2VtOwp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAq
LCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg
dmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq
KTsKZXh0ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7
CmV4dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK
ZXh0ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0
cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDc0NSAiL29wdC9mc3AvaTU4Ni1wYy1s
aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5
cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBvZmZfdCwg
aW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAg
ICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBp
bnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu
dCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNp
Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwog
ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9v
cGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3Qg
KCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAo
KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAg
IHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs
b2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwg
ZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwg
c3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0
IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAg
ICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
KTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog
ICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFz
ZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykg
KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBp
bnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9j
aykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6
ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu
ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmls
ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwp9OwoK
c3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBp
bm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxv
b2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGlu
aykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg
ICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAg
ICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBj
aGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVu
dHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy
eSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBj
aGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwg
c3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5v
ZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAo
KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQg
KCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3Ry
dWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0
IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5v
ZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2Rl
ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog
ICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAo
KmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVy
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0
cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAo
c3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBz
dXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg
Kiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkg
KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1
cGVyX2Jsb2NrICopOwp9OwojIDgzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiB2b2lkIF9fbWFy
a19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h
cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k
ZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p
bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v
ZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0
eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5
KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpp
bml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkg
KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxvY19ibG9jaykgKGNvbnN0IHN0cnVj
dCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBpbnQgKCphbGxvY19pbm9k
ZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgq
ZnJlZV9ibG9jaykgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAg
ICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n
KTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy
ICopOwp9OwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKm5h
bWU7CiAgICAgICAgaW50IGZzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqKCpy
ZWFkX3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KTsKICAgICAgICBz
dHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW50Owog
ICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKfTsKIyA4OTUgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
ZnMuaCIgMwpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVt
X3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5
c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJuX21vdW50KHN0cnVjdCBm
aWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gdm9pZCBrZXJuX3Vtb3VudChzdHJ1Y3QgdmZzbW91
bnQgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBs
b25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQg
Kik7CgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qg
c3RhdGZzICopOwojIDkxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0
b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2Fy
ZWEoaW50LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90LCBzaXplX3QpOwoj
IDkyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9mcy5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9sb2Nr
ZWQoc3RydWN0IGlub2RlICppbm9kZSkKewoKCgoKCgogICAgICAgIGlmICgoKChpbm9kZSktPmlf
c2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAx
MCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9s
b2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nr
c192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0ZSwgc3RydWN0IGlub2RlICppbm9kZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBv
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCkK
ewoKCgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNf
ZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09
IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKHJl
YWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAgICAgICByZXR1cm4gMDsK
fQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAq
aW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpm
aWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qgc2l6ZSkKewoK
CgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNfZmxh
Z3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAw
MDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKAogICAg
ICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlfc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5vZGUtPmlfc2l6ZSAtIHNp
emUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2RlLT5pX3NpemUpCiAgICAg
ICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpleHRlcm4gaW5saW5lIGludCBnZXRf
bGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1vZGUpCnsKCgoKCgoKICAg
ICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKGlub2RlLT5pX2Zsb2NrLT5mbF9mbGFncyAmIDMy
KSkKICAgICAgICAgICAgICAgIHJldHVybiBfX2dldF9sZWFzZShpbm9kZSwgbW9kZSk7CiAgICAg
ICAgcmV0dXJuIDA7Cn0KCgoKIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7
CiBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0
cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9v
cGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlf
b3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50
IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICog
Z2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNp
Z25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVW
X1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hh
ciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdp
c3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJs
b2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBiZHB1dChzdHJ1Y3QgYmxvY2tf
ZGV2aWNlICopOwpleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzOwpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3Rs
X2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7
CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5z
aWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICos
IGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0
X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWdu
ZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBp
bnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4g
aW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNv
bnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1l
KGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZv
aWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4
dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19i
YWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
cmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9f
Zm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZp
bGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qg
c3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBh
Z2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBidWYpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW8oc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCkgOwojIDEwNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgbWFy
a19idWZmZXJfdXB0b2RhdGUoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAg
ICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKfQoK
CgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hl
YWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlm
ICh0ZXN0X2FuZF9jbGVhcl9iaXQoMSwgJihiaCktPmJfc3RhdGUpKQogICAgICAgICAgICAgICAg
X19tYXJrX2J1ZmZlcl9jbGVhbihiaCk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19i
dWZmZXJfcHJvdGVjdGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZWZpbGVf
YnVmZmVyKGJoKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3Byb3RlY3RlZChz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCg2
LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX3Byb3RlY3Rl
ZChiaCk7Cn0KCmV4dGVybiB2b2lkIF9fbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9o
ZWFkICpiaCk7CmV4dGVybiB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVh
ZCAqYmgpOwojIDEwOTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVy
X0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJf
Y2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCmV4dGVybiB2b2lk
IGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp
bm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJrX2J1
ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShiaCwgaW5v
ZGUpOwp9CgpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KGtkZXZfdCk7CmV4dGVybiBpbnQgY2hl
Y2tfZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlcyhzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMoc3Ry
dWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0
IGlub2RlICopOwoKCmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBkZXYs
IGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHdyaXRl
X2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rl
dl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19pbm9k
ZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBvc3luY19pbm9kZV9idWZmZXJz
KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNl
ICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq
KTsKZXh0ZXJuIHZvaWQgc3luY19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVj
dCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAq
LCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwg
aW50KTsKZXh0ZXJuIGludCB2ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0
ZXJuIGludCBnZXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55
X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0
ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICAoKHZvaWQpIGF0b21pY19k
ZWNfcmV0dXJuKCgmaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpzdGF0aWMgaW5saW5lIHZvaWQg
YWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUp
CiAgICAgICAgICAgICAgICAoKHZvaWQpIGF0b21pY19pbmNfcmV0dXJuKCgmZmlsZS0+Zl9kZW50
cnktPmRfaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50ICop
OwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCBu
YW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIG9w
ZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVyKHN0
cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTE2NCAiL29wdC9mc3AvaTU4Ni1wYy1s
aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0
YXRpYyBpbmxpbmUgdm9pZCAqRVJSX1BUUihsb25nIGVycm9yKQp7CiAgICAgICAgcmV0dXJuICh2
b2lkICopIGVycm9yOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgUFRSX0VSUihjb25zdCB2b2lkICpw
dHIpCnsKICAgICAgICByZXR1cm4gKGxvbmcpIHB0cjsKfQoKc3RhdGljIGlubGluZSBsb25nIElT
X0VSUihjb25zdCB2b2lkICpwdHIpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcHRy
ID4gKHVuc2lnbmVkIGxvbmcpLTEwMDBMOwp9CiMgMTE5NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmVudW0g
e0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklORH07
CiMgMTIwNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXplX3Qg
d3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAgICAg
ICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0
b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmls
ZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CgpleHRlcm4gaW50IF9fdXNlcl93
YWxrKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBp
bnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7
CmV4dGVybiBpbnQgcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsK
ZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQg
Zm9sbG93X2Rvd24oc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJu
IGludCBmb2xsb3dfdXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0
ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRlbnRy
eSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0
ZXJuIHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9k
ZSAqIGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1
cGVyX2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYgaW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3Qg
aW5vZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGln
ZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZv
aWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8s
ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0
cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lk
KTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Js
b2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBnZXRfZW1wdHlfaW5vZGUo
KTsKICAgICAgICBpZiAoaW5vZGUpIHsKICAgICAgICAgICAgICAgIGlub2RlLT5pX3NiID0gc2I7
CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZXYgPSBzYi0+c19kZXY7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiBpbm9kZTsKfQpleHRlcm4gdm9pZCByZW1vdmVfc3VpZChzdHJ1Y3QgaW5vZGUg
Kmlub2RlKTsKCmV4dGVybiB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gc3Ry
dWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmlsZV9tb3ZlKHN0
cnVjdCBmaWxlICpmLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKZXh0ZXJuIHZvaWQgZmlsZV9t
b3ZldG8oc3RydWN0IGZpbGUgKm5ldywgc3RydWN0IGZpbGUgKm9sZCk7CmV4dGVybiBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0
cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQg
bGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4g
dm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgaXNf
cmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVh
ZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikK
ewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYpOwp9CmV4dGVy
biB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9p
ZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAg
ICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiB2b2lkIHNldF9ibG9ja3NpemUo
a2Rldl90LCBpbnQpOwpleHRlcm4gdW5zaWduZWQgaW50IGdldF9oYXJkYmxvY2tzaXplKGtkZXZf
dCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBicmVhZChrZGV2X3QsIGludCwgaW50KTsK
ZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2goaW50IHdhaXQpOwoKZXh0ZXJuIGludCBicndfcGFn
ZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQg
KGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQp
OwoKCmV4dGVybiBpbnQgYmxvY2tfZmx1c2hwYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv
bmcpOwpleHRlcm4gaW50IGJsb2NrX3N5bWxpbmsoc3RydWN0IGlub2RlICosIGNvbnN0IGNoYXIg
KiwgaW50KTsKZXh0ZXJuIGludCBibG9ja193cml0ZV9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UqLCBn
ZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdlKHN0cnVjdCBwYWdl
KiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19wcmVwYXJlX3dyaXRlKHN0cnVjdCBw
YWdlKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGNvbnRf
cHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2Nr
X3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4
dGVybiBpbnQgYmxvY2tfc3luY19wYWdlKHN0cnVjdCBwYWdlICopOwoKaW50IGdlbmVyaWNfYmxv
Y2tfYm1hcChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nLCBnZXRfYmxvY2tfdCAqKTsKaW50
IGdlbmVyaWNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2ln
bmVkLCB1bnNpZ25lZCk7CmludCBibG9ja190cnVuY2F0ZV9wYWdlKHN0cnVjdCBhZGRyZXNzX3Nw
YWNlICosIGxvZmZfdCwgZ2V0X2Jsb2NrX3QgKik7CgpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9t
bWFwKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBm
aWxlX3JlYWRfYWN0b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFn
ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6
ZV90IGdlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm
X3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBj
b25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2Zp
bGVfcmVhZChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVh
ZF9hY3Rvcl90KTsKCmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUg
KiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50
cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19s
aW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3Jl
YWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9s
bG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3Ry
dWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRl
cm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0
ZXJuIGludCBkY2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7
CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIg
Km5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKc3Ry
dWN0IHN1cGVyX2Jsb2NrICpnZXRfZW1wdHlfc3VwZXIodm9pZCk7CmV4dGVybiB2b2lkIHB1dF9z
dXBlcihrZGV2X3QpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXIoa2Rldl90LCBpbnQg
YltdLCBpbnQpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXJfc3dhYjMyKGtkZXZfdCwg
aW50IGJbXSwgaW50KTsKZXh0ZXJuIGtkZXZfdCBST09UX0RFVjsKZXh0ZXJuIGNoYXIgcm9vdF9k
ZXZpY2VfbmFtZVtdOwoKCmV4dGVybiB2b2lkIHNob3dfYnVmZmVycyh2b2lkKTsKZXh0ZXJuIHZv
aWQgbW91bnRfcm9vdCh2b2lkKTsKCgpleHRlcm4ga2Rldl90IHJlYWxfcm9vdF9kZXY7CmV4dGVy
biBpbnQgY2hhbmdlX3Jvb3Qoa2Rldl90LCBjb25zdCBjaGFyICopOwoKCmV4dGVybiBzc2l6ZV90
IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRl
cm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm
X3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0
ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4g
c3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg
bG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBk
ZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0
IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5k
X2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50
KTsKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0
dHIgKik7CmV4dGVybiB2b2lkIGlub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBp
YXR0ciAqKTsKIyAxMzY5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVu
dHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3Qg
ZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwoKICAgICAgICBkb3duKCZkaXIt
PmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICByZXR1cm4gZGlyOwp9CgpzdGF0aWMgaW5saW5lIHN0
cnVjdCBkZW50cnkgKmdldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAg
cmV0dXJuIGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmxv
Y2tfZGlyKHN0cnVjdCBkZW50cnkgKmRpcikKewogICAgICAgIHVwKCZkaXItPmRfaW5vZGUtPmlf
c2VtKTsKICAgICAgICBkcHV0KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl
X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAg
ICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMx
IDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9
IHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAg
IH0KICAgICAgICBkb3duKHMyKTsKfQojIDE0MTMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5s
aW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMy
KSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxv
bmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEg
PCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMy
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1w
ID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9u
ZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
ICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9
IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwog
ICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMz
KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAg
ICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAg
ICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2Vt
YXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAg
ICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChz
MSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRy
eSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRf
aW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0
IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+
ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAg
ICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDIgMwojIDMyICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L2NhcGFiaWxpdHkuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9z
dHJ1Y3QgewogICAgICAgIF9fdTMyIHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3Vz
ZXJfaGVhZGVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAg
ICAgICBfX3UzMiBlZmZlY3RpdmU7CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9f
dTMyIGluaGVyaXRhYmxlOwp9ICpjYXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJp
bGl0eS5oIiAzCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBh
YmlsaXR5LmgiIDMKZXh0ZXJuIGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKIyAzMTIgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
Y2FwYWJpbGl0eS5oIiAzCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9jb21iaW5lKGtl
cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0Owog
ICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGlu
ZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90
IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiAoYik7CiAg
ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9kcm9wKGtl
cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0
OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRp
YyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2VybmVsX2NhcF90IGMpCnsKICAgICBr
ZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMpOwogICAgIHJldHVybiBkZXN0Owp9
CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDIgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMwpz
dHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0
IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hf
YmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dp
ZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBj
YXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxl
bmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3Qg
bGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAg
ICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVj
dCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCps
b2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcg
c2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmlu
Zm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQo
c3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0
IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51
eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51
eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhz
dHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0
cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFy
Z2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNv
cHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5w
cm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0g
KmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3Jl
Z3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpu
ZXcpOwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGVyc29uYWxpdHku
aCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9jdXJyZW50LmgiIDEgMwoKCgoKCgoKcmVnaXN0ZXIgc3Ry
dWN0IHRhc2tfc3RydWN0ICpjdXJyZW50IGFzbSAoInIyIik7CiMgNyAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25h
bGl0eS5oIiAyIDMKIyAzNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oIiAzCnR5cGVkZWYgdm9pZCAo
KmxjYWxsN19mdW5jKShpbnQsIHN0cnVjdCBwdF9yZWdzICopOwoKCgoKCgoKc3RydWN0IGV4ZWNf
ZG9tYWluIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGxjYWxsN19mdW5jIGhh
bmRsZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwZXJzX2xvdywgcGVyc19oaWdoOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgKiBzaWduYWxfbWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBzaWdu
YWxfaW52bWFwOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKiBtb2R1bGU7CiAgICAgICAgc3RydWN0
IGV4ZWNfZG9tYWluICpuZXh0Owp9OwoKZXh0ZXJuIHN0cnVjdCBleGVjX2RvbWFpbiBkZWZhdWx0
X2V4ZWNfZG9tYWluOwoKZXh0ZXJuIGludCByZWdpc3Rlcl9leGVjX2RvbWFpbihzdHJ1Y3QgZXhl
Y19kb21haW4gKml0KTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2V4ZWNfZG9tYWluKHN0cnVjdCBl
eGVjX2RvbWFpbiAqaXQpOwoKCgoKZXh0ZXJuIHZvaWQgX19zZXRfcGVyc29uYWxpdHkodW5zaWdu
ZWQgbG9uZyBwZXJzb25hbGl0eSk7CgoKCgogbG9uZyBzeXNfcGVyc29uYWxpdHkodW5zaWduZWQg
bG9uZyBwZXJzb25hbGl0eSk7CiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC90aHJlYWRzLmgiIDEgMwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKCiMgMSAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51
eC90aW1lcy5oIiAxIDMKCgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7
CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwog
ICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMK
IyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L3RpbWV4LmgiIDEgMwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAzCiMgMSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9hc20vdGltZXguaCIgMSAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3RpbWV4LmgiIDMKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGN5Y2xlc190OwojIDI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90aW1leC5oIiAzCmV4dGVybiBjeWNsZXNfdCBj
YWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXModm9pZCkK
ewoKCgoKCgogICAgICAgIHJldHVybiAwOwoKfQojIDE1MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAyIDMK
IyAxNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz
LWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVk
IGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAg
ICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0
dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAg
ICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAg
bG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAg
ICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250
OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcg
c3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAg
ICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsg
aW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpl
eHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVf
c3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0Owpl
eHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0
ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVy
biBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9u
ZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRp
bWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0Owpl
eHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcg
cHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0
OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4g
bG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE2ICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2Nj
LWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTggIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvc2NoZWQuaCIgMiAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDEgMwojIDE0ICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9t
bXUuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1fY29udGV4dF90OwoKCnR5cGVkZWYgc3Ry
dWN0IF9QVEUgewojIDI2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjox
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnNpZDoyNDsKICAgICAgICB1bnNpZ25lZCBsb25nIGg6
MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGFwaTo2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnBu
OjIwOwoKICAgICAgICB1bnNpZ25lZCBsb25nIDozOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcjox
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdzoxOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgaToxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbToxOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjE7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBwcDoyOwp9IFBURTsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgX1NFR1JFRyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0OjE7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBrczoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIG46MTsKICAgICAgICB1bnNpZ25lZCBsb25nIDo0OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgdnNpZDoyNDsKfSBTRUdSRUc7CgoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFUVSB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBiZXBpOjE1OwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjg7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrczoxOwogICAgICAgIHVu
c2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBwOjI7Cn0gUDYwMV9CQVRV
OwoKdHlwZWRlZiBzdHJ1Y3QgX0JBVFUgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYmVwaTox
NTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyA6NDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjEx
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnM6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZwOjE7
Cn0gQkFUVTsKCnR5cGVkZWYgc3RydWN0IF9QNjAxX0JBVEwgewogICAgICAgIHVuc2lnbmVkIGxv
bmcgYnJwbjoxNTsKICAgICAgICB1bnNpZ25lZCBsb25nIDoxMDsKICAgICAgICB1bnNpZ25lZCBs
b25nIHY6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjY7Cn0gUDYwMV9CQVRMOwoKdHlwZWRl
ZiBzdHJ1Y3QgX0JBVEwgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYnJwbjoxNTsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyA6MTA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyA6MTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHBwOjI7Cn0gQkFUTDsKCnR5cGVkZWYgc3RydWN0IF9CQVQgewogICAgICAgIEJBVFUg
YmF0dTsKICAgICAgICBCQVRMIGJhdGw7Cn0gQkFUOwoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFU
IHsKICAgICAgICBQNjAxX0JBVFUgYmF0dTsKICAgICAgICBQNjAxX0JBVEwgYmF0bDsKfSBQNjAx
X0JBVDsKIyAxMjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAzCnR5cGVkZWYgc3RydWN0IF9wdGUgewogICAgICAg
IHVuc2lnbmVkIGxvbmcgcGFnZV9udW06MjA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczox
MjsKfSBwdGU7CiMgMTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfTU1VX2NvbnRl
eHQgewogICAgICAgIFNFR1JFRyBzZWdzWzE2XTsKICAgICAgICBwdGUgKipwbWFwOwp9IE1NVV9j
b250ZXh0OwoKZXh0ZXJuIHZvaWQgX3RsYmllKHVuc2lnbmVkIGxvbmcgdmEpOwpleHRlcm4gdm9p
ZCBfdGxiaWEodm9pZCk7CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCgojIDEgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
c21wLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5Lmgi
IDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4
L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDEgMwoK
CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDMKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2FzbS9pb2N0bHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMiAzCiMgMSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
c20vdGVybWJpdHMuaCIgMSAzCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVm
IHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKIyAx
NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9hc20vdGVybWJpdHMuaCIgMwpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3Qg
Y19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2Zs
YWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfY2NbMTldOwogICAg
ICAgIGNjX3QgY19saW5lOwogICAgICAgIHNwZWVkX3QgY19pc3BlZWQ7CiAgICAgICAgc3BlZWRf
dCBjX29zcGVlZDsKfTsKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyIDMKCnN0cnVjdCBzZ3R0eWIg
ewogICAgICAgIGNoYXIgc2dfaXNwZWVkOwogICAgICAgIGNoYXIgc2dfb3NwZWVkOwogICAgICAg
IGNoYXIgc2dfZXJhc2U7CiAgICAgICAgY2hhciBzZ19raWxsOwogICAgICAgIHNob3J0IHNnX2Zs
YWdzOwp9OwoKc3RydWN0IHRjaGFycyB7CiAgICAgICAgY2hhciB0X2ludHJjOwogICAgICAgIGNo
YXIgdF9xdWl0YzsKICAgICAgICBjaGFyIHRfc3RhcnRjOwogICAgICAgIGNoYXIgdF9zdG9wYzsK
ICAgICAgICBjaGFyIHRfZW9mYzsKICAgICAgICBjaGFyIHRfYnJrYzsKfTsKCnN0cnVjdCBsdGNo
YXJzIHsKICAgICAgICBjaGFyIHRfc3VzcGM7CiAgICAgICAgY2hhciB0X2RzdXNwYzsKICAgICAg
ICBjaGFyIHRfcnBybnRjOwogICAgICAgIGNoYXIgdF9mbHVzaGM7CiAgICAgICAgY2hhciB0X3dl
cmFzYzsKICAgICAgICBjaGFyIHRfbG5leHRjOwp9OwojIDEyNCAiL29wdC9mc3AvaTU4Ni1wYy1s
aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAz
CnN0cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29m
bGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgY19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25l
ZCBjaGFyIGNfY2NbMTBdOwp9OwojIDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyIDMKIyAyMyAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC90dHkuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxIDMKIyAxMjAgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvdHR5X2RyaXZlci5oIiAzCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFn
aWM7CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAq
bmFtZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAg
IHNob3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBl
OwogICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJt
aW9zOwogICAgICAgIGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0
cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZl
ciAqb3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAg
c3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlv
c19sb2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgq
b3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAg
ICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm
aWxwKTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBm
cm9tX3VzZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYs
IGludCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVj
dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlf
c3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9z
dHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks
IHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k
LCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3Qg
dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRo
cm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0
bGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsK
ICAgICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3Rh
dGUpOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp
OwogICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAg
ICAgIHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0
aW1lb3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0
eSwgY2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoq
c3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGlu
dCAqZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmls
ZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2Ry
aXZlciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC90dHkuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMSAzCiMgMTAzICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3R0eV9sZGlzYy5oIiAzCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdpYzsK
ICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdzOwoK
CgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQg
KCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZl
cikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2luX2J1
ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpKHN0
cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3NpemVf
dCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90
IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVj
dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQs
IHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0
dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25lZCBp
bnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAgICAg
ICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNpZ25l
ZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBpbnQg
Y291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7
CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07CiMg
MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvdHR5LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIg
MSAzCiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDIgMwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCnN0cnVj
dCBzY3JlZW5faW5mbyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3g7CiAgICAgICAgdW5z
aWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVzZTE7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdlOwogICAgICAgIHVuc2lnbmVkIGNoYXIg
b3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19jb2xzOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3Jp
Z192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMzsKICAgICAgICB1
bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln
X3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fcG9pbnRzOwoK
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2RlcHRoOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZmJfc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9udHVzZTM7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfc2l6ZTsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9z
aXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fcG9zOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9wb3M7CiAgICAgICAgdW5z
aWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3BvczsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl
c2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFnZXM7Cgp9OwoKZXh0ZXJuIHN0cnVj
dCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0
IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsK
ICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50Owog
ICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJd
OwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xv
cFs0XTsKfTsKIyAyNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0IHR0eV9zdHJ1Y3QgewogICAg
ICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAgICAg
c3RydWN0IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlvcywg
KnRlcm1pb3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9uOwog
ICAgICAgIGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAg
ICBpbnQgY291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1bnNp
Z25lZCBjaGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFja2V0
OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAq
bGluazsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0cnVj
dCB0dHlfZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAgICAg
IGludCBhbHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsKICAg
ICAgICB3YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0cnVj
dCB0cV9oYW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRyaXZl
cl9kYXRhOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAgICAg
ICB1bnNpZ25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwgZXJh
c2luZzoxLCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjbG9zaW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwogICAg
ICAgIHVuc2lnbmVkIG92ZXJydW5fdGltZTsKICAgICAgICBpbnQgbnVtX292ZXJydW47CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBwcm9jZXNzX2NoYXJfbWFwWzI1Ni8oOCpzaXplb2YodW5zaWduZWQg
bG9uZykpXTsKICAgICAgICBjaGFyICpyZWFkX2J1ZjsKICAgICAgICBpbnQgcmVhZF9oZWFkOwog
ICAgICAgIGludCByZWFkX3RhaWw7CiAgICAgICAgaW50IHJlYWRfY250OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgcmVhZF9mbGFnc1s0MDk2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAg
ICAgIGludCBjYW5vbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2Fub25faGVhZDsKICAg
ICAgICB1bnNpZ25lZCBpbnQgY2Fub25fY29sdW1uOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
YXRvbWljX3JlYWQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhdG9taWNfd3JpdGU7CiAgICAg
ICAgc3BpbmxvY2tfdCByZWFkX2xvY2s7Cn07CiMgMzM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCmV4dGVy
biB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1
Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJl
ZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19j
b25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRp
cmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2lu
aXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQo
dm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQo
dm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZv
aWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQp
OwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4
dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJu
IGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4
dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQo
dm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0ICp0
dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0IHR0
eV9zdHJ1Y3QgKiB0dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2NoYW5n
ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0
dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0
ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVjdCB0
dHlfbGRpc2MgKm5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihzdHJ1
Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIo
c3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZm
cyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQgdHR5
X3VucmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIG1p
bm9yKTsKZXh0ZXJuIGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5
LCB1bnNpZ25lZCBjaGFyICpidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBi
dWZsZW4pOwpleHRlcm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1Y3QgdHR5X3N0cnVjdCAq
dHR5LCBjaGFyICptc2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9wZ3JwKGludCBwZ3JwKTsK
ZXh0ZXJuIGludCBpc19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50IHR0eV9zaWduYWwoaW50
IHNpZywgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIHR0eV9oYW5ndXAoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5
X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmls
cCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4g
dm9pZCBkb19TQUsoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIGRpc2Fzc29j
aWF0ZV9jdHR5KGludCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBfYnVmZmVyX3B1c2goc3Ry
dWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGUoc3RydWN0
IHR0eV9zdHJ1Y3QgKnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgdHR5X2xkaXNjX05f
VFRZOwoKCmV4dGVybiBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0
cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k
LCB1bnNpZ25lZCBsb25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlhbF9jb25zb2xlX2luaXQo
dm9pZCk7CgoKCmV4dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0
cnVjdCBmaWxlICpmaWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9wcmludChjb25zdCBjaGFy
ICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVj
dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNp
Z25lZCBsb25nIGFyZyk7CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
ZW0uaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIg
MwpzdHJ1Y3QgaXBjX3Blcm0KewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAgICAgICBf
X2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAgIF9f
a2VybmVsX3VpZF90IGN1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgY2dpZDsKICAgICAgICBf
X2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2FzbS9pcGNidWYuaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lwY2J1Zi5oIiAzCnN0cnVjdCBpcGM2
NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlk
X3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRf
dCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9k
ZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXE7CiAgICAgICAgdW5zaWduZWQgaW50
IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaXBjLmgiIDIgMwoj
IDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p
bmNsdWRlL2xpbnV4L2lwYy5oIiAzCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlf
dCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRf
dCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCiMgMjMgIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu
dXgvc2VtLmgiIDMKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2Vt
X3Blcm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5l
bF90aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAg
IHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg
KipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zZW1idWYuaCIgMSAz
CgoKCgoKCgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Blcm0gc2Vt
X3Blcm07CiAgICAgICAgdW5zaWduZWQgaW50IF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90
aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBfX3VudXNlZDI7CiAgICAgICAg
X19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2Vt
czsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25n
IF9fdW51c2VkNDsKfTsKIyAzNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCgoKc3RydWN0IHNlbWJ1ZiB7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKICAgICAgICBzaG9ydCBzZW1fb3A7CiAg
ICAgICAgc2hvcnQgc2VtX2ZsZzsKfTsKCgp1bmlvbiBzZW11biB7CiAgICAgICAgaW50IHZhbDsK
ICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJy
YXk7CiAgICAgICAgc3RydWN0IHNlbWluZm8gKl9fYnVmOwogICAgICAgIHZvaWQgKl9fcGFkOwp9
OwoKc3RydWN0IHNlbWluZm8gewogICAgICAgIGludCBzZW1tYXA7CiAgICAgICAgaW50IHNlbW1u
aTsKICAgICAgICBpbnQgc2VtbW5zOwogICAgICAgIGludCBzZW1tbnU7CiAgICAgICAgaW50IHNl
bW1zbDsKICAgICAgICBpbnQgc2Vtb3BtOwogICAgICAgIGludCBzZW11bWU7CiAgICAgICAgaW50
IHNlbXVzejsKICAgICAgICBpbnQgc2Vtdm14OwogICAgICAgIGludCBzZW1hZW07Cn07CiMgODIg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvbGludXgvc2VtLmgiIDMKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAg
ICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJu
X2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGlt
ZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1
Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2Vt
X3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5z
aWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3Ry
dWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2Owog
ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3Vu
ZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBz
dHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2Vt
YnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoK
c3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAg
ICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAg
ICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBu
c2VtcywgaW50IHNlbWZsZyk7CiBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBzdHJ1Y3Qgc2Vt
YnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwg
aW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwu
aCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9hc20vc2lnbmFsLmgiIDMKc3RydWN0IHNpZ2luZm87CiMgMTggIi9vcHQv
ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNt
L3NpZ25hbC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRf
dDsKIyAxMjEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvYXNtL3NpZ25hbC5oIiAzCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90
KShpbnQpOwoKCgoKCnN0cnVjdCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJf
dCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsK
CnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIp
KHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24g
ewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzaWdhbHRz
dGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAg
IHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEg
MwoKCgoKCgpzdHJ1Y3Qgc2lnY29udGV4dF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcg
X3VudXNlZFs0XTsKICAgICAgICBpbnQgc2lnbmFsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaGFu
ZGxlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAgICAgc3RydWN0IHB0X3Jl
Z3MgKnJlZ3M7Cn07CiMgMTUzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwuaCIgMiAzCiMgNSAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWdu
YWwuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxIDMKCgoKCgp0eXBlZGVmIHVuaW9uIHNp
Z3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0g
c2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2ln
bm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07
CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90
IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAg
ICB9IF9raWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFs
X3QgX3NpZ3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1
Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAg
ICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsK
ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7
CiAgICAgICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxk
czsKfSBzaWdpbmZvX3Q7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
c2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgICAgIGludCBzaWdl
dl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0gMyldOwoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNp
Z3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2F0dHJpYnV0ZTsKICAgICAg
ICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9zaWdldl91bjsKfSBzaWdldmVu
dF90OwoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzaWdpbmZvX3QgKnRv
LCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCiAgICAg
ICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIHNpemVvZihzaWdpbmZvX3QpKTsKICAgICAgICBl
bHNlCgogICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCAzKnNpemVvZihpbnQpICsgc2l6
ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5m
b190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z
aWduYWwuaCIgMiAzCgoKCgoKCnN0cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1
ZXVlICpuZXh0OwogICAgICAgIHNpZ2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcg
ewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90
IHNpZ25hbDsKfTsKCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMjggIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
c2lnbmFsLmgiIDIgMwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpz
ZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAg
ICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAgICAgICAgICAgICBzZXQtPnNpZ1swXSB8PSAx
VUwgPDwgc2lnOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNldC0+c2lnW3NpZyAvIDMy
XSB8PSAxVUwgPDwgKHNpZyAlIDMyKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2RlbHNldChz
aWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnID0gX3Np
ZyAtIDE7CiAgICAgICAgaWYgKCg2NCAvIDMyKSA9PSAxKQogICAgICAgICAgICAgICAgc2V0LT5z
aWdbMF0gJj0gfigxVUwgPDwgc2lnKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzZXQt
PnNpZ1tzaWcgLyAzMl0gJj0gfigxVUwgPDwgKHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBpbmxpbmUg
aW50IHNpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAgICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAg
ICAgICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1swXSA+PiBzaWcpOwogICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgIHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUg
MzIpKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdv
cmQpCnsKICAgICAgICByZXR1cm4gZmZ6KH53b3JkKTsKfQojIDEwOCAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWduYWwu
aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdz
ZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBh
MywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAv
IDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEy
ID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07
IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0Kmkr
M107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkg
fCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAo
KGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+
c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0g
Yi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHIt
PnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEp
KTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+
c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0g
Yi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0Kmkr
MV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIw
ID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IGJyZWFrOyB9
IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2ln
c2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwg
YTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQg
LyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBh
MiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBd
OyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCpp
KzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEp
ICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyByLT5zaWdbNCppKzNdID0g
KChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEt
PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9
IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBy
LT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIx
KSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEt
PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9
IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCpp
KzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBi
MCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyBicmVhazsg
fSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBz
aWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEy
LCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2
NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07
IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0Kmkr
MF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0
KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgo
YTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IHItPnNpZ1s0Kmkr
M10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBh
MCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJd
OyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCpp
KzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGEx
KSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikpOyBicmVhazsgY2FzZSAy
OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCpp
KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsg
ci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNp
Z1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihi
MCkpOyBicmVhazsgfSB9CiMgMTQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAzCnN0YXRpYyBpbmxpbmUg
dm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9
IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2ln
WzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5z
aWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNl
dC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+
c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsx
XSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNl
dC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChz
aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgbWVtc2V0KHNldCwgMCwgc2l6ZW9mKHNpZ3NldF90KSk7CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAg
ICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKnNldCkKewog
ICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgIG1lbXNldChzZXQsIC0xLCBzaXplb2Yoc2lnc2V0X3QpKTsKICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNl
dC0+c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVy
biBjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVk
IGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK
ewogICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0
ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBy
ZXR1cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNp
Z2luaXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0
LT5zaWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgIG1lbXNldCgmc2V0LT5zaWdbMV0sIDAsIHNpemVvZihsb25n
KSooKDY0IC8gMzIpLTEpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjog
c2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGljIGlu
bGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNr
KQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMy
KSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBtZW1zZXQoJnNldC0+c2lnWzFd
LCAtMSwgc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IC0xOwogICAgICAgIGNhc2UgMTogOwogICAg
ICAgIH0KfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zaWdwZW5kaW5nKHN0cnVjdCBzaWdw
ZW5kaW5nICpzaWcpCnsKICAgICAgICBzaWdlbXB0eXNldCgmc2lnLT5zaWduYWwpOwogICAgICAg
IHNpZy0+aGVhZCA9ICgodm9pZCAqKTApOwogICAgICAgIHNpZy0+dGFpbCA9ICZzaWctPmhlYWQ7
Cn0KCmV4dGVybiBsb25nIGRvX3NpZ3BlbmRpbmcodm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyAy
NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NlY3VyZWJpdHMuaCIgMSAzCgoK
CgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAz
CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIgMSAzCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAg
ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1
bWFzazsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAg
ICAgICBzdHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9
OwojIDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAzCmV4dGVybiB2b2lkIGV4aXRfZnMoc3RydWN0
IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lkKTsKCgoKCgoK
c3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAg
ICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK
ewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3Vu
dCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3Jv
b3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1udCA9IGZzLT5yb290bW50OwogICAgICAg
IGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRy
eSk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGlmIChvbGRfcm9vdCkgewogICAg
ICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jv
b3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChz
dHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAg
ICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdk
OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xkX3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZz
LT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0gZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0g
ZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMt
PnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYg
KG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAg
ICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5
X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3Ry
dWN0IGZzX3N0cnVjdCAqZnMpOwojIDI5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDU2ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDczICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIGludCBucl9ydW5uaW5nLCBucl90aHJlYWRzOwpleHRlcm4g
aW50IGxhc3RfcGlkOwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzCiMgNzkgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
c2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAxIDMKIyAyMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9y
ZXNvdXJjZS5oIiAzCnN0cnVjdCBydXNhZ2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0
aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4
cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAg
ICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVf
bWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwog
ICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBs
b25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVf
bnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7
Cn07CiMgNTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Jlc291cmNlLmgiIDEg
MwojIDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIgMwojIDgwICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg
MwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDgzICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg
MwojIDEyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAg
aW50IHNjaGVkX3ByaW9yaXR5Owp9OwojIDEzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCmV4dGVybiBy
d2xvY2tfdCB0YXNrbGlzdF9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBydW5xdWV1ZV9sb2NrOwpl
eHRlcm4gc3BpbmxvY2tfdCBtbWxpc3RfbG9jazsKCmV4dGVybiB2b2lkIHNjaGVkX2luaXQodm9p
ZCk7CmV4dGVybiB2b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZSh2
b2lkKTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmFwX2luaXQo
dm9pZCk7CmV4dGVybiB2b2lkIHVwZGF0ZV9wcm9jZXNzX3RpbWVzKGludCB1c2VyKTsKZXh0ZXJu
IHZvaWQgdXBkYXRlX29uZV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQg
bG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz
eXN0ZW0sIGludCBjcHUpOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0KHNp
Z25lZCBsb25nIHRpbWVvdXQpOwogdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4dGVybiBpbnQgc2No
ZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2No
ZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQp
OwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNjggIi9vcHQvZnNwL2k1
ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2No
ZWQuaCIgMwpzdHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
ICAgICByd2xvY2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50
IG1heF9mZHNldDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBm
ZDsKICAgICAgICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2Zk
czsKICAgICAgICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVu
X2Zkc19pbml0OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwMyAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBtbV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bV9h
cmVhX3N0cnVjdCAqIG1tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9h
dmw7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBw
Z2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBt
bV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
bW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUs
IGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0
YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFy
dCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNz
LCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
d2FwX2FkZHJlc3M7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBp
bnQgbW1saXN0X25yOwojIDI0NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzaWduYWxfc3Ry
dWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24g
YWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7Cn07CiMgMjYwICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDMKc3RydWN0IHVzZXJfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBfX2NvdW50
OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAgICAgICBhdG9taWNfdCBmaWxlczsKCgog
ICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKipwcHJldjsKICAgICAgICB1aWRfdCB1
aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91c2VyOwoKCnN0cnVj
dCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKICAgICAgICB1
bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBzaWdwZW5kaW5nOwogICAgICAgIG1tX3Nl
Z21lbnRfdCBhZGRyX2xpbWl0OwoKCgogICAgICAgIHN0cnVjdCBleGVjX2RvbWFpbiAqZXhlY19k
b21haW47CiAgICAgICAgdm9sYXRpbGUgbG9uZyBuZWVkX3Jlc2NoZWQ7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBwdHJhY2U7CgogICAgICAgIGludCBsb2NrX2RlcHRoOwoKCgoKCgogICAgICAgIGxv
bmcgY291bnRlcjsKICAgICAgICBsb25nIG5pY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwb2xp
Y3k7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW07CiAgICAgICAgaW50IGhhc19jcHUsIHBy
b2Nlc3NvcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXNfYWxsb3dlZDsKCgoKCiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNsZWVwX3Rp
bWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOwog
ICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKCgogICAgICAgIHN0cnVjdCBsaW51
eF9iaW5mbXQgKmJpbmZtdDsKICAgICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAg
ICAgICBpbnQgcGRlYXRoX3NpZ25hbDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0
eTsKICAgICAgICBpbnQgZHVtcGFibGU6MTsKICAgICAgICBpbnQgZGlkX2V4ZWM6MTsKICAgICAg
ICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3Bn
cnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBp
bnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9w
cHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4
dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg
KnZmb3JrX3NlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVu
c2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0
X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1
Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBs
b25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07CgogICAgICAgIHVuc2lnbmVk
IGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBjbWFqX2ZsdCwgY25zd2Fw
OwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3QgdWlkLGV1aWQsc3VpZCxm
c3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwogICAgICAgIGludCBuZ3Jv
dXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9l
ZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsKICAgICAgICBpbnQga2Vl
cF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXI7CgogICAg
ICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNlZF9t
YXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBsaW5rX2NvdW50OwogICAg
ICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoK
ICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1
ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAg
ICAgICAgc3RydWN0IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3Qg
KmZpbGVzOwoKICAgICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qg
c2lnbmFsX3N0cnVjdCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0
cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3Nw
OwogICAgICAgIHNpemVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9p
ZCAqcHJpdik7CiAgICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAq
bm90aWZpZXJfbWFzazsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIg
c2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7Cn07CiMgNDg1ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDMKdW5pb24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0IHRhc2tf
c3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVvZihsb25n
KS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90YXNrX3Vu
aW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9tbTsKZXh0ZXJuIHN0cnVjdCB0YXNr
X3N0cnVjdCAqaW5pdF90YXNrc1sxXTsKCgoKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlk
aGFzaFsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3BpZChzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipodGFibGUgPSAm
cGlkaGFzaFsoKCgocC0+cGlkKSA+PiA4KSBeIChwLT5waWQpKSAmICgoNDA5NiA+PiAyKSAtIDEp
KV07CgogICAgICAgIGlmKChwLT5waWRoYXNoX25leHQgPSAqaHRhYmxlKSAhPSAoKHZvaWQgKikw
KSkKICAgICAgICAgICAgICAgICgqaHRhYmxlKS0+cGlkaGFzaF9wcHJldiA9ICZwLT5waWRoYXNo
X25leHQ7CiAgICAgICAgKmh0YWJsZSA9IHA7CiAgICAgICAgcC0+cGlkaGFzaF9wcHJldiA9IGh0
YWJsZTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVuaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0
ICpwKQp7CiAgICAgICAgaWYocC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgcC0+cGlk
aGFzaF9uZXh0LT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9wcHJldjsKICAgICAgICAqcC0+
cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfbmV4dDsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3Qg
dGFza19zdHJ1Y3QgKmZpbmRfdGFza19ieV9waWQoaW50IHBpZCkKewogICAgICAgIHN0cnVjdCB0
YXNrX3N0cnVjdCAqcCwgKipodGFibGUgPSAmcGlkaGFzaFsoKCgocGlkKSA+PiA4KSBeIChwaWQp
KSAmICgoNDA5NiA+PiAyKSAtIDEpKV07CgogICAgICAgIGZvcihwID0gKmh0YWJsZTsgcCAmJiBw
LT5waWQgIT0gcGlkOyBwID0gcC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgOwoKICAg
ICAgICByZXR1cm4gcDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQo
dWlkX3QpOwpleHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CgojIDEg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvYXNtL2N1cnJlbnQuaCIgMSAzCiMgNTMzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgamlmZmllczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRp
bWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0ZXJuIHZvbGF0
aWxlIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRf
cmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgpleHRl
cm4gdW5zaWduZWQgbG9uZyBrcHJvZl9jb3VudDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdXByb2Zf
Y291bnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5z
aWduZWQgaW50IG1vZGUsIGludCBucik7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRf
cXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKTsKZXh0ZXJuIHZvaWQg
c2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1l
b3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KTsKCmV4dGVybiB2
b2lkIGludGVycnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4g
bG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEs
IHNpZ25lZCBsb25nIHRpbWVvdXQpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0
IHRhc2tfc3RydWN0ICogdHNrKTsKIyA1NjkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMwogbG9uZyBzeXNf
d2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0
cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4g
aW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9p
ZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl
cm4gaW50IGRlcXVldWVfc2lnbmFsKHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsKZXh0ZXJuIHZv
aWQgYmxvY2tfYWxsX3NpZ25hbHMoaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpw
cml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVy
biB2b2lkIHVuYmxvY2tfYWxsX3NpZ25hbHModm9pZCk7CmV4dGVybiBpbnQgc2VuZF9zaWdfaW5m
byhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGlu
dCBmb3JjZV9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVj
dCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRf
dCk7CmV4dGVybiBpbnQga2lsbF9zbF9pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
OwpleHRlcm4gaW50IGtpbGxfcHJvY19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp
OwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl
eHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl
eHRlcm4gdm9pZCBmb3JjZV9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBp
bnQgc2VuZF9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBr
aWxsX3BnKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9zbChwaWRfdCwgaW50LCBp
bnQpOwpleHRlcm4gaW50IGtpbGxfcHJvYyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRv
X3NpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdh
Y3Rpb24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFj
a190ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmco
c3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9
IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRf
dCAqc2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh
ZHk7CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsg
LS1pID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb
aV0gJn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgNDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAg
ICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAg
ICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAg
ICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07
CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+
c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25h
bC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog
ICAgICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg
dm9pZCByZWNhbGNfc2lncGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKICAgICAgICB0
LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFscygmdC0+cGVuZGluZy5zaWduYWwsICZ0
LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBvbl9zaWdfc3RhY2sodW5zaWduZWQg
bG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBjdXJyZW50LT5zYXNfc3Nfc3AgPCBjdXJy
ZW50LT5zYXNfc3Nfc2l6ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNp
Z25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChjdXJyZW50LT5zYXNfc3Nfc2l6ZSA9PSAw
ID8gMgogICAgICAgICAgICAgICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRl
cm4gaW50IHJlcXVlc3RfaXJxKHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJu
IHZvaWQgZnJlZV9pcnEodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY3MiAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEg
PDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8
ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgY3VycmVudC0+ZXVpZCA9PSAwKSB7CiAgICAgICAgICAg
ICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJu
IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBmc3Vz
ZXIodm9pZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgx
IDw8ICgwKSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBjdXJy
ZW50LT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAw
MDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVy
biAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsKCiAgICAg
ICAgaWYgKCgoY3VycmVudC0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2FwKSkpKQoKCgogICAg
ICAgIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQtPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCmV4
dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7CgpleHRlcm4gc3RydWN0IG1t
X3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4gdm9pZCBlbmRfbGF6eV90bGIo
c3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUgdm9pZCBfX21tZHJvcChzdHJ1
Y3QgbW1fc3RydWN0ICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1
Y3QgKiBtbSkKewogICAgICAgIGlmICgoYXRvbWljX2RlY19yZXR1cm4oKCZtbS0+bW1fY291bnQp
KSA9PSAwKSkKICAgICAgICAgICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1t
cHV0KHN0cnVjdCBtbV9zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoK
CgoKZXh0ZXJuIHN0cnVjdCBmaWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQg
ZXhwYW5kX2ZkX2FycmF5KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZv
aWQgZnJlZV9mZF9hcnJheShzdHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFs
bG9jX2Zkc2V0KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1
Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4
dGVybiBpbnQgY29weV90aHJlYWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4
dGVybiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9p
ZCk7CgpleHRlcm4gdm9pZCBleGl0X21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv
aWQgZXhpdF9maWxlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfc2ln
aGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBkYWVtb25pemUodm9pZCk7
CgpleHRlcm4gaW50IGRvX2V4ZWN2ZShjaGFyICosIGNoYXIgKiosIGNoYXIgKiosIHN0cnVjdCBw
dF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
Zywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdm9pZCBhZGRfd2Fp
dF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCk7CmV4dGVy
biB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2Fp
dF9xdWV1ZV90ICogd2FpdCk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVl
dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KTsKIyA4MzkgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu
aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3Ry
dWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1lID0g
amlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1bl9s
aXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9ydW5x
dWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9saXN0
Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3Byb2Nl
c3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUo
cCkpIGRvIHsgcHJpbnRrKCJrZXJuZWwgQlVHIGF0ICVzOiVkIVxuIiwgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu
aCIsIDg1NCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgZG8geyBpbnRfY29udHJvbC5pbnRfY2xpKCk7ICh2b2lkKSgmdGFza2xpc3RfbG9j
ayk7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVhZHMtLTsKICAgICAgICB1bmhhc2hfcGlk
KHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9IChwKS0+cHJldl90
YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0gKHApLT5uZXh0X3Rhc2s7IGlmICgocCkt
PnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9IChwKS0+cF95c3B0cjsgaWYgKChwKS0+
cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0gKHApLT5wX29zcHRyOyBlbHNlIChwKS0+
cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0gd2hpbGUgKDApOwogICAgICAgIGxpc3Rf
ZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBpbnRf
Y29udHJvbC5pbnRfc3RpKCk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFz
a19sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgICh2b2lkKSgmcC0+YWxsb2Nf
bG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1
Y3QgKnApCnsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIg
KiBkX3BhdGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsK
ICAgICAgICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAg
ICAgIHN0cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgKHZvaWQpKCZjdXJyZW50LT5mcy0+bG9j
ayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChjdXJyZW50LT5mcy0+cm9vdG1udCk7CiAgICAg
ICAgcm9vdCA9IGRnZXQoY3VycmVudC0+ZnMtPnJvb3QpOwogICAgICAgIGRvIHsgfSB3aGlsZSgw
KTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrKTsKICAgICAgICByZXMgPSBfX2RfcGF0aChk
ZW50cnksIHZmc21udCwgcm9vdCwgcm9vdG1udCwgYnVmLCBidWZsZW4pOwogICAgICAgIGRvIHsg
fSB3aGlsZSgwKTsKICAgICAgICBkcHV0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsK
ICAgICAgICByZXR1cm4gcmVzOwp9CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCiMgMSAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s
aW51eC9nZW5oZC5oIiAxIDMKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCnN0cnVjdCBwYXJ0aXRp
b24gewogICAgICAgIHVuc2lnbmVkIGNoYXIgYm9vdF9pbmQ7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBoZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgY3lsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3lzX2luZDsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGVuZF9oZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZW5kX3NlY3RvcjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGVuZF9jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X3NlY3Q7CiAg
ICAgICAgdW5zaWduZWQgaW50IG5yX3NlY3RzOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoK
CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMSAzCiMgNDUgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGV2ZnNf
ZnNfa2VybmVsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZGV2ZnNfZW50cnkgKiBkZXZmc19oYW5kbGVf
dDsKIyA1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMwpleHRlcm4gZGV2ZnNfaGFuZGxl
X3QgZGV2ZnNfcmVnaXN0ZXIgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9y
LCB1bnNpZ25lZCBpbnQgbWlub3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW1vZGVfdCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwpleHRlcm4gdm9pZCBkZXZm
c191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfbWtfc3lt
bGluayAoZGV2ZnNfaGFuZGxlX3QgZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncywgY29uc3QgY2hhciAqbGluaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZmc19oYW5kbGVfdCAqaGFuZGxlLCB2b2lkICpp
bmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX21rX2RpciAoZGV2ZnNfaGFuZGxlX3Qg
ZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICppbmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX2ZpbmRfaGFuZGxlIChk
ZXZmc19oYW5kbGVfdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9yLHVuc2lnbmVkIGludCBtaW5v
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHR5cGUsIGlu
dCB0cmF2ZXJzZV9zeW1saW5rcyk7CmV4dGVybiBpbnQgZGV2ZnNfZ2V0X2ZsYWdzIChkZXZmc19o
YW5kbGVfdCBkZSwgdW5zaWduZWQgaW50ICpmbGFncyk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2Zs
YWdzIChkZXZmc19oYW5kbGVfdCBkZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBk
ZXZmc19nZXRfbWFqX21pbiAoZGV2ZnNfaGFuZGxlX3QgZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCAqbWFqb3IsIHVuc2lnbmVkIGludCAqbWlub3IpOwpleHRl
cm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X2hhbmRsZV9mcm9tX2lub2RlIChzdHJ1Y3QgaW5v
ZGUgKmlub2RlKTsKZXh0ZXJuIGludCBkZXZmc19nZW5lcmF0ZV9wYXRoIChkZXZmc19oYW5kbGVf
dCBkZSwgY2hhciAqcGF0aCwgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkICpkZXZmc19nZXRfb3Bz
IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2ZpbGVfc2l6ZSAoZGV2
ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiB2b2lkICpkZXZmc19n
ZXRfaW5mbyAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gaW50IGRldmZzX3NldF9pbmZvIChk
ZXZmc19oYW5kbGVfdCBkZSwgdm9pZCAqaW5mbyk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBkZXZm
c19nZXRfcGFyZW50IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBk
ZXZmc19nZXRfZmlyc3RfY2hpbGQgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJuIGRldmZzX2hh
bmRsZV90IGRldmZzX2dldF9uZXh0X3NpYmxpbmcgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJu
IHZvaWQgZGV2ZnNfYXV0b191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBtYXN0ZXIsZGV2ZnNf
aGFuZGxlX3Qgc2xhdmUpOwpleHRlcm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X3VucmVnaXN0
ZXJfc2xhdmUgKGRldmZzX2hhbmRsZV90IG1hc3Rlcik7CmV4dGVybiBjb25zdCBjaGFyICpkZXZm
c19nZXRfbmFtZSAoZGV2ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGludCAqbmFtZWxlbik7CmV4
dGVybiBpbnQgZGV2ZnNfcmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0
IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls
ZV9vcGVyYXRpb25zICpmb3BzKTsKZXh0ZXJuIGludCBkZXZmc19yZWdpc3Rlcl9ibGtkZXYgKHVu
c2lnbmVkIGludCBtYWpvciwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqYmRvcHMpOwpleHRl
cm4gaW50IGRldmZzX3VucmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0
IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldmZzX3VucmVnaXN0ZXJfYmxrZGV2ICh1bnNpZ25l
ZCBpbnQgbWFqb3IsIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIHZvaWQgZGV2ZnNfcmVnaXN0
ZXJfdGFwZSAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gdm9pZCBkZXZmc19yZWdpc3Rlcl9z
ZXJpZXMgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVk
IGludCBtYWpvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbWlub3Jfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1vZGVf
dCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwoKZXh0ZXJuIGludCBpbml0X2RldmZzX2Zz
ICh2b2lkKTsKZXh0ZXJuIHZvaWQgbW91bnRfZGV2ZnNfZnMgKHZvaWQpOwpleHRlcm4gdm9pZCBk
ZXZmc19tYWtlX3Jvb3QgKGNvbnN0IGNoYXIgKm5hbWUpOwojIDQ5ICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2dlbmhkLmgi
IDIgMwoKc3RydWN0IGhkX3N0cnVjdCB7CiAgICAgICAgbG9uZyBzdGFydF9zZWN0OwogICAgICAg
IGxvbmcgbnJfc2VjdHM7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7Cn07CgoKCnN0cnVjdCBn
ZW5kaXNrIHsKICAgICAgICBpbnQgbWFqb3I7CiAgICAgICAgY29uc3QgY2hhciAqbWFqb3JfbmFt
ZTsKICAgICAgICBpbnQgbWlub3Jfc2hpZnQ7CgogICAgICAgIGludCBtYXhfcDsKCiAgICAgICAg
c3RydWN0IGhkX3N0cnVjdCAqcGFydDsKICAgICAgICBpbnQgKnNpemVzOwogICAgICAgIGludCBu
cl9yZWFsOwoKICAgICAgICB2b2lkICpyZWFsX2RldmljZXM7CiAgICAgICAgc3RydWN0IGdlbmRp
c2sgKm5leHQ7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpmb3BzOwoK
ICAgICAgICBkZXZmc19oYW5kbGVfdCAqZGVfYXJyOwogICAgICAgIGNoYXIgKmZsYWdzOwp9Owoj
IDIyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCmV4dGVybiBzdHJ1Y3QgZ2VuZGlzayAqZ2VuZGlza19o
ZWFkOwoKY2hhciAqZGlza19uYW1lIChzdHJ1Y3QgZ2VuZGlzayAqaGQsIGludCBtaW5vciwgY2hh
ciAqYnVmKTsKCmV4dGVybiB2b2lkIGRldmZzX3JlZ2lzdGVyX3BhcnRpdGlvbnMgKHN0cnVjdCBn
ZW5kaXNrICpkZXYsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHVucmVnaXN0ZXIpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBk
aXNrX2luZGV4IChrZGV2X3QgZGV2KQp7CiAgICAgICAgaW50IG1ham9yID0gKCh1bnNpZ25lZCBp
bnQpICgoZGV2KSA+PiA4KSk7CiAgICAgICAgaW50IG1pbm9yID0gKCh1bnNpZ25lZCBpbnQpICgo
ZGV2KSAmICgoMVUgPDwgOCkgLSAxKSkpOwogICAgICAgIHVuc2lnbmVkIGludCBpbmRleDsKCiAg
ICAgICAgc3dpdGNoIChtYWpvcikgewogICAgICAgICAgICAgICAgY2FzZSA0OCArMDoKICAgICAg
ICAgICAgICAgICAgICAgICAgaW5kZXggPSAobWlub3IgJiAweDAwZjgpID4+IDM7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDBmMCkgPj4gNDsKICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAg
ICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDA0
MCkgPj4gNjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlIDIyOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9ICgobWlub3IgJiAweDAwNDAp
ID4+IDYpICsgMjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIGluZGV4Owp9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCgoKCnN0cnVj
dCByZXF1ZXN0X3F1ZXVlOwp0eXBlZGVmIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHJlcXVlc3RfcXVl
dWVfdDsKc3RydWN0IGVsZXZhdG9yX3M7CnR5cGVkZWYgc3RydWN0IGVsZXZhdG9yX3MgZWxldmF0
b3JfdDsKCgoKCgoKCnN0cnVjdCByZXF1ZXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1
ZXVlOwogICAgICAgIGludCBlbGV2YXRvcl9zZXF1ZW5jZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIHRhYmxlOwoKICAgICAgICB2b2xhdGlsZSBpbnQgcnFfc3RhdHVzOwoKCgoKCgogICAgICAg
IGtkZXZfdCBycV9kZXY7CiAgICAgICAgaW50IGNtZDsKICAgICAgICBpbnQgZXJyb3JzOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfc2VjdG9y
czsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhcmRfc2VjdG9yLCBoYXJkX25yX3NlY3RvcnM7CiAg
ICAgICAgdW5zaWduZWQgaW50IG5yX3NlZ21lbnRzOwogICAgICAgIHVuc2lnbmVkIGludCBucl9o
d19zZWdtZW50czsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cnJlbnRfbnJfc2VjdG9yczsKICAg
ICAgICB2b2lkICogc3BlY2lhbDsKICAgICAgICBjaGFyICogYnVmZmVyOwogICAgICAgIHN0cnVj
dCBzZW1hcGhvcmUgKiBzZW07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmg7CiAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmh0YWlsOwogICAgICAgIHJlcXVlc3RfcXVldWVfdCAq
cTsKfTsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9lbGV2YXRvci5oIiAxIDMKCgoKdHlwZWRlZiB2b2lkIChlbGV2
YXRvcl9mbikgKHN0cnVjdCByZXF1ZXN0ICosIGVsZXZhdG9yX3QgKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwgaW50KTsKCnR5cGVkZWYgaW50IChlbGV2YXRvcl9tZXJn
ZV9mbikgKHJlcXVlc3RfcXVldWVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAqKiwgc3RydWN0IGxpc3Rf
aGVhZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiwgaW50LCBpbnQpOwoKdHlwZWRlZiB2b2lkIChlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2Zu
KSAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICosIGludCk7Cgp0eXBlZGVmIHZv
aWQgKGVsZXZhdG9yX21lcmdlX3JlcV9mbikgKHN0cnVjdCByZXF1ZXN0ICosIHN0cnVjdCByZXF1
ZXN0ICopOwoKc3RydWN0IGVsZXZhdG9yX3MKewogICAgICAgIGludCByZWFkX2xhdGVuY3k7CiAg
ICAgICAgaW50IHdyaXRlX2xhdGVuY3k7CgogICAgICAgIGVsZXZhdG9yX21lcmdlX2ZuICplbGV2
YXRvcl9tZXJnZV9mbjsKICAgICAgICBlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2ZuICplbGV2YXRv
cl9tZXJnZV9jbGVhbnVwX2ZuOwogICAgICAgIGVsZXZhdG9yX21lcmdlX3JlcV9mbiAqZWxldmF0
b3JfbWVyZ2VfcmVxX2ZuOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcXVldWVfSUQ7Cn07CgppbnQg
ZWxldmF0b3Jfbm9vcF9tZXJnZShyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKios
IHN0cnVjdCBsaXN0X2hlYWQgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCwgaW50KTsKdm9p
ZCBlbGV2YXRvcl9ub29wX21lcmdlX2NsZWFudXAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCBy
ZXF1ZXN0ICosIGludCk7CnZvaWQgZWxldmF0b3Jfbm9vcF9tZXJnZV9yZXEoc3RydWN0IHJlcXVl
c3QgKiwgc3RydWN0IHJlcXVlc3QgKik7CgppbnQgZWxldmF0b3JfbGludXNfbWVyZ2UocmVxdWVz
dF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICoqLCBzdHJ1Y3QgbGlzdF9oZWFkICosIHN0cnVj
dCBidWZmZXJfaGVhZCAqLCBpbnQsIGludCk7CnZvaWQgZWxldmF0b3JfbGludXNfbWVyZ2VfY2xl
YW51cChyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKiwgaW50KTsKdm9pZCBlbGV2
YXRvcl9saW51c19tZXJnZV9yZXEoc3RydWN0IHJlcXVlc3QgKiwgc3RydWN0IHJlcXVlc3QgKik7
Cgp0eXBlZGVmIHN0cnVjdCBibGtlbHZfaW9jdGxfYXJnX3MgewogICAgICAgIGludCBxdWV1ZV9J
RDsKICAgICAgICBpbnQgcmVhZF9sYXRlbmN5OwogICAgICAgIGludCB3cml0ZV9sYXRlbmN5Owog
ICAgICAgIGludCBtYXhfYm9tYl9zZWdtZW50czsKfSBibGtlbHZfaW9jdGxfYXJnX3Q7CgoKCgpl
eHRlcm4gaW50IGJsa2VsdmdldF9pb2N0bChlbGV2YXRvcl90ICosIGJsa2Vsdl9pb2N0bF9hcmdf
dCAqKTsKZXh0ZXJuIGludCBibGtlbHZzZXRfaW9jdGwoZWxldmF0b3JfdCAqLCBjb25zdCBibGtl
bHZfaW9jdGxfYXJnX3QgKik7CgpleHRlcm4gdm9pZCBlbGV2YXRvcl9pbml0KGVsZXZhdG9yX3Qg
KiwgZWxldmF0b3JfdCk7CiMgNzMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWxldmF0b3IuaCIgMwpzdGF0aWMgaW5saW5l
IGludCBlbGV2YXRvcl9yZXF1ZXN0X2xhdGVuY3koZWxldmF0b3JfdCAqIGVsZXZhdG9yLCBpbnQg
cncpCnsKICAgICAgICBpbnQgbGF0ZW5jeTsKCiAgICAgICAgbGF0ZW5jeSA9IGVsZXZhdG9yLT5y
ZWFkX2xhdGVuY3k7CiAgICAgICAgaWYgKHJ3ICE9IDApCiAgICAgICAgICAgICAgICBsYXRlbmN5
ID0gZWxldmF0b3ItPndyaXRlX2xhdGVuY3k7CgogICAgICAgIHJldHVybiBsYXRlbmN5Owp9CiMg
NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvYmxrZGV2LmgiIDIgMwoKdHlwZWRlZiBpbnQgKG1lcmdlX3JlcXVlc3RfZm4p
IChyZXF1ZXN0X3F1ZXVlX3QgKnEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5
cGVkZWYgaW50IChtZXJnZV9yZXF1ZXN0c19mbikgKHJlcXVlc3RfcXVldWVfdCAqcSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcTIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5cGVkZWYgdm9pZCAocmVxdWVzdF9mbl9wcm9j
KSAocmVxdWVzdF9xdWV1ZV90ICpxKTsKdHlwZWRlZiByZXF1ZXN0X3F1ZXVlX3QgKiAocXVldWVf
cHJvYykgKGtkZXZfdCBkZXYpOwp0eXBlZGVmIGludCAobWFrZV9yZXF1ZXN0X2ZuKSAocmVxdWVz
dF9xdWV1ZV90ICpxLCBpbnQgcncsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwp0eXBlZGVmIHZv
aWQgKHBsdWdfZGV2aWNlX2ZuKSAocmVxdWVzdF9xdWV1ZV90ICpxLCBrZGV2X3QgZGV2aWNlKTsK
dHlwZWRlZiB2b2lkICh1bnBsdWdfZGV2aWNlX2ZuKSAodm9pZCAqcSk7CgoKCgoKCgpzdHJ1Y3Qg
cmVxdWVzdF9xdWV1ZQp7CgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2ZyZWVs
aXN0WzJdOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19mcmVlbGlzdFsyXTsKICAg
ICAgICBpbnQgcGVuZGluZ19mcmVlWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1
ZXVlX2hlYWQ7CiAgICAgICAgZWxldmF0b3JfdCBlbGV2YXRvcjsKCiAgICAgICAgcmVxdWVzdF9m
bl9wcm9jICogcmVxdWVzdF9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogYmFja19tZXJn
ZV9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogZnJvbnRfbWVyZ2VfZm47CiAgICAgICAg
bWVyZ2VfcmVxdWVzdHNfZm4gKiBtZXJnZV9yZXF1ZXN0c19mbjsKICAgICAgICBtYWtlX3JlcXVl
c3RfZm4gKiBtYWtlX3JlcXVlc3RfZm47CiAgICAgICAgcGx1Z19kZXZpY2VfZm4gKiBwbHVnX2Rl
dmljZV9mbjsKCgoKCiAgICAgICAgdm9pZCAqIHF1ZXVlZGF0YTsKCgoKCiAgICAgICAgc3RydWN0
IHRxX3N0cnVjdCBwbHVnX3RxOwoKCgoKICAgICAgICBjaGFyIHBsdWdnZWQ7CgoKCgoKICAgICAg
ICBjaGFyIGhlYWRfYWN0aXZlOwoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCBxdWV1ZV9sb2NrOwoK
CgoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2Zvcl9yZXF1ZXN0Owp9OwoKc3RydWN0
IGJsa19kZXZfc3RydWN0IHsKCgoKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcmVxdWVzdF9xdWV1
ZTsKICAgICAgICBxdWV1ZV9wcm9jICpxdWV1ZTsKICAgICAgICB2b2lkICpkYXRhOwp9OwoKc3Ry
dWN0IHNlY19zaXplIHsKICAgICAgICB1bnNpZ25lZCBibG9ja19zaXplOwogICAgICAgIHVuc2ln
bmVkIGJsb2NrX3NpemVfYml0czsKfTsKIyAxNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmxrZGV2LmgiIDMKZXh0ZXJu
IHN0cnVjdCBzZWNfc2l6ZSAqIGJsa19zZWNbMjU1XTsKZXh0ZXJuIHN0cnVjdCBibGtfZGV2X3N0
cnVjdCBibGtfZGV2WzI1NV07CmV4dGVybiB2b2lkIGdyb2tfcGFydGl0aW9ucyhzdHJ1Y3QgZ2Vu
ZGlzayAqZGV2LCBpbnQgZHJpdmUsIHVuc2lnbmVkIG1pbm9ycywgbG9uZyBzaXplKTsKZXh0ZXJu
IHZvaWQgcmVnaXN0ZXJfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGV2LCBrZGV2X3QgZmlyc3QsIHVu
c2lnbmVkIG1pbm9ycywgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpvcHMsIGxvbmcg
c2l6ZSk7CmV4dGVybiB2b2lkIGdlbmVyaWNfbWFrZV9yZXF1ZXN0KGludCBydywgc3RydWN0IGJ1
ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gcmVxdWVzdF9xdWV1ZV90ICpibGtfZ2V0X3F1ZXVlKGtk
ZXZfdCBkZXYpOwpleHRlcm4gaW5saW5lIHJlcXVlc3RfcXVldWVfdCAqX19ibGtfZ2V0X3F1ZXVl
KGtkZXZfdCBkZXYpOwpleHRlcm4gdm9pZCBibGtkZXZfcmVsZWFzZV9yZXF1ZXN0KHN0cnVjdCBy
ZXF1ZXN0ICopOwoKCgoKZXh0ZXJuIHZvaWQgYmxrX2luaXRfcXVldWUocmVxdWVzdF9xdWV1ZV90
ICosIHJlcXVlc3RfZm5fcHJvYyAqKTsKZXh0ZXJuIHZvaWQgYmxrX2NsZWFudXBfcXVldWUocmVx
dWVzdF9xdWV1ZV90ICopOwpleHRlcm4gdm9pZCBibGtfcXVldWVfaGVhZGFjdGl2ZShyZXF1ZXN0
X3F1ZXVlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgYmxrX3F1ZXVlX3BsdWdnYWJsZShyZXF1ZXN0
X3F1ZXVlX3QgKiwgcGx1Z19kZXZpY2VfZm4gKik7CmV4dGVybiB2b2lkIGJsa19xdWV1ZV9tYWtl
X3JlcXVlc3QocmVxdWVzdF9xdWV1ZV90ICosIG1ha2VfcmVxdWVzdF9mbiAqKTsKZXh0ZXJuIHZv
aWQgZ2VuZXJpY191bnBsdWdfZGV2aWNlKHZvaWQgKik7CgpleHRlcm4gaW50ICogYmxrX3NpemVb
MjU1XTsKCmV4dGVybiBpbnQgKiBibGtzaXplX3NpemVbMjU1XTsKCmV4dGVybiBpbnQgKiBoYXJk
c2VjdF9zaXplWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3JlYWRhaGVhZFsyNTVdOwoKZXh0ZXJu
IGludCAqIG1heF9zZWN0b3JzWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3NlZ21lbnRzWzI1NV07
CgpleHRlcm4gYXRvbWljX3QgcXVldWVkX3NlY3RvcnM7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o
IiAzCmV4dGVybiB2b2lkIGRyaXZlX3N0YXRfYWNjdCAoa2Rldl90IGRldiwgaW50IHJ3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9zZWN0
b3JzLCBpbnQgbmV3X2lvKTsKCnN0YXRpYyBpbmxpbmUgaW50IGdldF9oYXJkc2VjdF9zaXplKGtk
ZXZfdCBkZXYpCnsKICAgICAgICBleHRlcm4gaW50ICpoYXJkc2VjdF9zaXplW107CiAgICAgICAg
aWYgKGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiA4KSldICE9ICgodm9p
ZCAqKTApKQogICAgICAgICAgICAgICAgcmV0dXJuIGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBp
bnQpICgoZGV2KSA+PiA4KSldWygodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0g
MSkpKV07CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDUxMjsKfQojIDE1ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnMuaCIgMSAzCgoKCgojIDEgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
bGludXgvc2xhYi5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg
a21lbV9jYWNoZV9zIGttZW1fY2FjaGVfdDsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAxIDMKIyAxMiAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9saW51eC9tbS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMSAzCiMgMTcgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
bW16b25lLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgaW50ICptYXA7Cn0gZnJl
ZV9hcmVhX3Q7CgpzdHJ1Y3QgcGdsaXN0X2RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB6b25lX3N0cnVj
dCB7CgoKCiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9wYWdlczsKICAgICAgICB1bnNpZ25lZCBs
b25nIGluYWN0aXZlX2NsZWFuX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5hY3RpdmVf
ZGlydHlfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4sIHBhZ2VzX2xvdywg
cGFnZXNfaGlnaDsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9jbGVhbl9s
aXN0OwogICAgICAgIGZyZWVfYXJlYV90IGZyZWVfYXJlYVsxMF07CgoKCgogICAgICAgIGNoYXIg
Km5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKCgogICAgICAgIHN0cnVjdCBwZ2xp
c3RfZGF0YSAqem9uZV9wZ2RhdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFk
ZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwogICAgICAgIHN0cnVj
dCBwYWdlICp6b25lX21lbV9tYXA7Cn0gem9uZV90OwojIDcxICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAz
CnR5cGVkZWYgc3RydWN0IHpvbmVsaXN0X3N0cnVjdCB7CiAgICAgICAgem9uZV90ICogem9uZXMg
WzMgKzFdOwogICAgICAgIGludCBnZnBfbWFzazsKfSB6b25lbGlzdF90OwoKCgpzdHJ1Y3QgYm9v
dG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5v
ZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDEwMF07CiAg
ICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2
YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAg
ICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9
IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0
X2xpc3Q7CiMgMTAzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAzCnN0cnVjdCBwYWdlOwpleHRlcm4gdm9p
ZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0KTsKZXh0ZXJuIHZvaWQgZnJl
ZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFnZSAq
KmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyBwYWRkciwg
dW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBhZ2UgKnBtYXApOwoKZXh0ZXJu
IHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDIgMwoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X21hcG5yOwpleHRlcm4gdW5zaWduZWQgbG9uZyBudW1fcGh5
c3BhZ2VzOwpleHRlcm4gdm9pZCAqIGhpZ2hfbWVtb3J5OwpleHRlcm4gaW50IHBhZ2VfY2x1c3Rl
cjsKCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OwpleHRlcm4gc3RydWN0IGxp
c3RfaGVhZCBpbmFjdGl2ZV9kaXJ0eV9saXN0OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxIDMK
IyAxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDEx
ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs
dWRlL2FzbS9wZ3RhYmxlLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAxIDMKIyAxMiAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
cGd0YWJsZS5oIiAyIDMKCgoKCmV4dGVybiB2b2lkIFBQQzR4eF90bGJfcGluKHVuc2lnbmVkIGxv
bmcgdmEsIHVuc2lnbmVkIGxvbmcgcGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHBhZ2VzeiwgaW50IGNhY2hlKTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl91bnBpbih1bnNp
Z25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIHBhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNpemUpOwpleHRlcm4gdm9pZCBQUEM0eHhfdGxiX2ZsdXNoX2FsbCh2b2lk
KTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl9mbHVzaCh1bnNpZ25lZCBsb25nIHZhLCBpbnQgcGlk
KTsKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3Ry
dWN0ICptbSkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9CgpleHRl
cm4gaW5saW5lIHZvaWQgbG9jYWxfZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICp2bWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bWFk
ZHIpCiAgICAgICAgeyByZXR1cm4gUFBDNHh4X3RsYl9mbHVzaF9hbGwoKTsgfQoKZXh0ZXJuIGlu
bGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l
ZCBsb25nIGVuZCkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2ln
bmVkIGxvbmcgdmEpCiAgICAgICAgeyB9CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMg
aW5saW5lIHZvaWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk
IGxvbmcgZW5kKQp7Cgp9CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4gdm9pZCBfX2Zs
dXNoX2ljYWNoZV9wYWdlKHZvaWQgKik7CgoKCgoKZXh0ZXJuIHZvaWQgZmx1c2hfaWNhY2hlX3Jh
bmdlKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBfX2ZsdXNoX3Bh
Z2VfdG9fcmFtKHVuc2lnbmVkIGxvbmcgcGFnZV92YSk7CmV4dGVybiB2b2lkIGZsdXNoX3BhZ2Vf
dG9fcmFtKHN0cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmFfdG9f
cGh5cyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gcHRlX3QgKnZhX3RvX3B0ZSh1bnNp
Z25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3JlbWFwX2JvdCwgaW9y
ZW1hcF9iYXNlOwojIDMwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25n
IGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAzMTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4g
cHRlX3QgX19iYWRfcGFnZSh2b2lkKTsKZXh0ZXJuIHB0ZV90ICogX19iYWRfcGFnZXRhYmxlKHZv
aWQpOwojIDM1OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25l
KHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90
IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBw
Z2QpIHsgcmV0dXJuIDE7IH0KIyAzNzAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMgaW5saW5l
IGludCBwdGVfcmVhZChwdGVfdCBwdGUpIHsgcmV0dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0K
c3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0
ZSkgJiAweDIwMDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0
dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX2RpcnR5KHB0
ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0ZSkgJiAweDEwMDsgfQpzdGF0aWMgaW5saW5lIGlu
dCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAoKHB0ZSkucHRlKSAmIDB4NDAwOyB9Cgpz
dGF0aWMgaW5saW5lIHZvaWQgcHRlX3VuY2FjaGUocHRlX3QgcHRlKSB7ICgocHRlKS5wdGUpIHw9
IDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfY2FjaGUocHRlX3QgcHRlKSB7ICgocHRl
KS5wdGUpICY9IH4weDAwNDsgfQoKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0
ZV90IHB0ZSkgewogICAgICAgICgocHRlKS5wdGUpICY9IH4weDAxMDsgcmV0dXJuIHB0ZTsgfQpz
dGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRlX3QgcHRlKSB7CiAgICAgICAgKChw
dGUpLnB0ZSkgJj0gfjB4MDEwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRl
X3dycHJvdGVjdChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSAmPSB+KDB4MjAwIHwg
MHg4MDApOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRl
X3QgcHRlKSB7CiAgICAgICAgKChwdGUpLnB0ZSkgJj0gfigweDEwMCB8IDB4ODAwKTsgcmV0dXJu
IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta29sZChwdGVfdCBwdGUpIHsKICAgICAg
ICAoKHB0ZSkucHRlKSAmPSB+MHg0MDA7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgcHRl
X3QgcHRlX21rcmVhZChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDAxMDsg
cmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7
CiAgICAgICAgKChwdGUpLnB0ZSkgfD0gMHgwMTA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu
ZSBwdGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAw
eDIwMDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDEwMCkKICAgICAgICAgICAgICAgICgo
cHRlKS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBw
dGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDEw
MDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDIwMCkKICAgICAgICAgICAgICAgICgocHRl
KS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBwdGVf
dCBwdGVfbWt5b3VuZyhwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDQwMDsg
cmV0dXJuIHB0ZTsgfQojIDQyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgcHRl
X3QgbWtfcHRlX3BoeXModW5zaWduZWQgbG9uZyBwaHlzcGFnZSwgcGdwcm90X3QgcGdwcm90KQp7
CiAgICAgICAgcHRlX3QgcHRlOwogICAgICAgICgocHRlKS5wdGUpID0gcGh5c3BhZ2UgfCAoKHBn
cHJvdCkucGdwcm90KTsKICAgICAgICByZXR1cm4gcHRlOwp9CiMgNDM2ICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxl
LmgiIDMKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90X3Qg
bmV3cHJvdCkKewogICAgICAgICgocHRlKS5wdGUpID0gKCgocHRlKS5wdGUpICYgKCh+KCgxVUwg
PDwgMTIpLTEpKSB8IDB4NDAwIHwgMHgxMDAgfCAweDAwNCkpIHwgKChuZXdwcm90KS5wZ3Byb3Qp
OwogICAgICAgIHJldHVybiBwdGU7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZyBwdGVfdXBkYXRlKHB0ZV90ICpwLCB1bnNpZ25lZCBsb25nIGNsciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzZXQpCnsKICAgICAgICB1bnNp
Z25lZCBsb25nIG9sZCwgdG1wOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4iCiIx
Oglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMSwlMCwlNFxuIgoiCW9yCSUxLCUxLCU1XG4iCiIJ
c3R3Y3guCSUxLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9JnIi
ICh0bXApLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAoY2xyKSwgInIiIChzZXQp
LCAibSIgKCpwKQogICAgICAgIDogImNjIiApOwogICAgICAgIHJldHVybiBvbGQ7Cn0KCnN0YXRp
YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApCnsKICAg
ICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHg0MDAsIDApICYgMHg0MDApICE9IDA7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXAp
CnsKICAgICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHgxMDAgfCAweDgwMCwgMCkKICAg
ICAgICAgICAgICAgICYgMHgxMDApICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlcF9n
ZXRfYW5kX2NsZWFyKHB0ZV90ICpwdGVwKQp7CiAgICAgICAgcmV0dXJuICgocHRlX3QpIHsgKHB0
ZV91cGRhdGUocHRlcCwgfjBVTCwgMCkpIH0gKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB0ZXBf
c2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkKewogICAgICAgIHB0ZV91cGRhdGUocHRlcCwgMHgy
MDAgfCAweDgwMCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX21rZGlydHkocHRlX3Qg
KnB0ZXApCnsKIyA0OTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt
bGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwogICAgICAgIHB0ZV91cGRhdGUocHRl
cCwgMCwgMHgxMDApOwp9CiMgNTEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKc3RhdGljIGlubGluZSBw
bWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewog
ICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CgoKc3RhdGljIGlubGluZSBwdGVfdCAqIHB0
ZV9vZmZzZXQocG1kX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJl
dHVybiAocHRlX3QgKikgKCgoKmRpcikucG1kKSkgKyAoKGFkZHJlc3MgPj4gMTIpICYgKDEwMjQg
LSAxKSk7Cn0KCmV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTsKZXh0ZXJuIHZvaWQg
cGFnaW5nX2luaXQodm9pZCk7CiMgNTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0ZXJuIHZvaWQg
Zmx1c2hfaGFzaF9zZWdtZW50cyh1bnNpZ25lZCBsb3dfdnNpZCwgdW5zaWduZWQgaGlnaF92c2lk
KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2lnbmVk
IGxvbmcgdmEpOwojIDU1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB2b2lkIGNhY2hlX2Ns
ZWFyKF9fdTMyIGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gdm9pZCBjYWNoZV9wdXNoKF9fdTMy
IGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gaW50IG1tX2VuZF9vZl9jaHVuayAodW5zaWduZWQg
bG9uZyBhZGRyLCBpbnQgbGVuKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9wYSh1bnNpZ25lZCBs
b25nIGFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBtbV9wdG92KHVuc2lnbmVkIGxvbmcgYWRk
cikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiMgNTY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcga2VybmVsX21hcCh1bnNpZ25lZCBsb25nIHBhZGRyLCB1bnNpZ25l
ZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vY2FjaGVm
bGFnLCB1bnNpZ25lZCBsb25nICptZW1hdmFpbHAgKTsKCgoKCmV4dGVybiB2b2lkIGtlcm5lbF9z
ZXRfY2FjaGVtb2RlICh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtb2RlKTsKIyAy
NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9saW51eC9tbS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCnN0cnVjdCB2bV9hcmVh
X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgdm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CgoKICAgICAg
ICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3Bh
Z2VfcHJvdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKCiAgICAgICAgc2hvcnQg
dm1fYXZsX2hlaWdodDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfbGVm
dDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfcmlnaHQ7CgoKCgoKICAg
ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRfc2hhcmU7CiAgICAgICAgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgogICAgICAgIHN0cnVjdCB2bV9vcGVy
YXRpb25zX3N0cnVjdCAqIHZtX29wczsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwog
ICAgICAgIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Jh
ZW5kOwogICAgICAgIHZvaWQgKiB2bV9wcml2YXRlX2RhdGE7Cn07CiMgMTEyICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21t
LmgiIDMKZXh0ZXJuIHBncHJvdF90IHByb3RlY3Rpb25fbWFwWzE2XTsKCgoKCgoKCnN0cnVjdCB2
bV9vcGVyYXRpb25zX3N0cnVjdCB7CiAgICAgICAgdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCAqIGFyZWEpOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogYXJlYSk7CiAgICAgICAgc3RydWN0IHBhZ2UgKiAoKm5vcGFnZSkoc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICogYXJlYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNjZXNz
KTsKfTsKIyAxMzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu
dXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwp0eXBlZGVmIHN0cnVjdCBwYWdlIHsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h
cHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBzdHJ1Y3QgcGFnZSAq
bmV4dF9oYXNoOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZmxhZ3M7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBhZ2U7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFn
ZSAqKnBwcmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAg
ICAgICB2b2lkICp2aXJ0dWFsOwogICAgICAgIHN0cnVjdCB6b25lX3N0cnVjdCAqem9uZTsKfSBt
ZW1fbWFwX3Q7CiMgMTg4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDMKZXh0ZXJuIHZvaWQgX19zZXRfcGFnZV9k
aXJ0eShzdHJ1Y3QgcGFnZSAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9kaXJ0eShz
dHJ1Y3QgcGFnZSAqIHBhZ2UpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoNCwgJnBh
Z2UtPmZsYWdzKSkKICAgICAgICAgICAgICAgIF9fc2V0X3BhZ2VfZGlydHkocGFnZSk7Cn0KIyAz
MzggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu
Y2x1ZGUvbGludXgvbW0uaCIgMwpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcDsKCgoKCgoKCmV4
dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXMoem9uZWxpc3RfdCAqem9uZWxpc3QsIHVu
c2lnbmVkIGxvbmcgb3JkZXIpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdlc19ub2Rl
KGludCBuaWQsIGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9uZyBvcmRlcik7CgoKc3RhdGljIGlu
bGluZSBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u
ZyBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRlciA+PSAxMCkKICAgICAgICAgICAgICAgIHJl
dHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX19hbGxvY19wYWdlcyhjb250aWdfcGFn
ZV9kYXRhLm5vZGVfem9uZWxpc3RzKyhnZnBfbWFzayksIG9yZGVyKTsKfQoKCgoKCgpleHRlcm4g
dW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u
ZyBvcmRlcik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZShpbnQgZ2ZwX21h
c2spOwojIDM4MiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51
eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCmV4dGVybiB2b2lkIF9fZnJlZV9wYWdlcyhzdHJ1
Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvcmRlcik7CmV4dGVybiB2b2lkIGZyZWVfcGFn
ZXModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG9yZGVyKTsKCgoKCmV4dGVybiB2
b2lkIHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25v
ZGUocGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1
Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3QgcGFnZSAqIHNobWVt
X25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVz
cywgaW50IG5vX3NoYXJlKTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqIG5h
bWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZp
bGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVh
X3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3Qg
Km1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBp
bnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVj
dCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFn
ZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxv
bmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVu
c2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4
dGVybiB2b2lkIHZtdHJ1bmNhdGUoc3RydWN0IGlub2RlICogaW5vZGUsIGxvZmZfdCBvZmZzZXQp
OwpleHRlcm4gaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxzdHJ1Y3Qg
dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNj
ZXNzKTsKZXh0ZXJuIGludCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5zaWduZWQgbG9uZyBhZGRyLCB1
bnNpZ25lZCBsb25nIGVuZCk7CmV4dGVybiBpbnQgYWNjZXNzX3Byb2Nlc3Nfdm0oc3RydWN0IHRh
c2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqYnVmLCBpbnQgbGVuLCBp
bnQgd3JpdGUpOwpleHRlcm4gaW50IHB0cmFjZV9yZWFkZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnRzaywgdW5zaWduZWQgbG9uZyBzcmMsIGNoYXIgKmRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQg
cHRyYWNlX3dyaXRlZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY2hhciAqIHNyYywgdW5z
aWduZWQgbG9uZyBkc3QsIGludCBsZW4pOwoKZXh0ZXJuIGludCBwZ3RfY2FjaGVfd2F0ZXJbMl07
CmV4dGVybiBpbnQgY2hlY2tfcGd0X2NhY2hlKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZnJlZV9hcmVh
X2luaXQodW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUpOwpleHRlcm4gdm9pZCBmcmVlX2FyZWFf
aW5pdF9ub2RlKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQsIHN0cnVjdCBwYWdlICpwbWFwLAog
ICAgICAgIHVuc2lnbmVkIGxvbmcgKiB6b25lc19zaXplLCB1bnNpZ25lZCBsb25nIHpvbmVfc3Rh
cnRfcGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUpOwpleHRlcm4gdm9p
ZCBtZW1faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19tZW0odm9pZCk7CmV4dGVybiB2b2lk
IHNpX21lbWluZm8oc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBzd2FwaW5fcmVh
ZGFoZWFkKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gdm9pZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHVubG9ja192bWFfbWFwcGluZ3Moc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVj
dCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBfX2lu
c2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg
Kik7CmV4dGVybiB2b2lkIGJ1aWxkX21tYXBfYXZsKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CmV4dGVy
biB2b2lkIGV4aXRfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICopOwpleHRlcm4gdW5zaWduZWQgbG9u
ZyBnZXRfdW5tYXBwZWRfYXJlYSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGRvX21tYXBfcGdvZmYoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVk
IGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwcm90
LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBwZ29mZik7CgpzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWdu
ZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHBy
b3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgob2Zmc2V0ICsgKCgo
bGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9mZnNldCkKICAgICAg
ICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4ofigoMVVMIDw8IDEy
KS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZihmaWxlLCBhZGRyLCBs
ZW4sIHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoKICAgICAgICByZXR1cm4gcmV0Owp9
CgpleHRlcm4gaW50IGRvX211bm1hcChzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcs
IHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19icmsodW5zaWduZWQgbG9uZywgdW5z
aWduZWQgbG9uZyk7CgpzdHJ1Y3Qgem9uZV90OwoKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX3Bh
Z2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBhZ2VfdW51c2Uoc3RydWN0
IHBhZ2UgKik7CmV4dGVybiB2b2lkIHRydW5jYXRlX2lub2RlX3BhZ2VzKHN0cnVjdCBhZGRyZXNz
X3NwYWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmMoc3RydWN0IHZtX2Fy
ZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgdW5zaWduZWQgaW50KTsKZXh0ZXJu
IHN0cnVjdCBwYWdlICpmaWxlbWFwX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgdW5z
aWduZWQgbG9uZywgaW50KTsKIyA0OTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwpzdGF0aWMgaW5saW5lIGlu
dCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25n
IGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgogICAgICAgIGFkZHJlc3Mg
Jj0gKH4oKDFVTCA8PCAxMiktMSkpOwogICAgICAgIGdyb3cgPSAodm1hLT52bV9zdGFydCAtIGFk
ZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZtX2VuZCAtIGFkZHJlc3MgPiBjdXJyZW50
LT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAgICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0g
KyBncm93KSA8PCAxMikgPiBjdXJyZW50LT5ybGltWzldLnJsaW1fY3VyKQogICAgICAgICAgICAg
ICAgcmV0dXJuIC0xMjsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2
bWEtPnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3Jv
dzsKICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAg
ICB2bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICByZXR1cm4gMDsKfQoKCmV4
dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICog
bW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBm
aW5kX3ZtYV9wcmV2KHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKipwcHJldik7CgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZtX2FyZWFfc3RydWN0
ICogZmluZF92bWFfaW50ZXJzZWN0aW9uKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQg
bG9uZyBzdGFydF9hZGRyLCB1bnNpZ25lZCBsb25nIGVuZF9hZGRyKQp7CiAgICAgICAgc3RydWN0
IHZtX2FyZWFfc3RydWN0ICogdm1hID0gZmluZF92bWEobW0sc3RhcnRfYWRkcik7CgogICAgICAg
IGlmICh2bWEgJiYgZW5kX2FkZHIgPD0gdm1hLT52bV9zdGFydCkKICAgICAgICAgICAgICAgIHZt
YSA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiB2bWE7Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1f
YXJlYV9zdHJ1Y3QgKmZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWdu
ZWQgbG9uZyBhZGRyKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93
ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDIgMwojIDQ2ICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Ns
YWIuaCIgMwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGtt
ZW1fY2FjaGVfc2l6ZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBrbWVtX2NhY2hlX3QgKmttZW1fZmlu
ZF9nZW5lcmFsX2NhY2hlcChzaXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hl
X3QgKmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIHVuc2ln
bmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCop
KHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1
bnNpZ25lZCBsb25nKSk7CmV4dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95KGttZW1fY2FjaGVf
dCAqKTsKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKik7CmV4dGVy
biB2b2lkICprbWVtX2NhY2hlX2FsbG9jKGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9p
ZCBrbWVtX2NhY2hlX2ZyZWUoa21lbV9jYWNoZV90ICosIHZvaWQgKik7CgpleHRlcm4gdm9pZCAq
a21hbGxvYyhzaXplX3QsIGludCk7CmV4dGVybiB2b2lkIGtmcmVlKGNvbnN0IHZvaWQgKik7Cgpl
eHRlcm4gdm9pZCBrbWVtX2NhY2hlX3JlYXAoaW50KTsKZXh0ZXJuIGludCBzbGFiaW5mb19yZWFk
X3Byb2MoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwpleHRl
cm4gaW50IHNsYWJpbmZvX3dyaXRlX3Byb2Moc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIg
KmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwg
dm9pZCAqZGF0YSk7CgoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqdm1fYXJlYV9jYWNoZXA7CmV4dGVy
biBrbWVtX2NhY2hlX3QgKm1tX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqbmFtZXNfY2Fj
aGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxlc19jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hl
X3QgKmZpbHBfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpkcXVvdF9jYWNoZXA7CmV4dGVy
biBrbWVtX2NhY2hlX3QgKmJoX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZnNfY2FjaGVw
OwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDYgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19m
cy5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9saW51eC9wcm9jX2ZzLmgiIDMKZW51bSB7CiAgICAgICAgUFJPQ19S
T09UX0lOTyA9IDEsCn07CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19mcy5oIiAzCnR5cGVkZWYgaW50IChy
ZWFkX3Byb2NfdCkoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CnR5cGVk
ZWYgaW50ICh3cml0ZV9wcm9jX3QpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQg
KmRhdGEpOwp0eXBlZGVmIGludCAoZ2V0X2luZm9fdCkoY2hhciAqLCBjaGFyICoqLCBvZmZfdCwg
aW50KTsKCnN0cnVjdCBwcm9jX2Rpcl9lbnRyeSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG93
X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBuYW1lbGVuOwogICAgICAgIGNvbnN0IGNoYXIg
Km5hbWU7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAgbmxpbmtfdCBubGluazsKICAgICAg
ICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6
ZTsKICAgICAgICBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqIHByb2NfaW9wczsKICAgICAgICBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zICogcHJvY19mb3BzOwogICAgICAgIGdldF9pbmZvX3QgKmdl
dF9pbmZvOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBwcm9j
X2Rpcl9lbnRyeSAqbmV4dCwgKnBhcmVudCwgKnN1YmRpcjsKICAgICAgICB2b2lkICpkYXRhOwog
ICAgICAgIHJlYWRfcHJvY190ICpyZWFkX3Byb2M7CiAgICAgICAgd3JpdGVfcHJvY190ICp3cml0
ZV9wcm9jOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBkZWxldGVkOwogICAg
ICAgIGtkZXZfdCByZGV2Owp9OwoKCgoKCmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgcHJv
Y19yb290OwpleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX3Jvb3RfZnM7CmV4dGVy
biBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfbmV0OwpleHRlcm4gc3RydWN0IHByb2NfZGly
X2VudHJ5ICpwcm9jX2J1czsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290
X2RyaXZlcjsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290X2tjb3JlOwoK
ZXh0ZXJuIHZvaWQgcHJvY19yb290X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHByb2NfbWlzY19p
bml0KHZvaWQpOwoKc3RydWN0IGRlbnRyeSAqcHJvY19waWRfbG9va3VwKHN0cnVjdCBpbm9kZSAq
ZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KTsKdm9pZCBwcm9jX3BpZF9kZWxldGVfaW5vZGUo
c3RydWN0IGlub2RlICppbm9kZSk7CmludCBwcm9jX3BpZF9yZWFkZGlyKHN0cnVjdCBmaWxlICog
ZmlscCwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpOwoKZXh0ZXJuIHN0cnVjdCBw
cm9jX2Rpcl9lbnRyeSAqY3JlYXRlX3Byb2NfZW50cnkoY29uc3QgY2hhciAqbmFtZSwgbW9kZV90
IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcGFyZW50KTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3Byb2NfZW50
cnkoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwYXJlbnQpOwoKZXh0
ZXJuIHN0cnVjdCB2ZnNtb3VudCAqcHJvY19tbnQ7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sg
KnByb2NfcmVhZF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKix2b2lkICosaW50KTsKZXh0ZXJu
IHN0cnVjdCBpbm9kZSAqIHByb2NfZ2V0X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQs
IHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVybiBpbnQgcHJvY19tYXRjaChpbnQsIGNv
bnN0IGNoYXIgKixzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKik7CiMgMTEwICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2Nf
ZnMuaCIgMwpleHRlcm4gaW50IHByb2NfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZp
bGxkaXJfdCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2xvb2t1cChzdHJ1Y3QgaW5vZGUg
Kiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2Nf
a2NvcmVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19rbXNn
X29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHBwY19odGFiX29wZXJh
dGlvbnM7CgoKCgpleHRlcm4gdm9pZCBwcm9jX3R0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBw
cm9jX3R0eV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVy
biB2b2lkIHByb2NfdHR5X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2
ZXIpOwoKCgoKZXh0ZXJuIHZvaWQgcHJvY19kZXZpY2VfdHJlZV9pbml0KHZvaWQpOwoKCgoKZXh0
ZXJuIHZvaWQgcHJvY19ydGFzX2luaXQodm9pZCk7CgpleHRlcm4gc3RydWN0IHByb2NfZGlyX2Vu
dHJ5ICpwcm9jX3N5bWxpbmsoY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgc3RydWN0IHBy
b2NfZGlyX2VudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50
cnkgKnByb2NfbWtub2QoY29uc3QgY2hhciAqLG1vZGVfdCwKICAgICAgICAgICAgICAgIHN0cnVj
dCBwcm9jX2Rpcl9lbnRyeSAqLGtkZXZfdCk7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkg
KnByb2NfbWtkaXIoY29uc3QgY2hhciAqLHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVy
biBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpjcmVhdGVfcHJvY19yZWFkX2VudHJ5KGNv
bnN0IGNoYXIgKm5hbWUsCiAgICAgICAgbW9kZV90IG1vZGUsIHN0cnVjdCBwcm9jX2Rpcl9lbnRy
eSAqYmFzZSwKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jLCB2b2lkICogZGF0YSkKewog
ICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5KG5hbWUs
bW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICAgICAgICByZXMtPnJlYWRf
cHJvYz1yZWFkX3Byb2M7CiAgICAgICAgICAgICAgICByZXMtPmRhdGE9ZGF0YTsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIHJlczsKfQoKZXh0ZXJuIGlubGluZSBzdHJ1Y3QgcHJvY19kaXJfZW50
cnkgKmNyZWF0ZV9wcm9jX2luZm9fZW50cnkoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2Rl
X3QgbW9kZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpiYXNlLCBnZXRfaW5mb190ICpnZXRfaW5m
bykKewogICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5
KG5hbWUsbW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSByZXMtPmdldF9pbmZvPWdldF9pbmZv
OwogICAgICAgIHJldHVybiByZXM7Cn0KCmV4dGVybiBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2Vu
dHJ5ICpwcm9jX25ldF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2RlX3QgbW9k
ZSwgZ2V0X2luZm9fdCAqZ2V0X2luZm8pCnsKICAgICAgICByZXR1cm4gY3JlYXRlX3Byb2NfaW5m
b19lbnRyeShuYW1lLG1vZGUscHJvY19uZXQsZ2V0X2luZm8pOwp9CgpleHRlcm4gaW5saW5lIHZv
aWQgcHJvY19uZXRfcmVtb3ZlKGNvbnN0IGNoYXIgKm5hbWUpCnsKICAgICAgICByZW1vdmVfcHJv
Y19lbnRyeShuYW1lLHByb2NfbmV0KTsKfQojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKCiMgMSAi
L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk
ZS9hc20vaGRyZWcuaCIgMSAzCiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2hkcmVnLmgiIDMKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgaWRlX2lvcmVnX3Q7CiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDIgMwojIDgwICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L2lkZS5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBieXRlOwojIDIyMSAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUu
aCIgMwpzdHJ1Y3QgaHdpZl9zOwp0eXBlZGVmIGludCAoaWRlX2Fja19pbnRyX3QpKHN0cnVjdCBo
d2lmX3MgKik7CiMgMjMxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYgc3RydWN0IGh3X3JlZ3Nf
cyB7CiAgICAgICAgaWRlX2lvcmVnX3QgaW9fcG9ydHNbKDEwKV07CiAgICAgICAgaW50IGlycTsK
ICAgICAgICBpbnQgZG1hOwogICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50cjsKICAgICAg
ICB2b2lkICpwcml2Owp9IGh3X3JlZ3NfdDsKCgoKCmludCBpZGVfcmVnaXN0ZXJfaHcoaHdfcmVn
c190ICpodywgc3RydWN0IGh3aWZfcyAqKmh3aWZwKTsKCgoKCnZvaWQgaWRlX3NldHVwX3BvcnRz
KCBod19yZWdzX3QgKmh3LAogICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBiYXNl
LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm9mZnNldHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlkZV9pb3JlZ190IGN0cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl
Z190IGludHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50
ciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlycSk7CgojIDEgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAx
IDMKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s
b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTcg
Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1
ZGUvYXNtL2lkZS5oIiAyIDMKIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv
cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2
LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAx
IDMKIyAyNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9hc20vaW8uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv
Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAxIDMKIyAzMyAiL29w
dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h
c20vcHBjNHh4LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9p
NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNo
ZGVwLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNoZGVwLmgiIDMKc3RydWN0IHB0X3JlZ3M7CnN0cnVj
dCBwY2lfYnVzOwpzdHJ1Y3QgcGNpX2RldjsKCnN0cnVjdCBtYWNoZGVwX2NhbGxzIHsKICAgICAg
ICB2b2lkICgqc2V0dXBfYXJjaCkodm9pZCk7CgogICAgICAgIGludCAoKnNldHVwX3Jlc2lkdWFs
KShjaGFyICpidWZmZXIpOwoKICAgICAgICBpbnQgKCpnZXRfY3B1aW5mbykoY2hhciAqYnVmZmVy
KTsKCiAgICAgICAgdW5zaWduZWQgaW50ICgqaXJxX2Nhbm5vbmljYWxpemUpKHVuc2lnbmVkIGlu
dCBpcnEpOwogICAgICAgIHZvaWQgKCppbml0X0lSUSkodm9pZCk7CiAgICAgICAgaW50ICgqZ2V0
X2lycSkoc3RydWN0IHB0X3JlZ3MgKik7CiAgICAgICAgdm9pZCAoKnBvc3RfaXJxKSggc3RydWN0
IHB0X3JlZ3MgKiwgaW50ICk7CgoKCiAgICAgICAgdm9pZCAoKmluaXQpKHZvaWQpOwoKICAgICAg
ICB2b2lkICgqcmVzdGFydCkoY2hhciAqY21kKTsKICAgICAgICB2b2lkICgqcG93ZXJfb2ZmKSh2
b2lkKTsKICAgICAgICB2b2lkICgqaGFsdCkodm9pZCk7CgogICAgICAgIGxvbmcgKCp0aW1lX2lu
aXQpKHZvaWQpOwogICAgICAgIGludCAoKnNldF9ydGNfdGltZSkodW5zaWduZWQgbG9uZyBub3d0
aW1lKTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3J0Y190aW1lKSh2b2lkKTsKICAgICAg
ICB2b2lkICgqY2FsaWJyYXRlX2RlY3IpKHZvaWQpOwoKICAgICAgICB2b2lkICgqaGVhcnRiZWF0
KSh2b2lkKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9yZXNldDsKICAgICAgICB1
bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9jb3VudDsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nICgq
ZmluZF9lbmRfb2ZfbWVtb3J5KSh2b2lkKTsKCiAgICAgICAgdm9pZCAoKnByb2dyZXNzKShjaGFy
ICosIHVuc2lnbmVkIHNob3J0KTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAoKm52cmFtX3JlYWRf
dmFsKShpbnQgYWRkcik7CiAgICAgICAgdm9pZCAoKm52cmFtX3dyaXRlX3ZhbCkoaW50IGFkZHIs
IHVuc2lnbmVkIGNoYXIgdmFsKTsKCgogICAgICAgIGludCAoKmtiZF9zZXRrZXljb2RlKSh1bnNp
Z25lZCBpbnQgc2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGtleWNvZGUpOwogICAgICAgIGludCAoKmtiZF9nZXRrZXljb2RlKSh1bnNpZ25lZCBp
bnQgc2NhbmNvZGUpOwogICAgICAgIGludCAoKmtiZF90cmFuc2xhdGUpKHVuc2lnbmVkIGNoYXIg
c2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq
a2V5Y29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHJhd19tb2RlKTsK
ICAgICAgICBjaGFyICgqa2JkX3VuZXhwZWN0ZWRfdXApKHVuc2lnbmVkIGNoYXIga2V5Y29kZSk7
CiAgICAgICAgdm9pZCAoKmtiZF9sZWRzKSh1bnNpZ25lZCBjaGFyIGxlZHMpOwogICAgICAgIHZv
aWQgKCprYmRfaW5pdF9odykodm9pZCk7CiMgNzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21hY2hkZXAuaCIgMwogICAgICAg
IHZvaWQgKCpwY2liaW9zX2ZpeHVwKSh2b2lkKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf
Zml4dXBfYnVzKShzdHJ1Y3QgcGNpX2J1cyAqKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf
Zml4dXBfcmVzb3VyY2VzKShzdHJ1Y3QgcGNpX2RldiAqKTsKCgoKCiAgICAgICAgaW50ICgqcGNp
Ymlvc19lbmFibGVfZGV2aWNlX2hvb2spKHN0cnVjdCBwY2lfZGV2ICosIGludCBpbml0aWFsKTsK
CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKCpwY2lfc3dpenpsZSkoc3RydWN0IHBjaV9kZXYgKiwg
dW5zaWduZWQgY2hhciAqKTsKICAgICAgICBpbnQgKCpwY2lfbWFwX2lycSkoc3RydWN0IHBjaV9k
ZXYgKiwgdW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcik7CgoKICAgICAgICBpbnQgcHBjX21h
Y2hpbmU7Cn07CgpleHRlcm4gc3RydWN0IG1hY2hkZXBfY2FsbHMgcHBjX21kOwpleHRlcm4gY2hh
ciBjbWRfbGluZVs1MTJdOwoKZXh0ZXJuIHZvaWQgc2V0dXBfcGNpX3B0cnModm9pZCk7CgoKCgoK
dHlwZWRlZiBlbnVtIHN5c19jdHJsZXJfa2luZCB7CiAgICAgICAgU1lTX0NUUkxFUl9VTktOT1dO
ID0gMCwKICAgICAgICBTWVNfQ1RSTEVSX0NVREEgPSAxLAogICAgICAgIFNZU19DVFJMRVJfUE1V
ID0gMiwKfSBzeXNfY3RybGVyX3Q7CgpleHRlcm4gc3lzX2N0cmxlcl90IHN5c19jdHJsZXI7CiMg
NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j
bHVkZS9hc20vaXJxLmgiIDIgMwoKCmV4dGVybiB2b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGlu
dCk7CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOwpleHRlcm4g
dm9pZCBlbmFibGVfaXJxKHVuc2lnbmVkIGludCk7CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu
dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lycS5oIiAzCnN0YXRp
YyBfX2lubGluZV9fIGludAppcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0
dXJuIChpcnEpOwp9CiMgMjQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMwpleHRlcm4gdW5zaWduZWQgbG9uZyBw
cGNfY2FjaGVkX2lycV9tYXNrWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgcHBjX2VuYWJsZWRfaXJxX21hc2tbKCgxMjggKyAzMSkgLyAzMildOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBwcGNfbG9zdF9pbnRlcnJ1cHRzWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIGF0
b21pY190IHBwY19uX2xvc3RfaW50ZXJydXB0czsKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51
eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHBjNHh4LmgiIDIgMwoj
IDIwOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9hc20vcHBjNHh4LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgYm9hcmRfaW5mbyB7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBiaV9zX3ZlcnNpb25bNF07CiAgICAgICAgdW5zaWduZWQgY2hhciBi
aV9yX3ZlcnNpb25bMzBdOwogICAgICAgIHVuc2lnbmVkIGludCBiaV9tZW1zaXplOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgYmlfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBiaV9w
Y2lfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgaW50IGJpX2ludGZyZXE7CiAgICAgICAg
dW5zaWduZWQgaW50IGJpX2J1c2ZyZXE7CiAgICAgICAgdW5zaWduZWQgaW50IGJpX3BjaV9idXNm
cmVxOwp9IGJkX3Q7CiMgMjI3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcGM0eHguaCIgMwpleHRlcm4gdW5zaWduZWQgY2hh
ciBfX3Jlc1tdOwoKZXh0ZXJuIGludCBwcGM0MDVfZ2V0X2JvYXJkaW5mbyhpbnQgb3B0aW9uLCB1
bnNpZ25lZCBsb25nIGJkX2VudHJ5KTsKIyAyNTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAzCmV4dGVybiB1
bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpc2FfbWVtX2Jh
c2U7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBjaV9kcmFtX29mZnNldDsKIyAyNSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8u
aCIgMiAzCiMgMTUyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp
bnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiB2b2lkIF9pbnNiKHZvbGF0aWxlIHU4
ICpwb3J0LCB2b2lkICpidWYsIGludCBucyk7CmV4dGVybiB2b2lkIF9vdXRzYih2b2xhdGlsZSB1
OCAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zdyh2b2xh
dGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsKZXh0ZXJuIHZvaWQgX291dHN3KHZv
bGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBf
aW5zbCh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQg
X291dHNsKHZvbGF0aWxlIHUzMiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwpleHRl
cm4gdm9pZCBfaW5zd19ucyh2b2xhdGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK
ZXh0ZXJuIHZvaWQgX291dHN3X25zKHZvbGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVm
LCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zbF9ucyh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQg
KmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQgX291dHNsX25zKHZvbGF0aWxlIHUzMiAqcG9ydCwg
Y29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwojIDE4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8uaCIgMwpleHRlcm4gdm9p
ZCAqX19pb3JlbWFwKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAog
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq
X19pb3JlbWFwX2F0KHVuc2lnbmVkIGxvbmcgcGh5cywgdW5zaWduZWQgbG9uZyBzaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq
aW9yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CgpleHRl
cm4gdm9pZCBpb3VubWFwKHZvaWQgKmFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3BhKHVu
c2lnbmVkIGxvbmcgYWRkcik7CgoKCmV4dGVybiB2b2lkICptZW1yZW1hcCh1bnNpZ25lZCBsb25n
IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiMgMjA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4
LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiBp
bmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX2J1cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykK
ewoKCgoKCiAgICAgICAgcmV0dXJuIGlvcGEgKCh1bnNpZ25lZCBsb25nKSBhZGRyZXNzKSArIDA7
CgoKCgoKfQoKZXh0ZXJuIGlubGluZSB2b2lkICogYnVzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBh
ZGRyZXNzKQp7CgoKCiAgICAgICAgaWYgKGFkZHJlc3MgPT0gMCkKICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgIHJldHVybiAodm9pZCAqKShhZGRyZXNzIC0gMCArIDB4YzAwMDAwMDAp
OwoKfQoKCgoKCmV4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRp
bGUgdm9pZCAqIGFkZHJlc3MpCnsKCgoKCgogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykg
YWRkcmVzcyAtIDB4YzAwMDAwMDA7Cgp9CgpleHRlcm4gaW5saW5lIHZvaWQgKiBwaHlzX3RvX3Zp
cnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CgoKCgoKICAgICAgICByZXR1cm4gKHZvaWQgKikg
KGFkZHJlc3MgKyAweGMwMDAwMDAwKTsKCn0KIyAyNjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt
Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlu
bGluZSB2b2lkIGVpZWlvKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVp
ZWlvIiA6IDogOiAibWVtb3J5Iik7Cn0KIyAyNzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlubGlu
ZSBpbnQgaW5fOCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICphZGRyKQp7CiAgICAgICAgaW50IHJl
dDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxieiVVMSVYMSAlMCwlMTsgZWllaW8i
IDogIj1yIiAocmV0KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRl
cm4gaW5saW5lIHZvaWQgb3V0Xzgodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqYWRkciwgaW50IHZh
bCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGIlVTAlWDAgJTEsJTA7IGVpZWlv
IiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVybiBpbmxpbmUgaW50IGluX2xl
MTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIpCnsKICAgICAgICBpbnQgcmV0OwoKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibGhicnggJTAsMCwlMTsgZWllaW8iIDogIj1yIiAo
cmV0KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAoYWRkciksICJtIiAoKmFk
ZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIGludCBpbl9iZTE2KHZv
bGF0aWxlIHVuc2lnbmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgaW50IHJldDsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oImxoeiVVMSVYMSAlMCwlMTsgZWllaW8iIDogIj1yIiAocmV0
KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZv
aWQgb3V0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGludCB2YWwpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RoYnJ4ICUxLDAsJTI7IGVpZWlvIiA6ICI9bSIg
KCphZGRyKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAodmFsKSwgInIiIChh
ZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUxNih2b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGgl
VTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVy
biBpbmxpbmUgdW5zaWduZWQgaW5fbGUzMih2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg
ICAgIHVuc2lnbmVkIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImx3YnJ4ICUw
LDAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJyIiAoYWRkciksICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4g
aW5saW5lIHVuc2lnbmVkIGluX2JlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIpCnsKICAgICAg
ICB1bnNpZ25lZCByZXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsd3olVTElWDEg
JTAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOiAibSIgKCphZGRyKSk7CiAgICAgICAgcmV0dXJu
IHJldDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkIG91dF9sZTMyKHZvbGF0aWxlIHVuc2lnbmVkICph
ZGRyLCBpbnQgdmFsKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0d2JyeCAlMSww
LCUyOyBlaWVpbyIgOiAiPW0iICgqYWRkcikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJyIiAodmFsKSwgInIiIChhZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUzMih2
b2xhdGlsZSB1bnNpZ25lZCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xh
dGlsZV9fKCJzdHclVTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFs
KSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlv
X2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3Ro
KQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg
aWYgKGluXzgoKHZvbGF0aWxlIHU4ICopKGlvX2FkZHIpKSAhPSAqc2lnbmF0dXJlKQogICAgICAg
ICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAg
ICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAg
ICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0
dXJuIHJldHZhbDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IGlzYV9jaGVja19zaWduYXR1cmUodW5z
aWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNpZ25hdHVy
ZSwgaW50IGxlbmd0aCkKewogICAgICAgIHJldHVybiAwOwp9CgoKCmV4dGVybiB2b2lkIGludmFs
aWRhdGVfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k
KTsKZXh0ZXJuIHZvaWQgZmx1c2hfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu
c2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIHZvaWQgd2JhY2tfaW52X2RjYWNoZV9yYW5nZSh1bnNp
Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CiMgMjggIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAy
IDMKCmV4dGVybiBpbnQgcG1hY19pZGVfcG9ydHNfa25vd247CmV4dGVybiBpZGVfaW9yZWdfdCBw
bWFjX2lkZV9yZWdiYXNlWzRdOwpleHRlcm4gaW50IHBtYWNfaWRlX2lycVs0XTsKZXh0ZXJuIHZv
aWQgcG1hY19pZGVfcHJvYmUodm9pZCk7CgpleHRlcm4gaW50IGNocnBfaWRlX3BvcnRzX2tub3du
OwpleHRlcm4gaWRlX2lvcmVnX3QgY2hycF9pZGVfcmVnYmFzZVs0XTsKZXh0ZXJuIGlkZV9pb3Jl
Z190IGNocnBfaWRlZG1hX3JlZ2Jhc2U7CmV4dGVybiB1bnNpZ25lZCBpbnQgY2hycF9pZGVfaXJx
OwpleHRlcm4gdm9pZCBjaHJwX2lkZV9wcm9iZSh2b2lkKTsKCmV4dGVybiB2b2lkIHBwY19nZW5l
cmljX2lkZV9maXhfZHJpdmVpZChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpOwoKc3RydWN0IGlkZV9t
YWNoZGVwX2NhbGxzIHsKICAgICAgICB2b2lkICgqaW5zdykoaWRlX2lvcmVnX3QgcG9ydCwgdm9p
ZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIHZvaWQgKCpvdXRzdykoaWRlX2lvcmVnX3QgcG9ydCwg
dm9pZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIGludCAoKmRlZmF1bHRfaXJxKShpZGVfaW9yZWdf
dCBiYXNlKTsKICAgICAgICBpZGVfaW9yZWdfdCAoKmRlZmF1bHRfaW9fYmFzZSkoaW50IGluZGV4
KTsKICAgICAgICBpbnQgKCppZGVfY2hlY2tfcmVnaW9uKShpZGVfaW9yZWdfdCBmcm9tLCB1bnNp
Z25lZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqaWRlX3JlcXVlc3RfcmVnaW9uKShpZGVf
aW9yZWdfdCBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBleHRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqbmFtZSk7CiAgICAgICAgdm9pZCAoKmlkZV9yZWxlYXNlX3JlZ2lvbikoaWRlX2lv
cmVnX3QgZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqZml4X2RyaXZlaWQpKHN0cnVjdCBoZF9kcml2
ZWlkICppZCk7CiAgICAgICAgdm9pZCAoKmlkZV9pbml0X2h3aWYpKGh3X3JlZ3NfdCAqaHcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBkYXRhX3BvcnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBjdHJsX3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlycSk7CgogICAg
ICAgIGludCBpb19iYXNlOwp9OwoKZXh0ZXJuIHN0cnVjdCBpZGVfbWFjaGRlcF9jYWxscyBwcGNf
aWRlX21kOwoKdm9pZCBpZGVfaW5zdyhpZGVfaW9yZWdfdCBwb3J0LCB2b2lkICpidWYsIGludCBu
cyk7CnZvaWQgaWRlX291dHN3KGlkZV9pb3JlZ190IHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK
dm9pZCBwcGNfZ2VuZXJpY19pZGVfZml4X2RyaXZlaWQoc3RydWN0IGhkX2RyaXZlaWQgKmlkKTsK
IyA4NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9hc20vaWRlLmgiIDMKc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9kZWZhdWx0X2ly
cShpZGVfaW9yZWdfdCBiYXNlKQp7CiAgICAgICAgaWYgKCBwcGNfaWRlX21kLmRlZmF1bHRfaXJx
ICkKICAgICAgICAgICAgICAgIHJldHVybiBwcGNfaWRlX21kLmRlZmF1bHRfaXJxKGJhc2UpOwog
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKfQoKc3RhdGljIF9faW5saW5l
X18gaWRlX2lvcmVnX3QgaWRlX2RlZmF1bHRfaW9fYmFzZShpbnQgaW5kZXgpCnsKICAgICAgICBp
ZiAocHBjX2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UpCiAgICAgICAgICAgICAgICByZXR1cm4gcHBj
X2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UoaW5kZXgpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0
aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3JlZ190IGRhdGFf
cG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl
Z190IGN0cmxfcG9ydCwgaW50ICppcnEpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfaW5p
dF9od2lmICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfaW5p
dF9od2lmKGh3LCBkYXRhX3BvcnQsIGN0cmxfcG9ydCwgaXJxKTsKfQoKc3RhdGljIF9faW5saW5l
X18gdm9pZCBpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKHZvaWQpCnsKCiAgICAgICAgaHdfcmVnc190
IGh3OwogICAgICAgIGludCBpbmRleDsKICAgICAgICBpZGVfaW9yZWdfdCBiYXNlOwoKICAgICAg
ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0OyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICBi
YXNlID0gaWRlX2RlZmF1bHRfaW9fYmFzZShpbmRleCk7CiAgICAgICAgICAgICAgICBpZiAoYmFz
ZSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
IGlkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBiYXNlLCAwLCAoKHZvaWQgKikwKSk7CiAgICAgICAg
ICAgICAgICBody5pcnEgPSBpZGVfZGVmYXVsdF9pcnEoYmFzZSk7CiAgICAgICAgICAgICAgICBp
ZGVfcmVnaXN0ZXJfaHcoJmh3LCAoKHZvaWQgKikwKSk7CiAgICAgICAgfQoKfQoKc3RhdGljIF9f
aW5saW5lX18gaW50IGlkZV9jaGVja19yZWdpb24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVk
IGludCBleHRlbnQpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfY2hlY2tfcmVnaW9uKQog
ICAgICAgICAgICAgICAgcmV0dXJuIHBwY19pZGVfbWQuaWRlX2NoZWNrX3JlZ2lvbihmcm9tLCBl
eHRlbnQpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9y
ZXF1ZXN0X3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCwgY29u
c3QgY2hhciAqbmFtZSkKewogICAgICAgIGlmICggcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdp
b24gKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdpb24oZnJvbSwg
ZXh0ZW50LCBuYW1lKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVsZWFzZV9yZWdp
b24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVkIGludCBleHRlbnQpCnsKICAgICAgICBpZiAo
IHBwY19pZGVfbWQuaWRlX3JlbGVhc2VfcmVnaW9uICkKICAgICAgICAgICAgICAgIHBwY19pZGVf
bWQuaWRlX3JlbGVhc2VfcmVnaW9uKGZyb20sIGV4dGVudCk7Cn0KCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgaWRlX2ZpeF9kcml2ZWlkIChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpCnsKICAgICAgICBp
ZiAoIHBwY19pZGVfbWQuZml4X2RyaXZlaWQgKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5m
aXhfZHJpdmVpZChpZCk7Cn0KCnR5cGVkZWYgdW5pb24gewogICAgICAgIHVuc2lnbmVkIGFsbCA6
IDg7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdDcgOiAxOwog
ICAgICAgICAgICAgICAgdW5zaWduZWQgbGJhIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGJpdDUgOiAxOwogICAgICAgICAgICAgICAgdW5zaWduZWQgdW5pdCA6IDE7CiAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBoZWFkIDogNDsKICAgICAgICB9IGI7Cn0gc2VsZWN0X3Q7CiMgMjU2ICIv
b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl
L2xpbnV4L2lkZS5oIiAyIDMKIyAyNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiB1bmlvbiB7
CiAgICAgICAgdW5zaWduZWQgYWxsIDogODsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgc2V0X2dlb21ldHJ5IDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJl
Y2FsaWJyYXRlIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNldF9tdWx0bW9kZSA6IDE7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXRfdHVuZSA6IDE7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCByZXNlcnZlZCA6IDQ7CiAgICAgICAgfSBiOwp9IHNwZWNpYWxfdDsKCnR5cGVkZWYg
c3RydWN0IGlkZV9kcml2ZV9zIHsKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcXVldWU7CiAgICAg
ICAgc3RydWN0IGlkZV9kcml2ZV9zICpuZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXA7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJ2aWNlX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2VydmljZV90aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICAgICBz
cGVjaWFsX3Qgc3BlY2lhbDsKICAgICAgICBieXRlIGtlZXBfc2V0dGluZ3M7CiAgICAgICAgYnl0
ZSB1c2luZ19kbWE7CiAgICAgICAgYnl0ZSB3YWl0aW5nX2Zvcl9kbWE7CiAgICAgICAgYnl0ZSB1
bm1hc2s7CiAgICAgICAgYnl0ZSBzbG93OwogICAgICAgIGJ5dGUgYnN3YXA7CiAgICAgICAgYnl0
ZSBkc2Nfb3ZlcmxhcDsKICAgICAgICBieXRlIG5pY2UxOwogICAgICAgIHVuc2lnbmVkIHByZXNl
bnQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGJ1
c3kgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlbW92YWJsZSA6IDE7CiAgICAgICAgdW5zaWduZWQg
Zm9yY2VkX2dlb20gOiAxOwogICAgICAgIHVuc2lnbmVkIG5vX3VubWFzayA6IDE7CiAgICAgICAg
dW5zaWduZWQgbm9faW9fMzJiaXQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vYmlvcyA6IDE7CiAg
ICAgICAgdW5zaWduZWQgcmV2YWxpZGF0ZSA6IDE7CiAgICAgICAgdW5zaWduZWQgYXRhcGlfb3Zl
cmxhcCA6IDE7CiAgICAgICAgdW5zaWduZWQgbmljZTAgOiAxOwogICAgICAgIHVuc2lnbmVkIG5p
Y2UyIDogMTsKICAgICAgICB1bnNpZ25lZCBkb29ybG9ja2luZyA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgYXV0b3R1bmUgOiAyOwogICAgICAgIHVuc2lnbmVkIHJlbWFwXzBfdG9fMSA6IDI7CiAgICAg
ICAgdW5zaWduZWQgYXRhX2ZsYXNoIDogMTsKICAgICAgICBieXRlIHNjc2k7CiAgICAgICAgYnl0
ZSBtZWRpYTsKICAgICAgICBzZWxlY3RfdCBzZWxlY3Q7CiAgICAgICAgYnl0ZSBjdGw7CiAgICAg
ICAgYnl0ZSByZWFkeV9zdGF0OwogICAgICAgIGJ5dGUgbXVsdF9jb3VudDsKICAgICAgICBieXRl
IG11bHRfcmVxOwogICAgICAgIGJ5dGUgdHVuZV9yZXE7CiAgICAgICAgYnl0ZSBpb18zMmJpdDsK
ICAgICAgICBieXRlIGJhZF93c3RhdDsKICAgICAgICBieXRlIG5vd2VycjsKICAgICAgICBieXRl
IHNlY3QwOwogICAgICAgIGJ5dGUgdXNhZ2U7CiAgICAgICAgYnl0ZSBoZWFkOwogICAgICAgIGJ5
dGUgc2VjdDsKICAgICAgICBieXRlIGJpb3NfaGVhZDsKICAgICAgICBieXRlIGJpb3Nfc2VjdDsK
ICAgICAgICB1bnNpZ25lZCBpbnQgYmlvc19jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IGN5bDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGNhcGFjaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBkcml2
ZV9kYXRhOwogICAgICAgIHZvaWQgKmh3aWY7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3F1
ZXVlOwogICAgICAgIHN0cnVjdCBoZF9kcml2ZWlkICppZDsKICAgICAgICBzdHJ1Y3QgaGRfc3Ry
dWN0ICpwYXJ0OwogICAgICAgIGNoYXIgbmFtZVs0XTsKICAgICAgICB2b2lkICpkcml2ZXI7CiAg
ICAgICAgdm9pZCAqZHJpdmVyX2RhdGE7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7CiAgICAg
ICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAgICAgIHZvaWQgKnNldHRpbmdzOwog
ICAgICAgIGNoYXIgZHJpdmVyX3JlcVsxMF07CiAgICAgICAgaW50IGxhc3RfbHVuOwogICAgICAg
IGludCBmb3JjZWRfbHVuOwogICAgICAgIGludCBsdW47CiAgICAgICAgaW50IGNyY19jb3VudDsK
ICAgICAgICBieXRlIHF1aXJrX2xpc3Q7CiAgICAgICAgYnl0ZSBzdXNwZW5kX3Jlc2V0OwogICAg
ICAgIGJ5dGUgaW5pdF9zcGVlZDsKICAgICAgICBieXRlIGN1cnJlbnRfc3BlZWQ7CiAgICAgICAg
Ynl0ZSBkbjsKfSBpZGVfZHJpdmVfdDsKIyAzNjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251
L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiBl
bnVtIHsgaWRlX2RtYV9yZWFkLCBpZGVfZG1hX3dyaXRlLCBpZGVfZG1hX2JlZ2luLAogICAgICAg
ICAgICAgICAgaWRlX2RtYV9lbmQsIGlkZV9kbWFfY2hlY2ssIGlkZV9kbWFfb24sCiAgICAgICAg
ICAgICAgICBpZGVfZG1hX29mZiwgaWRlX2RtYV9vZmZfcXVpZXRseSwgaWRlX2RtYV90ZXN0X2ly
cSwKICAgICAgICAgICAgICAgIGlkZV9kbWFfYmFkX2RyaXZlLCBpZGVfZG1hX2dvb2RfZHJpdmUs
CiAgICAgICAgICAgICAgICBpZGVfZG1hX3ZlcmJvc2UsIGlkZV9kbWFfcmV0dW5lLAogICAgICAg
ICAgICAgICAgaWRlX2RtYV9sb3N0aXJxLCBpZGVfZG1hX3RpbWVvdXQKfSBpZGVfZG1hX2FjdGlv
bl90OwoKdHlwZWRlZiBpbnQgKGlkZV9kbWFwcm9jX3QpKGlkZV9kbWFfYWN0aW9uX3QsIGlkZV9k
cml2ZV90ICopOwojIDM4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw
Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIHZvaWQgKGlkZV90dW5l
cHJvY190KSAoaWRlX2RyaXZlX3QgKiwgYnl0ZSk7CnR5cGVkZWYgaW50IChpZGVfc3BlZWRwcm9j
X3QpIChpZGVfZHJpdmVfdCAqLCBieXRlKTsKCgoKCnR5cGVkZWYgdm9pZCAoaWRlX3NlbGVjdHBy
b2NfdCkgKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZvaWQgKGlkZV9yZXNldHByb2NfdCkgKGlk
ZV9kcml2ZV90ICopOwp0eXBlZGVmIGludCAoaWRlX3F1aXJrcHJvY190KSAoaWRlX2RyaXZlX3Qg
Kik7CnR5cGVkZWYgdm9pZCAoaWRlX2ludHJwcm9jX3QpIChpZGVfZHJpdmVfdCAqKTsKdHlwZWRl
ZiB2b2lkIChpZGVfbWFza3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGludCk7CnR5cGVkZWYgdm9p
ZCAoaWRlX3J3X3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGlkZV9kbWFfYWN0aW9uX3QpOwoKCgoK
CnR5cGVkZWYgZW51bSB7IGlkZV91bmtub3duLCBpZGVfZ2VuZXJpYywgaWRlX3BjaSwKICAgICAg
ICAgICAgICAgIGlkZV9jbWQ2NDAsIGlkZV9kdGMyMjc4LCBpZGVfYWxpMTR4eCwKICAgICAgICAg
ICAgICAgIGlkZV9xZDY1ODAsIGlkZV91bWM4NjcyLCBpZGVfaHQ2NTYwYiwKICAgICAgICAgICAg
ICAgIGlkZV9wZGM0MDMwLCBpZGVfcnoxMDAwLCBpZGVfdHJtMjkwLAogICAgICAgICAgICAgICAg
aWRlX2NtZDY0NiwgaWRlX2N5ODJjNjkzLCBpZGVfNGRyaXZlcywKICAgICAgICAgICAgICAgIGlk
ZV9wbWFjCn0gaHdpZl9jaGlwc2V0X3Q7CiMgNDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu
dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYg
c3RydWN0IGh3aWZfcyB7CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbmV4dDsKICAgICAgICB2b2lk
ICpod2dyb3VwOwogICAgICAgIGlkZV9pb3JlZ190IGlvX3BvcnRzWygxMCldOwogICAgICAgIGh3
X3JlZ3NfdCBodzsKICAgICAgICBpZGVfZHJpdmVfdCBkcml2ZXNbMl07CiAgICAgICAgc3RydWN0
IGdlbmRpc2sgKmdkOwogICAgICAgIGlkZV90dW5lcHJvY190ICp0dW5lcHJvYzsKICAgICAgICBp
ZGVfc3BlZWRwcm9jX3QgKnNwZWVkcHJvYzsKICAgICAgICBpZGVfc2VsZWN0cHJvY190ICpzZWxl
Y3Rwcm9jOwogICAgICAgIGlkZV9yZXNldHByb2NfdCAqcmVzZXRwcm9jOwogICAgICAgIGlkZV9p
bnRycHJvY190ICppbnRycHJvYzsKICAgICAgICBpZGVfbWFza3Byb2NfdCAqbWFza3Byb2M7CiAg
ICAgICAgaWRlX3F1aXJrcHJvY190ICpxdWlya3Byb2M7CiAgICAgICAgaWRlX3J3X3Byb2NfdCAq
cndwcm9jOwogICAgICAgIGlkZV9kbWFwcm9jX3QgKmRtYXByb2M7CiAgICAgICAgdW5zaWduZWQg
aW50ICpkbWF0YWJsZV9jcHU7CiAgICAgICAgZG1hX2FkZHJfdCBkbWF0YWJsZV9kbWE7CiAgICAg
ICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ190YWJsZTsKICAgICAgICBpbnQgc2dfbmVudHM7CiAg
ICAgICAgaW50IHNnX2RtYV9kaXJlY3Rpb247CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbWF0ZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGRtYV9iYXNlOwogICAgICAgIHVuc2lnbmVkIGRtYV9leHRy
YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNvbmZpZ19kYXRhOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc2VsZWN0X2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAg
ICAgIGludCBpcnE7CiAgICAgICAgYnl0ZSBtYWpvcjsKICAgICAgICBjaGFyIG5hbWVbNl07CiAg
ICAgICAgYnl0ZSBpbmRleDsKICAgICAgICBod2lmX2NoaXBzZXRfdCBjaGlwc2V0OwogICAgICAg
IHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIHByZXNlbnQgOiAxOwogICAg
ICAgIHVuc2lnbmVkIHNlcmlhbGl6ZWQgOiAxOwogICAgICAgIHVuc2lnbmVkIHNoYXJpbmdfaXJx
OiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2V0IDogMTsKICAgICAgICB1bnNpZ25lZCBhdXRvZG1h
IDogMTsKICAgICAgICB1bnNpZ25lZCB1ZG1hX2ZvdXIgOiAxOwogICAgICAgIGJ5dGUgY2hhbm5l
bDsKCgoKCgoKCiAgICAgICAgYnl0ZSBzdHJhaWdodDg7CiAgICAgICAgdm9pZCAqaHdpZl9kYXRh
Owp9IGlkZV9od2lmX3Q7CgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBpZGVfc3RvcHBlZCwK
ICAgICAgICBpZGVfc3RhcnRlZAp9IGlkZV9zdGFydHN0b3BfdDsKCgoKCnR5cGVkZWYgaWRlX3N0
YXJ0c3RvcF90IChpZGVfaGFuZGxlcl90KShpZGVfZHJpdmVfdCAqKTsKCgoKCgp0eXBlZGVmIGlu
dCAoaWRlX2V4cGlyeV90KShpZGVfZHJpdmVfdCAqKTsKCnR5cGVkZWYgc3RydWN0IGh3Z3JvdXBf
cyB7CiAgICAgICAgaWRlX2hhbmRsZXJfdCAqaGFuZGxlcjsKICAgICAgICB2b2xhdGlsZSBpbnQg
YnVzeTsKICAgICAgICBpbnQgc2xlZXBpbmc7CiAgICAgICAgaWRlX2RyaXZlX3QgKmRyaXZlOwog
ICAgICAgIGlkZV9od2lmX3QgKmh3aWY7CiAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJxOwogICAg
ICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogICAgICAgIHN0cnVjdCByZXF1ZXN0IHdycTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGxfdGltZW91dDsKICAgICAgICBpZGVfZXhwaXJ5X3Qg
KmV4cGlyeTsKfSBpZGVfaHdncm91cF90OwojIDUxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm
IGludCAoaWRlX3Byb2NzZXRfdCkoaWRlX2RyaXZlX3QgKiwgaW50KTsKdHlwZWRlZiBzdHJ1Y3Qg
aWRlX3NldHRpbmdzX3MgewogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IHJ3OwogICAg
ICAgIGludCByZWFkX2lvY3RsOwogICAgICAgIGludCB3cml0ZV9pb2N0bDsKICAgICAgICBpbnQg
ZGF0YV90eXBlOwogICAgICAgIGludCBtaW47CiAgICAgICAgaW50IG1heDsKICAgICAgICBpbnQg
bXVsX2ZhY3RvcjsKICAgICAgICBpbnQgZGl2X2ZhY3RvcjsKICAgICAgICB2b2lkICpkYXRhOwog
ICAgICAgIGlkZV9wcm9jc2V0X3QgKnNldDsKICAgICAgICBpbnQgYXV0b19yZW1vdmU7CiAgICAg
ICAgc3RydWN0IGlkZV9zZXR0aW5nc19zICpuZXh0Owp9IGlkZV9zZXR0aW5nc190OwoKdm9pZCBp
ZGVfYWRkX3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
cncsIGludCByZWFkX2lvY3RsLCBpbnQgd3JpdGVfaW9jdGwsIGludCBkYXRhX3R5cGUsIGludCBt
aW4sIGludCBtYXgsIGludCBtdWxfZmFjdG9yLCBpbnQgZGl2X2ZhY3Rvciwgdm9pZCAqZGF0YSwg
aWRlX3Byb2NzZXRfdCAqc2V0KTsKdm9pZCBpZGVfcmVtb3ZlX3NldHRpbmcoaWRlX2RyaXZlX3Qg
KmRyaXZlLCBjaGFyICpuYW1lKTsKaWRlX3NldHRpbmdzX3QgKmlkZV9maW5kX3NldHRpbmdfYnlf
bmFtZShpZGVfZHJpdmVfdCAqZHJpdmUsIGNoYXIgKm5hbWUpOwppbnQgaWRlX3JlYWRfc2V0dGlu
ZyhpZGVfZHJpdmVfdCAqdCwgaWRlX3NldHRpbmdzX3QgKnNldHRpbmcpOwppbnQgaWRlX3dyaXRl
X3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfc2V0dGluZ3NfdCAqc2V0dGluZywgaW50
IHZhbCk7CnZvaWQgaWRlX2FkZF9nZW5lcmljX3NldHRpbmdzKGlkZV9kcml2ZV90ICpkcml2ZSk7
CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBt
b2RlX3QgbW9kZTsKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jOwogICAgICAgIHdyaXRl
X3Byb2NfdCAqd3JpdGVfcHJvYzsKfSBpZGVfcHJvY19lbnRyeV90OwoKCnZvaWQgcHJvY19pZGVf
Y3JlYXRlKHZvaWQpOwp2b2lkIHByb2NfaWRlX2Rlc3Ryb3kodm9pZCk7CnZvaWQgZGVzdHJveV9w
cm9jX2lkZV9kcml2ZXMoaWRlX2h3aWZfdCAqKTsKdm9pZCBjcmVhdGVfcHJvY19pZGVfaW50ZXJm
YWNlcyh2b2lkKTsKdm9pZCBpZGVfYWRkX3Byb2NfZW50cmllcyhzdHJ1Y3QgcHJvY19kaXJfZW50
cnkgKmRpciwgaWRlX3Byb2NfZW50cnlfdCAqcCwgdm9pZCAqZGF0YSk7CnZvaWQgaWRlX3JlbW92
ZV9wcm9jX2VudHJpZXMoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkaXIsIGlkZV9wcm9jX2VudHJ5
X3QgKnApOwpyZWFkX3Byb2NfdCBwcm9jX2lkZV9yZWFkX2NhcGFjaXR5OwpyZWFkX3Byb2NfdCBw
cm9jX2lkZV9yZWFkX2dlb21ldHJ5OwojIDU4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv
bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIGlu
dCAoaWRlX2NsZWFudXBfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgaWRlX3N0YXJ0c3Rv
cF90IChpZGVfZG9fcmVxdWVzdF9wcm9jKShpZGVfZHJpdmVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAq
LCB1bnNpZ25lZCBsb25nKTsKdHlwZWRlZiB2b2lkIChpZGVfZW5kX3JlcXVlc3RfcHJvYykoYnl0
ZSwgaWRlX2h3Z3JvdXBfdCAqKTsKdHlwZWRlZiBpbnQgKGlkZV9pb2N0bF9wcm9jKShpZGVfZHJp
dmVfdCAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNp
Z25lZCBsb25nKTsKdHlwZWRlZiBpbnQgKGlkZV9vcGVuX3Byb2MpKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZmlsZSAqLCBpZGVfZHJpdmVfdCAqKTsKdHlwZWRlZiB2b2lkIChpZGVfcmVsZWFzZV9w
cm9jKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgaWRlX2RyaXZlX3QgKik7CnR5cGVk
ZWYgaW50IChpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBl
ZGVmIHZvaWQgKGlkZV9yZXZhbGlkYXRlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZv
aWQgKGlkZV9wcmVfcmVzZXRfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyAoaWRlX2NhcGFjaXR5X3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIGlkZV9zdGFy
dHN0b3BfdCAoaWRlX3NwZWNpYWxfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdm9pZCAo
aWRlX3NldHRpbmdfcHJvYykoaWRlX2RyaXZlX3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBpZGVfZHJp
dmVyX3MgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgY29uc3QgY2hhciAqdmVy
c2lvbjsKICAgICAgICBieXRlIG1lZGlhOwogICAgICAgIHVuc2lnbmVkIGJ1c3kgOiAxOwogICAg
ICAgIHVuc2lnbmVkIHN1cHBvcnRzX2RtYSA6IDE7CiAgICAgICAgdW5zaWduZWQgc3VwcG9ydHNf
ZHNjX292ZXJsYXAgOiAxOwogICAgICAgIGlkZV9jbGVhbnVwX3Byb2MgKmNsZWFudXA7CiAgICAg
ICAgaWRlX2RvX3JlcXVlc3RfcHJvYyAqZG9fcmVxdWVzdDsKICAgICAgICBpZGVfZW5kX3JlcXVl
c3RfcHJvYyAqZW5kX3JlcXVlc3Q7CiAgICAgICAgaWRlX2lvY3RsX3Byb2MgKmlvY3RsOwogICAg
ICAgIGlkZV9vcGVuX3Byb2MgKm9wZW47CiAgICAgICAgaWRlX3JlbGVhc2VfcHJvYyAqcmVsZWFz
ZTsKICAgICAgICBpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MgKm1lZGlhX2NoYW5nZTsKICAg
ICAgICBpZGVfcmV2YWxpZGF0ZV9wcm9jICpyZXZhbGlkYXRlOwogICAgICAgIGlkZV9wcmVfcmVz
ZXRfcHJvYyAqcHJlX3Jlc2V0OwogICAgICAgIGlkZV9jYXBhY2l0eV9wcm9jICpjYXBhY2l0eTsK
ICAgICAgICBpZGVfc3BlY2lhbF9wcm9jICpzcGVjaWFsOwogICAgICAgIGlkZV9wcm9jX2VudHJ5
X3QgKnByb2M7Cn0gaWRlX2RyaXZlcl90OwojIDYyOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm
IGludCAoaWRlX21vZHVsZV9pbml0X3Byb2MpKHZvaWQpOwoKdHlwZWRlZiBzdHJ1Y3QgaWRlX21v
ZHVsZV9zIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpZGVfbW9kdWxlX2luaXRfcHJvYyAq
aW5pdDsKICAgICAgICB2b2lkICppbmZvOwogICAgICAgIHN0cnVjdCBpZGVfbW9kdWxlX3MgKm5l
eHQ7Cn0gaWRlX21vZHVsZV90OwojIDY0NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j
YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwpleHRlcm4gaWRlX2h3
aWZfdCBpZGVfaHdpZnNbXTsKZXh0ZXJuIGlkZV9tb2R1bGVfdCAqaWRlX21vZHVsZXM7CmV4dGVy
biBpZGVfbW9kdWxlX3QgKmlkZV9wcm9iZTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1s
aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMSAz
CgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvbG9ja3MuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYt
cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1h
cC5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s
aW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj
LWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2Fz
bS9zeXN0ZW0uaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv
d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyAxICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9w
Z3RhYmxlLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl
cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaCIgMiAzCiMgMSAiL29wdC9mc3Av
aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o
aWdobWVtLmgiIDEgMwoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w
b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDEgMwoKCgoKCgojIDEgIi9v
cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv
YXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyA4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh
bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIgMwojIDI2ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2Fz
bS9wZ2FsbG9jLmgiIDMKZXh0ZXJuIHN0cnVjdCBwZ3RhYmxlX2NhY2hlX3N0cnVjdCB7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyAqcGdkX2NhY2hlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0ZV9j
YWNoZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVfY2FjaGVfc3o7Cn0gcXVpY2tsaXN0
czsKCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nICp6ZXJvX2NhY2hlOwpleHRlcm4gYXRvbWlj
X3QgemVyb19zejsKZXh0ZXJuIGF0b21pY190IHplcm9wYWdlX2hpdHM7CmV4dGVybiBhdG9taWNf
dCB6ZXJvcGFnZV9jYWxsczsKZXh0ZXJuIGF0b21pY190IHplcm90b3RhbDsKIyA1MSAiL29wdC9m
c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v
cGdhbGxvYy5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2VfZmFzdCh2b2lk
KTsKCmV4dGVybiB2b2lkIF9fYmFkX3B0ZShwbWRfdCAqcG1kKTsKCgpleHRlcm4gX19pbmxpbmVf
XyBwbWRfdCAqZ2V0X3BtZF9mYXN0KHZvaWQpCnsKICAgICAgICByZXR1cm4gKHBtZF90ICopMDsK
fQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9mYXN0KHBtZF90ICpwbWQpCnsKfQoK
ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9zbG93KHBtZF90ICpwbWQpCnsKfQoKCgoK
CmV4dGVybiBpbmxpbmUgdm9pZCBwbWRfZnJlZShwbWRfdCAqIHBtZCkKewp9CgpleHRlcm4gaW5s
aW5lIHBtZF90ICogcG1kX2FsbG9jKHBnZF90ICogcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp
CnsKICAgICAgICByZXR1cm4gKHBtZF90ICopIHBnZDsKfQoKCgoKCmV4dGVybiBfX2lubGluZV9f
IHBnZF90ICpnZXRfcGdkX3Nsb3codm9pZCkKewogICAgICAgIHBnZF90ICpyZXQsICppbml0OwoK
ICAgICAgICBpZiAoIChyZXQgPSAocGdkX3QgKilfX2dldF9mcmVlX3BhZ2VzKCgoMHgwMiB8IDB4
MDEgfCAweDA0KSksMCkpICE9ICgodm9pZCAqKTApICkKICAgICAgICAgICAgICAgIG1lbXNldCAo
cmV0LCAwLCAoKDB4ODAwMDAwMDBVTCkgLyAoMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKTsK
ICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICAgICAgICBpbml0ID0gKCgmaW5pdF9tbSktPnBn
ZCArICgoMCkgPj4gMjIpKTsKICAgICAgICAgICAgICAgIG1lbWNweSAocmV0ICsgKCgweDgwMDAw
MDAwVUwpIC8gKDFVTCA8PCAyMikpLCBpbml0ICsgKCgweDgwMDAwMDAwVUwpIC8gKDFVTCA8PCAy
MikpLAogICAgICAgICAgICAgICAgICAgICAgICAoMTAyNCAtICgoMHg4MDAwMDAwMFVMKSAvICgx
VUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJl
dDsKfQoKZXh0ZXJuIF9faW5saW5lX18gcGdkX3QgKmdldF9wZ2RfZmFzdCh2b2lkKQp7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyAqcmV0OwoKICAgICAgICBpZiAoKHJldCA9IChxdWlja2xpc3RzLnBn
ZF9jYWNoZSkpICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAocXVpY2tsaXN0cy5w
Z2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRb
MF0gPSAwOwogICAgICAgICAgICAgICAgKHF1aWNrbGlzdHMucGd0YWJsZV9jYWNoZV9zeiktLTsK
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHJldCA9ICh1bnNpZ25lZCBsb25nICopZ2V0
X3BnZF9zbG93KCk7CiAgICAgICAgcmV0dXJuIChwZ2RfdCAqKXJldDsKfQoKZXh0ZXJuIF9faW5s
aW5lX18gdm9pZCBmcmVlX3BnZF9mYXN0KHBnZF90ICpwZ2QpCnsKICAgICAgICAqKHVuc2lnbmVk
IGxvbmcgKiopcGdkID0gKHF1aWNrbGlzdHMucGdkX2NhY2hlKTsKICAgICAgICAocXVpY2tsaXN0
cy5wZ2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikgcGdkOwogICAgICAgIChxdWlja2xpc3Rz
LnBndGFibGVfY2FjaGVfc3opKys7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wZ2Rf
c2xvdyhwZ2RfdCAqcGdkKQp7CiAgICAgICAgZnJlZV9wYWdlcygoKHVuc2lnbmVkIGxvbmcpcGdk
KSwwKTsKfQoKZXh0ZXJuIHB0ZV90ICpnZXRfcHRlX3Nsb3cocG1kX3QgKnBtZCwgdW5zaWduZWQg
bG9uZyBhZGRyZXNzX3ByZWFkanVzdGVkKTsKCmV4dGVybiBfX2lubGluZV9fIHB0ZV90ICpnZXRf
cHRlX2Zhc3Qodm9pZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYg
KChyZXQgPSAocXVpY2tsaXN0cy5wdGVfY2FjaGUpKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAg
ICAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQp
OwogICAgICAgICAgICAgICAgcmV0WzBdID0gMDsKICAgICAgICAgICAgICAgIChxdWlja2xpc3Rz
LnBndGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfQogICAgICAgIHJldHVybiAocHRlX3QgKily
ZXQ7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wdGVfZmFzdChwdGVfdCAqcHRlKQp7
CiAgICAgICAgKih1bnNpZ25lZCBsb25nICoqKXB0ZSA9IChxdWlja2xpc3RzLnB0ZV9jYWNoZSk7
CiAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopIHB0ZTsK
ICAgICAgICAocXVpY2tsaXN0cy5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpleHRlcm4gX19pbmxp
bmVfXyB2b2lkIGZyZWVfcHRlX3Nsb3cocHRlX3QgKnB0ZSkKewogICAgICAgIGZyZWVfcGFnZXMo
KCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KCgoKCgoKZXh0ZXJuIGlubGluZSBwdGVfdCAqIHB0
ZV9hbGxvYyhwbWRfdCAqIHBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgYWRk
cmVzcyA9IChhZGRyZXNzID4+IDEyKSAmICgxMDI0IC0gMSk7CiAgICAgICAgaWYgKCghKCgqcG1k
KS5wbWQpKSkgewogICAgICAgICAgICAgICAgcHRlX3QgKiBwYWdlID0gKHB0ZV90ICopIGdldF9w
dGVfZmFzdCgpOwoKICAgICAgICAgICAgICAgIGlmICghcGFnZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdldF9wdGVfc2xvdyhwbWQsIGFkZHJlc3MpOwogICAgICAgICAgICAgICAg
KCgqcG1kKS5wbWQpID0gKHVuc2lnbmVkIGxvbmcpIHBhZ2U7CiAgICAgICAgICAgICAgICByZXR1
cm4gcGFnZSArIGFkZHJlc3M7CiAgICAgICAgfQogICAgICAgIGlmICgoKCgoKnBtZCkucG1kKSAm
IH4ofigoMVVMIDw8IDEyKS0xKSkpICE9IDApKSB7CiAgICAgICAgICAgICAgICBfX2JhZF9wdGUo
cG1kKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIChwdGVfdCAqKSAoKCgqcG1kKS5wbWQpKSArIGFkZHJlc3M7Cn0KCmV4dGVybiBp
bnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwgaW50KTsKIyA2ICIvb3B0L2ZzcC9pNTg2LXBjLWxp
bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIg
MiAzCiMgMzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50
IG5yX2ZyZWVfaGlnaHBhZ2VzKHZvaWQpIHsgcmV0dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9p
ZCAqa21hcChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlKS0+dmlydHVhbCk7IH0K
IyA0NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt
aW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3VzZXJf
aGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdmFkZHIpCnsKICAgICAg
ICBjbGVhcl9wYWdlKGttYXAocGFnZSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0
YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogICAg
ICAgIGNsZWFyX3BhZ2Uoa21hcChwYWdlKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1
bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmth
ZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAg
ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4
Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdo
bWVtLmgiLCA2Myk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9m
ZnNldCwgMCwgc2l6ZSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlu
bGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlX2ZsdXNoKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNp
Z25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRy
OwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAg
ICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1w
Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdobWVt
LmgiLCA3Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9mZnNl
dCwgMCwgc2l6ZSk7CiAgICAgICAgZmx1c2hfcGFnZV90b19yYW0ocGFnZSk7CiAgICAgICAgZG8g
eyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfdXNlcl9oaWdocGFnZShz
dHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7
CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsK
ICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2ZnJvbSk7CiAg
ICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgY29weV9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdl
ICpmcm9tKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21h
cChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2
ZnJvbSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDAp
Owp9CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv
c3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1s
aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgi
IDMKZXh0ZXJuIHVuc2lnbmVkIGludCBwYWdlX2hhc2hfYml0czsKCgoKZXh0ZXJuIGF0b21pY190
IHBhZ2VfY2FjaGVfc2l6ZTsKZXh0ZXJuIHN0cnVjdCBwYWdlICoqcGFnZV9oYXNoX3RhYmxlOwoK
ZXh0ZXJuIHZvaWQgcGFnZV9jYWNoZV9pbml0KHVuc2lnbmVkIGxvbmcpOwojIDU5ICIvb3B0L2Zz
cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4
L3BhZ2VtYXAuaCIgMwpleHRlcm4gaW5saW5lIHVuc2lnbmVkIGxvbmcgX3BhZ2VfaGFzaGZuKHN0
cnVjdCBhZGRyZXNzX3NwYWNlICogbWFwcGluZywgdW5zaWduZWQgbG9uZyBpbmRleCkKewoKCiAg
ICAgICAgcmV0dXJuICgoKCgodW5zaWduZWQgbG9uZykgbWFwcGluZykvKHNpemVvZihzdHJ1Y3Qg
aW5vZGUpICYgfiAoc2l6ZW9mKHN0cnVjdCBpbm9kZSkgLSAxKSkpK2luZGV4KSsoKCgoKHVuc2ln
bmVkIGxvbmcpIG1hcHBpbmcpLyhzaXplb2Yoc3RydWN0IGlub2RlKSAmIH4gKHNpemVvZihzdHJ1
Y3QgaW5vZGUpIC0gMSkpKStpbmRleCk+PihwYWdlX2hhc2hfYml0cykpKSAmICgoMSA8PCAocGFn
ZV9oYXNoX2JpdHMpKS0xKTsKCgp9CgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fZmluZF9nZXRf
cGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzdHJ1Y3QgcGFnZSAqKmhhc2gp
OwpleHRlcm4gc3RydWN0IHBhZ2UgKiBfX2ZpbmRfbG9ja19wYWdlIChzdHJ1Y3QgYWRkcmVzc19z
cGFjZSAqIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBpbmRleCwgc3RydWN0IHBhZ2UgKipoYXNoKTsKZXh0ZXJuIHZvaWQgbG9ja19wYWdlKHN0
cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHZvaWQgX19hZGRfcGFnZV90b19oYXNoX3F1ZXVl
KHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IHBhZ2UgKipwKTsKCmV4dGVybiB2b2lkIGFkZF90
b19wYWdlX2NhY2hlKHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h
cHBpbmcsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpleHRlcm4gdm9pZCBhZGRfdG9fcGFnZV9jYWNo
ZV9sb2NrZWQoc3RydWN0IHBhZ2UgKiBwYWdlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGlu
ZywgdW5zaWduZWQgbG9uZyBpbmRleCk7CgpleHRlcm4gdm9pZCBfX193YWl0X29uX3BhZ2Uoc3Ry
dWN0IHBhZ2UgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9vbl9wYWdlKHN0cnVjdCBwYWdl
ICogcGFnZSkKewogICAgICAgIGlmICh0ZXN0X2JpdCgwLCAmKHBhZ2UpLT5mbGFncykpCiAgICAg
ICAgICAgICAgICBfX193YWl0X29uX3BhZ2UocGFnZSk7Cn0KCmV4dGVybiBzdHJ1Y3QgcGFnZSAq
IGdyYWJfY2FjaGVfcGFnZSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgdW5zaWduZWQgbG9uZyk7
Cgp0eXBlZGVmIGludCBmaWxsZXJfdCh2b2lkICosIHN0cnVjdCBwYWdlKik7CgpleHRlcm4gc3Ry
dWN0IHBhZ2UgKnJlYWRfY2FjaGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCB1bnNpZ25l
ZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxlcl90ICosIHZvaWQg
Kik7CiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z
eXMtaW5jbHVkZS9saW51eC9sb2Nrcy5oIiAyIDMKCgoKCgoKZXh0ZXJuIHZvaWQgX193YWl0X29u
X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9v
bl9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9iaXQo
MiwgJmJoLT5iX3N0YXRlKSkKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9idWZmZXIoYmgpOwp9
CgpleHRlcm4gaW5saW5lIHZvaWQgbG9ja19idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgp
CnsKICAgICAgICB3aGlsZSAodGVzdF9hbmRfc2V0X2JpdCgyLCAmYmgtPmJfc3RhdGUpKQogICAg
ICAgICAgICAgICAgX193YWl0X29uX2J1ZmZlcihiaCk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCB1
bmxvY2tfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBjbGVhcl9iaXQo
MiwgJmJoLT5iX3N0YXRlKTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l
bW9yeSIpOwogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZiaC0+Yl93YWl0KSkKICAgICAg
ICAgICAgICAgIF9fd2FrZV91cCgoJmJoLT5iX3dhaXQpLDIgfCAxLCAxKTsKfQoKCgoKCgpleHRl
cm4gdm9pZCBfX3dhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGlu
bGluZSB2b2lkIHdhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpCnsKICAgICAg
ICBpZiAoc2ItPnNfbG9jaykKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9zdXBlcihzYik7Cn0K
CmV4dGVybiBpbmxpbmUgdm9pZCBsb2NrX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7
CiAgICAgICAgaWYgKHNiLT5zX2xvY2spCiAgICAgICAgICAgICAgICBfX3dhaXRfb25fc3VwZXIo
c2IpOwogICAgICAgIHNiLT5zX2xvY2sgPSAxOwp9CgpleHRlcm4gaW5saW5lIHZvaWQgdW5sb2Nr
X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7CiAgICAgICAgc2ItPnNfbG9jayA9IDA7
CgoKCgogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZzYi0+c193YWl0KSkKICAgICAgICAg
ICAgICAgIF9fd2FrZV91cCgoJnNiLT5zX3dhaXQpLDIgfCAxLCAxKTsKfQojIDYgIi9vcHQvZnNw
L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv
YmxrLmgiIDIgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj
LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsay5oIiAzCmV4dGVybiBzcGlubG9ja190IGlvX3Jl
cXVlc3RfbG9jazsKCgoKCmV4dGVybiBpbnQgaXNwMTZfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBj
ZHUzMWFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhY3NpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
bWNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWNkeF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNi
cGNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYXp0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBz
b255NTM1X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZ3NjZF9pbml0KHZvaWQpOwpleHRlcm4gaW50
IGNtMjA2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgb3B0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBzamNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
aGRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBpZGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB4ZF9p
bml0KHZvaWQpOwpleHRlcm4gaW50IG1mbV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGxvb3BfaW5p
dCh2b2lkKTsKZXh0ZXJuIGludCBtZF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGFwX2luaXQodm9p
ZCk7CmV4dGVybiBpbnQgZGR2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgejJfaW5pdCh2b2lkKTsK
ZXh0ZXJuIGludCBzd2ltM19pbml0KHZvaWQpOwpleHRlcm4gaW50IHN3aW1pb3BfaW5pdCh2b2lk
KTsKZXh0ZXJuIGludCBhbWlnYV9mbG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhdGFyaV9m
bG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBuYmRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBl
el9pbml0KHZvaWQpOwpleHRlcm4gaW50IGJwY2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwczJl
c2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQganNmZF9pbml0KHZvaWQpOwoKCgoKCgpleHRlcm4g
dm9pZCBzZXRfZGV2aWNlX3JvKGtkZXZfdCBkZXYsaW50IGZsYWcpOwp2b2lkIGFkZF9ibGtkZXZf
cmFuZG9tbmVzcyhpbnQgbWFqb3IpOwoKZXh0ZXJuIGludCBmbG9wcHlfaW5pdCh2b2lkKTsKZXh0
ZXJuIHZvaWQgcmRfbG9hZCh2b2lkKTsKZXh0ZXJuIGludCByZF9pbml0KHZvaWQpOwpleHRlcm4g
aW50IHJkX2RvbG9hZDsKZXh0ZXJuIGludCByZF9wcm9tcHQ7CmV4dGVybiBpbnQgcmRfaW1hZ2Vf
c3RhcnQ7CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdHJkX3N0YXJ0LGluaXRyZF9lbmQ7
CmV4dGVybiBpbnQgbW91bnRfaW5pdHJkOwpleHRlcm4gaW50IGluaXRyZF9iZWxvd19zdGFydF9v
azsKdm9pZCBpbml0cmRfaW5pdCh2b2lkKTsKIyA4OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n
bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMwpzdGF0aWMg
aW5saW5lIHZvaWQgYmxrZGV2X2RlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqIHJlcSkK
ewogICAgICAgIGxpc3RfZGVsKCZyZXEtPnF1ZXVlKTsKfQoKaW50IGVuZF90aGF0X3JlcXVlc3Rf
Zmlyc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSwgaW50IHVwdG9kYXRlLCBjaGFyICpuYW1lKTsKdm9p
ZCBlbmRfdGhhdF9yZXF1ZXN0X2xhc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSk7CiMgNjU4ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L2lkZS5oIiAyIDMKCnZvaWQgaWRlX2VuZF9yZXF1ZXN0KGJ5dGUgdXB0b2RhdGUsIGlkZV9o
d2dyb3VwX3QgKmh3Z3JvdXApOwoKCgoKCnZvaWQgaWRlX2lucHV0X2RhdGEgKGlkZV9kcml2ZV90
ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgd2NvdW50KTsKdm9pZCBpZGVfb3V0
cHV0X2RhdGEgKGlkZV9kcml2ZV90ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQg
d2NvdW50KTsKCgoKCgp2b2lkIGF0YXBpX2lucHV0X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUs
IHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5dGVjb3VudCk7CnZvaWQgYXRhcGlfb3V0cHV0
X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5
dGVjb3VudCk7CgoKCgoKdm9pZCBpZGVfc2V0X2hhbmRsZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwg
aWRlX2hhbmRsZXJfdCAqaGFuZGxlciwgdW5zaWduZWQgaW50IHRpbWVvdXQsIGlkZV9leHBpcnlf
dCAqZXhwaXJ5KTsKCgoKCmJ5dGUgaWRlX2R1bXBfc3RhdHVzIChpZGVfZHJpdmVfdCAqZHJpdmUs
IGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoKCgppZGVfc3RhcnRzdG9wX3QgaWRlX2Vy
cm9yIChpZGVfZHJpdmVfdCAqZHJpdmUsIGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoK
Cgp2b2lkIGlkZV9jbWQoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGNtZCwgYnl0ZSBuc2VjdCwg
aWRlX2hhbmRsZXJfdCAqaGFuZGxlcik7CgoKCgoKCgp2b2lkIGlkZV9maXhzdHJpbmcgKGJ5dGUg
KnMsIGNvbnN0IGludCBieXRlY291bnQsIGNvbnN0IGludCBieXRlc3dhcCk7CiMgNzE0ICIvb3B0
L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp
bnV4L2lkZS5oIiAzCmludCBpZGVfd2FpdF9zdGF0IChpZGVfc3RhcnRzdG9wX3QgKnN0YXJ0c3Rv
cCwgaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGdvb2QsIGJ5dGUgYmFkLCB1bnNpZ25lZCBsb25n
IHRpbWVvdXQpOwoKaW50IGlkZV93YWl0X25vZXJyIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUg
Z29vZCwgYnl0ZSBiYWQsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgoKaW50IGlkZV94bGF0
ZV8xMDI0IChrZGV2X3QsIGludCwgaW50LCBjb25zdCBjaGFyICopOwoKCgoKaWRlX2RyaXZlX3Qg
KmdldF9pbmZvX3B0ciAoa2Rldl90IGlfcmRldik7CgoKCgp1bnNpZ25lZCBsb25nIGN1cnJlbnRf
Y2FwYWNpdHkgKGlkZV9kcml2ZV90ICpkcml2ZSk7CgoKCgoKaWRlX3N0YXJ0c3RvcF90IGlkZV9k
b19yZXNldCAoaWRlX2RyaXZlX3QgKik7CgoKCgp2b2lkIGlkZV9pbml0X2RyaXZlX2NtZCAoc3Ry
dWN0IHJlcXVlc3QgKnJxKTsKCgoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgaWRlX3dhaXQsCiAg
ICAgICAgaWRlX25leHQsCiAgICAgICAgaWRlX3ByZWVtcHQsCiAgICAgICAgaWRlX2VuZAp9IGlk
ZV9hY3Rpb25fdDsKIyA3ODAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy
cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKaW50IGlkZV9kb19kcml2ZV9jbWQg
KGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCBpZGVfYWN0aW9uX3QgYWN0
aW9uKTsKCgoKCgp2b2lkIGlkZV9lbmRfZHJpdmVfY21kIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5
dGUgc3RhdCwgYnl0ZSBlcnIpOwoKCgoKaW50IGlkZV93YWl0X2NtZCAoaWRlX2RyaXZlX3QgKmRy
aXZlLCBpbnQgY21kLCBpbnQgbnNlY3QsIGludCBmZWF0dXJlLCBpbnQgc2VjdG9ycywgYnl0ZSAq
YnVmKTsKaW50IGlkZV93YWl0X2NtZF90YXNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgKmJ1
Zik7Cgp2b2lkIGlkZV9kZWxheV81MG1zICh2b2lkKTsKaW50IHN5c3RlbV9idXNfY2xvY2sodm9p
ZCk7CgpieXRlIGlkZV9hdXRvX3JlZHVjZV94ZmVyIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQg
aWRlX2RyaXZlaWRfdXBkYXRlIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQgaWRlX2F0YTY2X2No
ZWNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgY21kLCBieXRlIG5zZWN0LCBieXRlIGZlYXR1
cmUpOwppbnQgaWRlX2NvbmZpZ19kcml2ZV9zcGVlZCAoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRl
IHNwZWVkKTsKYnl0ZSBlaWdodHlfbmludHlfdGhyZWUgKGlkZV9kcml2ZV90ICpkcml2ZSk7Cmlu
dCBzZXRfdHJhbnNmZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwgYnl0ZSBjbWQsIGJ5dGUgbnNlY3Qs
IGJ5dGUgZmVhdHVyZSk7CgoKCgoKCgppbnQgaWRlX3N5c3RlbV9idXNfc3BlZWQgKHZvaWQpOwoK
CgoKCmludCBpZGVfbXVsdHdyaXRlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGludCBt
Y291bnQpOwoKCgoKCnZvaWQgaWRlX3N0YWxsX3F1ZXVlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVu
c2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgpyZXF1ZXN0X3F1ZXVlX3QgKmlkZV9nZXRfcXVldWUg
KGtkZXZfdCBkZXYpOwoKCgoKCgppbnQgZHJpdmVfaXNfZmxhc2hjYXJkIChpZGVfZHJpdmVfdCAq
ZHJpdmUpOwoKaW50IGlkZV9zcGluX3dhaXRfaHdncm91cCAoaWRlX2RyaXZlX3QgKmRyaXZlKTsK
dm9pZCBpZGVfdGltZXJfZXhwaXJ5ICh1bnNpZ25lZCBsb25nIGRhdGEpOwp2b2lkIGlkZV9pbnRy
IChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKdm9pZCBkb19p
ZGVfcmVxdWVzdCAocmVxdWVzdF9xdWV1ZV90ICogcSk7CnZvaWQgaWRlX2luaXRfc3ViZHJpdmVy
cyAodm9pZCk7CgoKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBpZGVfZm9w
c1tdOwpleHRlcm4gaWRlX3Byb2NfZW50cnlfdCBnZW5lcmljX3N1YmRyaXZlcl9lbnRyaWVzW107
CiMgODY4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5
cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCmludCBpZGVfcmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9k
dWxlX3QgKm1vZHVsZSk7CnZvaWQgaWRlX3VucmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9kdWxlX3Qg
Km1vZHVsZSk7CmlkZV9kcml2ZV90ICppZGVfc2Nhbl9kZXZpY2VzIChieXRlIG1lZGlhLCBjb25z
dCBjaGFyICpuYW1lLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwgaW50IG4pOwppbnQgaWRlX3JlZ2lz
dGVyX3N1YmRyaXZlciAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwg
aW50IHZlcnNpb24pOwppbnQgaWRlX3VucmVnaXN0ZXJfc3ViZHJpdmVyIChpZGVfZHJpdmVfdCAq
ZHJpdmUpOwppbnQgaWRlX3JlcGxhY2Vfc3ViZHJpdmVyKGlkZV9kcml2ZV90ICpkcml2ZSwgY29u
c3QgY2hhciAqZHJpdmVyKTsKIyA5MDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs
L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdm9pZCBod2lmX3VucmVn
aXN0ZXIgKGlkZV9od2lmX3QgKmh3aWYpOwojIDE1ICJibGEuYyIgMgojIDM3ICJibGEuYyIKZXh0
ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IG15X19mc3dhYjE2KF9fdTE2IHgpCgoKCnsK
ICAgICAgICByZXR1cm4gKHsgX191MTYgX190bXAgPSAoeCkgOyAoeyBfX3UxNiBfX3ggPSAoX190
bXApOyAoKF9fdTE2KSggKCgoX191MTYpKF9feCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAo
KChfX3UxNikoX194KSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKTsgfSk7IH0pOwp9CgoKdW5z
aWduZWQgc2hvcnQgYmxhYmxhYmxhKHN0cnVjdCBoZF9kcml2ZWlkICppZCkKewogICAgICAgIGlk
LT5jb25maWcgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KShpZC0+Y29uZmlnKSkgPyAo
eyBfX3UxNiBfX3ggPSAoKGlkLT5jb25maWcpKTsgKChfX3UxNikoICgoKF9fdTE2KShfX3gpICYg
KF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKF9feCkgJiAoX191MTYpMHhmZjAwVSkg
Pj4gOCkgKSk7IH0pIDogbXlfX2Zzd2FiMTYoKGlkLT5jb25maWcpKSk7CiAgICAgICAgcmV0dXJu
IDA7Cn0K
--0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489--
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
@ 2003-01-08 2:13 bangerth
0 siblings, 0 replies; 3+ messages in thread
From: bangerth @ 2003-01-08 2:13 UTC (permalink / raw)
To: aloeff, gcc-bugs, gcc-prs, nobody
Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel
State-Changed-From-To: open->feedback
State-Changed-By: bangerth
State-Changed-When: Tue Jan 7 18:13:28 2003
State-Changed-Why:
Thanks for your report (how unfortunate nobody has yet
looked at it). In trying to reproduce it, I saw that the
file still had an #include in it. Would you mind running
the testcase through the compiler again, and give it
-save-temps in addition? This would generate a file called
bla.i which we need (it's then self-contained).
Thanks
Wolfgang
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7577
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-01-08 11:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-12 4:36 c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel aloeff
2003-01-08 2:13 bangerth
2003-01-08 11:26 Andreas Loeffler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).