This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
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
ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0