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]

c/4529: ice on legal code (unrecognizable insn)



>Number:         4529
>Category:       c
>Synopsis:       ice on legal code (unrecognizable insn)
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 10 19:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     ltuikov@yahoo.com
>Release:        Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/specs
>Organization:
>Environment:
i686-gnu-linux, Athlon K7 thunderburd, Asus K7V mobo.
Linux 2.4.10, gcc 3.0.1.
>Description:
Compiling Linux kernel 2.4.11 with REALTEK network card
driver enabled gives ice on legal code, 
``Unrecognizable insn'' exactly.

% gcc -v
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/specs
Configured with: ../gcc-3.0.1/configure --host=i686-pc-linux-gnu -with-gnu-as --with-gnu-ld --disable-win32-registry --enable-threads=posix
Thread model: posix
gcc version 3.0.1

>How-To-Repeat:
Try to compile the Linux kernel 2.4.11 with Realtek 8139
network card driver built in.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
 Configured with: ../gcc-3.0.1/configure --host=i686-pc-linux-gnu -with-gnu-as --with-gnu-ld --disable-win32-registry --enable-threads=posix
 Thread model: posix
 gcc version 3.0.1
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="8139too.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="8139too.i"

IyAxNDUgIjgxMzl0b28uYyIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2F1dG9jb25mLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9j
b25maWcuaCIgMgojIDE0NiAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvbW9kdWxlLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvbW9kdWxlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvY29uZmlnLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbW9kdWxlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9z
cGlubG9jay5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
Y29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zcGlu
bG9jay5oIiAyCiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NwaW5s
b2NrLmgiCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHNwaW5sb2NrX3Q7CiMgMTE2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgogIHR5cGVkZWYgc3RydWN0IHsg
fSByd2xvY2tfdDsKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW9k
dWxlLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saXN0Lmgi
IDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3ByZWZldGNo
LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcHJlZmV0Y2gu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEK
IyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS92bTg2LmgiIDEKIyA2OCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3ZtODYuaCIKc3RydWN0IHZtODZfcmVncyB7CgoK
CiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7CiAg
ICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAgICAg
ICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251bGxf
ZXM7CiAgICAgICAgbG9uZyBfX251bGxfZnM7CiAgICAgICAgbG9uZyBfX251bGxfZ3M7CiAgICAg
ICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2lnbmVkIHNob3J0IGVz
LCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdzLCBfX2dzaDsKfTsK
CnN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX21hcFs4
XTsKfTsKCnN0cnVjdCB2bTg2X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IHZtODZfcmVncyByZWdz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzY3Jl
ZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5cGU7CiAgICAgICAgc3RydWN0
IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAgICAgIHN0cnVjdCByZXZlY3Rv
cmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwp9OwoKCgoKCgpzdHJ1Y3Qgdm04NnBsdXNfaW5m
b19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZm9yY2VfcmV0dXJuX2Zvcl9waWM6MTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHZtODZkYmdfYWN0aXZlOjE7CiAgICAgICAgdW5zaWduZWQg
bG9uZyB2bTg2ZGJnX1RGcGVuZGlnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyB1bnVzZWQ6Mjg7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBpc192bTg2cHVzOjE7CiAgICAgICAgdW5zaWduZWQgY2hh
ciB2bTg2ZGJnX2ludHh4dGFiWzMyXTsKfTsKCnN0cnVjdCB2bTg2cGx1c19zdHJ1Y3QgewogICAg
ICAgIHN0cnVjdCB2bTg2X3JlZ3MgcmVnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGNwdV90eXBlOwogICAgICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3Jl
ZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKICAg
ICAgICBzdHJ1Y3Qgdm04NnBsdXNfaW5mb19zdHJ1Y3Qgdm04NnBsdXM7Cn07CiMgMTQ1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZf
cmVncyB7CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9u
ZyBlZHg7CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBl
YnA7CiAgICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9u
ZyBfX251bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAg
ICAgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAg
IHVuc2lnbmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19k
c2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGdzLCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0
cnVjdCBrZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vdm04Ni5oIgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzY3JlZW5fYml0bWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3R5
cGU7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludF9yZXZlY3RvcmVkOwogICAg
ICAgIHN0cnVjdCByZXZlY3RvcmVkX3N0cnVjdCBpbnQyMV9yZXZlY3RvcmVkOwogICAgICAgIHN0
cnVjdCB2bTg2cGx1c19pbmZvX3N0cnVjdCB2bTg2cGx1czsKICAgICAgICBzdHJ1Y3QgcHRfcmVn
cyAqcmVnczMyOwojIDIwMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3ZtODYu
aCIKfTsKCnZvaWQgaGFuZGxlX3ZtODZfZmF1bHQoc3RydWN0IGtlcm5lbF92bTg2X3JlZ3MgKiwg
bG9uZyk7CmludCBoYW5kbGVfdm04Nl90cmFwKHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxv
bmcsIGludCk7CiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9tYXRoX2VtdS5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQu
aCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnY29udGV4dC5o
IgpzdHJ1Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4cmVnIHsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBleHBvbmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9OwoKc3RydWN0
IF94bW1yZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsKCnN0cnVjdCBf
ZnBzdGF0ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlw
b2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
YXRhb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBzdHJ1Y3QgX2Zw
cmVnIF9zdFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vudls2XTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQ7
CiAgICAgICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3RydWN0IF94bW1y
ZWcgX3htbVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9OwoKCgpzdHJ1
Y3Qgc2lnY29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3NoOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcywgX19l
c2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZWRpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcg
ZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJ4
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWN4Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdHJhcG5vOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAg
ICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVmbGFn
czsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAgdW5zaWduZWQg
c2hvcnQgc3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3RhdGU7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3IyOwp9Owoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9tYXRoX2VtdS5oIiAyCgppbnQg
cmVzdG9yZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICpidWYpOwppbnQg
c2F2ZV9pMzg3X3NvZnQodm9pZCAqczM4Nywgc3RydWN0IF9mcHN0YXRlICogYnVmKTsKCgoKCgpz
dHJ1Y3QgaW5mbyB7CiAgICAgICAgbG9uZyBfX19vcmlnX2VpcDsKICAgICAgICBsb25nIF9fX2Vi
eDsKICAgICAgICBsb25nIF9fX2VjeDsKICAgICAgICBsb25nIF9fX2VkeDsKICAgICAgICBsb25n
IF9fX2VzaTsKICAgICAgICBsb25nIF9fX2VkaTsKICAgICAgICBsb25nIF9fX2VicDsKICAgICAg
ICBsb25nIF9fX2VheDsKICAgICAgICBsb25nIF9fX2RzOwogICAgICAgIGxvbmcgX19fZXM7CiAg
ICAgICAgbG9uZyBfX19vcmlnX2VheDsKICAgICAgICBsb25nIF9fX2VpcDsKICAgICAgICBsb25n
IF9fX2NzOwogICAgICAgIGxvbmcgX19fZWZsYWdzOwogICAgICAgIGxvbmcgX19fZXNwOwogICAg
ICAgIGxvbmcgX19fc3M7CiAgICAgICAgbG9uZyBfX192bTg2X2VzOwogICAgICAgIGxvbmcgX19f
dm04Nl9kczsKICAgICAgICBsb25nIF9fX3ZtODZfZnM7CiAgICAgICAgbG9uZyBfX192bTg2X2dz
Owp9OwojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMg
MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxMiAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BhZ2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vcGFnZS5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL21teC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3R5cGVzLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvY29uZmlnLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC90eXBlcy5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9wb3NpeF90eXBlcy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvc3RkZGVmLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9wb3NpeF90eXBlcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3Bvc2l4X3R5cGVzLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25n
IGZkc19iaXRzIFsoMTAyNC8oOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSkpXTsKfSBfX2tlcm5l
bF9mZF9zZXQ7CgoKdHlwZWRlZiB2b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoK
CnR5cGVkZWYgaW50IF9fa2VybmVsX2tleV90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5l
bF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVsX2lub190Owp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tl
cm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2ZmX3Q7CnR5cGVkZWYgaW50IF9f
a2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfc2l6ZV90
Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9wdHJk
aWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5l
bF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50
IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2VybmVsX2NhZGRyX3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9y
dCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90OwoKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJu
ZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2VybmVsX2xvZmZfdDsKCgp0eXBl
ZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0gX19rZXJuZWxfZnNpZF90Owoj
IDQ3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAy
CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCgoKCnR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCgoKCgoKdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19z
ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cgp0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQg
X19zMTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18g
aW50IF9fczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVk
X18gbG9uZyBsb25nIF9fczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKCgoK
CgoKCnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKCnR5
cGVkZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cgp0eXBl
ZGVmIHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cgp0eXBlZGVmIHNp
Z25lZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7CgoKCgoK
dHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvdHlwZXMuaCIgMgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZkX3NldCBmZF9zZXQ7CnR5
cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJuZWxfaW5vX3QgaW5vX3Q7
CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiBfX2tlcm5lbF9ubGlua190
IG5saW5rX3Q7CnR5cGVkZWYgX19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxf
cGlkX3QgcGlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9f
a2VybmVsX2tleV90IGtleV90Owp0eXBlZGVmIF9fa2VybmVsX3N1c2Vjb25kc190IHN1c2Vjb25k
c190OwoKCnR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9n
aWQzMl90IGdpZF90Owp0eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBf
X2tlcm5lbF9naWQxNl90IGdpZDE2X3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfb2xkX3VpZF90IG9s
ZF91aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9vbGRfZ2lkX3Qgb2xkX2dpZF90OwojIDQ1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVs
X2xvZmZfdCBsb2ZmX3Q7CiMgNTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVfdDsKCgoKCnR5cGVkZWYgX19r
ZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9wdHJkaWZmX3QgcHRy
ZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGltZV90OwoKCgoKdHlwZWRlZiBf
X2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2NhZGRyX3QgY2Fk
ZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5jaGFyOwp0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVfaW50OF90Owp0eXBlZGVmIF9f
czggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlwZWRlZiBfX3MxNiBpbnQxNl90
Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3MzMiBpbnQzMl90OwoKCgp0eXBl
ZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZfdDsKdHlwZWRlZiBfX3UzMiB1
aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBlZGVmIF9fdTY0IHVfaW50NjRf
dDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvdHlwZXMuaCIKc3RydWN0IHVzdGF0IHsKICAgICAgICBfX2tlcm5lbF9kYWRk
cl90IGZfdGZyZWU7CiAgICAgICAgX19rZXJuZWxfaW5vX3QgZl90aW5vZGU7CiAgICAgICAgY2hh
ciBmX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZl9mcGFja1s2XTsKfTsKIyA5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vbW14LmgiIDIKCmV4dGVybiB2b2lkICpfbW14X21lbWNw
eSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IHNpemUpOwpleHRlcm4gdm9pZCBt
bXhfY2xlYXJfcGFnZSh2b2lkICpwYWdlKTsKZXh0ZXJuIHZvaWQgbW14X2NvcHlfcGFnZSh2b2lk
ICp0bywgdm9pZCAqZnJvbSk7CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2Fz
bS9wYWdlLmgiIDIKIyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BhZ2Uu
aCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVk
ZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsg
dW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVk
IGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDEwNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3BhZ2UuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGdldF9vcmRlcih1bnNpZ25l
ZCBsb25nIHNpemUpCnsKICAgICAgICBpbnQgb3JkZXI7CgogICAgICAgIHNpemUgPSAoc2l6ZS0x
KSA+PiAoMTIgLTEpOwogICAgICAgIG9yZGVyID0gLTE7CiAgICAgICAgZG8gewogICAgICAgICAg
ICAgICAgc2l6ZSA+Pj0gMTsKICAgICAgICAgICAgICAgIG9yZGVyKys7CiAgICAgICAgfSB3aGls
ZSAoc2l6ZSk7CiAgICAgICAgcmV0dXJuIG9yZGVyOwp9CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
YXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L2NwdWZlYXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20v
cHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9j
YWNoZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jYWNoZS5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKCgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQoj
IDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9jYWNoZS5oIiAyCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgojIDE4ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC90aHJlYWRzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMgojIDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKIyAzMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5mb194ODYgewogICAgICAgIF9fdTgg
eDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAgICBfX3U4IHg4Nl9tb2RlbDsKICAg
ICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bfd29ya3Nfb2s7CiAgICAgICAgY2hh
ciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21hdGg7CiAgICAgICAgY2hhciByZnU7
CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9fdTMyIHg4Nl9jYXBhYmlsaXR5WzRd
OwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAgICAgICAgY2hhciB4ODZfbW9kZWxf
aWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsKCiAgICAgICAgaW50IGZkaXZfYnVn
OwogICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBpbnQgY29tYV9idWc7CiAgICAgICAgdW5z
aWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcGdkX3F1
aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWljazsKICAgICAgICB1bnNpZ25lZCBs
b25nICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwZ3RhYmxlX2NhY2hlX3N6Owp9
IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNikpKSkpKTsKIyA3MiAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4gc3RydWN0IGNw
dWluZm9feDg2IGJvb3RfY3B1X2RhdGE7CmV4dGVybiBzdHJ1Y3QgdHNzX3N0cnVjdCBpbml0X3Rz
c1sxXTsKIyA5NCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o
IgpleHRlcm4gY2hhciBpZ25vcmVfaXJxMTM7CgpleHRlcm4gdm9pZCBpZGVudGlmeV9jcHUoc3Ry
dWN0IGNwdWluZm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1
aW5mb194ODYgKik7CmV4dGVybiB2b2lkIGRvZGd5X3RzYyh2b2lkKTsKIyAxMjQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSB2b2lk
IGNwdWlkKGludCBvcCwgaW50ICplYXgsIGludCAqZWJ4LCBpbnQgKmVjeCwgaW50ICplZHgpCnsK
ICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoKmVheCksCiAg
ICAgICAgICAgICAgICAgICI9YiIgKCplYngpLAogICAgICAgICAgICAgICAgICAiPWMiICgqZWN4
KSwKICAgICAgICAgICAgICAgICAgIj1kIiAoKmVkeCkKICAgICAgICAgICAgICAgIDogIjAiIChv
cCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQg
aW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheDsKCiAgICAgICAgX19hc21fXygiY3B1
aWQiCiAgICAgICAgICAgICAgICA6ICI9YSIgKGVheCkKICAgICAgICAgICAgICAgIDogIjAiIChv
cCkKICAgICAgICAgICAgICAgIDogImJ4IiwgImN4IiwgImR4Iik7CiAgICAgICAgcmV0dXJuIGVh
eDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lYngodW5zaWduZWQgaW50IG9w
KQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWJ4OwoKICAgICAgICBfX2FzbV9fKCJjcHVp
ZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KQogICAgICAgICAgICAg
ICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiY3giLCAiZHgiICk7CiAgICAgICAgcmV0
dXJuIGVieDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lY3godW5zaWduZWQg
aW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWN4OwoKICAgICAgICBfX2FzbV9f
KCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1jIiAoZWN4KQogICAgICAg
ICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiZHgiICk7CiAgICAg
ICAgcmV0dXJuIGVjeDsKfQpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5z
aWduZWQgaW50IG9wKQp7CiAgICAgICAgdW5zaWduZWQgaW50IGVheCwgZWR4OwoKICAgICAgICBf
X2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAgICAgIDogIj1hIiAoZWF4KSwgIj1kIiAoZWR4KQog
ICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAgICAgOiAiYngiLCAiY3giKTsK
ICAgICAgICByZXR1cm4gZWR4Owp9CiMgMTk5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIG1tdV9jcjRfZmVhdHVyZXM7
CgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2luX2NyNCAodW5zaWduZWQgbG9uZyBtYXNrKQp7CiAg
ICAgICAgbW11X2NyNF9mZWF0dXJlcyB8PSBtYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVj
cjQsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm9ybCAlMCwlJWVheFxuXHQiCiAgICAgICAg
ICAgICAgICAibW92bCAlJWVheCwlJWNyNFxuIgogICAgICAgICAgICAgICAgOiA6ICJpcmciICht
YXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJf
aW5fY3I0ICh1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBtbXVfY3I0X2ZlYXR1cmVzICY9
IH5tYXNrOwogICAgICAgIF9fYXNtX18oIm1vdmwgJSVjcjQsJSVlYXhcblx0IgogICAgICAgICAg
ICAgICAgImFuZGwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJSVlYXgsJSVj
cjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAofm1hc2spCiAgICAgICAgICAgICAgICA6
ImF4Iik7Cn0KIyAyNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNz
b3IuaCIKZXh0ZXJuIGludCBNQ0FfYnVzOwoKCgpleHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVf
aWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgbWFjaGluZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2ln
bmVkIGludCBCSU9TX3JldmlzaW9uOwpleHRlcm4gdW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2Zs
YWc7CiMgMjgyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
CnN0cnVjdCBpMzg3X2ZzYXZlX3N0cnVjdCB7CiAgICAgICAgbG9uZyBjd2Q7CiAgICAgICAgbG9u
ZyBzd2Q7CiAgICAgICAgbG9uZyB0d2Q7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBm
Y3M7CiAgICAgICAgbG9uZyBmb287CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBzdF9z
cGFjZVsyMF07CiAgICAgICAgbG9uZyBzdGF0dXM7Cn07CgpzdHJ1Y3QgaTM4N19meHNhdmVfc3Ry
dWN0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
c3dkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHR3ZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBm
b3A7CiAgICAgICAgbG9uZyBmaXA7CiAgICAgICAgbG9uZyBmY3M7CiAgICAgICAgbG9uZyBmb287
CiAgICAgICAgbG9uZyBmb3M7CiAgICAgICAgbG9uZyBteGNzcjsKICAgICAgICBsb25nIHJlc2Vy
dmVkOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMzJdOwogICAgICAgIGxvbmcgeG1tX3NwYWNlWzMy
XTsKICAgICAgICBsb25nIHBhZGRpbmdbNTZdOwp9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkICgx
NikpKTsKCnN0cnVjdCBpMzg3X3NvZnRfc3RydWN0IHsKICAgICAgICBsb25nIGN3ZDsKICAgICAg
ICBsb25nIHN3ZDsKICAgICAgICBsb25nIHR3ZDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBs
b25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25n
IHN0X3NwYWNlWzIwXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZ0b3AsIGNoYW5nZWQsIGxvb2th
aGVhZCwgbm9fdXBkYXRlLCBybSwgYWxpbWl0OwogICAgICAgIHN0cnVjdCBpbmZvICppbmZvOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZW50cnlfZWlwOwp9OwoKdW5pb24gaTM4N191bmlvbiB7CiAg
ICAgICAgc3RydWN0IGkzODdfZnNhdmVfc3RydWN0IGZzYXZlOwogICAgICAgIHN0cnVjdCBpMzg3
X2Z4c2F2ZV9zdHJ1Y3QgZnhzYXZlOwogICAgICAgIHN0cnVjdCBpMzg3X3NvZnRfc3RydWN0IHNv
ZnQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZWc7Cn0gbW1f
c2VnbWVudF90OwoKc3RydWN0IHRzc19zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGJh
Y2tfbGluayxfX2JsaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDA7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc3MwLF9fc3MwaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDE7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3MxLF9fc3MxaDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDI7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgc3MyLF9fc3MyaDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9f
Y3IzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWZs
YWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWF4LGVjeCxlZHgsZWJ4OwogICAgICAgIHVuc2ln
bmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgZXNpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIHNo
b3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRzLCBfX2Rz
aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmcywgX19mc2g7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgZ3MsIF9fZ3NoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGxkdCwgX19sZHRoOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHRyYWNlLCBiaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpb19i
aXRtYXBbMzIgKzFdOwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19jYWNoZWxpbmVfZmlsbGVy
WzVdOwp9OwoKc3RydWN0IHRocmVhZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNw
MDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVpcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIGZzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZ3M7CgogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZGVidWdyZWdbOF07CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3Iy
LCB0cmFwX25vLCBlcnJvcl9jb2RlOwoKICAgICAgICB1bmlvbiBpMzg3X3VuaW9uIGkzODc7Cgog
ICAgICAgIHN0cnVjdCB2bTg2X3N0cnVjdCAqIHZtODZfaW5mbzsKICAgICAgICB1bnNpZ25lZCBs
b25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2ODZmbGFncywgdjg2bWFz
aywgdjg2bW9kZSwgc2F2ZWRfZXNwMDsKCiAgICAgICAgaW50IGlvcGVybTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07Cn07CiMgNDI0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0IG1t
X3N0cnVjdDsKCgpleHRlcm4gdm9pZCByZWxlYXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Kik7CgoKCmV4dGVybiBpbnQga2VybmVsX3RocmVhZChpbnQgKCpmbikodm9pZCAqKSwgdm9pZCAq
IGFyZywgdW5zaWduZWQgbG9uZyBmbGFncyk7CgoKZXh0ZXJuIHZvaWQgY29weV9zZWdtZW50cyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSk7CmV4dGVybiB2b2lk
IHJlbGVhc2Vfc2VnbWVudHMoc3RydWN0IG1tX3N0cnVjdCAqIG1tKTsKCgoKCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQp
CnsKICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBsb25nICopdC0+ZXNwKVszXTsKfQoKdW5zaWdu
ZWQgbG9uZyBnZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA0NTggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3JvY29kZSB7
CiAgICAgICAgdW5zaWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgcmV2Owog
ICAgICAgIHVuc2lnbmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7CiAgICAg
ICAgdW5zaWduZWQgaW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7CiAgICAg
ICAgdW5zaWduZWQgaW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1XTsKICAg
ICAgICB1bnNpZ25lZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBy
ZXBfbm9wKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25vcCIpOwp9
CiMgNDk2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4
dGVybiBpbmxpbmUgdm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4KQp7CiAgICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fICgicHJlZmV0Y2ggKCUwKSIgOiA6ICJyIih4KSk7Cn0KCmV4dGVybiBp
bmxpbmUgdm9pZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAqeCkKewogICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoInByZWZldGNodyAoJTApIiA6IDogInIiKHgpKTsKfQojIDE0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvYXNtL2NhY2hlLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIgMgojIDcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9saXN0LmgiCnN0cnVjdCBsaXN0X2hlYWQgewogICAgICAgIHN0cnVjdCBs
aXN0X2hlYWQgKm5leHQsICpwcmV2Owp9OwojIDM3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2FkZChzdHJ1
Y3QgbGlzdF9oZWFkICogbmV3LAogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9IG5ldzsK
ICAgICAgICBuZXctPm5leHQgPSBuZXh0OwogICAgICAgIG5ldy0+cHJldiA9IHByZXY7CiAgICAg
ICAgcHJldi0+bmV4dCA9IG5ldzsKfQojIDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxp
c3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2Fk
ZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgNjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZF90YWls
KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAg
IF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKfQojIDgwICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19s
aXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQp7CiAgICAgICAgbmV4dC0+cHJldiA9
IHByZXY7CiAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Cn0KCgoKCgoKc3RhdGljIF9faW5saW5l
X18gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9fbGlz
dF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKfQoKCgoKCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgbGlzdF9kZWxfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogICAgICAgIF9f
bGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKICAgICAgICBkbyB7IChlbnRyeSkt
Pm5leHQgPSAoZW50cnkpOyAoZW50cnkpLT5wcmV2ID0gKGVudHJ5KTsgfSB3aGlsZSAoMCk7Cn0K
CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpo
ZWFkKQp7CiAgICAgICAgcmV0dXJuIGhlYWQtPm5leHQgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGxpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0cnVj
dCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxp
c3QtPm5leHQ7CgogICAgICAgIGlmIChmaXJzdCAhPSBsaXN0KSB7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgbGlzdF9oZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKICAgICAgICAgICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgKmF0ID0gaGVhZC0+bmV4dDsKCiAgICAgICAgICAgICAgICBmaXJzdC0+cHJl
diA9IGhlYWQ7CiAgICAgICAgICAgICAgICBoZWFkLT5uZXh0ID0gZmlyc3Q7CgogICAgICAgICAg
ICAgICAgbGFzdC0+bmV4dCA9IGF0OwogICAgICAgICAgICAgICAgYXQtPnByZXYgPSBsYXN0Owog
ICAgICAgIH0KfQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tb2R1
bGUuaCIgMgojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tb2R1bGUu
aCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDUg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDIyICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgiCnR5cGVkZWYgc3RydWN0IHsg
dm9sYXRpbGUgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CiMgNTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNf
YWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgIiIgImFkZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+
Y291bnRlcikKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0K
IyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMSwlMCIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJpciIgKGkp
LCAibSIgKHYtPmNvdW50ZXIpKTsKfQojIDg3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2FuZF90ZXN0
KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAg
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAic3VibCAlMiwlMDsgc2V0
ZSAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAg
ICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAg
ICAgcmV0dXJuIGM7Cn0KIyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9h
dG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfaW5jKGF0b21pY190ICp2KQp7
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiaW5jbCAl
MCIKICAgICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKQogICAgICAgICAgICAgICAgOiJt
IiAodi0+Y291bnRlcikpOwp9CiMgMTIwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9h
c20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9taWNfdCAq
dikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiIgImRl
Y2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAgICAg
IDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEzNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVz
dChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAgX19hc21f
XyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIiAiZGVjbCAlMDsgc2V0ZSAlMSIKICAg
ICAgICAgICAgICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAg
ICA6Im0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9
CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRp
YyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICAgICIiICJpbmNsICUwOyBzZXRlICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYt
PmNvdW50ZXIpLCAiPXFtIiAoYykKICAgICAgICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpIDog
Im1lbW9yeSIpOwogICAgICAgIHJldHVybiBjICE9IDA7Cn0KIyAxNzggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGF0b21p
Y19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIiICJh
ZGRsICUyLCUwOyBzZXRzICUxIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpLCAi
PXFtIiAoYykKICAgICAgICAgICAgICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gYzsKfQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9tb2R1bGUuaCIgMgoKCnN0cnVjdCBleGNlcHRpb25fdGFibGVfZW50cnk7
CgoKc3RydWN0IGtlcm5lbF9zeW0KewogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CiAgICAg
ICAgY2hhciBuYW1lWzYwXTsKfTsKCnN0cnVjdCBtb2R1bGVfc3ltYm9sCnsKICAgICAgICB1bnNp
Z25lZCBsb25nIHZhbHVlOwogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpzdHJ1Y3QgbW9k
dWxlX3JlZgp7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqZGVwOwogICAgICAgIHN0cnVjdCBtb2R1
bGUgKnJlZjsKICAgICAgICBzdHJ1Y3QgbW9kdWxlX3JlZiAqbmV4dF9yZWY7Cn07CgoKc3RydWN0
IG1vZHVsZV9wZXJzaXN0OwoKc3RydWN0IG1vZHVsZQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
aXplX29mX3N0cnVjdDsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpuZXh0OwogICAgICAgIGNvbnN0
IGNoYXIgKm5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKICAgICAgICB1bmlvbgog
ICAgICAgIHsKICAgICAgICAgICAgICAgIGF0b21pY190IHVzZWNvdW50OwogICAgICAgICAgICAg
ICAgbG9uZyBwYWQ7CiAgICAgICAgfSB1YzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
CiAgICAgICAgdW5zaWduZWQgbnN5bXM7CiAgICAgICAgdW5zaWduZWQgbmRlcHM7CgogICAgICAg
IHN0cnVjdCBtb2R1bGVfc3ltYm9sICpzeW1zOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpk
ZXBzOwogICAgICAgIHN0cnVjdCBtb2R1bGVfcmVmICpyZWZzOwogICAgICAgIGludCAoKmluaXQp
KHZvaWQpOwogICAgICAgIHZvaWQgKCpjbGVhbnVwKSh2b2lkKTsKICAgICAgICBjb25zdCBzdHJ1
Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9zdGFydDsKICAgICAgICBjb25zdCBz
dHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICpleF90YWJsZV9lbmQ7CgoKCgoKCiAgICAgICAg
Y29uc3Qgc3RydWN0IG1vZHVsZV9wZXJzaXN0ICpwZXJzaXN0X3N0YXJ0OwogICAgICAgIGNvbnN0
IHN0cnVjdCBtb2R1bGVfcGVyc2lzdCAqcGVyc2lzdF9lbmQ7CiAgICAgICAgaW50ICgqY2FuX3Vu
bG9hZCkodm9pZCk7CiAgICAgICAgaW50IHJ1bnNpemU7CiAgICAgICAgY29uc3QgY2hhciAqa2Fs
bHN5bXNfc3RhcnQ7CiAgICAgICAgY29uc3QgY2hhciAqa2FsbHN5bXNfZW5kOwogICAgICAgIGNv
bnN0IGNoYXIgKmFyY2hkYXRhX3N0YXJ0OwogICAgICAgIGNvbnN0IGNoYXIgKmFyY2hkYXRhX2Vu
ZDsKICAgICAgICBjb25zdCBjaGFyICprZXJuZWxfZGF0YTsKfTsKCnN0cnVjdCBtb2R1bGVfaW5m
bwp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6
ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGxvbmcgdXNlY291bnQ7Cn07
CiMgMTgzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKZXh0
ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3JlZ2lzdGVyKGNvbnN0IGNoYXIgKiwgc3RydWN0IG1vZHVs
ZSAqLCBjb25zdCB2b2lkICopOwpleHRlcm4gdm9pZCBpbnRlcl9tb2R1bGVfdW5yZWdpc3Rlcihj
b25zdCBjaGFyICopOwpleHRlcm4gY29uc3Qgdm9pZCAqaW50ZXJfbW9kdWxlX2dldChjb25zdCBj
aGFyICopOwpleHRlcm4gY29uc3Qgdm9pZCAqaW50ZXJfbW9kdWxlX2dldF9yZXF1ZXN0KGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJfbW9kdWxlX3B1dChjb25z
dCBjaGFyICopOwoKc3RydWN0IGludGVyX21vZHVsZV9lbnRyeSB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBsaXN0OwogICAgICAgIGNvbnN0IGNoYXIgKmltX25hbWU7CiAgICAgICAgc3RydWN0
IG1vZHVsZSAqb3duZXI7CiAgICAgICAgY29uc3Qgdm9pZCAqdXNlcmRhdGE7Cn07CgpleHRlcm4g
aW50IHRyeV9pbmNfbW9kX2NvdW50KHN0cnVjdCBtb2R1bGUgKm1vZCk7CiMgMzI1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tb2R1bGUuaCIKZXh0ZXJuIHN0cnVjdCBtb2R1
bGUgKm1vZHVsZV9saXN0OwojIDE0NyAiODEzOXRvby5jIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgva2VybmVsLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5o
IiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkYXJn
LmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvc3RkZGVmLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgva2VybmVsLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2tl
cm5lbC5oIiAyCiMgNDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2tlcm5l
bC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnBh
bmljX25vdGlmaWVyX2xpc3Q7CiAgICAgICAgICAgdm9pZCBwYW5pYyhjb25zdCBjaGFyICogZm10
LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuLCBmb3JtYXQgKHByaW50Ziwg
MSwgMikpKTsKICAgICAgICAgICB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAgICAg
IF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiAgICAgICAgICAgdm9pZCBjb21wbGV0ZV9hbmRf
ZXhpdChzdHJ1Y3QgY29tcGxldGlvbiAqLCBsb25nKQogICAgICAgIF9fYXR0cmlidXRlX18oKG5v
cmV0dXJuKSk7CmV4dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNpbXBs
ZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25n
IHNpbXBsZV9zdHJ0b2woY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBzaW1wbGVfc3RydG91bGwoY29uc3QgY2hhciAqLGNoYXIgKios
dW5zaWduZWQgaW50KTsKZXh0ZXJuIGxvbmcgbG9uZyBzaW1wbGVfc3RydG9sbChjb25zdCBjaGFy
ICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHNwcmludGYoY2hhciAqIGJ1Ziwg
Y29uc3QgY2hhciAqIGZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c3ByaW50ZihjaGFyICpidWYsIGNv
bnN0IGNoYXIgKiwgdmFfbGlzdCk7CmV4dGVybiBpbnQgc25wcmludGYoY2hhciAqIGJ1Ziwgc2l6
ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIGludCB2c25wcmludGYoY2hh
ciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0
ZXJuIGludCBzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoZm9ybWF0IChzY2FuZiwyLDMpKSk7CmV4dGVybiBpbnQgdnNzY2FuZihj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CgpleHRlcm4gaW50IGdldF9vcHRp
b24oY2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25zKGNoYXIg
KnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIG1l
bXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9wcm9iZV9s
b2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0ZXJuIGlu
dCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkp
KSBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9f
ICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CgpleHRlcm4gaW50IGNvbnNvbGVfbG9nbGV2ZWw7
CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV9zaWxlbnQodm9pZCkKewogICAgICAgIGNvbnNv
bGVfbG9nbGV2ZWwgPSAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29uc29sZV92ZXJib3NlKHZv
aWQpCnsKICAgICAgICBpZiAoY29uc29sZV9sb2dsZXZlbCkKICAgICAgICAgICAgICAgIGNvbnNv
bGVfbG9nbGV2ZWwgPSAxNTsKfQoKZXh0ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7
CmV4dGVybiBpbnQgb29wc19pbl9wcm9ncmVzczsKCmV4dGVybiBpbnQgdGFpbnRlZDsKZXh0ZXJu
IGNvbnN0IGNoYXIgKnByaW50X3RhaW50ZWQodm9pZCk7CiMgMTYwICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IHN5c2luZm8gewogICAgICAgIGxv
bmcgdXB0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9hZHNbM107CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyB0b3RhbHJhbTsKICAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVyYW07CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzaGFyZWRyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJyYW07
CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbHN3YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm
cmVlc3dhcDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwcm9jczsKICAgICAgICB1bnNpZ25lZCBz
aG9ydCBwYWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbGhpZ2g7CiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAg
Y2hhciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2YoaW50KV07Cn07CiMgMTQ4ICI4MTM5dG9v
LmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wY2kuaCIgMQoj
IDI3NiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGNpLmgiCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGNpX2lkcy5oIiAxCiMgMjc3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wY2kuaCIgMgojIDI5OSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGNpLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDMwMCAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9jb25maWcuaCIgMQojIDMwMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9p
b3BvcnQuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pb3Bv
cnQuaCIKc3RydWN0IHJlc291cmNlIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwog
ICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcGFyZW50LCAqc2libGluZywgKmNoaWxkOwp9OwoKc3Ry
dWN0IHJlc291cmNlX2xpc3QgewogICAgICAgIHN0cnVjdCByZXNvdXJjZV9saXN0ICpuZXh0Owog
ICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzOwogICAgICAgIHN0cnVjdCBwY2lfZGV2ICpkZXY7
Cn07CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIgpl
eHRlcm4gc3RydWN0IHJlc291cmNlIGlvcG9ydF9yZXNvdXJjZTsKZXh0ZXJuIHN0cnVjdCByZXNv
dXJjZSBpb21lbV9yZXNvdXJjZTsKCmV4dGVybiBpbnQgZ2V0X3Jlc291cmNlX2xpc3Qoc3RydWN0
IHJlc291cmNlICosIGNoYXIgKmJ1ZiwgaW50IHNpemUpOwoKZXh0ZXJuIGludCBjaGVja19yZXNv
dXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
OwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1
Y3QgcmVzb3VyY2UgKm5ldyk7CmV4dGVybiBpbnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVz
b3VyY2UgKm5ldyk7CmV4dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNl
ICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAoKmFsaWduZikodm9pZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwoKCgoKCmV4dGVy
biBzdHJ1Y3QgcmVzb3VyY2UgKiBfX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCB1
bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoK
CgoKCgoKZXh0ZXJuIGludCBfX2NoZWNrX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CmV4dGVybiB2b2lkIF9fcmVsZWFzZV9yZWdpb24oc3Ry
dWN0IHJlc291cmNlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCgoKCmV4dGVy
biB2b2lkIGF1dG9pcnFfc2V0dXAoaW50IHdhaXR0aW1lKTsKZXh0ZXJuIGludCBhdXRvaXJxX3Jl
cG9ydChpbnQgd2FpdHRpbWUpOwojIDMwMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcGNpLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9s
aXN0LmgiIDEKIyAzMDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BjaS5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMQoK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9lcnJuby5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMgojIDMwNCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGNpLmgiIDIKCgplbnVtIHBjaV9tbWFw
X3N0YXRlIHsKICAgICAgICBwY2lfbW1hcF9pbywKICAgICAgICBwY2lfbW1hcF9tZW0KfTsKIyAz
MzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNp
X2RldiB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsKICAgICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGJ1c19saXN0OwogICAgICAgIHN0cnVjdCBwY2lfYnVzICpidXM7CiAgICAg
ICAgc3RydWN0IHBjaV9idXMgKnN1Ym9yZGluYXRlOwoKICAgICAgICB2b2lkICpzeXNkYXRhOwog
ICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2VudDsKCiAgICAgICAgdW5zaWduZWQg
aW50IGRldmZuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZlbmRvcjsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Vic3lzdGVtX3ZlbmRvcjsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdWJzeXN0ZW1fZGV2aWNlOwogICAgICAgIHVuc2lnbmVk
IGludCBjbGFzczsKICAgICAgICB1OCBoZHJfdHlwZTsKICAgICAgICB1OCByb21fYmFzZV9yZWc7
CgogICAgICAgIHN0cnVjdCBwY2lfZHJpdmVyICpkcml2ZXI7CiAgICAgICAgdm9pZCAqZHJpdmVy
X2RhdGE7CiAgICAgICAgZG1hX2FkZHJfdCBkbWFfbWFzazsKCgoKCgogICAgICAgIHUzMiBjdXJy
ZW50X3N0YXRlOwoKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3JfY29tcGF0aWJsZVs0
XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZXZpY2VfY29tcGF0aWJsZVs0XTsKCgoKCgogICAg
ICAgIHVuc2lnbmVkIGludCBpcnE7CiAgICAgICAgc3RydWN0IHJlc291cmNlIHJlc291cmNlWzEy
XTsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgZG1hX3Jlc291cmNlWzJdOwogICAgICAgIHN0cnVj
dCByZXNvdXJjZSBpcnFfcmVzb3VyY2VbMl07CgogICAgICAgIGNoYXIgbmFtZVs4MF07CiAgICAg
ICAgY2hhciBzbG90X25hbWVbOF07CiAgICAgICAgaW50IGFjdGl2ZTsKICAgICAgICBpbnQgcm87
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmVnczsKCiAgICAgICAgaW50ICgqcHJlcGFyZSkoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CiAgICAgICAgaW50ICgqYWN0aXZhdGUpKHN0cnVjdCBwY2lfZGV2
ICpkZXYpOwogICAgICAgIGludCAoKmRlYWN0aXZhdGUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp9
OwojIDQwNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGNpLmgiCnN0cnVj
dCBwY2lfYnVzIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiAgICAgICAgc3RydWN0
IHBjaV9idXMgKnBhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoaWxkcmVuOwogICAg
ICAgIHN0cnVjdCBsaXN0X2hlYWQgZGV2aWNlczsKICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqc2Vs
ZjsKICAgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlWzRdOwoKICAgICAgICBzdHJ1Y3Qg
cGNpX29wcyAqb3BzOwogICAgICAgIHZvaWQgKnN5c2RhdGE7CiAgICAgICAgc3RydWN0IHByb2Nf
ZGlyX2VudHJ5ICpwcm9jZGlyOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG51bWJlcjsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIHByaW1hcnk7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnk7
CiAgICAgICAgdW5zaWduZWQgY2hhciBzdWJvcmRpbmF0ZTsKCiAgICAgICAgY2hhciBuYW1lWzQ4
XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBwbnB2ZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwcm9kdWN0dmVyOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgY2hlY2tzdW07CiAgICAgICAgdW5zaWduZWQgY2hhciBwYWQxOwp9OwoKCgpleHRl
cm4gc3RydWN0IGxpc3RfaGVhZCBwY2lfcm9vdF9idXNlczsKZXh0ZXJuIHN0cnVjdCBsaXN0X2hl
YWQgcGNpX2RldmljZXM7CiMgNDUyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9wY2kuaCIKc3RydWN0IHBjaV9vcHMgewogICAgICAgIGludCAoKnJlYWRfYnl0ZSkoc3RydWN0
IHBjaV9kZXYgKiwgaW50IHdoZXJlLCB1OCAqdmFsKTsKICAgICAgICBpbnQgKCpyZWFkX3dvcmQp
KHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTE2ICp2YWwpOwogICAgICAgIGludCAoKnJl
YWRfZHdvcmQpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTMyICp2YWwpOwogICAgICAg
IGludCAoKndyaXRlX2J5dGUpKHN0cnVjdCBwY2lfZGV2ICosIGludCB3aGVyZSwgdTggdmFsKTsK
ICAgICAgICBpbnQgKCp3cml0ZV93b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQgd2hlcmUsIHUx
NiB2YWwpOwogICAgICAgIGludCAoKndyaXRlX2R3b3JkKShzdHJ1Y3QgcGNpX2RldiAqLCBpbnQg
d2hlcmUsIHUzMiB2YWwpOwp9OwoKc3RydWN0IHBidXNfc2V0X3Jhbmdlc19kYXRhCnsKICAgICAg
ICBpbnQgZm91bmRfdmdhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fc3RhcnQsIGlvX2VuZDsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG1lbV9zdGFydCwgbWVtX2VuZDsKfTsKCnN0cnVjdCBwY2lf
ZGV2aWNlX2lkIHsKICAgICAgICB1bnNpZ25lZCBpbnQgdmVuZG9yLCBkZXZpY2U7CiAgICAgICAg
dW5zaWduZWQgaW50IHN1YnZlbmRvciwgc3ViZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGludCBj
bGFzcywgY2xhc3NfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIGRyaXZlcl9kYXRhOwp9OwoK
c3RydWN0IHBjaV9kcml2ZXIgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKICAgICAg
ICBjaGFyICpuYW1lOwogICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZF90YWJs
ZTsKICAgICAgICBpbnQgKCpwcm9iZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGNvbnN0IHN0cnVj
dCBwY2lfZGV2aWNlX2lkICppZCk7CiAgICAgICAgdm9pZCAoKnJlbW92ZSkgKHN0cnVjdCBwY2lf
ZGV2ICpkZXYpOwogICAgICAgIGludCAoKnNhdmVfc3RhdGUpIChzdHJ1Y3QgcGNpX2RldiAqZGV2
LCB1MzIgc3RhdGUpOwogICAgICAgIGludCAoKnN1c3BlbmQpKHN0cnVjdCBwY2lfZGV2ICpkZXYs
IHUzMiBzdGF0ZSk7CiAgICAgICAgaW50ICgqcmVzdW1lKSAoc3RydWN0IHBjaV9kZXYgKmRldik7
CiAgICAgICAgaW50ICgqZW5hYmxlX3dha2UpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3Rh
dGUsIGludCBlbmFibGUpOwp9OwojIDQ5NCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcGNpLmgiCnZvaWQgcGNpYmlvc19pbml0KHZvaWQpOwp2b2lkIHBjaWJpb3NfZml4dXBf
YnVzKHN0cnVjdCBwY2lfYnVzICopOwppbnQgcGNpYmlvc19lbmFibGVfZGV2aWNlKHN0cnVjdCBw
Y2lfZGV2ICopOwpjaGFyICpwY2liaW9zX3NldHVwIChjaGFyICpzdHIpOwoKCnZvaWQgcGNpYmlv
c19hbGlnbl9yZXNvdXJjZSh2b2lkICosIHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25n
KTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3Qg
cmVzb3VyY2UgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVzb3VyY2Ug
KiwgaW50KTsKdm9pZCBwY2liaW9zX3VwZGF0ZV9pcnEoc3RydWN0IHBjaV9kZXYgKiwgaW50IGly
cSk7CnZvaWQgcGNpYmlvc19maXh1cF9wYnVzX3JhbmdlcyhzdHJ1Y3QgcGNpX2J1cyAqLCBzdHJ1
Y3QgcGJ1c19zZXRfcmFuZ2VzX2RhdGEgKik7CgoKCmludCBwY2liaW9zX3ByZXNlbnQodm9pZCk7
CmludCBwY2liaW9zX3JlYWRfY29uZmlnX2J5dGUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25l
ZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciB3aGVyZSwgdW5zaWduZWQgY2hhciAqdmFsKTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfd29y
ZCAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHdoZXJlLCB1bnNpZ25lZCBzaG9ydCAqdmFs
KTsKaW50IHBjaWJpb3NfcmVhZF9jb25maWdfZHdvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNp
Z25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgd2hlcmUsIHVuc2lnbmVkIGludCAqdmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmln
X2J5dGUgKHVuc2lnbmVkIGNoYXIgYnVzLCB1bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIGNoYXIg
dmFsKTsKaW50IHBjaWJpb3Nfd3JpdGVfY29uZmlnX3dvcmQgKHVuc2lnbmVkIGNoYXIgYnVzLCB1
bnNpZ25lZCBjaGFyIGRldl9mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVkIHNob3J0IHZhbCk7CmludCBwY2liaW9zX3dyaXRlX2Nv
bmZpZ19kd29yZCAodW5zaWduZWQgY2hhciBidXMsIHVuc2lnbmVkIGNoYXIgZGV2X2ZuLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgd2hlcmUsIHVuc2lnbmVk
IGludCB2YWwpOwppbnQgcGNpYmlvc19maW5kX2NsYXNzICh1bnNpZ25lZCBpbnQgY2xhc3NfY29k
ZSwgdW5zaWduZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywgdW5zaWduZWQgY2hh
ciAqZGV2X2ZuKTsKaW50IHBjaWJpb3NfZmluZF9kZXZpY2UgKHVuc2lnbmVkIHNob3J0IHZlbmRv
ciwgdW5zaWduZWQgc2hvcnQgZGV2X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgaW5kZXgsIHVuc2lnbmVkIGNoYXIgKmJ1cywKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgKmRldl9mbik7CgoKCnZvaWQgcGNpX2luaXQodm9pZCk7CmludCBw
Y2lfYnVzX2V4aXN0cyhjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBpbnQgbnIpOwpzdHJ1
Y3QgcGNpX2J1cyAqcGNpX3NjYW5fYnVzKGludCBidXMsIHN0cnVjdCBwY2lfb3BzICpvcHMsIHZv
aWQgKnN5c2RhdGEpOwpzdHJ1Y3QgcGNpX2J1cyAqcGNpX2FsbG9jX3ByaW1hcnlfYnVzKGludCBi
dXMpOwpzdHJ1Y3QgcGNpX2RldiAqcGNpX3NjYW5fc2xvdChzdHJ1Y3QgcGNpX2RldiAqdGVtcCk7
CmludCBwY2lfcHJvY19hdHRhY2hfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNp
X3Byb2NfZGV0YWNoX2RldmljZShzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2lfbmFtZV9k
ZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CmNoYXIgKnBjaV9jbGFzc19uYW1lKHUzMiBjbGFz
cyk7CnZvaWQgcGNpX3JlYWRfYnJpZGdlX2Jhc2VzKHN0cnVjdCBwY2lfYnVzICpjaGlsZCk7CnN0
cnVjdCByZXNvdXJjZSAqcGNpX2ZpbmRfcGFyZW50X3Jlc291cmNlKGNvbnN0IHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKaW50IHBjaV9zZXR1cF9kZXZpY2Uoc3Ry
dWN0IHBjaV9kZXYgKmRldik7CmludCBwY2lfZ2V0X2ludGVycnVwdF9waW4oc3RydWN0IHBjaV9k
ZXYgKmRldiwgc3RydWN0IHBjaV9kZXYgKipicmlkZ2UpOwoKCgpzdHJ1Y3QgcGNpX2RldiAqcGNp
X2ZpbmRfZGV2aWNlICh1bnNpZ25lZCBpbnQgdmVuZG9yLCB1bnNpZ25lZCBpbnQgZGV2aWNlLCBj
b25zdCBzdHJ1Y3QgcGNpX2RldiAqZnJvbSk7CnN0cnVjdCBwY2lfZGV2ICpwY2lfZmluZF9zdWJz
eXMgKHVuc2lnbmVkIGludCB2ZW5kb3IsIHVuc2lnbmVkIGludCBkZXZpY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzc192ZW5kb3IsIHVuc2lnbmVkIGlu
dCBzc19kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj
dCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYgKnBjaV9maW5kX2NsYXNzICh1bnNpZ25l
ZCBpbnQgY2xhc3MsIGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpmcm9tKTsKc3RydWN0IHBjaV9kZXYg
KnBjaV9maW5kX3Nsb3QgKHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBkZXZmbik7Cmlu
dCBwY2lfZmluZF9jYXBhYmlsaXR5IChzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgY2FwKTsKCmlu
dCBwY2lfcmVhZF9jb25maWdfYnl0ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgd2hlcmUsIHU4
ICp2YWwpOwppbnQgcGNpX3JlYWRfY29uZmlnX3dvcmQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50
IHdoZXJlLCB1MTYgKnZhbCk7CmludCBwY2lfcmVhZF9jb25maWdfZHdvcmQoc3RydWN0IHBjaV9k
ZXYgKmRldiwgaW50IHdoZXJlLCB1MzIgKnZhbCk7CmludCBwY2lfd3JpdGVfY29uZmlnX2J5dGUo
c3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHdoZXJlLCB1OCB2YWwpOwppbnQgcGNpX3dyaXRlX2Nv
bmZpZ193b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTE2IHZhbCk7CmludCBw
Y2lfd3JpdGVfY29uZmlnX2R3b3JkKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCB3aGVyZSwgdTMy
IHZhbCk7CgppbnQgcGNpX2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CnZvaWQg
cGNpX2Rpc2FibGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp2b2lkIHBjaV9zZXRfbWFz
dGVyKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwppbnQgcGNpX3NldF9kbWFfbWFzayhzdHJ1Y3QgcGNp
X2RldiAqZGV2LCBkbWFfYWRkcl90IG1hc2spOwppbnQgcGNpX2Fzc2lnbl9yZXNvdXJjZShzdHJ1
Y3QgcGNpX2RldiAqZGV2LCBpbnQgaSk7CgoKaW50IHBjaV9zYXZlX3N0YXRlKHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBwY2lf
ZGV2ICpkZXYsIHUzMiAqYnVmZmVyKTsKaW50IHBjaV9zZXRfcG93ZXJfc3RhdGUoc3RydWN0IHBj
aV9kZXYgKmRldiwgaW50IHN0YXRlKTsKaW50IHBjaV9lbmFibGVfd2FrZShzdHJ1Y3QgcGNpX2Rl
diAqZGV2LCB1MzIgc3RhdGUsIGludCBlbmFibGUpOwoKCgppbnQgcGNpX2NsYWltX3Jlc291cmNl
KHN0cnVjdCBwY2lfZGV2ICosIGludCk7CnZvaWQgcGNpX2Fzc2lnbl91bmFzc2lnbmVkX3Jlc291
cmNlcyh2b2lkKTsKdm9pZCBwZGV2X2VuYWJsZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKik7CnZv
aWQgcGRldl9zb3J0X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqLCBzdHJ1Y3QgcmVzb3VyY2Vf
bGlzdCAqLCB1MzIpOwp1bnNpZ25lZCBsb25nIHBjaV9icmlkZ2VfY2hlY2tfaW8oc3RydWN0IHBj
aV9kZXYgKik7CnZvaWQgcGNpX2ZpeHVwX2lycXModTggKCopKHN0cnVjdCBwY2lfZGV2ICosIHU4
ICopLAogICAgICAgICAgICAgICAgICAgIGludCAoKikoc3RydWN0IHBjaV9kZXYgKiwgdTgsIHU4
KSk7CgppbnQgcGNpX3JlcXVlc3RfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqLCBjaGFyICopOwp2
b2lkIHBjaV9yZWxlYXNlX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKik7CgoKaW50IHBjaV9yZWdp
c3Rlcl9kcml2ZXIoc3RydWN0IHBjaV9kcml2ZXIgKik7CnZvaWQgcGNpX3VucmVnaXN0ZXJfZHJp
dmVyKHN0cnVjdCBwY2lfZHJpdmVyICopOwp2b2lkIHBjaV9pbnNlcnRfZGV2aWNlKHN0cnVjdCBw
Y2lfZGV2ICosIHN0cnVjdCBwY2lfYnVzICopOwp2b2lkIHBjaV9yZW1vdmVfZGV2aWNlKHN0cnVj
dCBwY2lfZGV2ICopOwpzdHJ1Y3QgcGNpX2RyaXZlciAqcGNpX2Rldl9kcml2ZXIoY29uc3Qgc3Ry
dWN0IHBjaV9kZXYgKik7CmNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfbWF0Y2hfZGV2
aWNlKGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZHMsIGNvbnN0IHN0cnVjdCBwY2lfZGV2
ICpkZXYpOwoKCnN0cnVjdCBwY2lfcG9vbCAqcGNpX3Bvb2xfY3JlYXRlIChjb25zdCBjaGFyICpu
YW1lLCBzdHJ1Y3QgcGNpX2RldiAqZGV2LAogICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIHNp
emVfdCBhbGlnbiwgc2l6ZV90IGFsbG9jYXRpb24sIGludCBmbGFncyk7CnZvaWQgcGNpX3Bvb2xf
ZGVzdHJveSAoc3RydWN0IHBjaV9wb29sICpwb29sKTsKCnZvaWQgKnBjaV9wb29sX2FsbG9jIChz
dHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIGludCBmbGFncywgZG1hX2FkZHJfdCAqaGFuZGxlKTsKdm9p
ZCBwY2lfcG9vbF9mcmVlIChzdHJ1Y3QgcGNpX3Bvb2wgKnBvb2wsIHZvaWQgKnZhZGRyLCBkbWFf
YWRkcl90IGFkZHIpOwoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3BjaS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29u
ZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGNpLmgiIDIK
IyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BjaS5oIgpleHRlcm4gdW5z
aWduZWQgaW50IHBjaWJpb3NfYXNzaWduX2FsbF9idXNzZXModm9pZCk7CgoKCgpleHRlcm4gdW5z
aWduZWQgbG9uZyBwY2lfbWVtX3N0YXJ0OwoKCgp2b2lkIHBjaWJpb3Nfc2V0X21hc3RlcihzdHJ1
Y3QgcGNpX2RldiAqZGV2KTsKdm9pZCBwY2liaW9zX3BlbmFsaXplX2lzYV9pcnEoaW50IGlycSk7
CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAx
CiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDEyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zbGFiLmgiCnR5cGVkZWYgc3RydWN0IGttZW1f
Y2FjaGVfcyBrbWVtX2NhY2hlX3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L21tLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Bh
cmFtLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5o
IiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyBldmVudDsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvYmluZm10cy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvcHRyYWNlLmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcHRyYWNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3B0
cmFjZS5oIiAxCiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wdHJhY2Uu
aCIKc3RydWN0IHB0X3JlZ3MgewogICAgICAgIGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4Owog
ICAgICAgIGxvbmcgZWR4OwogICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAg
ICAgIGxvbmcgZWJwOwogICAgICAgIGxvbmcgZWF4OwogICAgICAgIGludCB4ZHM7CiAgICAgICAg
aW50IHhlczsKICAgICAgICBsb25nIG9yaWdfZWF4OwogICAgICAgIGxvbmcgZWlwOwogICAgICAg
IGludCB4Y3M7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9uZyBlc3A7CiAgICAgICAg
aW50IHhzczsKfTsKIyA2MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3B0cmFj
ZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKik7CiMgMjUgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAyCiMgNSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYmluZm10cy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saW5rYWdlLmgi
IDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxCiMgMTIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvd2FpdC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2xpc3QuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93
YWl0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdGRkZWYu
aCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93YWl0LmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMg
MTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgoKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC93YWl0LmgiIDIKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvd2FpdC5oIgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQg
ZmxhZ3M7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCB0YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUg
d2FpdF9xdWV1ZV90OwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93
YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB7CiAgICAgICAgc3BpbmxvY2tfdCBsb2Nr
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1
Y3QgX193YWl0X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CiMgMTU1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0
X3dhaXRxdWV1ZV9oZWFkKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgogICAgICAgIHEtPmxv
Y2sgPSAoc3BpbmxvY2tfdCkgeyB9OwogICAgICAgIGRvIHsgKCZxLT50YXNrX2xpc3QpLT5uZXh0
ID0gKCZxLT50YXNrX2xpc3QpOyAoJnEtPnRhc2tfbGlzdCktPnByZXYgPSAoJnEtPnRhc2tfbGlz
dCk7IH0gd2hpbGUgKDApOwoKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVl
X2VudHJ5KHdhaXRfcXVldWVfdCAqcSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CgoKCgogICAg
ICAgIHEtPmZsYWdzID0gMDsKICAgICAgICBxLT50YXNrID0gcDsKCgoKfQoKc3RhdGljIGlubGlu
ZSBpbnQgd2FpdHF1ZXVlX2FjdGl2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSkKewoKCgoKCgogICAg
ICAgIHJldHVybiAhbGlzdF9lbXB0eSgmcS0+dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2
b2lkIF9fYWRkX3dhaXRfcXVldWUod2FpdF9xdWV1ZV9oZWFkX3QgKmhlYWQsIHdhaXRfcXVldWVf
dCAqbmV3KQp7CiMgMjAzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93YWl0
LmgiCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsK
fQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVl
X2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L3dhaXQuaCIKICAgICAgICBsaXN0X2FkZF90YWlsKCZuZXctPnRhc2tfbGlz
dCwgJmhlYWQtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV93YWl0
X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfcXVldWVfdCAqb2xkKQp7CgoKCgoK
ICAgICAgICBsaXN0X2RlbCgmb2xkLT50YXNrX2xpc3QpOwp9CiMgMTMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC92ZnMuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zdGF0
ZnMuaCIgMQoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlw
ZXMuaCIgMQojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIg
MgoKdHlwZWRlZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZzIHsKICAg
ICAgICBsb25nIGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9uZyBmX2Js
b2NrczsKICAgICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsKICAgICAg
ICBsb25nIGZfZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2VybmVsX2Zz
aWRfdCBmX2ZzaWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBmX3NwYXJl
WzZdOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Zmcy5oIiAy
CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXQuaCIgMQojIDIxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXQuaCIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9uZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3NvY2tldC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9hc20vc29ja2V0LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vc29ja2lvcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3NvY2tldC5oIiAyCiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc29j
a2V0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zb2NraW9z
LmgiIDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc29ja2lvcy5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zb2NraW9zLmgiIDEKIyAy
MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc29ja2lvcy5oIiAyCiMgOCAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC91aW8uaCIgMQoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC91aW8uaCIgMgojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC91aW8uaCIKc3RydWN0IGlvdmVjCnsKICAgICAgICB2b2lkICppb3Zf
YmFzZTsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgaW92X2xlbjsKfTsKIyA5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zb2NrZXQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDIKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgc2Ff
ZmFtaWx5X3Q7CgoKCgoKc3RydWN0IHNvY2thZGRyIHsKICAgICAgICBzYV9mYW1pbHlfdCBzYV9m
YW1pbHk7CiAgICAgICAgY2hhciBzYV9kYXRhWzE0XTsKfTsKCnN0cnVjdCBsaW5nZXIgewogICAg
ICAgIGludCBsX29ub2ZmOwogICAgICAgIGludCBsX2xpbmdlcjsKfTsKCgoKCgoKCnN0cnVjdCBt
c2doZHIgewogICAgICAgIHZvaWQgKiBtc2dfbmFtZTsKICAgICAgICBpbnQgbXNnX25hbWVsZW47
CiAgICAgICAgc3RydWN0IGlvdmVjICogbXNnX2lvdjsKICAgICAgICBfX2tlcm5lbF9zaXplX3Qg
bXNnX2lvdmxlbjsKICAgICAgICB2b2lkICogbXNnX2NvbnRyb2w7CiAgICAgICAgX19rZXJuZWxf
c2l6ZV90IG1zZ19jb250cm9sbGVuOwogICAgICAgIHVuc2lnbmVkIG1zZ19mbGFnczsKfTsKCgoK
CgoKCnN0cnVjdCBjbXNnaGRyIHsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgY21zZ19sZW47CiAg
ICAgICAgaW50IGNtc2dfbGV2ZWw7CiAgICAgICAgaW50IGNtc2dfdHlwZTsKfTsKIyAxMDIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5l
IHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6
ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0
cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikg
X19jbXNnKSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVv
Zihsb25nKS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIr
MSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0
cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5l
IHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1
Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ct
Pm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0
cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAg
ICBfX3UzMiBnaWQ7Cn07CiMgMjQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9zb2NrZXQuaCIKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjKHVuc2lnbmVkIGNoYXIgKmtk
YXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGxlbik7CmV4dGVybiBpbnQgbWVtY3B5X2Zyb21p
b3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0YSwgc3RydWN0IGlvdmVjICppb3YsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwgaW50IGxlbik7CmV4dGVybiBpbnQg
Y3N1bV9wYXJ0aWFsX2NvcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIgKmtkYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKmlvdiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbiwg
aW50ICpjc3VtcCk7CgpleHRlcm4gaW50IHZlcmlmeV9pb3ZlYyhzdHJ1Y3QgbXNnaGRyICptLCBz
dHJ1Y3QgaW92ZWMgKmlvdiwgY2hhciAqYWRkcmVzcywgaW50IG1vZGUpOwpleHRlcm4gaW50IG1l
bWNweV90b2lvdmVjKHN0cnVjdCBpb3ZlYyAqdiwgdW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBs
ZW4pOwpleHRlcm4gdm9pZCBtZW1jcHlfdG9rZXJuZWxpb3ZlYyhzdHJ1Y3QgaW92ZWMgKmlvdiwg
dW5zaWduZWQgY2hhciAqa2RhdGEsIGludCBsZW4pOwpleHRlcm4gaW50IG1vdmVfYWRkcl90b191
c2VyKHZvaWQgKmthZGRyLCBpbnQga2xlbiwgdm9pZCAqdWFkZHIsIGludCAqdWxlbik7CmV4dGVy
biBpbnQgbW92ZV9hZGRyX3RvX2tlcm5lbCh2b2lkICp1YWRkciwgaW50IHVsZW4sIHZvaWQgKmth
ZGRyKTsKZXh0ZXJuIGludCBwdXRfY21zZyhzdHJ1Y3QgbXNnaGRyKiwgaW50IGxldmVsLCBpbnQg
dHlwZSwgaW50IGxlbiwgdm9pZCAqZGF0YSk7CiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L25ldC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvd2FpdC5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L25ldC5oIiAyCgpzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CiMgNDkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldC5oIgp0eXBlZGVmIGVudW0gewogIFNTX0ZSRUUgPSAw
LAogIFNTX1VOQ09OTkVDVEVELAogIFNTX0NPTk5FQ1RJTkcsCiAgU1NfQ09OTkVDVEVELAogIFNT
X0RJU0NPTk5FQ1RJTkcKfSBzb2NrZXRfc3RhdGU7CiMgNjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L25ldC5oIgpzdHJ1Y3Qgc29ja2V0CnsKICAgICAgICBzb2NrZXRfc3Rh
dGUgc3RhdGU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHBy
b3RvX29wcyAqb3BzOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGU7CiAgICAgICAgc3RydWN0
IGZhc3luY19zdHJ1Y3QgKmZhc3luY19saXN0OwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOwog
ICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoK
ICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcGFzc2NyZWQ7Cn07CgoK
CnN0cnVjdCBzY21fY29va2llOwpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CnN0cnVjdCBwYWdlOwoK
c3RydWN0IHByb3RvX29wcyB7CiAgaW50IGZhbWlseTsKCiAgaW50ICgqcmVsZWFzZSkgKHN0cnVj
dCBzb2NrZXQgKnNvY2spOwogIGludCAoKmJpbmQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1
Y3Qgc29ja2FkZHIgKnVteWFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2Fk
ZHJfbGVuKTsKICBpbnQgKCpjb25uZWN0KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNv
Y2thZGRyICp1c2VydmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc29ja2FkZHJf
bGVuLCBpbnQgZmxhZ3MpOwogIGludCAoKnNvY2tldHBhaXIpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
MSwgc3RydWN0IHNvY2tldCAqc29jazIpOwogIGludCAoKmFjY2VwdCkgKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZmxhZ3MpOwogIGludCAoKmdldG5hbWUpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg
c29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp1c29ja2FkZHJf
bGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50ICgqcG9sbCkgKHN0cnVjdCBmaWxlICpmaWxl
LCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwog
IGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAqc29jaywgdW5zaWduZWQgaW50IGNtZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4p
IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVuKTsKICBpbnQgKCpzaHV0ZG93bikgKHN0cnVj
dCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAgaW50ICgqc2V0c29ja29wdCkgKHN0cnVjdCBz
b2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4pOwogIGludCAoKmdldHNvY2tvcHQpIChzdHJ1
Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9wdGxlbik7CiAgaW50ICgqc2VuZG1zZykgKHN0
cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm0sIGludCB0b3RhbF9sZW4sIHN0cnVj
dCBzY21fY29va2llICpzY20pOwogIGludCAoKnJlY3Ztc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2Nr
LCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21f
Y29va2llICpzY20pOwogIGludCAoKm1tYXApIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNv
Y2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hKTsKICBzc2l6ZV90ICgqc2Vu
ZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNl
dCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7
CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQg
KnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAg
ICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3Ry
dWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICgq
aW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2Vf
YXN5bmMoc3RydWN0IHNvY2tldCAqc2ssIGludCBob3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBz
b2NrX3JlZ2lzdGVyKHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNv
Y2tfdW5yZWdpc3RlcihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxs
b2Modm9pZCk7CmV4dGVybiBpbnQgc29ja19jcmVhdGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGlu
dCBwcm90bywgc3RydWN0IHNvY2tldCAqKik7CmV4dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1
Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0
cnVjdCBtc2doZHIgKm0sIGludCBsZW4pOwpleHRlcm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qg
c29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGludCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBp
bnQgc29ja19yZWFkdl93cml0ZXYoaW50IHR5cGUsIHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1
Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dHJ1Y3QgaW92ZWMgKiBpb3YsIGxvbmcgY291bnQsIGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5l
dF9yYXRlbGltaXQodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7
CmV4dGVybiB2b2lkIG5ldF9zcmFuZG9tKHVuc2lnbmVkIGxvbmcpOwojIDE2ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgva2Rldl90LmgiIDEKIyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgva2Rldl90LmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rldl90Owoj
IDc2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIKZXh0ZXJu
IGNvbnN0IGNoYXIgKiBrZGV2bmFtZShrZGV2X3QpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBrZGV2X3RfdG9fbnIoa2Rldl90IGRldikgewogICAgICAgIHJldHVybiAoKCh1bnNp
Z25lZCBpbnQpICgoZGV2KSA+PiA4KSk8PDgpIHwgKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgo
MVUgPDwgOCkgLSAxKSkpOwp9CgpzdGF0aWMgaW5saW5lIGtkZXZfdCB0b19rZGV2X3QoaW50IGRl
dikKewogICAgICAgIGludCBtYWpvciwgbWlub3I7CiMgOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgogICAgICAgIG1ham9yID0gKGRldiA+PiA4KTsKICAg
ICAgICBtaW5vciA9IChkZXYgJiAweGZmKTsKCiAgICAgICAgcmV0dXJuICgoKG1ham9yKSA8PCA4
KSB8IChtaW5vcikpOwp9CiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pb2N0bC5o
IiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2lvY3RsLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pb2N0bC5oIiAyCiMgMTgg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9kY2FjaGUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L21vdW50LmgiIDEKIyAxOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbW91bnQuaCIKc3RydWN0IHZmc21vdW50CnsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1u
dF9oYXNoOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50X3BhcmVudDsKICAgICAgICBzdHJ1
Y3QgZGVudHJ5ICptbnRfbW91bnRwb2ludDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICptbnRfcm9v
dDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKm1udF9zYjsKICAgICAgICBzdHJ1Y3QgbGlz
dF9oZWFkIG1udF9tb3VudHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfY2hpbGQ7CiAg
ICAgICAgYXRvbWljX3QgbW50X2NvdW50OwogICAgICAgIGludCBtbnRfZmxhZ3M7CiAgICAgICAg
Y2hhciAqbW50X2Rldm5hbWU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfbGlzdDsKfTsK
CnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQoc3RydWN0IHZmc21vdW50ICpt
bnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAgYXRvbWljX2luYygmbW50LT5t
bnRfY291bnQpOwogICAgICAgIHJldHVybiBtbnQ7Cn0KCmV4dGVybiB2b2lkIF9fbW50cHV0KHN0
cnVjdCB2ZnNtb3VudCAqbW50KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZm
c21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KSB7CiAgICAgICAgICAgICAgICBpZiAoYXRv
bWljX2RlY19hbmRfdGVzdCgmbW50LT5tbnRfY291bnQpKQogICAgICAgICAgICAgICAgICAgICAg
ICBfX21udHB1dChtbnQpOwogICAgICAgIH0KfQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2RjYWNoZS5oIgpzdHJ1Y3QgcXN0ciB7CiAgICAgICAgY29uc3QgdW5zaWduZWQg
Y2hhciAqIG5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsKICAgICAgICB1bnNpZ25lZCBp
bnQgaGFzaDsKfTsKCnN0cnVjdCBkZW50cnlfc3RhdF90IHsKICAgICAgICBpbnQgbnJfZGVudHJ5
OwogICAgICAgIGludCBucl91bnVzZWQ7CiAgICAgICAgaW50IGFnZV9saW1pdDsKICAgICAgICBp
bnQgd2FudF9wYWdlczsKICAgICAgICBpbnQgZHVtbXlbMl07Cn07CmV4dGVybiBzdHJ1Y3QgZGVu
dHJ5X3N0YXRfdCBkZW50cnlfc3RhdDsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQg
bG9uZyBwYXJ0aWFsX25hbWVfaGFzaCh1bnNpZ25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJl
dmhhc2gpCnsKICAgICAgICByZXR1cm4gKHByZXZoYXNoICsgKGMgPDwgNCkgKyAoYyA+PiA0KSkg
KiAxMTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcgZW5kX25hbWVfaGFzaCh1
bnNpZ25lZCBsb25nIGhhc2gpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgaGFzaDsK
fQoKCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGludCBmdWxsX25hbWVfaGFzaChjb25zdCB1
bnNpZ25lZCBjaGFyICogbmFtZSwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVk
IGxvbmcgaGFzaCA9IDA7CiAgICAgICAgd2hpbGUgKGxlbi0tKQogICAgICAgICAgICAgICAgaGFz
aCA9IHBhcnRpYWxfbmFtZV9oYXNoKCpuYW1lKyssIGhhc2gpOwogICAgICAgIHJldHVybiBlbmRf
bmFtZV9oYXNoKGhhc2gpOwp9CgoKCnN0cnVjdCBkZW50cnkgewogICAgICAgIGF0b21pY190IGRf
Y291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGRfZmxhZ3M7CiAgICAgICAgc3RydWN0IGlub2Rl
ICogZF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogZF9wYXJlbnQ7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBkX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2xydTsKICAg
ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBk
X3N1YmRpcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2FsaWFzOwogICAgICAgIGludCBk
X21vdW50ZWQ7CiAgICAgICAgc3RydWN0IHFzdHIgZF9uYW1lOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZF90aW1lOwogICAgICAgIHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9vcDsKICAgICAg
ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiBkX3NiOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZF92ZnNf
ZmxhZ3M7CiAgICAgICAgdm9pZCAqIGRfZnNkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9p
bmFtZVsxNl07Cn07CgpzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmRf
cmV2YWxpZGF0ZSkoc3RydWN0IGRlbnRyeSAqLCBpbnQpOwogICAgICAgIGludCAoKmRfaGFzaCkg
KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9jb21wYXJl
KSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAg
ICBpbnQgKCpkX2RlbGV0ZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9yZWxl
YXNlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBkZW50
cnkgKiwgc3RydWN0IGlub2RlICopOwp9OwojIDEyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZGNhY2hlLmgiCmV4dGVybiBzcGlubG9ja190IGRjYWNoZV9sb2NrOwojIDE0
NiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBf
X2lubGluZV9fIHZvaWQgZF9kcm9wKHN0cnVjdCBkZW50cnkgKiBkZW50cnkpCnsKICAgICAgICAo
dm9pZCkoJmRjYWNoZV9sb2NrKTsKICAgICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwog
ICAgICAgIGRvIHsgKCZkZW50cnktPmRfaGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsg
KCZkZW50cnktPmRfaGFzaCktPnByZXYgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7
CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZG5hbWVf
ZXh0ZXJuYWwoc3RydWN0IGRlbnRyeSAqZCkKewogICAgICAgIHJldHVybiBkLT5kX25hbWUubmFt
ZSAhPSBkLT5kX2luYW1lOwp9CgoKCgpleHRlcm4gdm9pZCBkX2luc3RhbnRpYXRlKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX2RlbGV0ZShzdHJ1Y3QgZGVu
dHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvYyhzdHJ1Y3QgZGVudHJ5ICos
IGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3NiKHN0cnVj
dCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9wYXJlbnQoc3RydWN0
IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKCgpz
dHJ1Y3Qgem9uZV9zdHJ1Y3Q7CgpleHRlcm4gaW50IHNocmlua19kY2FjaGVfbWVtb3J5KGludCwg
dW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoKZXh0ZXJuIGlu
dCBzaHJpbmtfaWNhY2hlX21lbW9yeShpbnQsIGludCk7CmV4dGVybiB2b2lkIHBydW5lX2ljYWNo
ZShpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2RxY2FjaGVfbWVtb3J5KGludCwgdW5zaWduZWQg
aW50KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUg
Kik7CgoKZXh0ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0
cnVjdCBkZW50cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRf
cHJ1bmVfYWxpYXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50
cyhzdHJ1Y3QgZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZvaWQgZF9yZWhhc2goc3RydWN0IGRlbnRy
eSAqKTsKIyAyMTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o
IgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGRfYWRkKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3Ry
dWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICBkX2luc3RhbnRpYXRlKGVudHJ5LCBpbm9kZSk7
CiAgICAgICAgZF9yZWhhc2goZW50cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlKHN0cnVjdCBk
ZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9v
a3VwKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlk
YXRlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19k
X3BhdGgoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAq
LAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqLCBjaGFyICosIGludCk7CiMgMjQzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18g
c3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYg
KGRlbnRyeSkgewogICAgICAgICAgICAgICAgaWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3Vu
dGVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRl
IDB4MGYsMHgwYiIpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVudHJ5LT5kX2NvdW50
KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0cnVjdCBkZW50
cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MiAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBkX3Vu
aGFzaGVkKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVybiBsaXN0X2VtcHR5
KCZkZW50cnktPmRfaGFzaCk7Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0IGRlbnRyeSAqKTsK
CnN0YXRpYyBfX2lubGluZV9fIGludCBkX21vdW50cG9pbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5
KQp7CiAgICAgICAgcmV0dXJuIGRlbnRyeS0+ZF9tb3VudGVkOwp9CgpleHRlcm4gc3RydWN0IHZm
c21vdW50ICpsb29rdXBfbW50KHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoj
IDIwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc3RhdC5oIiAxCgoKCnN0cnVjdCBfX29sZF9r
ZXJuZWxfc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2ln
bmVkIHNob3J0IHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3VpZDsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf
cmRldjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzdF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgc3RfY3RpbWU7Cn07CgpzdHJ1Y3Qgc3RhdCB7CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9tb2RlOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X3VpZDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfcmRl
djsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxrc2l6ZTsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHN0X2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25l
ZCBsb25nIF9fdW51c2VkNDsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNTsKfTsKCgoK
CnN0cnVjdCBzdGF0NjQgewogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2RldjsKICAgICAgICB1
bnNpZ25lZCBjaGFyIF9fcGFkMFsxMF07CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9fc3RfaW5v
OwoKICAgICAgICB1bnNpZ25lZCBpbnQgc3RfbW9kZTsKICAgICAgICB1bnNpZ25lZCBpbnQgc3Rf
bmxpbms7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgc3RfZ2lkOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2ln
bmVkIGNoYXIgX19wYWQzWzEwXTsKCiAgICAgICAgbG9uZyBsb25nIHN0X3NpemU7CiAgICAgICAg
dW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2Jsb2Nr
czsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBz
dF9hdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNTsKCiAgICAgICAgdW5zaWduZWQg
bG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNjsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBzdF9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fcGFkNzsKCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X2lubzsKfTsKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9zdGF0LmgiIDIKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2NhY2hlLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5o
IiAxCiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQoKCgoKCgoK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgOSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQojIDEwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKCgoKCmV4dGVybiBjaGFy
ICogX19fc3RydG9rOwpleHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNo
YXIgKik7CmV4dGVybiBjaGFyICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4g
Y2hhciAqIHN0cnNlcChjaGFyICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXpl
X3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvYXNtL3N0cmluZy5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvYXNtL3N0cmluZy5oIiAyCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSBjaGFyICogc3RyY3B5KGNoYXIg
KiBkZXN0LGNvbnN0IGNoYXIgKnNyYykKewppbnQgZDAsIGQxLCBkMjsKX19hc21fXyBfX3ZvbGF0
aWxlX18oCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgInN0b3NiXG5cdCIKICAgICAg
ICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiIgogICAgICAgIDogIj0mUyIg
KGQwKSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0
KSA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBzdHJu
Y3B5KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIgKnNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBk
MSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGRlY2wgJTJcblx0
IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAgICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jc
blx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0Igog
ICAgICAgICJyZXBcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAgICAgICA6
ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmMiIChkMiksICI9JmEiIChkMykKICAgICAgICA6
IjAiIChzcmMpLCIxIiAoZGVzdCksIjIiIChjb3VudCkgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0
Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3RyY2F0KGNoYXIgKiBkZXN0LGNvbnN0IGNoYXIg
KiBzcmMpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRlY2wgJTFcbiIKICAg
ICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAl
JWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZE
IiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIgKHNyYyksICIxIiAo
ZGVzdCksICIyIiAoMCksICIzIiAoMHhmZmZmZmZmZik6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsK
fQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cm5jYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAq
IHNyYyxzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMSwgZDIsIGQzOwpfX2FzbV9fIF9fdm9sYXRp
bGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImRl
Y2wgJTFcblx0IgogICAgICAgICJtb3ZsICU4LCUzXG4iCiAgICAgICAgIjE6XHRkZWNsICUzXG5c
dCIKICAgICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInN0b3Ni
XG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG4iCiAg
ICAgICAgIjI6XHR4b3JsICUyLCUyXG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZT
IiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIpLCAiPSZjIiAoZDMpCiAgICAgICAgOiAiMCIg
KHNyYyksIjEiIChkZXN0KSwiMiIgKDApLCIzIiAoMHhmZmZmZmZmZiksICJnIiAoY291bnQpCiAg
ICAgICAgOiAibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBpbnQgc3Ry
Y21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3QpCnsKaW50IGQwLCBkMTsKcmVnaXN0
ZXIgaW50IF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5c
dCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJ0ZXN0
YiAlJWFsLCUlYWxcblx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJ4b3JsICUlZWF4
LCUlZWF4XG5cdCIKICAgICAgICAiam1wIDNmXG4iCiAgICAgICAgIjI6XHRzYmJsICUlZWF4LCUl
ZWF4XG5cdCIKICAgICAgICAib3JiICQxLCUlYWxcbiIKICAgICAgICAiMzoiCiAgICAgICAgOiI9
YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSwgIj0mRCIgKGQxKQogICAgICAgICAgICAgICAgICAgICA6
IjEiIChjcyksIjIiIChjdCkpOwpyZXR1cm4gX19yZXM7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBz
dHJuY21wKGNvbnN0IGNoYXIgKiBjcyxjb25zdCBjaGFyICogY3Qsc2l6ZV90IGNvdW50KQp7CnJl
Z2lzdGVyIGludCBfX3JlczsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICIxOlx0ZGVjbCAlM1xuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAibG9k
c2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImpuZSAzZlxuXHQiCiAgICAgICAg
InRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIyOlx0eG9y
bCAlJWVheCwlJWVheFxuXHQiCiAgICAgICAgImptcCA0ZlxuIgogICAgICAgICIzOlx0c2JibCAl
JWVheCwlJWVheFxuXHQiCiAgICAgICAgIm9yYiAkMSwlJWFsXG4iCiAgICAgICAgIjQ6IgogICAg
ICAgICAgICAgICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAi
PSZjIiAoZDIpCiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSwiMyIgKGNv
dW50KSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cmNocihjb25z
dCBjaGFyICogcywgaW50IGMpCnsKaW50IGQwOwpyZWdpc3RlciBjaGFyICogX19yZXM7Cl9fYXNt
X18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZiICUlYWwsJSVhaFxuIgogICAgICAgICIxOlx0
bG9kc2Jcblx0IgogICAgICAgICJjbXBiICUlYWgsJSVhbFxuXHQiCiAgICAgICAgImplIDJmXG5c
dCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5lIDFiXG5cdCIKICAg
ICAgICAibW92bCAkMSwlMVxuIgogICAgICAgICIyOlx0bW92bCAlMSwlMFxuXHQiCiAgICAgICAg
ImRlY2wgJTAiCiAgICAgICAgOiI9YSIgKF9fcmVzKSwgIj0mUyIgKGQwKSA6ICIxIiAocyksIjAi
IChjKSk7CnJldHVybiBfX3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cnJjaHIoY29u
c3QgY2hhciAqIHMsIGludCBjKQp7CmludCBkMCwgZDE7CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsK
X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1vdmIgJSVhbCwlJWFoXG4iCiAgICAgICAg
IjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVhaCwlJWFsXG5cdCIKICAgICAgICAiam5l
IDJmXG5cdCIKICAgICAgICAibGVhbCAtMSglJWVzaSksJTBcbiIKICAgICAgICAiMjpcdHRlc3Ri
ICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAxYiIKICAgICAgICA6Ij1nIiAoX19yZXMpLCAi
PSZTIiAoZDApLCAiPSZhIiAoZDEpIDoiMCIgKDApLCIxIiAocyksIjIiIChjKSk7CnJldHVybiBf
X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICogcykKewpp
bnQgZDA7CnJlZ2lzdGVyIGludCBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
InJlcG5lXG5cdCIKICAgICAgICAic2Nhc2Jcblx0IgogICAgICAgICJub3RsICUwXG5cdCIKICAg
ICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1jIiAoX19yZXMpLCAiPSZEIiAoZDApIDoiMSIgKHMp
LCJhIiAoMCksICIwIiAoMHhmZmZmZmZmZikpOwpyZXR1cm4gX19yZXM7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCAqIF9fbWVtY3B5KHZvaWQgKiB0bywgY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBu
KQp7CmludCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwIDsg
bW92c2xcblx0IgogICAgICAgICJ0ZXN0YiAkMiwlYjRcblx0IgogICAgICAgICJqZSAxZlxuXHQi
CiAgICAgICAgIm1vdnN3XG4iCiAgICAgICAgIjE6XHR0ZXN0YiAkMSwlYjRcblx0IgogICAgICAg
ICJqZSAyZlxuXHQiCiAgICAgICAgIm1vdnNiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0m
YyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKQogICAgICAgIDoiMCIgKG4vNCksICJxIiAo
biksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcpIGZyb20pCiAgICAgICAgOiAibWVtb3J5Iik7
CnJldHVybiAodG8pOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9tZW1j
cHkodm9pZCAqIHRvLCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKICAgICAgICBzd2l0
Y2ggKG4pIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAg
ICAqKHVuc2lnbmVkIGNoYXIgKil0byA9ICooY29uc3QgdW5zaWduZWQgY2hhciAqKWZyb207CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBzaG9ydCAqKXRvID0gKihjb25zdCB1
bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0bzsK
ICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25l
ZCBzaG9ydCAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBzaG9ydCAqKWZyb207CiAgICAgICAgICAg
ICAgICAgICAgICAgICooMisodW5zaWduZWQgY2hhciAqKXRvKSA9ICooMisoY29uc3QgdW5zaWdu
ZWQgY2hhciAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAg
ICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9u
ZyAqKXRvID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAg
ICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZy
b207CiAgICAgICAgICAgICAgICAgICAgICAgICooMisodW5zaWduZWQgc2hvcnQgKil0bykgPSAq
KDIrKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAg
ICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwog
ICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNv
bnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRvOwogICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1
bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAg
ICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVu
c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25l
ZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRvID0gKihjb25zdCB1bnNpZ25l
ZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigxKyh1bnNpZ25lZCBsb25n
ICopdG8pID0gKigxKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICooMisodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQg
bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDMrKHVuc2lnbmVkIGxvbmcg
Kil0bykgPSAqKDMrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAg
ICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcg
Kilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykg
PSAqKDErKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgKigyKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICop
ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9
ICooMysoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAg
ICAqKDQrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDQrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilm
cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgIH0KCgoKCgoK
CnsKICAgICAgICBpbnQgZDAsIGQxLCBkMjsKICAgICAgICBzd2l0Y2ggKG4gJSA0KSB7CiAgICAg
ICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICIi
IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80KSwiMSIgKChs
b25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4gdG87CiAgICAg
ICAgICAgICAgICBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJc
blx0bW92c2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80
KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4g
dG87CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsg
bW92c2wiICJcblx0bW92c3ciIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6
ICIwIiAobi80KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7
OyByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVf
XyggInJlcCA7IG1vdnNsIiAiXG5cdG1vdnN3XG5cdG1vdnNiIiA6ICI9JmMiIChkMCksICI9JkQi
IChkMSksICI9JlMiIChkMikgOiAiMCIgKG4vNCksIjEiICgobG9uZykgdG8pLCIyIiAoKGxvbmcp
IGZyb20pIDogIm1lbW9yeSIpOzsgcmV0dXJuIHRvOwogICAgICAgIH0KfQoKCn0KCgoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9tbXguaCIgMQojIDI5MSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3N0cmluZy5oIiAyCgoKCgoKc3RhdGljIGlubGlu
ZSB2b2lkICogX19jb25zdGFudF9tZW1jcHkzZCh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBmcm9t
LCBzaXplX3QgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA8IDUxMikKICAgICAgICAgICAgICAgIHJl
dHVybiBfX2NvbnN0YW50X21lbWNweSh0bywgZnJvbSwgbGVuKTsKICAgICAgICByZXR1cm4gX21t
eF9tZW1jcHkodG8sIGZyb20sIGxlbik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgKl9fbWVt
Y3B5M2Qodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBsZW4pCnsKICAgICAgICBp
ZiAobGVuIDwgNTEyKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fbWVtY3B5KHRvLCBmcm9tLCBs
ZW4pOwogICAgICAgIHJldHVybiBfbW14X21lbWNweSh0bywgZnJvbSwgbGVuKTsKfQojIDMzNSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3N0cmluZy5oIgpleHRlcm4gdm9pZCBf
X3N0cnVjdF9jcHlfYnVnICh2b2lkKTsKIyAzNDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVtbW92ZSh2b2lkICogZGVz
dCxjb25zdCB2b2lkICogc3JjLCBzaXplX3QgbikKewppbnQgZDAsIGQxLCBkMjsKaWYgKGRlc3Q8
c3JjKQpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwXG5cdCIKICAgICAgICAibW92
c2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAg
OiIwIiAobiksIjEiIChzcmMpLCIyIiAoZGVzdCkKICAgICAgICA6ICJtZW1vcnkiKTsKZWxzZQpf
X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAic3RkXG5cdCIKICAgICAgICAicmVwXG5cdCIK
ICAgICAgICAibW92c2Jcblx0IgogICAgICAgICJjbGQiCiAgICAgICAgOiAiPSZjIiAoZDApLCAi
PSZTIiAoZDEpLCAiPSZEIiAoZDIpCiAgICAgICAgOiIwIiAobiksCiAgICAgICAgICIxIiAobi0x
Kyhjb25zdCBjaGFyICopc3JjKSwKICAgICAgICAgIjIiIChuLTErKGNoYXIgKilkZXN0KQogICAg
ICAgIDoibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBt
ZW1jaHIoY29uc3Qgdm9pZCAqIGNzLGludCBjLHNpemVfdCBjb3VudCkKewppbnQgZDA7CnJlZ2lz
dGVyIHZvaWQgKiBfX3JlczsKaWYgKCFjb3VudCkKICAgICAgICByZXR1cm4gKCh2b2lkICopMCk7
Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNi
XG5cdCIKICAgICAgICAiamUgMWZcblx0IgogICAgICAgICJtb3ZsICQxLCUwXG4iCiAgICAgICAg
IjE6XHRkZWNsICUwIgogICAgICAgIDoiPUQiIChfX3JlcyksICI9JmMiIChkMCkgOiAiYSIgKGMp
LCIwIiAoY3MpLCIxIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgKiBfX21lbXNldF9nZW5lcmljKHZvaWQgKiBzLCBjaGFyIGMsc2l6ZV90IGNvdW50KQp7Cmlu
dCBkMCwgZDE7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBcblx0IgogICAgICAg
ICJzdG9zYiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChj
KSwiMSIgKHMpLCIwIiAoY291bnQpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0dXJuIHM7Cn0KIyA0
MDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlu
bGluZSB2b2lkICogX19jb25zdGFudF9jX21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBj
LCBzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg
ICAgInJlcCA7IHN0b3NsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWIzXG5cdCIKICAgICAgICAi
amUgMWZcblx0IgogICAgICAgICJzdG9zd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEsJWIzXG5c
dCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIyOiIKICAg
ICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwgInEiIChjb3Vu
dCksICIwIiAoY291bnQvNCksICIxIiAoKGxvbmcpIHMpCiAgICAgICAgOiJtZW1vcnkiKTsKcmV0
dXJuIChzKTsKfQoKCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKiBz
LCBzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICJtb3ZsICUyLCUwXG5cdCIKICAgICAgICAiam1wIDJmXG4iCiAg
ICAgICAgIjE6XHRjbXBiICQwLCglMClcblx0IgogICAgICAgICJqZSAzZlxuXHQiCiAgICAgICAg
ImluY2wgJTBcbiIKICAgICAgICAiMjpcdGRlY2wgJTFcblx0IgogICAgICAgICJjbXBsICQtMSwl
MVxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIzOlx0c3VibCAlMiwlMCIKICAgICAg
ICA6Ij1hIiAoX19yZXMpLCAiPSZkIiAoZDApCiAgICAgICAgOiJjIiAocyksIjEiIChjb3VudCkp
OwpyZXR1cm4gX19yZXM7Cn0KCgoKCmV4dGVybiBjaGFyICpzdHJzdHIoY29uc3QgY2hhciAqY3Ms
IGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X2Nf
YW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBwYXR0ZXJuLCBzaXplX3Qg
Y291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgICAgICAgICBjYXNlIDA6
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgY2FzZSAx
OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKilzID0gcGF0dGVybjsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6
CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDM6
CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0dGVybjsK
ICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopcykgPSBwYXR0ZXJu
OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAgIGNhc2Ug
NDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopcyA9IHBhdHRlcm47
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH0KCgoKCgoKCnsKICAg
ICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAoY291bnQgJSA0KSB7CiAgICAgICAgICAg
ICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICIiIDogIj0m
YyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChs
b25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDE6IF9f
YXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc2IiIDogIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBz
KSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9fYXNtX18g
X192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3ciIDogIj0mYyIgKGQwKSwgIj0m
RCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBzKSA6ICJt
ZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9fIF9fdm9s
YXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9JmMiIChkMCks
ICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9uZykgcykg
OiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0KfQoKCn0KIyA1MTUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3RhdGljIGlubGluZSB2b2lkICogbWVt
c2Nhbih2b2lkICogYWRkciwgaW50IGMsIHNpemVfdCBzaXplKQp7CiAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgICAgcmV0dXJuIGFkZHI7CiAgICAgICAgX19hc21fXygicmVwbno7IHNj
YXNiXG5cdCIKICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAgICAgImRl
YyAlJWVkaVxuIgogICAgICAgICAgICAgICAgIjE6IgogICAgICAgICAgICAgICAgOiAiPUQiIChh
ZGRyKSwgIj1jIiAoc2l6ZSkKICAgICAgICAgICAgICAgIDogIjAiIChhZGRyKSwgIjEiIChzaXpl
KSwgImEiIChjKSk7CiAgICAgICAgcmV0dXJuIGFkZHI7Cn0KIyAyNiAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKIyA0NiAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXAoY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gaW50IF9fYnVpbHRpbl9tZW1j
bXAoY29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwojIDI0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL2JpdG9wcy5oIiAyCiMgMzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2Fz
bS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9sYXRp
bGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAg
ICAgICAgICAgICJidHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxl
IGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDUzICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9f
IHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBf
X2FzbV9fKAogICAgICAgICAgICAgICAgImJ0c2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1t
IiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikp
Owp9CiMgNzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh
dGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk
cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAgImJ0
cmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy
KSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgOTAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192
b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTEsJTAiCiAgICAgICAgICAgICAgICA6
Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChu
cikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYml0b3BzLmgi
CnN0YXRpYyBfX2lubGluZV9fIHZvaWQgY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg
KiBhZGRyKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICIiCiAgICAgICAgICAgICAg
ICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPW0iICgoKih2b2xhdGlsZSBsb25nICop
IGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRl
c3RfYW5kX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu
dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAg
ICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRi
aXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6Ikly
IiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g
aW50IF9fdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg
ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHNs
ICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0i
ICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7
CiAgICAgICAgcmV0dXJuIG9sZGJpdDsKfQojIDE2MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJf
Yml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoK
ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIKICAgICAgICAgICAgICAgICJidHJsICUy
LCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgo
Kih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSA6ICJt
ZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTgyICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3Rf
YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50
IG9sZGJpdDsKCiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJidHJsICUyLCUxXG5c
dHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0KSwiPW0iICgoKih2b2xh
dGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5yKSk7CiAgICAgICAg
cmV0dXJuIG9sZGJpdDsKfQoKCnN0YXRpYyBfX2lubGluZV9fIGludCBfX3Rlc3RfYW5kX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBvbGRiaXQ7
CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wgJTIs
JTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgq
KHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1l
bW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMTMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3RfYW5k
X2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGludCBv
bGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiIgogICAgICAgICAgICAgICAg
ImJ0Y2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQp
LCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo
bnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAyMzMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50
IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsK
ICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9f
IGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAg
ICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg
ICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAo
b2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSks
IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5k
X2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaW50
IGQwLCBkMSwgZDI7CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg
ICAgICAgICAgIm1vdmwgJC0xLCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUlZWR4
LCUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJyZXBlOyBzY2FzbFxuXHQiCiAgICAgICAgICAg
ICAgICAiamUgMWZcblx0IgogICAgICAgICAgICAgICAgInhvcmwgLTQoJSVlZGkpLCUlZWF4XG5c
dCIKICAgICAgICAgICAgICAgICJzdWJsICQ0LCUlZWRpXG5cdCIKICAgICAgICAgICAgICAgICJi
c2ZsICUlZWF4LCUlZWR4XG4iCiAgICAgICAgICAgICAgICAiMTpcdHN1YmwgJSVlYngsJSVlZGlc
blx0IgogICAgICAgICAgICAgICAgInNobGwgJDMsJSVlZGlcblx0IgogICAgICAgICAgICAgICAg
ImFkZGwgJSVlZGksJSVlZHgiCiAgICAgICAgICAgICAgICA6Ij1kIiAocmVzKSwgIj0mYyIgKGQw
KSwgIj0mRCIgKGQxKSwgIj0mYSIgKGQyKQogICAgICAgICAgICAgICAgOiIxIiAoKHNpemUgKyAz
MSkgPj4gNSksICIyIiAoYWRkciksICJiIiAoYWRkcikpOwogICAgICAgIHJldHVybiByZXM7Cn0K
CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBh
ZGRyLCBpbnQgc2l6ZSwgaW50IG9mZnNldCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBwID0g
KCh1bnNpZ25lZCBsb25nICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICBpbnQgc2V0
ID0gMCwgYml0ID0gb2Zmc2V0ICYgMzEsIHJlczsKCiAgICAgICAgaWYgKGJpdCkgewoKCgogICAg
ICAgICAgICAgICAgX19hc21fXygiYnNmbCAlMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAg
ICAgICJqbmUgMWZcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAibW92bCAkMzIsICUwXG4i
CiAgICAgICAgICAgICAgICAgICAgICAgICIxOiIKICAgICAgICAgICAgICAgICAgICAgICAgOiAi
PXIiIChzZXQpCiAgICAgICAgICAgICAgICAgICAgICAgIDogInIiICh+KCpwID4+IGJpdCkpKTsK
ICAgICAgICAgICAgICAgIGlmIChzZXQgPCAoMzIgLSBiaXQpKQogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc2V0ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgc2V0ID0gMzIgLSBiaXQ7
CiAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgfQoKCgogICAgICAgIHJlcyA9IGZpbmRfZmly
c3RfemVyb19iaXQgKHAsIHNpemUgLSAzMiAqIChwIC0gKHVuc2lnbmVkIGxvbmcgKikgYWRkcikp
OwogICAgICAgIHJldHVybiAob2Zmc2V0ICsgc2V0ICsgcmVzKTsKfQoKCgoKCgoKc3RhdGljIF9f
aW5saW5lX18gdW5zaWduZWQgbG9uZyBmZnoodW5zaWduZWQgbG9uZyB3b3JkKQp7CiAgICAgICAg
X19hc21fXygiYnNmbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoiPXIiICh3b3JkKQogICAgICAg
ICAgICAgICAgOiJyIiAofndvcmQpKTsKICAgICAgICByZXR1cm4gd29yZDsKfQojIDM0MyAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVf
XyBpbnQgZmZzKGludCB4KQp7CiAgICAgICAgaW50IHI7CgogICAgICAgIF9fYXNtX18oImJzZmwg
JTEsJTBcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAi
bW92bCAkLTEsJTBcbiIKICAgICAgICAgICAgICAgICIxOiIgOiAiPXIiIChyKSA6ICJnIiAoeCkp
OwogICAgICAgIHJldHVybiByKzE7Cn0KIyAyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvZnMuaCIgMgoKc3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDUwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1
Y3QgewogICAgICAgIGludCBucl9maWxlczsKICAgICAgICBpbnQgbnJfZnJlZV9maWxlczsKICAg
ICAgICBpbnQgbWF4X2ZpbGVzOwp9OwpleHRlcm4gc3RydWN0IGZpbGVzX3N0YXRfc3RydWN0IGZp
bGVzX3N0YXQ7CgpzdHJ1Y3QgaW5vZGVzX3N0YXRfdCB7CiAgICAgICAgaW50IG5yX2lub2RlczsK
ICAgICAgICBpbnQgbnJfdW51c2VkOwogICAgICAgIGludCBkdW1teVs1XTsKfTsKZXh0ZXJuIHN0
cnVjdCBpbm9kZXNfc3RhdF90IGlub2Rlc19zdGF0OwoKZXh0ZXJuIGludCBsZWFzZXNfZW5hYmxl
LCBkaXJfbm90aWZ5X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2FzbS9zZW1hcGhvcmUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9h
c20vc3lzdGVtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0
ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2tlcm5lbC5o
IiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMQojIDcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCiMgMTEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIGludCBnZW5l
cmljX2ZmcyhpbnQgeCkKewogICAgICAgIGludCByID0gMTsKCiAgICAgICAgaWYgKCF4KQogICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikpIHsKICAgICAg
ICAgICAgICAgIHggPj49IDE2OwogICAgICAgICAgICAgICAgciArPSAxNjsKICAgICAgICB9CiAg
ICAgICAgaWYgKCEoeCAmIDB4ZmYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4OwogICAgICAg
ICAgICAgICAgciArPSA4OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmKSkgewogICAg
ICAgICAgICAgICAgeCA+Pj0gNDsKICAgICAgICAgICAgICAgIHIgKz0gNDsKICAgICAgICB9CiAg
ICAgICAgaWYgKCEoeCAmIDMpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSAyOwogICAgICAgICAg
ICAgICAgciArPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsKICAgICAgICAg
ICAgICAgIHggPj49IDE7CiAgICAgICAgICAgICAgICByICs9IDE7CiAgICAgICAgfQogICAgICAg
IHJldHVybiByOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdl
aWdodDMyKHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYg
MHg1NTU1NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTU1NTU1KTsKICAgICAgICByZXMgPSAocmVz
ICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMzMzMzMpOwogICAgICAgIHJlcyA9
IChyZXMgJiAweDBGMEYwRjBGKSArICgocmVzID4+IDQpICYgMHgwRjBGMEYwRik7CiAgICAgICAg
cmVzID0gKHJlcyAmIDB4MDBGRjAwRkYpICsgKChyZXMgPj4gOCkgJiAweDAwRkYwMEZGKTsKICAg
ICAgICByZXR1cm4gKHJlcyAmIDB4MDAwMEZGRkYpICsgKChyZXMgPj4gMTYpICYgMHgwMDAwRkZG
Rik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDE2KHVuc2ln
bmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1NTU1KSArICgo
dyA+PiAxKSAmIDB4NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMykgKyAoKHJlcyA+
PiAyKSAmIDB4MzMzMyk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRikgKyAoKHJlcyA+PiA0
KSAmIDB4MEYwRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwRkYpICsgKChyZXMgPj4gOCkg
JiAweDAwRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3ZWlnaHQ4
KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1NSkg
KyAoKHcgPj4gMSkgJiAweDU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMykgKyAoKHJlcyA+
PiAyKSAmIDB4MzMpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwRikgKyAoKHJlcyA+PiA0KSAm
IDB4MEYpOwp9CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9iaXRvcHMu
aCIgMQojIDcwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIg
MgojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMgoKCgpz
dHJ1Y3QgdGFza19zdHJ1Y3Q7CmV4dGVybiB2b2lkIF9fc3dpdGNoX3RvKHN0cnVjdCB0YXNrX3N0
cnVjdCAqcHJldiwgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CiMgNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0u
aCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewog
ICAgICAgIHVuc2lnbmVkIGxvbmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVk
aFxuXHQiCiAgICAgICAgICAgICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAg
ICJzaGxsICQxNiwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAg
ICAgICAgICAgICAgOiI9JmQiIChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRy
KSsyKSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAg
ICAgIm0iICgqKChhZGRyKSs3KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzAgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIGdldF9saW1pdCh1bnNpZ25lZCBsb25nIHNlZ21lbnQpCnsKICAgICAgICB1
bnNpZ25lZCBsb25nIF9fbGltaXQ7CiAgICAgICAgX19hc21fXygibHNsbCAlMSwlMCIKICAgICAg
ICAgICAgICAgIDoiPXIiIChfX2xpbWl0KToiciIgKHNlZ21lbnQpKTsKICAgICAgICByZXR1cm4g
X19saW1pdCsxOwp9CgoKCgoKCgpzdHJ1Y3QgX194Y2hnX2R1bW15IHsgdW5zaWduZWQgbG9uZyBh
WzEwMF07IH07CiMgMTU3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc3lzdGVt
LmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NldF82NGJpdCAodW5zaWduZWQgbG9uZyBsb25nICog
cHRyLAogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxvdywgdW5zaWduZWQgaW50IGhpZ2gp
CnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCiAgICAgICAgICAgICAgICAiXG4xOlx0
IgogICAgICAgICAgICAgICAgIm1vdmwgKCUwKSwgJSVlYXhcblx0IgogICAgICAgICAgICAgICAg
Im1vdmwgNCglMCksICUlZWR4XG5cdCIKICAgICAgICAgICAgICAgICJjbXB4Y2hnOGIgKCUwKVxu
XHQiCiAgICAgICAgICAgICAgICAiam56IDFiIgogICAgICAgICAgICAgICAgOgogICAgICAgICAg
ICAgICAgOiAiRCIocHRyKSwKICAgICAgICAgICAgICAgICAgICAgICAgImIiKGxvdyksCiAgICAg
ICAgICAgICAgICAgICAgICAgICJjIihoaWdoKQogICAgICAgICAgICAgICAgOiAiYXgiLCJkeCIs
Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfY29uc3RhbnQgKHVu
c2lnbmVkIGxvbmcgbG9uZyAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQp7CiAgICAgICAgX19zZXRf
NjRiaXQocHRyLCh1bnNpZ25lZCBpbnQpKHZhbHVlKSwgKHVuc2lnbmVkIGludCkoKHZhbHVlKT4+
MzJVTEwpKTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19zZXRfNjRiaXRfdmFyICh1bnNpZ25l
ZCBsb25nIGxvbmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
bG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwqKCgodW5zaWduZWQgaW50Kikm
KHZhbHVlKSkrMCksICooKCh1bnNpZ25lZCBpbnQqKSYodmFsdWUpKSsxKSk7Cn0KIyAyMDIgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBsb25nIF9feGNoZyh1bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKiBwdHIs
IGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChzaXplKSB7CiAgICAgICAgICAgICAgICBjYXNl
IDE6CiAgICAgICAgICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hnYiAl
YjAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9cSIgKHgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShw
dHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIp
OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjoK
ICAgICAgICAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGd3ICV3MCwl
MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikp
KSwgIjAiICh4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAg
ICAgICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wgJTAsJTEiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIw
IiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHg7Cn0KIyAy
MzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBsb25nIF9fY21weGNoZyh2b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVk
IGxvbmcgb2xkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbmV3LCBpbnQgc2l6ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJldjsKICAgICAg
ICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBfX2FzbV9f
IF9fdm9sYXRpbGVfXygiIiAiY21weGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSks
ICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnki
KTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiICJjbXB4Y2hndyAldzEsJTIiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194Y2hnX2R1
bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAgICAgY2Fz
ZSA0OgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiIgImNtcHhjaGdsICUx
LCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3Ry
dWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2
OwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2xkOwp9CiMgMzQwICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9hc20vc3lzdGVtLmgiCnZvaWQgZGlzYWJsZV9obHQodm9pZCk7CnZvaWQg
ZW5hYmxlX2hsdCh2b2lkKTsKIyA0MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3NlbWFwaG9yZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zZW1hcGhv
cmUuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3dhaXQuaCIg
MQojIDQyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCiMgMTAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAxCiMgMTEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKCgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9yd3NlbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3N5c3RlbS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J3
c2VtLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgi
IDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoK
c3RydWN0IHJ3X3NlbWFwaG9yZTsKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL3J3c2VtLmgiIDEKIyA0MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3J3c2VtLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbGlzdC5o
IiAxCiMgNDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9yd3NlbS5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDQz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcndzZW0uaCIgMgoKc3RydWN0IHJ3
c2VtX3dhaXRlcjsKCmV4dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV9kb3duX3JlYWRf
ZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fZG93bl93cml0ZV9mYWlsZWQo
c3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4
dGVybiBzdHJ1Y3Qgcndfc2VtYXBob3JlICpyd3NlbV93YWtlKHN0cnVjdCByd19zZW1hcGhvcmUg
KikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKc3RydWN0IHJ3X3NlbWFwaG9yZSB7
CiAgICAgICAgc2lnbmVkIGxvbmcgY291bnQ7CgoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCB3YWl0
X2xvY2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB3YWl0X2xpc3Q7CgoKCn07CiMgODQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9yd3NlbS5oIgpzdGF0aWMgaW5saW5lIHZv
aWQgaW5pdF9yd3NlbShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW0tPmNv
dW50ID0gMHgwMDAwMDAwMDsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgZG8geyAo
JnNlbS0+d2FpdF9saXN0KS0+bmV4dCA9ICgmc2VtLT53YWl0X2xpc3QpOyAoJnNlbS0+d2FpdF9s
aXN0KS0+cHJldiA9ICgmc2VtLT53YWl0X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKfQoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIF9fZG93bl9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewog
ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5n
IGRvd25fcmVhZFxuXHQiCiIiICIgIGluY2wgICAgICAoJSVlYXgpXG5cdCIKICAgICAgICAgICAg
ICAgICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAg
ICAgICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAi
Mjpcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAg
ICAgICAgICIgIHB1c2hsICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxsICAg
ICAgcndzZW1fZG93bl9yZWFkX2ZhaWxlZFxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAg
ICAgJSVlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgcG9wbCAgICAgICUlZWN4XG5cdCIKICAg
ICAgICAgICAgICAgICIgIGptcCAgICAgICAxYlxuIgogICAgICAgICAgICAgICAgIi5wcmV2aW91
cyIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAg
ICAgOiAiK20iKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAg
ICAgICAgICA6ICJtZW1vcnkiLCAiY2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93
bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAg
ICAgICB0bXAgPSAoKC0weDAwMDEwMDAwKSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18g
X192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0
IgoiIiAiICB4YWRkICAgICAgJTAsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAgICAiICB0ZXN0
bCAgICAgJTAsJTBcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAg
ICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAgICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9j
ayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBw
dXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAgICAgIHJ3c2VtX2Rv
d25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxu
XHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIu
cHJldmlvdXNcbiIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBkb3duX3dyaXRlIgogICAgICAg
ICAgICAgICAgOiAiK2QiKHRtcCksICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDog
ImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgX191cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg
IF9fczMyIHRtcCA9IC0weDAwMDAwMDAxOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgIiMgYmVnaW5uaW5nIF9fdXBfcmVhZFxuXHQiCiIiICIgIHhhZGQgICAg
ICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAgICIgIGpzICAgICAgICAyZlxuXHQi
CiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0
LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAg
IiAgZGVjdyAgICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5c
dCIKICAgICAgICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAg
ICAiICBjYWxsICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAg
ICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAg
ICAgICAgICAiLnByZXZpb3VzXG4iCiAgICAgICAgICAgICAgICAiIyBlbmRpbmcgX191cF9yZWFk
XG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCksICIrZCIodG1wKQogICAgICAg
ICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7Cn0K
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl
bSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiMgYmVn
aW5uaW5nIF9fdXBfd3JpdGVcblx0IgogICAgICAgICAgICAgICAgIiAgbW92bCAgICAgICUyLCUl
ZWR4XG5cdCIKIiIgIiAgeGFkZGwgICAgICUlZWR4LCglJWVheClcblx0IgogICAgICAgICAgICAg
ICAgIiAgam56ICAgICAgIDJmXG5cdCIKICAgICAgICAgICAgICAgICIxOlxuXHQiCiAgICAgICAg
ICAgICAgICAiLnNlY3Rpb24gLnRleHQubG9jayxcImF4XCJcbiIKICAgICAgICAgICAgICAgICIy
OlxuXHQiCiAgICAgICAgICAgICAgICAiICBkZWN3ICAgICAgJSVkeFxuXHQiCiAgICAgICAgICAg
ICAgICAiICBqbnogICAgICAgMWJcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUl
ZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV93YWtlXG5cdCIKICAg
ICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBq
bXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcbiIKICAgICAgICAgICAg
ICAgICIjIGVuZGluZyBfX3VwX3dyaXRlXG4iCiAgICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5j
b3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNlbSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAw
eDAwMDAwMDAxKSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoK
CgoKc3RhdGljIGlubGluZSB2b2lkIHJ3c2VtX2F0b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qg
cndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKIiIgImFk
ZGwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIihzZW0tPmNvdW50KQogICAgICAgICAgICAg
ICAgOiJpciIoZGVsdGEpLCAibSIoc2VtLT5jb3VudCkpOwp9CgoKCgpzdGF0aWMgaW5saW5lIGlu
dCByd3NlbV9hdG9taWNfdXBkYXRlKGludCBkZWx0YSwgc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2Vt
KQp7CiAgICAgICAgaW50IHRtcCA9IGRlbHRhOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XygKIiIgInhhZGQgJTAsKCUyKSIKICAgICAgICAgICAgICAgIDogIityIih0bXApLCAiPW0iKHNl
bS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ICJyIihzZW0pLCAibSIoc2VtLT5jb3VudCkKICAg
ICAgICAgICAgICAgIDogIm1lbW9yeSIpOwoKICAgICAgICByZXR1cm4gdG1wK2RlbHRhOwp9CiMg
MjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDIKIyA0MSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RhdGljIGlubGlu
ZSB2b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgX19kb3duX3JlYWQoc2Vt
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKc3Rh
dGljIGlubGluZSB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICBfX2Rv
d25fd3JpdGUoc2VtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUg
KnNlbSkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAg
ICAgX191cF9yZWFkKHNlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgdXBfd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9y
ZSAqc2VtKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgX191cF93cml0ZShzZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA7Cn0KIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NlbWFw
aG9yZS5oIiAyCgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
ICAgICBpbnQgc2xlZXBlcnM7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsK
IyA3MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwp
CnsKCgoKCgoKICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50ZXIpID0gKHZhbCkpOwogICAg
ICAgIHNlbS0+c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnNlbS0+
d2FpdCk7CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01VVEVYIChzdHJ1Y3Qgc2VtYXBo
b3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsKfQoKc3RhdGljIGlubGluZSB2
b2lkIGluaXRfTVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBz
ZW1hX2luaXQoc2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9f
ZG93bl9mYWlsZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rv
d25fZmFpbGVkX2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgw
KSkpIGludCBfX2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVn
cGFybSgwKSkpIHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMCkpKSB2b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9y
ZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgaW50IF9fZG93bl90cnlsb2Nr
KHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZv
aWQgX191cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lk
IGRvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3duIG9wZXJhdGlvblxuXHQiCiAg
ICAgICAgICAgICAgICAiIiAiZGVjbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcbiIK
ICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAgICAgICAgIi5zZWN0aW9uIC50ZXh0Lmxv
Y2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZFxuXHQi
CiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgog
ICAgICAgICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChz
ZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQg
ZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQg
cmVzdWx0OwoKCgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAg
ICAiIyBhdG9taWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAg
ICAgICAiIiAiZGVjbCAlMVxuXHQiCiAgICAgICAgICAgICAgICAianMgMmZcblx0IgogICAgICAg
ICAgICAgICAgInhvcmwgJTAsJTBcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAg
ICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpc
dGNhbGwgX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlXG5cdCIKICAgICAgICAgICAgICAgICJq
bXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXMiCiAgICAgICAgICAgICAgICA6Ij1h
IiAocmVzdWx0KSwgIj1tIiAoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiYyIgKHNlbSkK
ICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKfQoKCgoK
CnN0YXRpYyBpbmxpbmUgaW50IGRvd25fdHJ5bG9jayhzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7
CiAgICAgICAgaW50IHJlc3VsdDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog
ICAgICAgICAgICAgICAgIiMgYXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0
IgogICAgICAgICAgICAgICAgIiIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJm
XG5cdCIKICAgICAgICAgICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpc
biIKICAgICAgICAgICAgICAgICIuc2VjdGlvbiAudGV4dC5sb2NrLFwiYXhcIlxuIgogICAgICAg
ICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfdHJ5bG9ja1xuXHQiCiAgICAgICAgICAg
ICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzIgogICAgICAgICAgICAg
ICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMi
IChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgIHJldHVybiByZXN1bHQ7
Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7
CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9t
aWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICIiICJpbmNsICUwXG5cdCIKICAg
ICAgICAgICAgICAgICJqbGUgMmZcbiIKICAgICAgICAgICAgICAgICIxOlxuIgogICAgICAgICAg
ICAgICAgIi5zZWN0aW9uIC50ZXh0LmxvY2ssXCJheFwiXG4iCiAgICAgICAgICAgICAgICAiMjpc
dGNhbGwgX191cF93YWtldXBcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAg
ICAgICAgICAgIi5wcmV2aW91cyIKICAgICAgICAgICAgICAgIDoiPW0iIChzZW0tPmNvdW50KQog
ICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKfQoj
IDE5OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIgMQoKCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIiAyCgoKCgoKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDExICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIKCgpzdGF0aWMgX19pbmxpbmVf
XyBfX2NvbnN0X18gX191MzIgX19fYXJjaF9fc3dhYjMyKF9fdTMyIHgpCnsKCiAgICAgICAgX19h
c21fXygiYnN3YXAgJTAiIDogIj1yIiAoeCkgOiAiMCIgKHgpKTsKCgoKCgoKCiAgICAgICAgcmV0
dXJuIHg7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX19hcmNoX19zd2Fi
MTYoX191MTYgeCkKewogICAgICAgIF9fYXNtX18oInhjaGdiICViMCwlaDAiIDogIj1xIiAoeCkg
OiAiMCIgKHgpKTsgcmV0dXJuIHg7CgoKCn0KIyA0NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIgpz
dGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19mc3dhYjE2KF9fdTE2IHgpCnsKICAg
ICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjE2KHgpOwp9CnN0YXRpYyBfX2lubGluZV9fIF9fdTE2
IF9fc3dhYjE2cChfX3UxNiAqeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMTYoKih4
KSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWIxNnMoX191MTYgKmFkZHIpCnsKICAg
ICAgICBkbyB7ICooYWRkcikgPSBfX19hcmNoX19zd2FiMTYoKigoYWRkcikpKTsgfSB3aGlsZSAo
MCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UzMiBfX2Zzd2FiMzIoX191MzIg
eCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2FiMzIoeCk7Cn0Kc3RhdGljIF9faW5saW5l
X18gX191MzIgX19zd2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3
YWIzMigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc3dhYjMycyhfX3UzMiAqYWRk
cikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2FyY2hfX3N3YWIzMigqKChhZGRyKSkpOyB9
IHdoaWxlICgwKTsKfQoKCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3RfXyBfX3U2NCBfX2Zzd2Fi
NjQoX191NjQgeCkKewoKICAgICAgICBfX3UzMiBoID0geCA+PiAzMjsKICAgICAgICBfX3UzMiBs
ID0geCAmICgoMVVMTDw8MzIpLTEpOwogICAgICAgIHJldHVybiAoKChfX3U2NCkoX19idWlsdGlu
X2NvbnN0YW50X3AoKF9fdTMyKShsKSkgPyAoeyBfX3UzMiBfX3ggPSAoKGwpKTsgKChfX3UzMiko
ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgKCgoX191MzIp
KF9feCkgJiAoX191MzIpMHgwMDAwZmYwMFVMKSA8PCA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9f
dTMyKTB4MDBmZjAwMDBVTCkgPj4gOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweGZmMDAw
MDAwVUwpID4+IDI0KSApKTsgfSkgOiBfX2Zzd2FiMzIoKGwpKSkpIDw8IDMyKSB8ICgoX191NjQp
KChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGgpKSA/ICh7IF9fdTMyIF9feCA9ICgoaCkp
OyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkg
fCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIp
KF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9f
dTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9fZnN3YWIzMigoaCkpKSkpOwoKCgp9
CnN0YXRpYyBfX2lubGluZV9fIF9fdTY0IF9fc3dhYjY0cChfX3U2NCAqeCkKewogICAgICAgIHJl
dHVybiAoeyBfX3U2NCBfX3RtcCA9ICgqKHgpKSA7ICh7IF9fdTY0IF9feCA9IChfX3RtcCk7ICgo
X191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAwMDAwMGZm
VUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAw
MDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAw
MDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp
MHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gp
ICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgoKF9fdTY0
KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9fdTY0KSgo
KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYpICkpOyB9
KTsgfSk7Cn0Kc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3N3YWI2NHMoX191NjQgKmFkZHIpCnsK
ICAgICAgICBkbyB7ICooYWRkcikgPSAoeyBfX3U2NCBfX3RtcCA9ICgqKChhZGRyKSkpIDsgKHsg
X191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf
X3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChfX3U2NCkoX194
KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2NCkoKChfX3U2
NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8IChfX3U2NCko
KChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8IDgpIHwgKF9f
dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVMTCkgPj4gOCkg
fCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAwMDAwVUxMKSA+
PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAwMDAwMDAwMDAw
VUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhmZjAwMDAwMDAw
MDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsgfSB3aGlsZSAoMCk7Cn0KIyAxMiAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIg
MgojIDY2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0
dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2J5
dGVvcmRlci9nZW5lcmljLmgiIDEKIyAxNTAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmgiCmV4dGVybiBfX3UzMiBudG9obChfX3UzMik7CmV4
dGVybiBfX3UzMiBodG9ubChfX3UzMik7CgoKCgpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IG50
b2hzKHVuc2lnbmVkIHNob3J0IGludCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgaHRvbnMo
dW5zaWduZWQgc2hvcnQgaW50KTsKIyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDIKIyAxOTkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCmV4dGVybiB2b2lkIHVwZGF0ZV9hdGltZSAoc3Ry
dWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpl
eHRlcm4gdm9pZCBpbm9kZV9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBtbnRfaW5p
dCh1bnNpZ25lZCBsb25nKTsKCgplbnVtIGJoX3N0YXRlX2JpdHMgewogICAgICAgIEJIX1VwdG9k
YXRlLAogICAgICAgIEJIX0RpcnR5LAogICAgICAgIEJIX0xvY2ssCiAgICAgICAgQkhfUmVxLAog
ICAgICAgIEJIX01hcHBlZCwKICAgICAgICBCSF9OZXcsCiAgICAgICAgQkhfQXN5bmMsCiAgICAg
ICAgQkhfV2FpdF9JTywKCiAgICAgICAgQkhfUHJpdmF0ZVN0YXJ0LAoKCn07CiMgMjM0ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYnVmZmVyX2hlYWQg
ewoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGJfYmxvY2tucjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX3NpemU7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgYl9saXN0OwogICAgICAgIGtkZXZfdCBiX2RldjsKCiAgICAgICAgYXRvbWlj
X3QgYl9jb3VudDsKICAgICAgICBrZGV2X3QgYl9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
Yl9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfZmx1c2h0aW1lOwoKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dF9mcmVlOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
Yl9wcmV2X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3RoaXNfcGFnZTsKICAg
ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcmVxbmV4dDsKCiAgICAgICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqYl9wcHJldjsKICAgICAgICBjaGFyICogYl9kYXRhOwogICAgICAgIHN0cnVjdCBw
YWdlICpiX3BhZ2U7CiAgICAgICAgdm9pZCAoKmJfZW5kX2lvKShzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoLCBpbnQgdXB0b2RhdGUpOwogICAgICAgIHZvaWQgKmJfcHJpdmF0ZTsKCiAgICAgICAgdW5z
aWduZWQgbG9uZyBiX3JzZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgYl93YWl0OwoK
ICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiX2lub2RlOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
Yl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9fdCkoc3RydWN0IGJ1
ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyODAgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNl
dCk7CgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BpcGVfZnNf
aS5oIiAxCgoKCgpzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvIHsKICAgICAgICB3YWl0X3F1ZXVlX2hl
YWRfdCB3YWl0OwogICAgICAgIGNoYXIgKmJhc2U7CiAgICAgICAgdW5zaWduZWQgaW50IGxlbjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgaW50IHJlYWRlcnM7
CiAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRp
bmdfcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ193cml0ZXJzOwogICAgICAg
IHVuc2lnbmVkIGludCByX2NvdW50ZXI7CiAgICAgICAgdW5zaWduZWQgaW50IHdfY291bnRlcjsK
fTsKIyA0MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgi
CnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9kZSogcGlw
ZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjg2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvbWluaXhfZnNfaS5oIiAxCgoKCgoKCnN0cnVjdCBtaW5peF9pbm9kZV9pbmZvIHsKICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3UxNiBpMV9kYXRhWzE2XTsKICAgICAgICAg
ICAgICAgIF9fdTMyIGkyX2RhdGFbMTZdOwogICAgICAgIH0gdTsKfTsKIyAyODcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIKc3RydWN0IGV4dDJfaW5vZGVfaW5mbyB7
CiAgICAgICAgX191MzIgaV9kYXRhWzE1XTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAg
IF9fdTMyIGlfZmFkZHI7CiAgICAgICAgX191OCBpX2ZyYWdfbm87CiAgICAgICAgX191OCBpX2Zy
YWdfc2l6ZTsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfZmlsZV9hY2w7
CiAgICAgICAgX191MzIgaV9kaXJfYWNsOwogICAgICAgIF9fdTMyIGlfZHRpbWU7CiAgICAgICAg
X191MzIgaV9ibG9ja19ncm91cDsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfYmxvY2s7CiAg
ICAgICAgX191MzIgaV9uZXh0X2FsbG9jX2dvYWw7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19i
bG9jazsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2NvdW50OwogICAgICAgIF9fdTMyIGlfZGly
X3N0YXJ0X2xvb2t1cDsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsKfTsKIyAyODggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMQoKCgpzdHJ1Y3QgaHBmc19pbm9k
ZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIGlub190
IGlfcGFyZW50X2RpcjsKICAgICAgICB1bnNpZ25lZCBpX2RubzsKICAgICAgICB1bnNpZ25lZCBp
X2Rwb3M7CiAgICAgICAgdW5zaWduZWQgaV9kc3ViZG5vOwogICAgICAgIHVuc2lnbmVkIGlfZmls
ZV9zZWM7CiAgICAgICAgdW5zaWduZWQgaV9kaXNrX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX25f
c2VjczsKICAgICAgICB1bnNpZ25lZCBpX2VhX3NpemU7CiAgICAgICAgdW5zaWduZWQgaV9jb252
IDogMjsKICAgICAgICB1bnNpZ25lZCBpX2VhX21vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlf
ZWFfdWlkIDogMTsKICAgICAgICB1bnNpZ25lZCBpX2VhX2dpZCA6IDE7CiAgICAgICAgdW5zaWdu
ZWQgaV9kaXJ0eSA6IDE7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBpX3NlbTsKICAgICAgICBs
b2ZmX3QgKippX3JkZGlyX29mZjsKfTsKIyAyODkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9udGZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3R5cGVzLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9u
dGZzX2ZzX2kuaCIgMgoKCnN0cnVjdCBudGZzX2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5m
bzsKCgoKCnR5cGVkZWYgdTggbnRmc191ODsKdHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYg
dTMyIG50ZnNfdTMyOwp0eXBlZGVmIHU2NCBudGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0
eXBlZGVmIHMxNiBudGZzX3MxNjsKdHlwZWRlZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50
ZnNfczY0OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYg
dWlkX3QgbnRmc191aWRfdDsKCgoKdHlwZWRlZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVm
IF9fa2VybmVsX3NpemVfdCBudGZzX3NpemVfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3Qg
bnRmc190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1MTYgbnRmc193Y2hhcl90OwoKCgoKdHlwZWRlZiBz
NjQgbnRmc19vZmZzZXRfdDsKCgoKCnR5cGVkZWYgdTY0IG50ZnNfdGltZTY0X3Q7CiMgNjkgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0eXBlZGVmIHMz
MiBudGZzX2NsdXN0ZXJfdDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgc3Ry
dWN0IG50ZnNfc2JfaW5mbyAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9udW1iZXI7CiAg
ICAgICAgX191MTYgc2VxdWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0dHI7
CiAgICAgICAgaW50IGF0dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0cmlidXRlICph
dHRyczsKICAgICAgICBpbnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVjb3JkczsKCiAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHJlY29yZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbHVzdGVy
c19wZXJfcmVjb3JkOwogICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9IHU7Cn07CiMg
MjkwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxCgoKCgoKCgpz
dHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0
ZTsKICAgICAgICBpbnQgaV9zdGFydDsKICAgICAgICBpbnQgaV9sb2dzdGFydDsKICAgICAgICBp
bnQgaV9hdHRyczsKICAgICAgICBpbnQgaV9jdGltZV9tczsKICAgICAgICBpbnQgaV9sb2NhdGlv
bjsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlfZmF0X2lub2RlOwogICAgICAgIHN0cnVjdCBsaXN0
X2hlYWQgaV9mYXRfaGFzaDsKfTsKIyAyOTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC91
bXNkb3NfZnNfaS5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L21zZG9zX2ZzX2kuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3Vtc2Rvc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9waXBlX2ZzX2kuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC91bXNkb3NfZnNfaS5oIiAyCiMgMzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiCnN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIHsKICAgICAg
ICB3YWl0X3F1ZXVlX2hlYWRfdCBwOwogICAgICAgIHNob3J0IGludCBsb29raW5nOwogICAgICAg
IHNob3J0IGludCBjcmVhdGluZzsKCgoKICAgICAgICBsb25nIHBpZDsKCn07CgpzdHJ1Y3QgdW1z
ZG9zX2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIG1zZG9zX2lu
Zm87CiAgICAgICAgc3RydWN0IGRpcl9sb2NraW5nX2luZm8gZGlyX2luZm87CiAgICAgICAgaW50
IGlfcGF0Y2hlZDsKICAgICAgICBpbnQgaV9pc19obGluazsKICAgICAgICBvZmZfdCBwb3M7Cn07
CiMgMjkyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXNvX2ZzX2kuaCIgMQoKCgoKCgpz
dHJ1Y3QgaXNvX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGludCBpX2ZpcnN0X2V4dGVu
dDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlfZmlsZV9mb3JtYXQ7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBpX25leHRfc2VjdGlvbl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07
CiMgMjkzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoKCgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgNSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9uZnMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9uZnMuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIKZW51bSBycGNfYXV0aF9mbGF2b3IgewogICAg
ICAgIFJQQ19BVVRIX05VTEwgPSAwLAogICAgICAgIFJQQ19BVVRIX1VOSVggPSAxLAogICAgICAg
IFJQQ19BVVRIX1NIT1JUID0gMiwKICAgICAgICBSUENfQVVUSF9ERVMgPSAzLAogICAgICAgIFJQ
Q19BVVRIX0tSQiA9IDQsCn07CgplbnVtIHJwY19tc2dfdHlwZSB7CiAgICAgICAgUlBDX0NBTEwg
PSAwLAogICAgICAgIFJQQ19SRVBMWSA9IDEKfTsKCmVudW0gcnBjX3JlcGx5X3N0YXQgewogICAg
ICAgIFJQQ19NU0dfQUNDRVBURUQgPSAwLAogICAgICAgIFJQQ19NU0dfREVOSUVEID0gMQp9OwoK
ZW51bSBycGNfYWNjZXB0X3N0YXQgewogICAgICAgIFJQQ19TVUNDRVNTID0gMCwKICAgICAgICBS
UENfUFJPR19VTkFWQUlMID0gMSwKICAgICAgICBSUENfUFJPR19NSVNNQVRDSCA9IDIsCiAgICAg
ICAgUlBDX1BST0NfVU5BVkFJTCA9IDMsCiAgICAgICAgUlBDX0dBUkJBR0VfQVJHUyA9IDQsCiAg
ICAgICAgUlBDX1NZU1RFTV9FUlIgPSA1Cn07CgplbnVtIHJwY19yZWplY3Rfc3RhdCB7CiAgICAg
ICAgUlBDX01JU01BVENIID0gMCwKICAgICAgICBSUENfQVVUSF9FUlJPUiA9IDEKfTsKCmVudW0g
cnBjX2F1dGhfc3RhdCB7CiAgICAgICAgUlBDX0FVVEhfT0sgPSAwLAogICAgICAgIFJQQ19BVVRI
X0JBRENSRUQgPSAxLAogICAgICAgIFJQQ19BVVRIX1JFSkVDVEVEQ1JFRCA9IDIsCiAgICAgICAg
UlBDX0FVVEhfQkFEVkVSRiA9IDMsCiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURWRVJGID0gNCwK
ICAgICAgICBSUENfQVVUSF9UT09XRUFLID0gNQp9OwojIDExICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9uZnMuaCIKIGVudW0gbmZzX3N0YXQgewogICAgICAgIE5GU19PSyA9IDAsCiAg
ICAgICAgTkZTRVJSX1BFUk0gPSAxLAogICAgICAgIE5GU0VSUl9OT0VOVCA9IDIsCiAgICAgICAg
TkZTRVJSX0lPID0gNSwKICAgICAgICBORlNFUlJfTlhJTyA9IDYsCiAgICAgICAgTkZTRVJSX0VB
R0FJTiA9IDExLAogICAgICAgIE5GU0VSUl9BQ0NFUyA9IDEzLAogICAgICAgIE5GU0VSUl9FWElT
VCA9IDE3LAogICAgICAgIE5GU0VSUl9YREVWID0gMTgsCiAgICAgICAgTkZTRVJSX05PREVWID0g
MTksCiAgICAgICAgTkZTRVJSX05PVERJUiA9IDIwLAogICAgICAgIE5GU0VSUl9JU0RJUiA9IDIx
LAogICAgICAgIE5GU0VSUl9JTlZBTCA9IDIyLAogICAgICAgIE5GU0VSUl9GQklHID0gMjcsCiAg
ICAgICAgTkZTRVJSX05PU1BDID0gMjgsCiAgICAgICAgTkZTRVJSX1JPRlMgPSAzMCwKICAgICAg
ICBORlNFUlJfTUxJTksgPSAzMSwKICAgICAgICBORlNFUlJfT1BOT1RTVVBQID0gNDUsCiAgICAg
ICAgTkZTRVJSX05BTUVUT09MT05HID0gNjMsCiAgICAgICAgTkZTRVJSX05PVEVNUFRZID0gNjYs
CiAgICAgICAgTkZTRVJSX0RRVU9UID0gNjksCiAgICAgICAgTkZTRVJSX1NUQUxFID0gNzAsCiAg
ICAgICAgTkZTRVJSX1JFTU9URSA9IDcxLAogICAgICAgIE5GU0VSUl9XRkxVU0ggPSA5OSwKICAg
ICAgICBORlNFUlJfQkFESEFORExFID0gMTAwMDEsCiAgICAgICAgTkZTRVJSX05PVF9TWU5DID0g
MTAwMDIsCiAgICAgICAgTkZTRVJSX0JBRF9DT09LSUUgPSAxMDAwMywKICAgICAgICBORlNFUlJf
Tk9UU1VQUCA9IDEwMDA0LAogICAgICAgIE5GU0VSUl9UT09TTUFMTCA9IDEwMDA1LAogICAgICAg
IE5GU0VSUl9TRVJWRVJGQVVMVCA9IDEwMDA2LAogICAgICAgIE5GU0VSUl9CQURUWVBFID0gMTAw
MDcsCiAgICAgICAgTkZTRVJSX0pVS0VCT1ggPSAxMDAwOAogfTsKCgoKZW51bSBuZnNfZnR5cGUg
ewogICAgICAgIE5GTk9OID0gMCwKICAgICAgICBORlJFRyA9IDEsCiAgICAgICAgTkZESVIgPSAy
LAogICAgICAgIE5GQkxLID0gMywKICAgICAgICBORkNIUiA9IDQsCiAgICAgICAgTkZMTksgPSA1
LAogICAgICAgIE5GU09DSyA9IDYsCiAgICAgICAgTkZCQUQgPSA3LAogICAgICAgIE5GRklGTyA9
IDgKfTsKCgoKCgoKc3RydWN0IG5mc19maCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNjRdOwp9OwojIDEwNyAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvbmZzLmgiCmVudW0gbmZzM19zdGFibGVfaG93IHsKICAgICAg
ICBORlNfVU5TVEFCTEUgPSAwLAogICAgICAgIE5GU19EQVRBX1NZTkMgPSAxLAogICAgICAgIE5G
U19GSUxFX1NZTkMgPSAyCn07CiMgNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbmZzX2ZzX2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBf
X3U2NCBmc2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoKCiAgICAgICAgc3RydWN0IG5mc19m
aCBmaDsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiMgNDUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCiAgICAgICAgdW5zaWduZWQgbG9u
ZyByZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQgcmVhZF9jYWNoZV9jdGltZTsKICAg
ICAgICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNp
emU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAgX191MzIgY29va2lldmVyZlsyXTsK
CgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBucmVhZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucGFnZXM7
CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hfbmV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47CgoK
ICAgICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiCnN0cnVjdCBuZnNfbG9ja19pbmZvIHsK
ICAgICAgICB1MzIgc3RhdGU7CiAgICAgICAgdTMyIGZsYWdzOwogICAgICAgIHN0cnVjdCBubG1f
aG9zdCAqaG9zdDsKfTsKIyAyOTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zeXN2X2Zz
X2kuaCIgMQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRh
WzEwKzErMSsxXTsKCgoKCn07CiMgMjk1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYWZm
c19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9h
Lm91dC5oIiAxCgoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9h
Lm91dC5oIiAxCgoKCnN0cnVjdCBleGVjCnsKICB1bnNpZ25lZCBsb25nIGFfaW5mbzsKICB1bnNp
Z25lZCBhX3RleHQ7CiAgdW5zaWduZWQgYV9kYXRhOwogIHVuc2lnbmVkIGFfYnNzOwogIHVuc2ln
bmVkIGFfc3ltczsKICB1bnNpZ25lZCBhX2VudHJ5OwogIHVuc2lnbmVkIGFfdHJzaXplOwogIHVu
c2lnbmVkIGFfZHJzaXplOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2Eub3V0LmgiIDIKCgoKCmVudW0gbWFjaGluZV90eXBlIHsKCgoKICBNX09MRFNVTjIgPSAw
LAoKCgoKICBNXzY4MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9IDIsCgoKCgogIE1fU1BBUkMgPSAz
LAoKCiAgTV8zODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwKICBNX01JUFMyID0gMTUyCn07CiMg
MTMxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9hLm91dC5oIgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAxMzIgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDIKIyAxNTcgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCBubGlzdCB7CiAgdW5pb24g
ewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25leHQ7CiAgICBsb25nIG5f
c3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAgY2hhciBuX290aGVyOwog
IHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07CiMgMjM1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9hLm91dC5oIgpzdHJ1Y3QgcmVsb2NhdGlvbl9p
bmZvCnsKCiAgaW50IHJfYWRkcmVzczsKCiAgdW5zaWduZWQgaW50IHJfc3ltYm9sbnVtOjI0OwoK
CgogIHVuc2lnbmVkIGludCByX3BjcmVsOjE7CgoKICB1bnNpZ25lZCBpbnQgcl9sZW5ndGg6MjsK
CgoKCgoKICB1bnNpZ25lZCBpbnQgcl9leHRlcm46MTsKCgoKCgoKCiAgdW5zaWduZWQgaW50IHJf
cGFkOjQ7Cgp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2FmZnNf
ZnNfaS5oIiAyCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1l
LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFyYW0uaCIg
MQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyA2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1lLmgiIDIKCgoKc3RydWN0IHRpbWVz
cGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAz
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgX19p
bmxpbmVfXyB1bnNpZ25lZCBsb25nCnRpbWVzcGVjX3RvX2ppZmZpZXMoc3RydWN0IHRpbWVzcGVj
ICp2YWx1ZSkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2VjID0gdmFsdWUtPnR2X3NlYzsKICAg
ICAgICBsb25nIG5zZWMgPSB2YWx1ZS0+dHZfbnNlYzsKCiAgICAgICAgaWYgKHNlYyA+PSAoKCh+
MFVMID4+IDEpLTEpIC8gMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAoKH4wVUwgPj4gMSkt
MSk7CiAgICAgICAgbnNlYyArPSAxMDAwMDAwMDAwTCAvIDEwMCAtIDE7CiAgICAgICAgbnNlYyAv
PSAxMDAwMDAwMDAwTCAvIDEwMDsKICAgICAgICByZXR1cm4gMTAwICogc2VjICsgbnNlYzsKfQoK
c3RhdGljIF9faW5saW5lX18gdm9pZApqaWZmaWVzX3RvX3RpbWVzcGVjKHVuc2lnbmVkIGxvbmcg
amlmZmllcywgc3RydWN0IHRpbWVzcGVjICp2YWx1ZSkKewogICAgICAgIHZhbHVlLT50dl9uc2Vj
ID0gKGppZmZpZXMgJSAxMDApICogKDEwMDAwMDAwMDBMIC8gMTAwKTsKICAgICAgICB2YWx1ZS0+
dHZfc2VjID0gamlmZmllcyAvIDEwMDsKfQojIDY3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpta3RpbWUgKHVu
c2lnbmVkIGludCB5ZWFyLCB1bnNpZ25lZCBpbnQgbW9uLAogICAgICAgIHVuc2lnbmVkIGludCBk
YXksIHVuc2lnbmVkIGludCBob3VyLAogICAgICAgIHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVk
IGludCBzZWMpCnsKICAgICAgICBpZiAoMCA+PSAoaW50KSAobW9uIC09IDIpKSB7CiAgICAgICAg
ICAgICAgICBtb24gKz0gMTI7CiAgICAgICAgICAgICAgICB5ZWFyIC09IDE7CiAgICAgICAgfQoK
ICAgICAgICByZXR1cm4gKCgoCiAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHllYXIv
NCAtIHllYXIvMTAwICsgeWVhci80MDAgKyAzNjcqbW9uLzEyICsgZGF5KSArCiAgICAgICAgICAg
ICAgICAgICAgICAgIHllYXIqMzY1IC0gNzE5NDk5CiAgICAgICAgICAgICkqMjQgKyBob3VyCiAg
ICAgICAgICApKjYwICsgbWluCiAgICAgICAgKSo2MCArIHNlYzsKfQoKCgoKc3RydWN0IHRpbWV2
YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgc3VzZWNvbmRzX3QgdHZfdXNlYzsK
fTsKCnN0cnVjdCB0aW1lem9uZSB7CiAgICAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgICAg
IGludCB0el9kc3R0aW1lOwp9OwoKCgoKZXh0ZXJuIHZvaWQgZG9fZ2V0dGltZW9mZGF5KHN0cnVj
dCB0aW1ldmFsICp0dik7CmV4dGVybiB2b2lkIGRvX3NldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZh
bCAqdHYpOwpleHRlcm4gdm9pZCBnZXRfZmFzdF90aW1lKHN0cnVjdCB0aW1ldmFsICp0dik7CmV4
dGVybiB2b2lkICgqZG9fZ2V0X2Zhc3RfdGltZSkoc3RydWN0IHRpbWV2YWwgKik7CiMgMTIxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1lLmgiCnN0cnVjdCBpdGltZXJz
cGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0
IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAgc3RydWN0
IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07
CiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIK
IyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYWZmc19mc19pLmgiCnN0
cnVjdCBhZmZzX2V4dF9rZXkgewogICAgICAgIHUzMiBleHQ7CiAgICAgICAgdTMyIGtleTsKfTsK
CgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHUzMiBpX29wZW5jbnQ7CiAgICAg
ICAgc3RydWN0IHNlbWFwaG9yZSBpX2xpbmtfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IGlfZXh0X2xvY2s7CgogICAgICAgIHUzMiBpX2Jsa2NudDsKICAgICAgICB1MzIgaV9leHRjbnQ7
CiAgICAgICAgdTMyICppX2xjOwogICAgICAgIHUzMiBpX2xjX3NpemU7CiAgICAgICAgdTMyIGlf
bGNfc2hpZnQ7CiAgICAgICAgdTMyIGlfbGNfbWFzazsKICAgICAgICBzdHJ1Y3QgYWZmc19leHRf
a2V5ICppX2FjOwogICAgICAgIHUzMiBpX2V4dF9sYXN0OwogICAgICAgIHN0cnVjdCBidWZmZXJf
aGVhZCAqaV9leHRfYmg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAg
ICB1MzIgaV9wcm90ZWN0OwogICAgICAgIHUzMiBpX2xhc3RhbGxvYzsKICAgICAgICBpbnQgaV9w
YV9jbnQ7CiMgNTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2FmZnNfZnNf
aS5oIgp9OwojIDI5NiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiIDEK
IyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIKc3Ry
dWN0IHVmc19pbm9kZV9pbmZvIHsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBfX3Uz
MiBpX2RhdGFbMTVdOwogICAgICAgICAgICAgICAgX191OCBpX3N5bWxpbmtbNCoxNV07CiAgICAg
ICAgfSBpX3UxOwogICAgICAgIF9fdTY0IGlfc2l6ZTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwog
ICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9fdTMyIGlfc2hhZG93OwogICAgICAgIF9fdTMy
IGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3VudXNlZDI7CiAgICAgICAgX191MzIgaV9vZWZ0
ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwogICAgICAgIF9fdTMyIGlfbGFzdGZyYWc7Cn07
CiMgMjk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZWZzX2ZzX2kuaCIgMQojIDEyICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0eXBlZGVmIGlu
dDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoKCgoKCgp0eXBl
ZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4XTsKICAgICAg
ICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4X21hZ2lj
Ojg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0eXBlZGVmIHN0
cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25lZCBpbnQgbmRl
djsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAgdV9zaG9ydCBk
aV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQgZGlfdWlkOwog
ICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsKICAgICAgICBp
bnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAgICAgaW50MzJf
dCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hvcnQgZGlfbnVt
ZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2NoYXIgZGlfc3Bh
cmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNfZXh0ZW50IGRp
X2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2OwogICAgICAgIH0g
ZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBudW1leHRlbnRz
OwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4dGVudHNbMTJd
Owp9OwojIDI5OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAxCiMg
MTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAxMyAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxNCAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb2RhLmgiIDEKIyAxMDkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
dV9xdWFkX3Q7CiMgMTY0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb2Rh
LmgiCnN0cnVjdCB2ZW51c19kaXJlbnQgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZF9maWxlbm87
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZF9yZWNsZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBk
X3R5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX25hbWxlbjsKICAgICAgICBjaGFyIGRfbmFt
ZVsyNTUgKyAxXTsKfTsKIyAxOTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2NvZGEuaCIKdHlwZWRlZiB1X2xvbmcgVm9sdW1lSWQ7CnR5cGVkZWYgdV9sb25nIFZub2RlSWQ7
CnR5cGVkZWYgdV9sb25nIFVuaXF1ZV90Owp0eXBlZGVmIHVfbG9uZyBGaWxlVmVyc2lvbjsKCgoK
CnR5cGVkZWYgc3RydWN0IFZpY2VGaWQgewogICAgVm9sdW1lSWQgVm9sdW1lOwogICAgVm5vZGVJ
ZCBWbm9kZTsKICAgIFVuaXF1ZV90IFVuaXF1ZTsKfSBWaWNlRmlkOwoKCgoKc3RhdGljIF9faW5s
aW5lX18gaW5vX3QgY29kYV9mMmkoc3RydWN0IFZpY2VGaWQgKmZpZCkKewogICAgICAgIGlmICgg
ISBmaWQgKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKGZpZC0+Vm5vZGUg
PT0gMHhmZmZmZmZmZSB8fCBmaWQtPlZub2RlID09IDB4ZmZmZmZmZmYpCiAgICAgICAgICAgICAg
ICByZXR1cm4gKChmaWQtPlZvbHVtZSA8PCAyMCkgfCAoZmlkLT5VbmlxdWUgJiAweGZmZmZmKSk7
CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIChmaWQtPlVuaXF1ZSArIChmaWQt
PlZub2RlPDwxMCkgKyAoZmlkLT5Wb2x1bWU8PDIwKSk7Cn0KIyAyMzMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1X2ludDMyX3QgdnVpZF90Owp0
eXBlZGVmIHVfaW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29kYV9jcmVkIHsKICAgIHZ1aWRf
dCBjcl91aWQsIGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwogICAgdmdpZF90IGNyX2dyb3Vw
aWQsIGNyX2VnaWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoKCgoKZW51bSBjb2RhX3Z0eXBl
IHsgQ19WTk9OLCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZDSFIsIENfVkxOSywgQ19WU09D
SywgQ19WRklGTywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0ciB7CiAgICAgICAgbG9uZyB2
YV90eXBlOwogICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAgICBzaG9ydCB2YV9ubGluazsK
ICAgICAgICB2dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2YV9naWQ7CiAgICAgICAgbG9u
ZyB2YV9maWxlaWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsKICAgICAgICBsb25nIHZhX2Js
b2Nrc2l6ZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0
IHRpbWVzcGVjIHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsKICAg
ICAgICB1X2xvbmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9mbGFnczsKICAgICAgICB1X3F1
YWRfdCB2YV9yZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVzOwogICAgICAgIHVfcXVhZF90
IHZhX2ZpbGVyZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMgewogICAgaW50MzJfdCBmX2Js
b2NrczsKICAgIGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3QgZl9iYXZhaWw7CiAgICBpbnQz
Ml90IGZfZmlsZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMgMzM3ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2RhX2luX2hkciB7CiAgICB1
bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwogICAgdV9zaG9y
dCBwaWQ7CiAgICB1X3Nob3J0IHBnaWQ7CiAgICB1X3Nob3J0IHNpZDsKICAgIHN0cnVjdCBjb2Rh
X2NyZWQgY3JlZDsKfTsKCgpzdHJ1Y3QgY29kYV9vdXRfaGRyIHsKICAgIHVuc2lnbmVkIGxvbmcg
b3Bjb2RlOwogICAgdW5zaWduZWQgbG9uZyB1bmlxdWU7CiAgICB1bnNpZ25lZCBsb25nIHJlc3Vs
dDsKfTsKCgpzdHJ1Y3QgY29kYV9yb290X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9o
OwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcm9vdF9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaW47Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9pbiB7CiAgICBzdHJ1Y3QgY29k
YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3Qg
Y29kYV9vcGVuX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgdV9xdWFkX3Qg
ZGV2OwogICAgaW5vX3QgaW5vZGU7Cn07CgoKCnN0cnVjdCBjb2RhX3N0b3JlX2luIHsKICAgIHN0
cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsK
CnN0cnVjdCBjb2RhX3N0b3JlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsK
CgpzdHJ1Y3QgY29kYV9yZWxlYXNlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX3JlbGVhc2Vfb3V0
IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2Nsb3NlX2lu
IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBm
bGFnczsKfTsKCnN0cnVjdCBjb2RhX2Nsb3NlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9pb2N0bF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIg
aWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgY21kOwogICAgaW50IGxlbjsKICAgIGludCBy
d2ZsYWc7CiAgICBjaGFyICpkYXRhOwp9OwoKc3RydWN0IGNvZGFfaW9jdGxfb3V0IHsKICAgIHN0
cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgbGVuOwogICAgY2FkZHJfdCBkYXRhOwp9OwoK
CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2dldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBj
b2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKCgpzdHJ1Y3Qg
Y29kYV9zZXRhdHRyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQg
VkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07CgpzdHJ1Y3QgY29kYV9zZXRhdHRy
X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9hY2Nl
c3NfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg
aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfYWNjZXNzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v
dXRfaGRyIG91dDsKfTsKCgoKCgoKCnN0cnVjdCBjb2RhX2xvb2t1cF9pbiB7CiAgICBzdHJ1Y3Qg
Y29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKICAgIGludCBm
bGFnczsKfTsKCnN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCB2dHlwZTsKfTsKCgoKc3RydWN0IGNvZGFf
Y3JlYXRlX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsK
ICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CiAgICBpbnQgZXhjbDsKICAgIGludCBtb2RlOwog
ICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9jcmVhdGVfb3V0IHsKICAgIHN0cnVjdCBjb2Rh
X291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRy
Owp9OwoKCgpzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGlo
OwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9yZW1vdmVf
b3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2xpbmtf
aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBzb3VyY2VGaWQ7CiAg
ICBWaWNlRmlkIGRlc3RGaWQ7CiAgICBpbnQgdG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9saW5rX291
dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgoKc3RydWN0IGNvZGFfcmVuYW1l
X2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgc291cmNlRmlkOwog
ICAgaW50IHNyY25hbWU7CiAgICBWaWNlRmlkIGRlc3RGaWQ7CiAgICBpbnQgZGVzdG5hbWU7Cn07
CgpzdHJ1Y3QgY29kYV9yZW5hbWVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9
OwoKCnN0cnVjdCBjb2RhX21rZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg
IFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CiAgICBpbnQgbmFtZTsK
fTsKCnN0cnVjdCBjb2RhX21rZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwog
ICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0
IGNvZGFfcm1kaXJfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBW
RmlkOwogICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ybWRpcl9vdXQgewogICAgc3RydWN0
IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfc3ltbGlua19pbiB7CiAgICBzdHJ1
Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAg
IHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CiAgICBpbnQgdG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9z
eW1saW5rX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29k
YV9yZWFkbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG
aWQ7Cn07CgpzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hk
ciBvaDsKICAgIGludCBjb3VudDsKICAgIGNhZGRyX3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFf
ZnN5bmNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9
OwoKc3RydWN0IGNvZGFfZnN5bmNfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9
OwoKCnN0cnVjdCBjb2RhX3ZnZXRfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAg
VmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfdmdldF9vdXQgewogICAgc3RydWN0IGNvZGFf
b3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCB2dHlwZTsKfTsKIyA2MTYgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IGNvZGFfcHVy
Z2V1c2VyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFf
Y3JlZCBjcmVkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBmaWxlX291dCB7CiAgICBzdHJ1Y3QgY29k
YV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2RhRmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXBk
aXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIENvZGFGaWQ7
Cn07CgoKCnN0cnVjdCBjb2RhX3phcHZub2RlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRy
IG9oOwogICAgc3RydWN0IGNvZGFfY3JlZCBjcmVkOwogICAgVmljZUZpZCBWRmlkOwp9OwoKCgpz
dHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAg
IFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFfcmVwbGFjZV9vdXQgewogICAgc3Ry
dWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgTmV3RmlkOwogICAgVmljZUZpZCBPbGRG
aWQ7Cn07CgoKc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o
ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9v
cGVuX2J5X2ZkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGZkOwoK
CiAgICBzdHJ1Y3QgZmlsZSAqZmg7Cgp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9pbiB7
CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgZmxh
Z3M7Cn07CgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291
dF9oZHIgb2g7CiAgICAgICAgaW50IHBhdGg7Cn07CgoKc3RydWN0IGNvZGFfc3RhdGZzX2luIHsK
ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCnN0cnVjdCBjb2RhX3N0YXRmc19vdXQgewog
ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3N0YXRmcyBzdGF0Owp9
OwojIDcwMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29kYS5oIgp1bmlv
biBpbnB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFf
b3Blbl9pbiBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9zdG9yZV9pbiBjb2RhX3N0b3JlOwog
ICAgc3RydWN0IGNvZGFfcmVsZWFzZV9pbiBjb2RhX3JlbGVhc2U7CiAgICBzdHJ1Y3QgY29kYV9j
bG9zZV9pbiBjb2RhX2Nsb3NlOwogICAgc3RydWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsK
ICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfaW4gY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFf
c2V0YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9h
Y2Nlc3M7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3Qg
Y29kYV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29k
YV9yZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9saW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBj
b2RhX3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsKICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFf
bWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRpcl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNv
ZGFfc3ltbGlua19pbiBjb2RhX3N5bWxpbms7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBj
b2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0
cnVjdCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9p
biBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9v
cGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1
bmlvbiBvdXRwdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3Qg
Y29kYV9yb290X291dCBjb2RhX3Jvb3Q7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29w
ZW47CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9vdXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2Rh
X2dldGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29k
YV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3Ry
dWN0IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19v
dXQgY29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAg
IHN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQgY29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29k
YV96YXBmaWxlX291dCBjb2RhX3phcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNv
ZGFfemFwZGlyOwogICAgc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAg
ICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgY29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2Rh
X3JlcGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0
IGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9v
cGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoK
dW5pb24gY29kYV9kb3duY2FsbHMgewoKCiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1
cmdldXNlcjsKICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3Qg
Y29kYV96YXBkaXJfb3V0IHphcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2
bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBj
b2RhX3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAg
ICAgICBjYWRkcl90IGluLCBvdXQ7CiAgICAgICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9y
dCBvdXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9jdGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpw
YXRoOwogICAgICAgIGludCBmb2xsb3c7CiAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsK
IyA3OTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0
IGNvZGFfbW91bnRfZGF0YSB7CiAgICAgICAgaW50IHZlcnNpb247CiAgICAgICAgaW50IGZkOwp9
OwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIg
MgoKCgoKc3RydWN0IGNvZGFfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19m
aWQ7CiAgICAgICAgdV9zaG9ydCBjX2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY19j
aWxpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmNfY29udGFpbmVyOwogICAgICAgIHVuc2lnbmVk
IGludCBjX2NvbnRjb3VudDsKICAgICAgICBzdHJ1Y3QgY29kYV9jcmVkIGNfY2FjaGVkX2NyZWQ7
CiAgICAgICAgdW5zaWduZWQgaW50IGNfY2FjaGVkX3Blcm07Cn07CgoKCgoKCgppbnQgY29kYV9j
bm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0IFZpY2VGaWQgKiwgc3RydWN0IHN1cGVy
X2Jsb2NrICopOwppbnQgY29kYV9jbm9kZV9tYWtlY3RsKHN0cnVjdCBpbm9kZSAqKmlub2RlLCBz
dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RydWN0IGlub2RlICpjb2RhX2ZpZF90b19pbm9kZShW
aWNlRmlkICpmaWQsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2b2lkIGNvZGFfcmVwbGFjZV9m
aWQoc3RydWN0IGlub2RlICosIFZpY2VGaWQgKiwgVmljZUZpZCAqKTsKIyAyOTkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9yb21mc19mc19pLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5v
ZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgaV9kYXRhb2Zmc2V0Owp9OwojIDMwMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3NobWVtX2ZzLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgdmFs
Owp9IHN3cF9lbnRyeV90OwoKc3RydWN0IHNobWVtX2lub2RlX2luZm8gewogICAgICAgIHNwaW5s
b2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbmRleDsKICAgICAgICBzd3Bf
ZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgc3dwX2VudHJ5X3QgKippX2luZGlyZWN0Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAgICBpbnQgbG9ja2VkOwogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnN0cnVjdCBzaG1lbV9zYl9pbmZvIHsKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1heF9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX2Js
b2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbm9kZXM7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBmcmVlX2lub2RlczsKICAgICAgICBzcGlubG9ja190IHN0YXRfbG9jazsKfTsKIyAzMDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAxCiMgMTMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NtYl9mc19pLmgiCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAyCgoKCgpzdHJ1Y3Qgc21iX2lub2RlX2lu
Zm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQgaW50IG9wZW47CiAgICAgICAgX191MTYgZmlsZWlk
OwogICAgICAgIF9fdTE2IGF0dHI7CgogICAgICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBfX3Ux
NiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG10aW1lOwogICAgICAgIHVuc2lnbmVk
IGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2lnbmVkIG9wZW5lcnM7Cn07CiMgMzAyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvaGZzX2ZzX2kuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2RlX2luZm8gewog
ICAgICAgIGludCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAg
ICAgICBzdHJ1Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1Y3QgaGZzX2Zv
cmsgKmZvcms7CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBmaWxlX3R5cGU7
CiAgICAgICAgY2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfaGRyX2xh
eW91dCAqZGVmYXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpsYXlv
dXQ7CgoKICAgICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lkICgqZF9kcm9w
X29wKShzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMDMgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBh
cmVudF9pZDsKICAgICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsK
ICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7
CiAgICAgICAgaW50IHN0YW1wZWQ6MTsKfTsKIyAzMDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9xbng0X2ZzX2kuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9xbnh0eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3FueHR5cGVzLmgiCnR5cGVkZWYgX191MTYgcW54NF9ueHRudF90Owp0eXBlZGVmIF9fdTggcW54
NF9mdHlwZV90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIF9fdTMyIHh0bnRfYmxrOwogICAg
ICAgIF9fdTMyIHh0bnRfc2l6ZTsKfSBxbng0X3h0bnRfdDsKCnR5cGVkZWYgX191MTYgcW54NF9t
b2RlX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tdWlkX3Q7CnR5cGVkZWYgX191MTYgcW54NF9tZ2lk
X3Q7CnR5cGVkZWYgX191MzIgcW54NF9vZmZfdDsKdHlwZWRlZiBfX3UxNiBxbng0X25saW5rX3Q7
CiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAy
CgoKCgpzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRbMTZd
OwogICAgICAgIHFueDRfb2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmlyc3Rf
eHRudDsKICAgICAgICBfX3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAgICAg
ICBfX3MzMiBpX210aW1lOwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIgaV9j
dGltZTsKICAgICAgICBxbng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2Rl
X3QgaV9tb2RlOwogICAgICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90
IGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96ZXJv
WzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1czsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMwNSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX2kuaCIgMgoKc3RydWN0IHJlaXNlcmZzX2lub2Rl
X2luZm8gewogIF9fdTMyIGlfa2V5IFs0XTsKCgoKCgoKICBpbnQgaV92ZXJzaW9uOwoKICBpbnQg
aV9wYWNrX29uX2Nsb3NlIDsKCiAgX191MzIgaV9maXJzdF9kaXJlY3RfYnl0ZTsKIyAzNSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfaS5oIgogIGludCBp
X3ByZWFsbG9jX2Jsb2NrOwogIGludCBpX3ByZWFsbG9jX2NvdW50OwogIHN0cnVjdCBsaXN0X2hl
YWQgaV9wcmVhbGxvY19saXN0OwoKCgoKICBpbnQgbm9wYWNrOwp9OwojIDMwNiAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvYmZzX2ZzX2kuaCIKc3RydWN0IGJmc19pbm9kZV9pbmZvIHsKICAg
ICAgICB1bnNpZ25lZCBsb25nIGlfZHNrX2lubzsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc2Js
b2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9lYmxvY2s7Cn07CiMgMzA3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC91ZGZfZnNfaS5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgICAgICAgX191
MzIgbG9naWNhbEJsb2NrTnVtOwogICAgICAgIF9fdTE2IHBhcnRpdGlvblJlZmVyZW5jZU51bTsK
fSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7CiAgICAgICAgbG9uZyBpX3VtdGlt
ZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxvbmcgaV9jcnRpbWU7CiAgICAgICAg
bG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9sb2NhdGlvbjsKICAgICAgICBfX3U2
NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRyOwogICAgICAgIF9fdTMyIGlfbGVu
QWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwogICAgICAgIF9fdTMyIGlfbmV4dF9h
bGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICB1bnNp
Z25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRfZmUgOiAx
OwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWduZWQgaV9u
ZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMgMzA4ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIgMQojIDE3ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2lu
Zm8gewogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MzIgdm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0
cjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9w
ZW5lZDsKICAgICAgICBpbnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRs
ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlv
biBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9f
YXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDMwOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3Byb2NfZnNfaS5oIiAxCnN0cnVjdCBwcm9jX2lub2RlX2luZm8gewogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqdGFzazsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBpbnQgKCpwcm9jX2dldF9saW5rKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0
IGRlbnRyeSAqKiwgc3RydWN0IHZmc21vdW50ICoqKTsKICAgICAgICAgICAgICAgIGludCAoKnBy
b2NfcmVhZCkoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBjaGFyICpwYWdlKTsKICAgICAgICB9
IG9wOwogICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOwp9OwojIDMxMCAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L3VzYmRldl9mc19pLmgiIDEKc3RydWN0IHVzYl9kZXZpY2U7CnN0cnVjdCB1
c2JfYnVzOwoKc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o
ZWFkIGRsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsKICAgICAgICAgICAgICAg
IHN0cnVjdCB1c2JfYnVzICpidXM7CiAgICAgICAgfSBwOwp9OwojIDMxMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiCnN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIHsK
IyAyNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIgog
ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwoKCiAgICAgICAgX191MzIgaGlnaGVzdF92ZXJz
aW9uOwoKCiAgICAgICAgc3RydWN0IGpmZnMyX25vZGVfZnJhZyAqZnJhZ2xpc3Q7CgoKCgoKCiAg
ICAgICAgc3RydWN0IGpmZnMyX2Z1bGxfZG5vZGUgKm1ldGFkYXRhOwoKCiAgICAgICAgc3RydWN0
IGpmZnMyX2Z1bGxfZGlyZW50ICpkZW50czsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9j
YWNoZSAqaW5vY2FjaGU7CgoKCgoKICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICBfX3U4IHVz
ZXJjb21wcjsKfTsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Zz
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jcmFtZnNfZnNf
c2IuaCIgMQoKCgoKCgpzdHJ1Y3QgY3JhbWZzX3NiX2luZm8gewogICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIG1hZ2ljOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2tz
OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZpbGVzOwogICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwp9OwojIDMxMyAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDMzOSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBp
bnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlhX3Vp
ZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAg
dGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1lX3Qg
aWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzYzICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDEKIyA0MiAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9lcnJuby5oIiAxCiMgNDMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxMDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcWJsayB7CiAgICAgICAgX191MzIgZHFiX2JoYXJkbGlt
aXQ7CiAgICAgICAgX191MzIgZHFiX2Jzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmJs
b2NrczsKICAgICAgICBfX3UzMiBkcWJfaWhhcmRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfaXNv
ZnRsaW1pdDsKICAgICAgICBfX3UzMiBkcWJfY3VyaW5vZGVzOwogICAgICAgIHRpbWVfdCBkcWJf
YnRpbWU7CiAgICAgICAgdGltZV90IGRxYl9pdGltZTsKfTsKIyAxMzQgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXN0YXRzIHsKICAgICAgICBf
X3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRyb3BzOwogICAgICAgIF9fdTMyIHJlYWRzOwog
ICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBfX3UzMiBjYWNoZV9oaXRzOwogICAgICAgIF9f
dTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAgX191MzIgZnJlZV9kcXVvdHM7CiAgICAgICAg
X191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQgbnJfZHF1b3RzLCBucl9mcmVlX2RxdW90czsK
ZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsKIyAxNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXVvdCB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBkcV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZHFfaW51c2U7CiAgICAg
ICAgc3RydWN0IGxpc3RfaGVhZCBkcV9mcmVlOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRx
X3dhaXRfbG9jazsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0X2ZyZWU7CiAgICAg
ICAgaW50IGRxX2NvdW50OwoKCiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKICAg
ICAgICB1bnNpZ25lZCBpbnQgZHFfaWQ7CiAgICAgICAga2Rldl90IGRxX2RldjsKICAgICAgICBz
aG9ydCBkcV90eXBlOwogICAgICAgIHNob3J0IGRxX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZHFfcmVmZXJlbmNlZDsKCiAgICAgICAgc3RydWN0IGRxYmxrIGRxX2RxYjsKfTsKIyAzNjQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tb3VudC5oIiAxCiMgMzY1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0
IGFkZHJlc3Nfc3BhY2U7CnN0cnVjdCBraW9idWY7CgpzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVy
YXRpb25zIHsKICAgICAgICBpbnQgKCp3cml0ZXBhZ2UpKHN0cnVjdCBwYWdlICopOwogICAgICAg
IGludCAoKnJlYWRwYWdlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICAgICAgICBp
bnQgKCpzeW5jX3BhZ2UpKHN0cnVjdCBwYWdlICopOwogICAgICAgIGludCAoKnByZXBhcmVfd3Jp
dGUpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CiAg
ICAgICAgaW50ICgqY29tbWl0X3dyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1
bnNpZ25lZCwgdW5zaWduZWQpOwoKICAgICAgICBpbnQgKCpibWFwKShzdHJ1Y3QgYWRkcmVzc19z
cGFjZSAqLCBsb25nKTsKCiAgICAgICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVjdCBpbm9k
ZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1Y3QgYWRk
cmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsKICAgICAg
ICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
bG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAgICBzdHJ1
Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3QgaW5vZGUg
Kmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAgICAgc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2NrX3QgaV9z
aGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9kZXZpY2Ug
ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBjb3VudDsK
ICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAgICBzdHJ1
Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAgIHN0cnVj
dCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAgICAgICBz
dHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAgICAgaW50
IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25z
ICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBzdHJ1Y3Qg
bGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAgICAgICAg
c3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2Rp
cnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFfYnVmZmVy
czsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBpX2NvdW50
OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAgICAgICBu
bGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3QgaV9naWQ7
CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAgICAgIHRp
bWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVfdCBpX2N0
aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1bnNp
Z25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAg
ICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29wZXJh
dGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgICAg
ICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGlf
d2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVjdCBh
ZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgaV9k
YXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3RydWN0IGxp
c3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9waXBl
OwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1Y3QgY2hh
cl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlfbWFzazsK
ICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAgdW5zaWdu
ZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAgICAgICB1
bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50OwogICAg
ICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5lcmF0aW9u
OwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9kZV9pbmZv
IG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4dDJfaTsK
ICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX2lub2RlX2luZm8gaHBmc19pOwogICAgICAgICAg
ICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyBudGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1
Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHVtc2Rv
c19pbm9kZV9pbmZvIHVtc2Rvc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb19pbm9kZV9p
bmZvIGlzb2ZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2lub2RlX2luZm8gbmZzX2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHN5c3ZfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBhZmZzX2lub2RlX2luZm8gYWZmc19pOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHVmc19pbm9kZV9pbmZvIHVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19pbm9k
ZV9pbmZvIGVmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHJvbWZzX2lub2RlX2luZm8gcm9t
ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBzaG1lbV9pbm9kZV9pbmZvIHNobWVtX2k7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV9pbm9kZV9pbmZvIGNvZGFfaTsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBzbWJfaW5vZGVfaW5mbyBzbWJmc19pOwogICAgICAgICAgICAgICAgc3RydWN0
IGhmc19pbm9kZV9pbmZvIGhmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfaW5vZGVf
aW5mbyBhZGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHFueDRf
aTsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19pbm9kZV9pbmZvIHJlaXNlcmZzX2k7
CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYmZzX2lub2RlX2luZm8gYmZzX2k7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgdWRmX2lub2RlX2luZm8gdWRmX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
bmNwX2lub2RlX2luZm8gbmNwZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBwcm9jX2lub2Rl
X2luZm8gcHJvY19pOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2tldCBzb2NrZXRfaTsKICAg
ICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB1c2JkZXZfaTsKICAgICAgICAg
ICAgICAgIHN0cnVjdCBqZmZzMl9pbm9kZV9pbmZvIGpmZnMyX2k7CiAgICAgICAgICAgICAgICB2
b2lkICpnZW5lcmljX2lwOwogICAgICAgIH0gdTsKfTsKCnN0cnVjdCBmb3duX3N0cnVjdCB7CiAg
ICAgICAgaW50IHBpZDsKICAgICAgICB1aWRfdCB1aWQsIGV1aWQ7CiAgICAgICAgaW50IHNpZ251
bTsKfTsKCnN0cnVjdCBmaWxlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZfbGlzdDsKICAg
ICAgICBzdHJ1Y3QgZGVudHJ5ICpmX2RlbnRyeTsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKmZf
dmZzbW50OwogICAgICAgIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZfb3A7CiAgICAgICAgYXRv
bWljX3QgZl9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZl9mbGFnczsKICAgICAgICBtb2Rl
X3QgZl9tb2RlOwogICAgICAgIGxvZmZfdCBmX3BvczsKICAgICAgICB1bnNpZ25lZCBsb25nIGZf
cmVhZGEsIGZfcmFtYXgsIGZfcmFlbmQsIGZfcmFsZW4sIGZfcmF3aW47CiAgICAgICAgc3RydWN0
IGZvd25fc3RydWN0IGZfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZfdWlkLCBmX2dpZDsK
ICAgICAgICBpbnQgZl9lcnJvcjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX3ZlcnNpb247CgoK
ICAgICAgICB2b2lkICpwcml2YXRlX2RhdGE7CgoKICAgICAgICBzdHJ1Y3Qga2lvYnVmICpmX2lv
YnVmOwogICAgICAgIGxvbmcgZl9pb2J1Zl9sb2NrOwp9OwpleHRlcm4gc3BpbmxvY2tfdCBmaWxl
c19sb2NrOwoKCgoKCgpleHRlcm4gaW50IGluaXRfcHJpdmF0ZV9maWxlKHN0cnVjdCBmaWxlICos
IHN0cnVjdCBkZW50cnkgKiwgaW50KTsKIyA1NTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IGZpbGVzX3N0cnVjdCAqZmxfb3duZXJfdDsK
CnN0cnVjdCBmaWxlX2xvY2sgewogICAgICAgIHN0cnVjdCBmaWxlX2xvY2sgKmZsX25leHQ7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBmbF9saW5rOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg
ZmxfYmxvY2s7CiAgICAgICAgZmxfb3duZXJfdCBmbF9vd25lcjsKICAgICAgICB1bnNpZ25lZCBp
bnQgZmxfcGlkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGZsX3dhaXQ7CiAgICAgICAgc3Ry
dWN0IGZpbGUgKmZsX2ZpbGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBmbF9mbGFnczsKICAgICAg
ICB1bnNpZ25lZCBjaGFyIGZsX3R5cGU7CiAgICAgICAgbG9mZl90IGZsX3N0YXJ0OwogICAgICAg
IGxvZmZfdCBmbF9lbmQ7CgogICAgICAgIHZvaWQgKCpmbF9ub3RpZnkpKHN0cnVjdCBmaWxlX2xv
Y2sgKik7CiAgICAgICAgdm9pZCAoKmZsX2luc2VydCkoc3RydWN0IGZpbGVfbG9jayAqKTsKICAg
ICAgICB2b2lkICgqZmxfcmVtb3ZlKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoKICAgICAgICBzdHJ1
Y3QgZmFzeW5jX3N0cnVjdCAqIGZsX2Zhc3luYzsKCiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgc3RydWN0IG5mc19sb2NrX2luZm8gbmZzX2ZsOwogICAgICAgIH0gZmxfdTsKfTsKIyA1
ODcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1
Y3QgbGlzdF9oZWFkIGZpbGVfbG9ja19saXN0OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9mY250bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL2ZjbnRsLmgiIDEKIyA2OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
YXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAg
IHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7CiAgICAgICAgb2ZmX3QgbF9s
ZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxvY2s2NCB7CiAgICAgICAgc2hv
cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIGxvZmZfdCBsX3N0YXJ0
OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBsX3BpZDsKfTsKIyA1ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mY250bC5oIiAyCiMgNTkwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCgpleHRlcm4gaW50IGZjbnRsX2dl
dGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxr
KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7CgpleHRlcm4gaW50
IGZjbnRsX2dldGxrNjQodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2NCAqKTsKZXh0ZXJuIGlu
dCBmY250bF9zZXRsazY0KHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2s2
NCAqKTsKCgpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2soc3RydWN0IGZpbGVfbG9jayAqKTsK
ZXh0ZXJuIHZvaWQgbG9ja3NfY29weV9sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZp
bGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX3Bvc2l4KHN0cnVjdCBmaWxlICos
IGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmxvY2soc3RydWN0IGZpbGUg
Kik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9sb2NrICpwb3NpeF90ZXN0X2xvY2soc3RydWN0IGZpbGUg
Kiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBwb3NpeF9sb2NrX2ZpbGUoc3RydWN0
IGZpbGUgKiwgc3RydWN0IGZpbGVfbG9jayAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBw
b3NpeF9ibG9ja19sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsK
ZXh0ZXJuIHZvaWQgcG9zaXhfdW5ibG9ja19sb2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVy
biBpbnQgX19nZXRfbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IGZsYWdz
KTsKZXh0ZXJuIHRpbWVfdCBsZWFzZV9nZXRfbXRpbWUoc3RydWN0IGlub2RlICopOwpleHRlcm4g
aW50IGxvY2tfbWF5X3JlYWQoc3RydWN0IGlub2RlICosIGxvZmZfdCBzdGFydCwgdW5zaWduZWQg
bG9uZyBjb3VudCk7CmV4dGVybiBpbnQgbG9ja19tYXlfd3JpdGUoc3RydWN0IGlub2RlICosIGxv
ZmZfdCBzdGFydCwgdW5zaWduZWQgbG9uZyBjb3VudCk7CgpzdHJ1Y3QgZmFzeW5jX3N0cnVjdCB7
CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAgIGludCBmYV9mZDsKICAgICAgICBzdHJ1Y3QgZmFz
eW5jX3N0cnVjdCAqZmFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmFfZmlsZTsKfTsKCgoK
CmV4dGVybiBpbnQgZmFzeW5jX2hlbHBlcihpbnQsIHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0
IGZhc3luY19zdHJ1Y3QgKiopOwoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMoc3RydWN0IGZhc3lu
Y19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fa2lsbF9mYXN5bmMoc3RydWN0
IGZhc3luY19zdHJ1Y3QgKiwgaW50LCBpbnQpOwoKc3RydWN0IG5hbWVpZGF0YSB7CiAgICAgICAg
c3RydWN0IGRlbnRyeSAqZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50OwogICAg
ICAgIHN0cnVjdCBxc3RyIGxhc3Q7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAg
IGludCBsYXN0X3R5cGU7Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9ucwp7CiAgICAg
ICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZHFpb19zZW07
CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBkcW9mZl9zZW07CiAgICAgICAgc3RydWN0IGZpbGUg
KmZpbGVzWzJdOwogICAgICAgIHRpbWVfdCBpbm9kZV9leHBpcmVbMl07CiAgICAgICAgdGltZV90
IGJsb2NrX2V4cGlyZVsyXTsKICAgICAgICBjaGFyIHJzcXVhc2hbMl07Cn07CiMgNjU2ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0IG1pbml4
X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbmlub2Rl
czsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsKICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVuOwogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBt
aW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHNfdmVyc2lvbjsKfTsKIyA2NTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9leHQy
X2ZzX3NiLmgiIDEKIyAzMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXh0
Ml9mc19zYi5oIgpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf
ZnJhZ19zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAg
ICAgdW5zaWduZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzX2ZyYWdzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9n
cm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2Ri
X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHNfc2JoOwogICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBz
dHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHNfbG9hZGVkX2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRf
YmxvY2tfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJl
cls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1
Y3QgYnVmZmVyX2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25n
IHNfbW91bnRfb3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVz
Z2lkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAg
ICBpbnQgc19kZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAg
ICAgICAgaW50IHNfZmlyc3RfaW5vOwp9OwojIDY1OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2hwZnNfZnNfc2IuaCIgMQoKCgpzdHJ1Y3QgaHBmc19zYl9pbmZvIHsKICAgICAgICBpbm9f
dCBzYl9yb290OwogICAgICAgIHVuc2lnbmVkIHNiX2ZzX3NpemU7CiAgICAgICAgdW5zaWduZWQg
c2JfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBzYl9kaXJiYW5kX3N0YXJ0OwogICAgICAgIHVu
c2lnbmVkIHNiX2RpcmJhbmRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9kbWFwOwogICAgICAg
IHVuc2lnbmVkIHNiX25fZnJlZTsKICAgICAgICB1bnNpZ25lZCBzYl9uX2ZyZWVfZG5vZGVzOwog
ICAgICAgIHVpZF90IHNiX3VpZDsKICAgICAgICBnaWRfdCBzYl9naWQ7CiAgICAgICAgdW1vZGVf
dCBzYl9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNiX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVk
IHNiX2VhcyA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfZXJyIDogMjsKICAgICAgICB1bnNpZ25l
ZCBzYl9jaGsgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2xvd2VyY2FzZSA6IDE7CiAgICAgICAg
dW5zaWduZWQgc2Jfd2FzX2Vycm9yIDogMTsKICAgICAgICB1bnNpZ25lZCBzYl9jaGtkc2sgOiAy
OwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2Zub2RlIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9y
ZF9pbm9kZSA6IDI7CgoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzYl9pZ2V0X3E7CiAgICAg
ICAgdW5zaWduZWQgY2hhciAqc2JfY3BfdGFibGU7CgoKICAgICAgICB1bnNpZ25lZCAqc2JfYm1w
X2RpcjsKICAgICAgICB1bnNpZ25lZCBzYl9jX2JpdG1hcDsKICAgICAgICB3YWl0X3F1ZXVlX2hl
YWRfdCBzYl9jcmVhdGlvbl9kZTsKCiAgICAgICAgdW5zaWduZWQgc2JfY3JlYXRpb25fZGVfbG9j
ayA6IDE7CgogICAgICAgIGludCBzYl90aW1lc2hpZnQ7Cn07CiMgNjU5ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvbnRmc19mc19zYi5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvbnRmc19mc19pLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDIKCnN0cnVjdCBudGZzX3NiX2luZm97Cgog
ICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50ZnNfZ2lkX3QgZ2lkOwogICAgICAgIG50
bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50
IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRpcGxpZXI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X3pvbmVfcG9zOwog
ICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0YXJ0OwogICAgICAgIG50ZnNfY2x1c3Rl
cl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMV96b25lX3BvczsK
ICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25lX3BvczsKCgogICAgICAgIG50ZnNfc2l6
ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZzX3UzMiBhdF9zdGFuZGFyZF9pbmZvcm1h
dGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1dGVfbGlzdDsKICAgICAgICBudGZzX3Uz
MiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1lX3ZlcnNpb247CiAgICAg
ICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRvcjsKICAgICAgICBudGZzX3UzMiBhdF92
b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfaW5mb3JtYXRpb247CiAgICAg
ICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZzX3UzMiBhdF9pbmRleF9yb290OwogICAg
ICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfYml0
bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7CgogICAgICAgIGludCBzZWN0b3Jfc2l6
ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAgICAgIGludCBjbHVzdGVyX3NpemVfYml0
czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IG1mdF9y
ZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplX2JpdHM7CiAgICAgICAgaW50
IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IGluZGV4X3JlY29yZF9zaXpl
OwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9iaXRzOwogICAgICAgIG50ZnNfY2x1c3Rl
cl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF9sY247CiAgICAgICAg
bnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAgICAgICB1bnNpZ25lZCBjaGFyICptZnQ7
CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsKICAgICAgICB1bnNpZ25lZCBpbnQgdXBj
YXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5mbyAqbWZ0X2lubzsKICAg
ICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRtaXJyOwogICAgICAgIHN0cnVjdCBudGZz
X2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9OwojIDY2MCAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDEKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50IGN2
Zl92ZXJzaW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBmbGFn
czsKICBpbnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQgKCpt
b3VudF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQgKCp1
bm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk
KiAoKmN2Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0cnVj
dCBidWZmZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBi
bG9jayk7CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVj
dCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChzdHJ1
Y3Qgc3VwZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBzdXBl
cl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg
KmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lzX3Vw
dG9kYXRlKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsK
ICB2b2lkICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5i
cmVxLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMyXSk7
CiAgaW50ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGludCBu
ZXdfdmFsdWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0
cnVjdCBzdGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1Y3Qg
aW5vZGUgKmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICggc3Ry
dWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3ZmX2Zp
bGVfd3JpdGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKICBpbnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqKTsKICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2Ug
Kik7CiAgaW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAq
KTsKICBpbnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm
aWxlICogZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5z
aWduZWQgbG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlub2Rl
KiwgaW50IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3Zm
X2Zvcm1hdCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3Zm
X2Zvcm1hdCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291bnRfYnlfdmVy
c2lvbihpbnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9ibG9jaypzYixj
aGFyKmZvcmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1hdHNbXTsKZXh0
ZXJuIGludCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L21zZG9zX2ZzX3NiLmgiIDIKCgoKCgpzdHJ1Y3QgZmF0X21vdW50X29w
dGlvbnMgewogICAgICAgIHVpZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19naWQ7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY29kZXBh
Z2U7CiAgICAgICAgY2hhciAqaW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbmFtZV9j
aGVjazsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnZlcnNpb247CiAgICAgICAgdW5zaWduZWQg
cXVpZXQ6MSwKICAgICAgICAgICAgICAgICBzaG93ZXhlYzoxLAogICAgICAgICAgICAgICAgIHN5
c19pbW11dGFibGU6MSwKICAgICAgICAgICAgICAgICBkb3RzT0s6MSwKICAgICAgICAgICAgICAg
ICBpc3ZmYXQ6MSwKICAgICAgICAgICAgICAgICB1dGY4OjEsCiAgICAgICAgICAgICAgICAgdW5p
Y29kZV94bGF0ZToxLAogICAgICAgICAgICAgICAgIHBvc2l4ZnM6MSwKICAgICAgICAgICAgICAg
ICBudW10YWlsOjEsCiAgICAgICAgICAgICAgICAgYXRhcmk6MSwKICAgICAgICAgICAgICAgICBm
YXQzMjoxLAogICAgICAgICAgICAgICAgIG5vY2FzZToxOwp9OwoKc3RydWN0IHZmYXRfdW5pY29k
ZSB7CiAgICAgICAgdW5zaWduZWQgY2hhciB1bmkxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5p
MjsKfTsKCnN0cnVjdCBtc2Rvc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVz
dGVyX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgZmF0cyxmYXRfYml0czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmYXRfc3Rh
cnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmYXRfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZGlyX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRpcl9lbnRyaWVzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGF0YV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsdXN0ZXJz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcm9vdF9jbHVzdGVyOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgZnNpbmZvX3NlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmYXRfd2FpdDsKICAg
ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAg
ICAgICAgaW50IGZyZWVfY2x1c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25z
IG9wdGlvbnM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3Ry
dWN0IG5sc190YWJsZSAqbmxzX2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9y
bWF0OwogICAgICAgIHZvaWQgKmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwog
ICAgICAgIGludCBkaXJfcGVyX2Jsb2NrOwogICAgICAgIGludCBkaXJfcGVyX2Jsb2NrX2JpdHM7
Cn07CiMgNjYxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEKCgoK
CgoKc3RydWN0IGlzb2ZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
X2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNf
aGlnaF9zaWVycmE7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgaW50
IHNfcm9ja19vZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAgdW5z
aWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRmODsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNf
dW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBzX25vZGV2OwogICAgICAgIG1vZGVfdCBzX21vZGU7CiAgICAgICAgZ2lkX3Qgc19naWQ7
CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqc19ubHNfaW9j
aGFyc2V0Owp9OwojIDY2MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25mc19mc19zYi5o
IiAxCgoKCgoKCnN0cnVjdCBuZnNfc2VydmVyIHsKICAgICAgICBzdHJ1Y3QgcnBjX2NsbnQgKiBj
bGllbnQ7CiAgICAgICAgc3RydWN0IG5mc19ycGNfb3BzICogcnBjX29wczsKICAgICAgICBpbnQg
ZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IHJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBy
cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IHdzaXplOwogICAgICAgIHVuc2lnbmVkIGludCB3
cGFnZXM7CiAgICAgICAgdW5zaWduZWQgaW50IGR0c2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQg
YnNpemU7CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWluOwogICAgICAgIHVuc2lnbmVkIGlu
dCBhY3JlZ21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtaW47CiAgICAgICAgdW5zaWdu
ZWQgaW50IGFjZGlybWF4OwogICAgICAgIHVuc2lnbmVkIGludCBuYW1lbGVuOwogICAgICAgIGNo
YXIgKiBob3N0bmFtZTsKICAgICAgICBzdHJ1Y3QgbmZzX3JlcWxpc3QgKiByd19yZXF1ZXN0czsK
fTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIgc19z
ZXJ2ZXI7Cn07CiMgNjYzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5o
IiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3lzdl9mc19zYi5o
IiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2Iu
aCIKc3RydWN0IHN5c3Zfc2JfaW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFy
IHNfYnl0ZXNleDsKICAgICAgICBjaGFyIHNfa2x1ZGdlX3N5bWxpbmtzOwogICAgICAgIGNoYXIg
c190cnVuY2F0ZTsKCiAgICAgICAgbmxpbmtfdCBzX2xpbmtfbWF4OwogICAgICAgIHVuc2lnbmVk
IGludCBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5vZGVzX3Bl
cl9ibG9ja18xOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfYml0czsK
ICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGlu
dCBzX2luZF9wZXJfYmxvY2tfYml0czsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Js
b2NrXzI7CiAgICAgICAgdW5zaWduZWQgaW50IHNfdG9vYmlnX2Jsb2NrOwogICAgICAgIHVuc2ln
bmVkIGludCBzX2Jsb2NrX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19maWNfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZsY19zaXplOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVy
X2hlYWQgKnNfYmgxOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19iaDI7CgoKICAgICAg
ICBjaGFyICogc19zYmQxOwogICAgICAgIGNoYXIgKiBzX3NiZDI7CiAgICAgICAgdTE2ICpzX3Ni
X2ZpY19jb3VudDsKICAgICAgICB1MTYgKnNfc2JfZmljX2lub2RlczsKICAgICAgICB1MTYgKnNf
c2JfdG90YWxfZnJlZV9pbm9kZXM7CiAgICAgICAgdTE2ICpzX2JjYWNoZV9jb3VudDsKICAgICAg
ICB1MzIgKnNfYmNhY2hlOwogICAgICAgIHUzMiAqc19mcmVlX2Jsb2NrczsKICAgICAgICB1MzIg
KnNfc2JfdGltZTsKICAgICAgICB1MzIgKnNfc2Jfc3RhdGU7CgoKICAgICAgICB1MzIgc19maXJz
dGlub2Rlem9uZTsKICAgICAgICB1MzIgc19maXJzdGRhdGF6b25lOwogICAgICAgIHUzMiBzX25p
bm9kZXM7CiAgICAgICAgdTMyIHNfbmRhdGF6b25lczsKICAgICAgICB1MzIgc19uem9uZXM7CiAg
ICAgICAgdTE2IHNfbmFtZWxlbjsKfTsKIyA2NjQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9hZmZzX2ZzX3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvYWZmc19mc19zYi5oIgpzdHJ1Y3QgYWZmc19ibV9pbmZvIHsKICAgICAgICB1MzIgYm1fa2V5
OwogICAgICAgIHUzMiBibV9mcmVlOwp9OwoKc3RydWN0IGFmZnNfc2JfaW5mbyB7CiAgICAgICAg
aW50IHNfcGFydGl0aW9uX3NpemU7CiAgICAgICAgaW50IHNfcmVzZXJ2ZWQ7CgogICAgICAgIHUz
MiBzX2RhdGFfYmxrc2l6ZTsKICAgICAgICB1MzIgc19yb290X2Jsb2NrOwogICAgICAgIGludCBz
X2hhc2hzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAgICB1aWRfdCBz
X3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsKICAgICAg
ICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl
IHNfYm1sb2NrOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2luZm8gKnNfYml0bWFwOwogICAgICAg
IHUzMiBzX2JtYXBfY291bnQ7CiAgICAgICAgdTMyIHNfYm1hcF9iaXRzOwogICAgICAgIHUzMiBz
X2xhc3RfYm1hcDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYm1hcF9iaDsKICAgICAg
ICBjaGFyICpzX3ByZWZpeDsKICAgICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAgIGNoYXIg
c192b2x1bWVbMzJdOwp9OwojIDY2NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19m
c19zYi5oIiAxCiMgMTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19m
c19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19mcy5o
IiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKIyAzMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDMyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDMzICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMQojIDM0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC91ZnNfZnMuaCIgMgojIDI0OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvdWZzX2ZzLmgiCnN0cnVjdCB1ZnNfdGltZXZhbCB7CiAgICAgICAgX19zMzIgdHZf
c2VjOwogICAgICAgIF9fczMyIHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSB7CiAg
ICAgICAgX191MzIgZF9pbm87CiAgICAgICAgX191MTYgZF9yZWNsZW47CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgX191MTYgZF9uYW1sZW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgICAgICAgICBfX3U4IGRfdHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgX191OCBkX25hbWxlbjsKICAgICAgICAgICAgICAgIH0gZF80NDsKICAgICAgICB9IGRf
dTsKICAgICAgICBfX3U4IGRfbmFtZVsyNTUgKyAxXTsKfTsKCnN0cnVjdCB1ZnNfY3N1bSB7CiAg
ICAgICAgX191MzIgY3NfbmRpcjsKICAgICAgICBfX3UzMiBjc19uYmZyZWU7CiAgICAgICAgX191
MzIgY3NfbmlmcmVlOwogICAgICAgIF9fdTMyIGNzX25mZnJlZTsKfTsKCgoKCnN0cnVjdCB1ZnNf
c3VwZXJfYmxvY2sgewogICAgICAgIF9fdTMyIGZzX2xpbms7CiAgICAgICAgX191MzIgZnNfcmxp
bms7CiAgICAgICAgX191MzIgZnNfc2Jsa25vOwogICAgICAgIF9fdTMyIGZzX2NibGtubzsKICAg
ICAgICBfX3UzMiBmc19pYmxrbm87CiAgICAgICAgX191MzIgZnNfZGJsa25vOwogICAgICAgIF9f
dTMyIGZzX2Nnb2Zmc2V0OwogICAgICAgIF9fdTMyIGZzX2NnbWFzazsKICAgICAgICBfX3UzMiBm
c190aW1lOwogICAgICAgIF9fdTMyIGZzX3NpemU7CiAgICAgICAgX191MzIgZnNfZHNpemU7CiAg
ICAgICAgX191MzIgZnNfbmNnOwogICAgICAgIF9fdTMyIGZzX2JzaXplOwogICAgICAgIF9fdTMy
IGZzX2ZzaXplOwogICAgICAgIF9fdTMyIGZzX2ZyYWc7CgogICAgICAgIF9fdTMyIGZzX21pbmZy
ZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwoKICAg
ICAgICBfX3UzMiBmc19ibWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3Uz
MiBmc19ic2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNoaWZ0OwoKICAgICAgICBfX3UzMiBmc19t
YXhjb250aWc7CiAgICAgICAgX191MzIgZnNfbWF4YnBnOwoKICAgICAgICBfX3UzMiBmc19mcmFn
c2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7
CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAg
ICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMy
IGZzX25zcGY7CgogICAgICAgIF9fdTMyIGZzX29wdGltOwoKICAgICAgICB1bmlvbiB7CiAgICAg
ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNl
Y3Q7CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBm
c19zdW54ODY7CiAgICAgICAgfSBmc191MTsKICAgICAgICBfX3UzMiBmc19pbnRlcmxlYXZlOwog
ICAgICAgIF9fdTMyIGZzX3RyYWNrc2tldzsKCgoKCiAgICAgICAgX191MzIgZnNfaWRbMl07Cgog
ICAgICAgIF9fdTMyIGZzX2NzYWRkcjsKICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAg
X191MzIgZnNfY2dzaXplOwoKICAgICAgICBfX3UzMiBmc19udHJhazsKICAgICAgICBfX3UzMiBm
c19uc2VjdDsKICAgICAgICBfX3UzMiBmc19zcGM7CgogICAgICAgIF9fdTMyIGZzX25jeWw7Cgog
ICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAgICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIg
ZnNfZnBnOwoKICAgICAgICBzdHJ1Y3QgdWZzX2NzdW0gZnNfY3N0b3RhbDsKCiAgICAgICAgX19z
OCBmc19mbW9kOwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsK
ICAgICAgICBfX3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEyXTsKCiAgICAg
ICAgX191MzIgZnNfY2dyb3RvcjsKICAgICAgICBfX3UzMiBmc19jc3BbMzFdOwogICAgICAgIF9f
dTMyIGZzX21heGNsdXN0ZXI7CiAgICAgICAgX191MzIgZnNfY3BjOwogICAgICAgIF9fdTE2IGZz
X29wb3N0YmxbMTZdWzhdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAg
X19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19z
dGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAg
ICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZz
X3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f
czMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVj
bGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAg
ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fczMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19t
YXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAg
ICAgICB9IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3Mz
MiBmc19ucnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNf
cm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsx
XTsKfTsKIyA0MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19mcy5o
IgpzdHJ1Y3QgdWZzX2N5bGluZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19saW5rOwogICAg
ICAgIF9fdTMyIGNnX21hZ2ljOwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAgICAgX191MzIg
Y2dfY2d4OwogICAgICAgIF9fdTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2dfbmlibGs7CiAg
ICAgICAgX191MzIgY2dfbmRibGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNnX2NzOwogICAg
ICAgIF9fdTMyIGNnX3JvdG9yOwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAgICAgICBfX3Uz
MiBjZ19pcm90b3I7CiAgICAgICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0KV07CiAgICAg
ICAgX191MzIgY2dfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAgICAgIF9fdTMy
IGNnX2l1c2Vkb2ZmOwogICAgICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY2df
bmV4dGZyZWVvZmY7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgY2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgY2dfbmNsdXN0ZXJibGtzOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19z
cGFyZWNvblsxM107CiAgICAgICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAgICAgICAgX191
MzIgY2dfc3BhcmVjb25bMTZdOwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4IGNnX3NwYWNl
WzFdOwoKfTsKCgoKCnN0cnVjdCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVpX21vZGU7CiAg
ICAgICAgX191MTYgdWlfbmxpbms7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MTYgdWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xkaWRzOwogICAg
ICAgICAgICAgICAgX191MzIgdWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2F1
dGhvcjsKICAgICAgICB9IHVpX3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAgICAgICAgc3Ry
dWN0IHVmc190aW1ldmFsIHVpX2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9t
dGltZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAgICAgdW5pb24g
ewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg
dWlfZGJbMTJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlszXTsKICAgICAg
ICAgICAgICAgIH0gdWlfYWRkcjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3ltbGlua1s0Kigx
MiArMyldOwogICAgICAgIH0gdWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7CiAgICAgICAg
X191MzIgdWlfYmxvY2tzOwogICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1bmlvbiB7CiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9z
aGFkb3c7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAg
ICAgICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1
aV9vZWZ0ZmxhZzsKICAgICAgICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAg
ICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIHVp
X3NwYXJlWzJdOwogICAgICAgICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAgICAgIHN0cnVj
dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAg
ICAgICAgICAgX191MzIgdWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9t
b2RlaDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1aV9odXJkOwog
ICAgICAgIH0gdWlfdTM7Cn07CiMgNTI0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC91ZnNfZnMuaCIKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1Y3QgaW5v
ZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxvY2tzIChz
dHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVkIHVmc19u
ZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNpZ25lZCwg
dW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiB1
ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsKZXh0ZXJu
IHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsK
CgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVyYXRpb25z
OwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGlu
b2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCB1bnNp
Z25lZCBsb25nKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2ZpbGVfaW5v
ZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2ZpbGVfb3Bl
cmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVmc19hb3Bz
OwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0
ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCBp
bnQsIGludCAqKTsKCgpleHRlcm4gaW50IHVmc19mcmFnX21hcCAoc3RydWN0IGlub2RlICosIGlu
dCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2
b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX3dyaXRl
X2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB1ZnNfc3luY19pbm9kZSAo
c3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1Y3QgaW5v
ZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3RydWN0IGlu
b2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJfaGVhZCAq
IHVmc19icmVhZCAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKCgpleHRl
cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0ZXJuIHN0
cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19mc190eXBlOwpleHRlcm4gdm9pZCB1ZnNfd2Fybmlu
ZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4p
IF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZz
X2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9p
ZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVy
biB2b2lkIHVmc193cml0ZV9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4dGVybiBz
dHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7
CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRlIChzdHJ1Y3QgaW5vZGUgKik7CiMgMTggIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAyCgoKCgoKc3RydWN0
IHVmc19idWZmZXJfaGVhZCB7CiAgICAgICAgdW5zaWduZWQgZnJhZ21lbnQ7CiAgICAgICAgdW5z
aWduZWQgY291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhbKDgxOTIgLyAxMDI0
KV07Cn07CgpzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19j
eWxpbmRlcl9ncm91cCB1Y2c7CiAgICAgICAgX191MzIgY19jZ3g7CiAgICAgICAgX191MTYgY19u
Y3lsOwogICAgICAgIF9fdTE2IGNfbmlibGs7CiAgICAgICAgX191MzIgY19uZGJsazsKICAgICAg
ICBfX3UzMiBjX3JvdG9yOwogICAgICAgIF9fdTMyIGNfZnJvdG9yOwogICAgICAgIF9fdTMyIGNf
aXJvdG9yOwogICAgICAgIF9fdTMyIGNfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjX2JvZmY7CiAg
ICAgICAgX191MzIgY19pdXNlZG9mZjsKICAgICAgICBfX3UzMiBjX2ZyZWVvZmY7CiAgICAgICAg
X191MzIgY19uZXh0ZnJlZW9mZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJzdW1vZmY7CiAgICAg
ICAgX191MzIgY19jbHVzdGVyb2ZmOwogICAgICAgIF9fdTMyIGNfbmNsdXN0ZXJibGtzOwp9OwoK
c3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfYnVmZmVyX2hl
YWQgc191Ymg7CiAgICAgICAgX191MzIgc19zYmxrbm87CiAgICAgICAgX191MzIgc19jYmxrbm87
CiAgICAgICAgX191MzIgc19pYmxrbm87CiAgICAgICAgX191MzIgc19kYmxrbm87CiAgICAgICAg
X191MzIgc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBzX2NnbWFzazsKICAgICAgICBfX3UzMiBz
X3NpemU7CiAgICAgICAgX191MzIgc19kc2l6ZTsKICAgICAgICBfX3UzMiBzX25jZzsKICAgICAg
ICBfX3UzMiBzX2JzaXplOwogICAgICAgIF9fdTMyIHNfZnNpemU7CiAgICAgICAgX191MzIgc19m
cGI7CiAgICAgICAgX191MzIgc19taW5mcmVlOwogICAgICAgIF9fdTMyIHNfYm1hc2s7CiAgICAg
ICAgX191MzIgc19mbWFzazsKICAgICAgICBfX3UzMiBzX2JzaGlmdDsKICAgICAgICBfX3UzMiBz
X2ZzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNidG9k
YjsKICAgICAgICBfX3UzMiBzX3Nic2l6ZTsKICAgICAgICBfX3UzMiBzX2NzbWFzazsKICAgICAg
ICBfX3UzMiBzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgc19uaW5kaXI7CiAgICAgICAgX191MzIg
c19pbm9wYjsKICAgICAgICBfX3UzMiBzX25zcGY7CiAgICAgICAgX191MzIgc19ucHNlY3Q7CiAg
ICAgICAgX191MzIgc19pbnRlcmxlYXZlOwogICAgICAgIF9fdTMyIHNfdHJhY2tza2V3OwogICAg
ICAgIF9fdTMyIHNfY3NhZGRyOwogICAgICAgIF9fdTMyIHNfY3NzaXplOwogICAgICAgIF9fdTMy
IHNfY2dzaXplOwogICAgICAgIF9fdTMyIHNfbnRyYWs7CiAgICAgICAgX191MzIgc19uc2VjdDsK
ICAgICAgICBfX3UzMiBzX3NwYzsKICAgICAgICBfX3UzMiBzX2lwZzsKICAgICAgICBfX3UzMiBz
X2ZwZzsKICAgICAgICBfX3UzMiBzX2NwYzsKICAgICAgICBfX3MzMiBzX2NvbnRpZ3N1bXNpemU7
CiAgICAgICAgX19zNjQgc19xYm1hc2s7CiAgICAgICAgX19zNjQgc19xZm1hc2s7CiAgICAgICAg
X19zMzIgc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgc19ucnBvczsKICAgICAgICBfX3Mz
MiBzX3Bvc3RibG9mZjsKICAgICAgICBfX3MzMiBzX3JvdGJsb2ZmOwoKICAgICAgICBfX3UzMiBz
X2ZwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGI7CiAgICAgICAgX191MzIgc18yYXBiOwogICAg
ICAgIF9fdTMyIHNfM2FwYjsKICAgICAgICBfX3UzMiBzX2FwYm1hc2s7CiAgICAgICAgX191MzIg
c19hcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzJhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzNh
cGJzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGZzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGI7
CiAgICAgICAgX191MzIgc19pbm9wZjsKICAgICAgICBfX3UzMiBzX3NiYmFzZTsKICAgICAgICBf
X3UzMiBzX2JwZjsKICAgICAgICBfX3UzMiBzX2JwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfYnBm
bWFzazsKCiAgICAgICAgX191MzIgc19tYXhzeW1saW5rbGVuOwp9OwoKCgoKCnN0cnVjdCB1ZnNf
c2JfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8gKiBzX3VzcGk7CiAg
ICAgICAgc3RydWN0IHVmc19jc3VtICogc19jc3BbMzFdOwogICAgICAgIHVuc2lnbmVkIHNfc3dh
YjsKICAgICAgICB1bnNpZ25lZCBzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq
KiBzX3VjZzsKICAgICAgICBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHNfdWNwaVs4XTsK
ICAgICAgICB1bnNpZ25lZCBzX2Nnbm9bOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19jZ19s
b2FkZWQ7CiAgICAgICAgdW5zaWduZWQgc19tb3VudF9vcHQ7Cn07CgoKCgoKCgpzdHJ1Y3QgdWZz
X3N1cGVyX2Jsb2NrX2ZpcnN0IHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMy
IGZzX3JsaW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxr
bm87CiAgICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAg
ICAgICBfX3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAg
X191MzIgZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2Rz
aXplOwogICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAg
ICBfX3UzMiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwogICAgICAgIF9fdTMyIGZz
X21pbmZyZWU7CiAgICAgICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBz
OwogICAgICAgIF9fdTMyIGZzX2JtYXNrOwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAg
IF9fdTMyIGZzX2JzaGlmdDsKICAgICAgICBfX3UzMiBmc19mc2hpZnQ7CiAgICAgICAgX191MzIg
ZnNfbWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKICAgICAgICBfX3UzMiBmc19m
cmFnc2hpZnQ7CiAgICAgICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNp
emU7CiAgICAgICAgX191MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAg
ICAgICAgX191MzIgZnNfbmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9f
dTMyIGZzX25zcGY7CiAgICAgICAgX191MzIgZnNfb3B0aW07CiAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBz
ZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0g
ZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsK
ICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CiAgICAgICAgX191MzIgZnNfaWRbMl07CiAgICAg
ICAgX191MzIgZnNfY3NhZGRyOwogICAgICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3Uz
MiBmc19jZ3NpemU7CiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNl
Y3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwogICAgICAgIF9fdTMyIGZzX25jeWw7CiAgICAgICAg
X191MzIgZnNfY3BnOwogICAgICAgIF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7
CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CiAgICAgICAgX19zOCBmc19mbW9k
OwogICAgICAgIF9fczggZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBf
X3M4IGZzX2ZsYWdzOwogICAgICAgIF9fczggZnNfZnNtbnRbNTEyIC0gMjEyXTsKCn07CgpzdHJ1
Y3QgdWZzX3N1cGVyX2Jsb2NrX3NlY29uZCB7CiAgICAgICAgX19zOCBmc19mc21udFsyMTJdOwog
ICAgICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAg
ICBfX3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3Ux
NiBmc19vcG9zdGJsWzgyXTsKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfdGhpcmQgewogICAg
ICAgIF9fdTE2IGZzX29wb3N0YmxbNDZdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAg
IHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAg
ICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBf
X3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJd
OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAg
ICAgICB9IGZzX3N1bjsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19z
MzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24y
WzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAg
X191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNv
bls1MF07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fczMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBf
X3UzMiBmc19tYXhmaWxlc2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf
cWJtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBm
c180NDsKICAgICAgICB9IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAg
ICAgICBfX3MzMiBmc19ucnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAg
X19zMzIgZnNfcm90YmxvZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBm
c19zcGFjZVsxXTsKfTsKIyA2NjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9lZnNfZnNf
c2IuaCIgMQojIDI1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9lZnNfZnNf
c2IuaCIKc3RydWN0IGVmc19zdXBlciB7CiAgICAgICAgaW50MzJfdCBmc19zaXplOwogICAgICAg
IGludDMyX3QgZnNfZmlyc3RjZzsKICAgICAgICBpbnQzMl90IGZzX2NnZnNpemU7CiAgICAgICAg
c2hvcnQgZnNfY2dpc2l6ZTsKICAgICAgICBzaG9ydCBmc19zZWN0b3JzOwogICAgICAgIHNob3J0
IGZzX2hlYWRzOwogICAgICAgIHNob3J0IGZzX25jZzsKICAgICAgICBzaG9ydCBmc19kaXJ0eTsK
ICAgICAgICBpbnQzMl90IGZzX3RpbWU7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAg
ICBjaGFyIGZzX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZnNfZnBhY2tbNl07CiAgICAgICAgaW50
MzJfdCBmc19ibXNpemU7CiAgICAgICAgaW50MzJfdCBmc190ZnJlZTsKICAgICAgICBpbnQzMl90
IGZzX3Rpbm9kZTsKICAgICAgICBpbnQzMl90IGZzX2JtYmxvY2s7CiAgICAgICAgaW50MzJfdCBm
c19yZXBsc2I7CiAgICAgICAgaW50MzJfdCBmc19sYXN0aWFsbG9jOwogICAgICAgIGNoYXIgZnNf
c3BhcmVbMjBdOwogICAgICAgIGludDMyX3QgZnNfY2hlY2tzdW07Cn07CgoKc3RydWN0IGVmc19z
Yl9pbmZvIHsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwogICAgICAgIGludDMyX3QgZnNfc3Rh
cnQ7CiAgICAgICAgaW50MzJfdCBmaXJzdF9ibG9jazsKICAgICAgICBpbnQzMl90IHRvdGFsX2Js
b2NrczsKICAgICAgICBpbnQzMl90IGdyb3VwX3NpemU7CiAgICAgICAgaW50MzJfdCBkYXRhX2Zy
ZWU7CiAgICAgICAgaW50MzJfdCBpbm9kZV9mcmVlOwogICAgICAgIHNob3J0IGlub2RlX2Jsb2Nr
czsKICAgICAgICBzaG9ydCB0b3RhbF9ncm91cHM7Cn07CiMgNjY3ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvcm9tZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCByb21mc19zYl9pbmZvIHsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsKIyA2NjggIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3NtYl9mc19zYi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvc21iLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
c21iLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIg
MQojIDEzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zbWIuaCIgMgoKZW51
bSBzbWJfcHJvdG9jb2wgewogICAgICAgIFNNQl9QUk9UT0NPTF9OT05FLAogICAgICAgIFNNQl9Q
Uk9UT0NPTF9DT1JFLAogICAgICAgIFNNQl9QUk9UT0NPTF9DT1JFUExVUywKICAgICAgICBTTUJf
UFJPVE9DT0xfTEFOTUFOMSwKICAgICAgICBTTUJfUFJPVE9DT0xfTEFOTUFOMiwKICAgICAgICBT
TUJfUFJPVE9DT0xfTlQxCn07CgplbnVtIHNtYl9jYXNlX2huZGwgewogICAgICAgIFNNQl9DQVNF
X0RFRkFVTFQsCiAgICAgICAgU01CX0NBU0VfTE9XRVIsCiAgICAgICAgU01CX0NBU0VfVVBQRVIK
fTsKCnN0cnVjdCBzbWJfZHNrYXR0ciB7CiAgICAgICAgX191MTYgdG90YWw7CiAgICAgICAgX191
MTYgYWxsb2NibG9ja3M7CiAgICAgICAgX191MTYgYmxvY2tzaXplOwogICAgICAgIF9fdTE2IGZy
ZWU7Cn07CgpzdHJ1Y3Qgc21iX2Nvbm5fb3B0IHsKCgogICAgICAgIHVuc2lnbmVkIGludCBmZDsK
CiAgICAgICAgZW51bSBzbWJfcHJvdG9jb2wgcHJvdG9jb2w7CiAgICAgICAgZW51bSBzbWJfY2Fz
ZV9obmRsIGNhc2VfaGFuZGxpbmc7CgoKCiAgICAgICAgX191MzIgbWF4X3htaXQ7CiAgICAgICAg
X191MTYgc2VydmVyX3VpZDsKICAgICAgICBfX3UxNiB0aWQ7CgoKICAgICAgICBfX3UxNiBzZWNt
b2RlOwogICAgICAgIF9fdTE2IG1heG11eDsKICAgICAgICBfX3UxNiBtYXh2Y3M7CiAgICAgICAg
X191MTYgcmF3bW9kZTsKICAgICAgICBfX3UzMiBzZXNza2V5OwoKCiAgICAgICAgX191MzIgbWF4
cmF3OwogICAgICAgIF9fdTMyIGNhcGFiaWxpdGllczsKICAgICAgICBfX3MxNiBzZXJ2ZXJ6b25l
Owp9OwoKCgoKc3RydWN0IHNtYl9ubHNfY29kZXBhZ2UgewogICAgICAgIGNoYXIgbG9jYWxfbmFt
ZVsyMF07CiAgICAgICAgY2hhciByZW1vdGVfbmFtZVsyMF07Cn07CiMgNzggIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NtYi5oIgpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAg
ICAgX191MTYgYXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9k
ZV90IGZfbW9kZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7
CiAgICAgICAgZ2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZf
dCBmX3NpemU7CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7
CiAgICAgICAgdGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUg
ewogICAgICAgIENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05O
X1JFVFJJRUQsCiAgICAgICAgQ09OTl9SRVRSWUlORwp9OwojIDE2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9p
bmZvIHsKICAgICAgICBlbnVtIHNtYl9jb25uX3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBm
aWxlICogc29ja19maWxlOwoKICAgICAgICBzdHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICpt
bnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqdGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVk
IGludCBnZW5lcmF0aW9uOwogICAgICAgIHBpZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBz
bWJfY29ubl9vcHQgb3B0OwoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAg
ICB1bnNpZ25lZCBjaGFyICogcGFja2V0OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgZXJyOwoKCiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgog
ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnJlbW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190
YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAgICAgICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50
ICgqY29udmVydCkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBubHNfdGFibGUgKiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpz
dGF0aWMgaW5saW5lIHZvaWQKc21iX2xvY2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2Vy
dmVyKQp7CiAgICAgICAgZG93bigmKHNlcnZlci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p
ZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAg
IHVwKCYoc2VydmVyLT5zZW0pKTsKfQojIDY2OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2hmc19mc19zYi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhmc19uYW1laW5f
Zm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2b2lkICgqaGZz
X25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp0eXBl
ZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3QsIGNvbnN0IGlu
dCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwogICAgICAg
IHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAgICAgICAgaW50
IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNfdmVyc2lvbjsK
ICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25hbWVvdXRfZm4g
c19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAgICAgIGNvbnN0
IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19u
YW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAgX191MzIgc19j
cmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qgc191aWQ7CiAg
ICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjcwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsK
c3RydWN0IGFkZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0
cnVjdCBhZGZzX2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNf
ZGlyOwoKICAgICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1
bW9kZV90IHNfb3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAg
ICAgX191MzIgc19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBf
X3UzMiBzX21hcF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNp
Z25lZCBpbnQgc19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7
CiAgICAgICAgdW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19u
YW1lbGVuOwp9OwojIDY3MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2Iu
aCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9xbng0X2ZzX3Ni
LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcW54NF9mcy5oIiAx
CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9xbnh0eXBlcy5oIiAxCiMgMTQg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMgojIDQ1ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiCnN0cnVjdCBxbng0
X2lub2RlX2VudHJ5IHsKICAgICAgICBjaGFyIGRpX2ZuYW1lWzE2XTsKICAgICAgICBxbng0X29m
Zl90IGRpX3NpemU7CiAgICAgICAgcW54NF94dG50X3QgZGlfZmlyc3RfeHRudDsKICAgICAgICBf
X3UzMiBkaV94YmxrOwogICAgICAgIF9fczMyIGRpX2Z0aW1lOwogICAgICAgIF9fczMyIGRpX210
aW1lOwogICAgICAgIF9fczMyIGRpX2F0aW1lOwogICAgICAgIF9fczMyIGRpX2N0aW1lOwogICAg
ICAgIHFueDRfbnh0bnRfdCBkaV9udW1feHRudHM7CiAgICAgICAgcW54NF9tb2RlX3QgZGlfbW9k
ZTsKICAgICAgICBxbng0X211aWRfdCBkaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgZGlfZ2lk
OwogICAgICAgIHFueDRfbmxpbmtfdCBkaV9ubGluazsKICAgICAgICBfX3U4IGRpX3plcm9bNF07
CiAgICAgICAgcW54NF9mdHlwZV90IGRpX3R5cGU7CiAgICAgICAgX191OCBkaV9zdGF0dXM7Cn07
CgpzdHJ1Y3QgcW54NF9saW5rX2luZm8gewogICAgICAgIGNoYXIgZGxfZm5hbWVbNDhdOwogICAg
ICAgIF9fdTMyIGRsX2lub2RlX2JsazsKICAgICAgICBfX3U4IGRsX2lub2RlX25keDsKICAgICAg
ICBfX3U4IGRsX3NwYXJlWzEwXTsKICAgICAgICBfX3U4IGRsX3N0YXR1czsKfTsKCnN0cnVjdCBx
bng0X3hibGsgewogICAgICAgIF9fdTMyIHhibGtfbmV4dF94YmxrOwogICAgICAgIF9fdTMyIHhi
bGtfcHJldl94YmxrOwogICAgICAgIF9fdTggeGJsa19udW1feHRudHM7CiAgICAgICAgX191OCB4
YmxrX3NwYXJlWzNdOwogICAgICAgIF9fczMyIHhibGtfbnVtX2Jsb2NrczsKICAgICAgICBxbng0
X3h0bnRfdCB4YmxrX3h0bnRzWzYwXTsKICAgICAgICBjaGFyIHhibGtfc2lnbmF0dXJlWzhdOwog
ICAgICAgIHFueDRfeHRudF90IHhibGtfZmlyc3RfeHRudDsKfTsKCnN0cnVjdCBxbng0X3N1cGVy
X2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBSb290RGlyOwogICAgICAg
IHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IElub2RlOwogICAgICAgIHN0cnVjdCBxbng0X2lub2Rl
X2VudHJ5IEJvb3Q7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVfZW50cnkgQWx0Qm9vdDsKfTsK
IyAxMDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIKZXh0
ZXJuIHN0cnVjdCBkZW50cnkgKnFueDRfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3Qg
ZGVudHJ5ICpkZW50cnkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBxbng0X2NvdW50X2ZyZWVfYmxv
Y2tzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBxbng0X2Js
b2NrX21hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb25nIGlibG9jayk7CgpleHRlcm4gc3RydWN0
IGJ1ZmZlcl9oZWFkICpxbng0X2dldGJsayhzdHJ1Y3QgaW5vZGUgKiwgaW50LCBpbnQpOwpleHRl
cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICpxbng0X2JyZWFkKHN0cnVjdCBpbm9kZSAqLCBpbnQsIGlu
dCk7CgpleHRlcm4gaW50IHFueDRfY3JlYXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksIGludCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHFu
eDRfZmlsZV9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMg
cW54NF9kaXJfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg
cW54NF9maWxlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHFueDRf
ZGlyX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgcW54NF9pc19mcmVlKHN0cnVjdCBzdXBlcl9ibG9j
ayAqc2IsIGxvbmcgYmxvY2spOwpleHRlcm4gaW50IHFueDRfc2V0X2JpdG1hcChzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKnNiLCBsb25nIGJsb2NrLCBpbnQgYnVzeSk7CmV4dGVybiBpbnQgcW54NF9jcmVh
dGUoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBpbnQgbW9kZSk7
CmV4dGVybiB2b2lkIHFueDRfdHJ1bmNhdGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2
b2lkIHFueDRfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIGludCBxbng0
X3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKZXh0ZXJu
IGludCBxbng0X3JtZGlyKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp
OwpleHRlcm4gaW50IHFueDRfc3luY19maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVu
dHJ5ICpkZW50cnksIGludCk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2lub2RlKHN0cnVjdCBpbm9k
ZSAqaW5vZGUpOwpleHRlcm4gaW50IHFueDRfZ2V0X2Jsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUs
IGxvbmcgaWJsb2NrLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgY3JlYXRlKTsKIyAxNSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAyCgoKCgoK
c3RydWN0IHFueDRfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7
CiAgICAgICAgc3RydWN0IHFueDRfc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGlu
dCBWZXJzaW9uOwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMg
NjcyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMQoKCgoK
CgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90cXVldWUuaCIgMQoj
IDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90cXVldWUuaCIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxCiMgMTcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCiMgMTggIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3N5c3RlbS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3RxdWV1ZS5oIiAyCiMgMzggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3RxdWV1ZS5oIgpzdHJ1Y3QgdHFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk
IGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzeW5jOwogICAgICAgIHZvaWQgKCpyb3V0aW5l
KSh2b2lkICopOwogICAgICAgIHZvaWQgKmRhdGE7Cn07CiMgNjQgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFz
a19xdWV1ZTsKCgoKCmV4dGVybiB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRx
X2Rpc2s7CiMgOTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5o
IgpleHRlcm4gc3BpbmxvY2tfdCB0cXVldWVfbG9jazsKCgoKCgpzdGF0aWMgaW5saW5lIGludCBx
dWV1ZV90YXNrKHN0cnVjdCB0cV9zdHJ1Y3QgKmJoX3BvaW50ZXIsIHRhc2tfcXVldWUgKmJoX2xp
c3QpCnsKICAgICAgICBpbnQgcmV0ID0gMDsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQo
MCwmYmhfcG9pbnRlci0+c3luYykpIHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7CiAgICAgICAgICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBw
b3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmdHF1ZXVlX2xv
Y2spOyB9IHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50
ZXItPmxpc3QsIGJoX2xpc3QpOwogICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7
IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJnIiAoZmxhZ3MpOiJt
ZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICByZXQgPSAxOwogICAg
ICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX19ydW5fdGFza19x
dWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBydW5fdGFza19xdWV1
ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9lbXB0eSgmKmxpc3QpKSkK
ICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAyCiMgMjYgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnN0cnVjdCBy
ZWlzZXJmc19zdXBlcl9ibG9jawp7CiAgX191MzIgc19ibG9ja19jb3VudDsKICBfX3UzMiBzX2Zy
ZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2s7
CiAgX191MzIgc19qb3VybmFsX2RldjsKIyA0MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwog
IF9fdTMyIHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3Vu
dCA7CiAgX191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9j
b21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19i
bG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwog
IF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rp
b25fY29kZTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3Ux
NiBzX3ZlcnNpb247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5l
cmF0aW9uOwogIGNoYXIgc191bnVzZWRbMTI0XSA7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2Vk
X18pKTsKCgoKCnN0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9ja192MQp7CiAgX191MzIgc19ibG9j
a19jb3VudDsKICBfX3UzMiBzX2ZyZWVfYmxvY2tzOwogIF9fdTMyIHNfcm9vdF9ibG9jazsKICBf
X3UzMiBzX2pvdXJuYWxfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2RldjsKICBfX3UzMiBzX29y
aWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNf
am91cm5hbF9ibG9ja19jb3VudCA7CiAgX191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191
MzIgc19qb3VybmFsX21heF9jb21taXRfYWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5z
X2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3Ux
NiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzE2XTsKICBf
X3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UzMiBzX3Jlc2VydmVk
Owp9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CiMgMTQ5ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91
cm5hbF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAg
dW5zaWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19q
b3VybmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4
dCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlz
ZXJmc19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsK
ICBjaGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlz
ZXJmc19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5h
bF9saXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoK
CgpzdHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIg
OwogIGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVu
c2lnbmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsK
Cgp9IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxv
bmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJv
bGVuIDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsK
ICBhdG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRz
X2RvbmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1w
IDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVj
dCBidWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu
b2RlICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJl
ZWRsaXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVl
X2hlYWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoK
c3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Js
b2NrcyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0
IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5z
aWduZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVu
c2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQg
bG9uZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcg
al9iY291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1
bnNpZ25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk
ICpqX2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hf
cGFnZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90
IGpfd2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2lu
X3dhaXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7
CiAgaW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpf
bmV4dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25v
ZGVfdXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFs
X2Nub2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25v
ZGUgKmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGlu
dCBqX3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVz
IDsKICBzdHJ1Y3QgaW5vZGUgal9kdW1teV9pbm9kZSA7CiAgc3RydWN0IHJlaXNlcmZzX2xpc3Rf
Yml0bWFwIGpfbGlzdF9iaXRtYXBbNV0gOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3Qg
al9qb3VybmFsX2xpc3RbNjRdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9o
YXNoX3RhYmxlWzgxOTJdIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9saXN0
X2hhc2hfdGFibGVbODE5Ml0gOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfcHJlYWxsb2NfbGlzdDsK
fTsKCgoKCnR5cGVkZWYgX191MzIgKCpoYXNoZl90KSAoY29uc3QgY2hhciAqLCBpbnQpOwoKCnN0
cnVjdCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwoK
CiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3RydWN0IGJ1ZmZl
cl9oZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgKnNfam91
cm5hbCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2b2lkICgqZW5k
X2lvX2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFzaGZfdCBzX2hh
c2hfZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoKCgogICAgd2Fp
dF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlvbl9jb3VudGVy
OwoKCgogICAgaW50IHNfa21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNf
ZGlza193cml0ZXM7CiAgICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwog
ICAgaW50IHNfdW5uZWVkZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5
X2tleV9yZWFkYTsKICAgIGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFy
Y2g7CiAgICBpbnQgc19kaXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7
Cn07CiMgMzYwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9yZWlzZXJmc19m
c19zYi5oIgp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBi
aCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz
KSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh
bmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgOwpp
bnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBpbnQpIDsKaW50IHNo
b3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNfcmVzaXplKHN0cnVjdCBzdXBl
cl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNjczICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvYmZzX2ZzX3NiLmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvYmZzX2ZzX3NiLmgiCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAgICB1
bnNpZ25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9mZjsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
aV9sZl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hhciAq
IHNpX2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAgIHN0
cnVjdCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNjc0ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvdmVyc2lvbi5oIiAxCiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3VkZl9mc19zYi5oIiAyCgoKI3ByYWdtYSBwYWNrKDEpCiMgMzQgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIgpzdHJ1Y3QgdWRmX3NwYXJp
bmdfZGF0YQp7CiAgICAgICAgX191MTYgc19wYWNrZXRfbGVuOwogICAgICAgIHN0cnVjdCBidWZm
ZXJfaGVhZCAqc19zcGFyX21hcFs0XTsKfTsKCnN0cnVjdCB1ZGZfdmlydHVhbF9kYXRhCnsKICAg
ICAgICBfX3UzMiBzX251bV9lbnRyaWVzOwogICAgICAgIF9fdTE2IHNfc3RhcnRfb2Zmc2V0Owp9
OwoKc3RydWN0IHVkZl9iaXRtYXAKewogICAgICAgIF9fdTMyIHNfZXh0TGVuZ3RoOwogICAgICAg
IF9fdTMyIHNfZXh0UG9zaXRpb247CiAgICAgICAgX191MTYgc19ucl9ncm91cHM7CiAgICAgICAg
c3RydWN0IGJ1ZmZlcl9oZWFkICoqc19ibG9ja19iaXRtYXA7Cn07CgpzdHJ1Y3QgdWRmX3BhcnRf
bWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZf
Yml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqc190YWJsZTsK
ICAgICAgICB9IHNfdXNwYWNlOwogICAgICAgIHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAg
ICAgc3RydWN0IHVkZl9iaXRtYXAgKnNfYml0bWFwOwogICAgICAgICAgICAgICAgc3RydWN0IGlu
b2RlICpzX3RhYmxlOwogICAgICAgIH0gc19mc3BhY2U7CiAgICAgICAgX191MzIgc19wYXJ0aXRp
b25fcm9vdDsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9sZW47CiAgICAgICAgX191MTYgc19w
YXJ0aXRpb25fdHlwZTsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl9udW07CiAgICAgICAgdW5p
b24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3NwYXJpbmdfZGF0YSBzX3Nw
YXJpbmc7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YSBzX3ZpcnR1YWw7
CiAgICAgICAgfSBzX3R5cGVfc3BlY2lmaWM7CiAgICAgICAgX191MzIgKCpzX3BhcnRpdGlvbl9m
dW5jKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgX191MzIsIF9fdTE2LCBfX3UzMik7CiAgICAgICAg
X191MTYgc192b2x1bWVzZXFudW07CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fZmxhZ3M7Cn07
CgojcHJhZ21hIHBhY2soKQoKc3RydWN0IHVkZl9zYl9pbmZvCnsKICAgICAgICBzdHJ1Y3QgdWRm
X3BhcnRfbWFwICpzX3BhcnRtYXBzOwogICAgICAgIF9fdTggc192b2xpZGVudFszMl07CgoKICAg
ICAgICBfX3UxNiBzX3BhcnRpdGlvbnM7CiAgICAgICAgX191MTYgc19wYXJ0aXRpb247CgoKICAg
ICAgICBfX3UzMiBzX3Nlc3Npb247CiAgICAgICAgX191MzIgc19hbmNob3JbNF07CiAgICAgICAg
X191MzIgc19sYXN0YmxvY2s7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc19sdmlkYmg7
CgoKICAgICAgICBtb2RlX3Qgc191bWFzazsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1
aWRfdCBzX3VpZDsKCgogICAgICAgIHRpbWVfdCBzX3JlY29yZHRpbWU7CgoKICAgICAgICBfX3Ux
NiBzX3NlcmlhbG51bTsKCgogICAgICAgIF9fdTE2IHNfdWRmcmV2OwoKCiAgICAgICAgX191MzIg
c19mbGFnczsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnNfbmxzX21hcDsKCgogICAgICAg
IHN0cnVjdCBpbm9kZSAqc192YXQ7Cn07CiMgNjc1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbmNwX2ZzX3NiLmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbmNwX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
dHlwZXMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uY3Bf
ZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcF9t
b3VudC5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcF9t
b3VudC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgi
IDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uY3AuaCIgMQojIDEz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uY3AuaCIKIyAxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgMTQgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcC5oIiAyCiMgMjIgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbmNwX3JlcXVlc3RfaGVhZGVyIHsKICAg
ICAgICBfX3UxNiB0eXBlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2Vx
dWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191OCBjb25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAg
ICAgICAgX191OCBmdW5jdGlvbiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4
IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoKCgpzdHJ1Y3QgbmNwX3JlcGx5
X2hlYWRlciB7CiAgICAgICAgX191MTYgdHlwZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3U4IHNlcXVlbmNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg
Y29ubl9sb3cgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCB0YXNrIF9fYXR0
cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggY29ubl9oaWdoIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTggY29tcGxldGlvbl9jb2RlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTggY29ubmVjdGlvbl9zdGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNr
ZWQpKTsKICAgICAgICBfX3U4IGRhdGFbMF0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CgoK
CnN0cnVjdCBuY3Bfdm9sdW1lX2luZm8gewogICAgICAgIF9fdTMyIHRvdGFsX2Jsb2NrczsKICAg
ICAgICBfX3UzMiBmcmVlX2Jsb2NrczsKICAgICAgICBfX3UzMiBwdXJnZWFibGVfYmxvY2tzOwog
ICAgICAgIF9fdTMyIG5vdF95ZXRfcHVyZ2VhYmxlX2Jsb2NrczsKICAgICAgICBfX3UzMiB0b3Rh
bF9kaXJfZW50cmllczsKICAgICAgICBfX3UzMiBhdmFpbGFibGVfZGlyX2VudHJpZXM7CiAgICAg
ICAgX191OCBzZWN0b3JzX3Blcl9ibG9jazsKICAgICAgICBjaGFyIHZvbHVtZV9uYW1lWygxNikg
KyAxXTsKfTsKIyAxMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcC5o
IgpzdHJ1Y3QgbndfaW5mb19zdHJ1Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRy
aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9f
KChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
ICAgICAgICBfX3UzMiBkYXRhU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg
ICAgICBfX3UzMiB0b3RhbFN0cmVhbVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MTYgbnVtYmVyT2ZTdHJlYW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAg
IF9fdTE2IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3Ux
NiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3Jl
YXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUg
X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJp
YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18o
KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191
MTYgaW5oZXJpdGVkUmlnaHRzTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UzMiBkaXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9z
RGlyTnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBf
X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CiAgICAgICAgX191MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTMyIE5TQ3JlYXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg
ICBfX3U4IG5hbWVMZW4gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRy
eU5hbWVbMjU2XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5X2Rvc19pbmZv
IHsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg
ICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf
X3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg
Y3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeURh
dGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5VGltZSBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRl
X18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBh
Y2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp
OwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAg
X191MTYgaW5oZXJpdGFuY2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg
ICAgX191MTYgaW5oZXJpdGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog
ICAgICAgIF9fdTMyIG1heGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKCnN0
cnVjdCBud19zZWFyY2hfc2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVyIF9fYXR0cmli
dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CiAgICAgICAgX191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07
CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAy
CiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIgpz
dHJ1Y3QgbmNwX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2ln
bmVkIGludCBuY3BfZmQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAg
ICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRl
ZF92b2xbKDE2KSArIDFdOwogICAgICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAg
dW5zaWduZWQgaW50IHJldHJ5X2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAg
ICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAg
ICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9tb2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBk
aXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVy
c2lvbjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9u
ZyBtb3VudGVkX3VpZDsKCiAgICAgICAgbG9uZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQg
aW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln
bmVkIGludCByZXRyeV9jb3VudDsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGdpZDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRh
X2tlcm5lbCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBp
bnQgaW50X2ZsYWdzOwoKICAgICAgICBfX2tlcm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAg
ICAgIF9fa2VybmVsX3BpZF90IHdkb2dfcGlkOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7
CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0
cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAg
ICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7
CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2Rl
X3QgZGlyX21vZGU7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L25jcF9mc19zYi5oIiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3Qg
bmNwX21vdW50X2RhdGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkg
KyAyXTsKCiAgICAgICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5j
ZTsKICAgICAgICB1OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBj
b21wbGV0aW9uOwogICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJf
c2l6ZTsKCiAgICAgICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAg
ICBpbnQgaGFzX3N1YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAg
ICAgaW50IHJvb3Rfc2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBp
bnQgc2lnbl9hY3RpdmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBz
aWduX2xhc3RbMTZdOwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRo
X3R5cGU7CiAgICAgICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAg
ICAgICAgdm9pZCogb2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7
CiAgICAgICAgfSBhdXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90
IGxlbjsKICAgICAgICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAg
ICAgc3RydWN0IG5sc190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpu
bHNfaW87CgoKICAgICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBm
bGFnczsKfTsKIyA5MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmNwX2Zz
X3NiLmgiCnN0YXRpYyBpbmxpbmUgaW50IG5jcF9jb25uX3ZhbGlkKHN0cnVjdCBuY3Bfc2VydmVy
ICpzZXJ2ZXIpCnsKICAgICAgICByZXR1cm4gKChzZXJ2ZXItPmNvbm5fc3RhdHVzICYgMHgxMSkg
PT0gMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuY3BfaW52YWxpZGF0ZV9jb25uKHN0cnVjdCBu
Y3Bfc2VydmVyICpzZXJ2ZXIpCnsKICAgICAgICBzZXJ2ZXItPmNvbm5fc3RhdHVzIHw9IDB4MDE7
Cn0KIyA2NzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC91c2JkZXZfZnNfc2IuaCIgMQpz
dHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAg
ICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAgICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAg
ICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3QgZGV2bW9kZTsKICAgICAgICB1aWRfdCBi
dXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAgICAgIHVtb2RlX3QgYnVzbW9kZTsKICAg
ICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVf
dCBsaXN0bW9kZTsKfTsKIyA2NzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jcmFtZnNf
ZnNfc2IuaCIgMQojIDY3OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3Ni
LmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9qZmZzMl9mc19z
Yi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3BpbmxvY2su
aCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX3Ni
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb21wbGV0aW9u
LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29tcGxldGlv
bi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMQoj
IDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDIK
CnN0cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9uZTsKICAgICAgICB3
YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGluaXRf
Y29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHgtPmRvbmUgPSAwOwog
ICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9CgpleHRlcm4gdm9pZCB3YWl0
X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmlidXRlX18oKHJlZ3Bh
cm0oMykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRpb24gKikgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2pmZnMyX2ZzX3NiLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vc2VtYXBob3JlLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvamZmczJfZnNfc2IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2xpc3QuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9qZmZzMl9mc19zYi5oIiAyCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg
bXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5zaWdu
ZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAgICAg
IHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGdj
X3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhpdDsK
CgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191MzIg
Zmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGlydHlf
c2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19zaXpl
OwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoKCgog
ICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdfYmxv
Y2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNl
YmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9j
azsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5
X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAgc3Ry
dWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh
ZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0
OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf
aGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRpb25f
bG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBzdHJ1
Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3BpbmxvY2tf
dCBpbm9jYWNoZV9sb2NrOwp9OwojIDY3OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvZnMuaCIgMgoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgc3VwZXJfYmxvY2tzOwpleHRl
cm4gc3BpbmxvY2tfdCBzYl9sb2NrOwoKCgpzdHJ1Y3Qgc3VwZXJfYmxvY2sgewogICAgICAgIHN0
cnVjdCBsaXN0X2hlYWQgc19saXN0OwogICAgICAgIGtkZXZfdCBzX2RldjsKICAgICAgICB1bnNp
Z25lZCBsb25nIHNfYmxvY2tzaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVf
Yml0czsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfZGlydDsKICAgICAgICB1bnNpZ25lZCBsb25n
IGxvbmcgc19tYXhieXRlczsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqc190eXBl
OwogICAgICAgIHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogICAgICAgIHN0cnVjdCBk
cXVvdF9vcGVyYXRpb25zICpkcV9vcDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzX21hZ2ljOwogICAgICAgIHN0cnVjdCBkZW50cnkgKnNfcm9v
dDsKICAgICAgICBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogICAgICAgIHN0cnVjdCBz
ZW1hcGhvcmUgc19sb2NrOwogICAgICAgIGludCBzX2NvdW50OwogICAgICAgIGF0b21pY190IHNf
YWN0aXZlOwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBzX2xvY2tlZF9pbm9kZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX2Zp
bGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpzX2JkZXY7CiAgICAgICAgc3RydWN0
IGxpc3RfaGVhZCBzX2luc3RhbmNlczsKICAgICAgICBzdHJ1Y3QgcXVvdGFfbW91bnRfb3B0aW9u
cyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbWluaXhf
c2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX3NiX2luZm8gZXh0
Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3NiX2luZm8gaHBmc19zYjsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19zYjsKICAgICAgICAgICAgICAgIHN0
cnVjdCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGlzb2Zz
X3NiX2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX3NiX2luZm8gbmZz
X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2JfaW5mbyBzeXN2X3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3NiOwogICAgICAgICAgICAgICAgc3Ry
dWN0IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBlZnNfc2JfaW5m
byBlZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2htZW1fc2JfaW5mbyBzaG1lbV9zYjsK
ICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZvIHJvbWZzX3NiOwogICAgICAgICAg
ICAgICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0
IGhmc19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBhZGZzX3NiX2luZm8g
YWRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X3NiX2luZm8gcW54NF9zYjsKICAg
ICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZvIHJlaXNlcmZzX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVj
dCB1ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbmNwX3NlcnZlciBu
Y3Bmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2JkZXZfc2JfaW5mbyB1c2JkZXZmc19z
YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9pbmZvIGpmZnMyX3NiOwogICAgICAg
ICAgICAgICAgc3RydWN0IGNyYW1mc19zYl9pbmZvIGNyYW1mc19zYjsKICAgICAgICAgICAgICAg
IHZvaWQgKmdlbmVyaWNfc2JwOwogICAgICAgIH0gdTsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSBzX3Zmc19yZW5hbWVfc2VtOwojIDc1MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvZnMuaCIKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3BhdGhf
c2VtOwp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg
ZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1
Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZz
X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK
ZXh0ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4
dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0
ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDc4NSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29u
c3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19k
ZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0
cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVj
dCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19t
ZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3Qp
Owp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxl
ICpvd25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3Qs
IGludCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNp
emVfdCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICos
IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikg
KHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQg
KCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAg
ICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVk
IGludCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICos
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlu
b2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUg
Kik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq
KTsKICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwg
aW50IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICos
IGludCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZp
bGVfbG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25z
dCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXpl
X3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu
ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBm
aWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAg
ICB1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9
OwoKc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVj
dCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAo
Kmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgq
bGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwog
ICAgICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAg
ICAgICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25z
dCBjaGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl
bnRyeSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3Qg
ZGVudHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl
bnRyeSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBz
dHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAq
LCBjaGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkg
Kiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3Qg
aW5vZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu
dCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBp
bnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoK
c3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3Ry
dWN0IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3Qg
aW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlu
b2RlICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQp
OwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9p
ZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1
cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikg
KHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2Zz
KSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVj
dCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxv
Y2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0
IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9k
ZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0
IHN1cGVyX2Jsb2NrICopOwojIDg5MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvZnMuaCIKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogKCpmaF90b19kZW50cnkpKHN0cnVjdCBz
dXBlcl9ibG9jayAqc2IsIF9fdTMyICpmaCwgaW50IGxlbiwgaW50IGZodHlwZSwgaW50IHBhcmVu
dCk7CiAgICAgICAgaW50ICgqZGVudHJ5X3RvX2ZoKShzdHJ1Y3QgZGVudHJ5ICosIF9fdTMyICpm
aCwgaW50ICpsZW5wLCBpbnQgbmVlZF9wYXJlbnQpOwp9OwojIDkwNCAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5
KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0
eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5KGlub2Rl
LCAoMSB8IDIgfCA0KSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3N5
bmMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0eShpbm9k
ZSwgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2lub2RlX2RpcnR5X3BhZ2VzKHN0cnVj
dCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsIDQpOwp9
CgpzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyB7CiAgICAgICAgdm9pZCAoKmluaXRpYWxpemUpIChz
dHJ1Y3QgaW5vZGUgKiwgc2hvcnQpOwogICAgICAgIHZvaWQgKCpkcm9wKSAoc3RydWN0IGlub2Rl
ICopOwogICAgICAgIGludCAoKmFsbG9jX2Jsb2NrKSAoc3RydWN0IGlub2RlICosIHVuc2lnbmVk
IGxvbmcsIGNoYXIpOwogICAgICAgIGludCAoKmFsbG9jX2lub2RlKSAoY29uc3Qgc3RydWN0IGlu
b2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2Jsb2NrKSAoc3RydWN0
IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIHZvaWQgKCpmcmVlX2lub2RlKSAoY29u
c3Qgc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnRyYW5zZmVy
KSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAqKTsKfTsKCnN0cnVjdCBmaWxlX3N5c3Rl
bV90eXBlIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGludCBmc19mbGFnczsK
ICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKigqcmVhZF9zdXBlcikgKHN0cnVjdCBzdXBlcl9i
bG9jayAqLCB2b2lkICosIGludCk7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7CiAgICAg
ICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBsaXN0X2hl
YWQgZnNfc3VwZXJzOwp9OwojIDk2MiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvZnMuaCIKZXh0ZXJuIGludCByZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5c3Rl
bV90eXBlICopOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9z
eXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqa2Vybl9tb3VudChzdHJ1Y3Qg
ZmlsZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCBtYXlfdW1vdW50KHN0cnVjdCB2ZnNtb3Vu
dCAqKTsKZXh0ZXJuIGxvbmcgZG9fbW91bnQoY2hhciAqLCBjaGFyICosIGNoYXIgKiwgdW5zaWdu
ZWQgbG9uZywgdm9pZCAqKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9i
bG9jayAqLCBzdHJ1Y3Qgc3RhdGZzICopOwojIDk4MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKHN0cnVj
dCBpbm9kZSAqKTsKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbnQsIHN0cnVjdCBp
bm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIHNpemVfdCk7CiMgOTkwICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192
ZXJpZnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUp
LT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwg
MDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRv
cnlfbG9ja2VkKGlub2RlKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQg
bG9ja3NfdmVyaWZ5X2FyZWEoaW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2Zm
X3Qgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291
bnQpCnsKICAgICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2Zs
YWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAw
MDAyMDAwKSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFk
X3dyaXRlLCBpbm9kZSwgZmlscCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlu
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAg
ICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0
KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkK
ICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAg
ICAgICAgICAgICAgMiwgaW5vZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUg
PCBpbm9kZS0+aV9zaXplID8gc2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgIChzaXplIDwgaW5vZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAg
ICAgICAgICAgICAgICAgICAgICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAg
ICAgKTsKICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0
cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2Rl
LT5pX2Zsb2NrICYmIChpbm9kZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAg
ICAgICByZXR1cm4gX19nZXRfbGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9
CgoKCiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFy
ICosIGludCwgaW50KTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9z
ZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwg
bG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIg
KiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVu
dHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3Ry
dWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBj
aGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoK
CmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBp
bnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxv
Y2tfZGV2aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5z
aWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRn
ZXQoZGV2X3QpOwpleHRlcm4gaW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4
dGVybiB2b2lkIGJkX2ZvcmdldChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRw
dXQoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2Rn
ZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVy
biBpbnQgYmxrZGV2X29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4g
aW50IGJsa2Rldl9jbG9zZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBz
dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNz
X3NwYWNlX29wZXJhdGlvbnMgZGVmX2Jsa19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0
aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2Nr
X2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dl
dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBp
bnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0
IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50
KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICos
IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYo
dW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVj
dCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShr
ZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25z
dCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2Rl
KHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lu
b2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2Rl
ICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVy
biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBm
aWxlX29wZXJhdGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp
b25zIHJlYWRfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9w
aXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoK
ZXh0ZXJuIGludCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRl
cm4gaW50IHRyeV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KTsK
ZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWYpOwpleHRl
cm4gdm9pZCBlbmRfYnVmZmVyX2lvX3N5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVw
dG9kYXRlKTsKCgpleHRlcm4gdm9pZCBzZXRfYnVmZmVyX2FzeW5jX2lvKHN0cnVjdCBidWZmZXJf
aGVhZCAqYmgpIDsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGdldF9iaChzdHJ1Y3QgYnVmZmVy
X2hlYWQgKiBiaCkKewogICAgICAgIGF0b21pY19pbmMoJihiaCktPmJfY291bnQpOwp9CgpzdGF0
aWMgaW5saW5lIHZvaWQgcHV0X2JoKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogICAgICAgIGF0b21pY19kZWMo
JmJoLT5iX2NvdW50KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3VwdG9k
YXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoLCBpbnQgb24pCnsKICAgICAgICBpZiAob24pCiAg
ICAgICAgICAgICAgICBzZXRfYml0KEJIX1VwdG9kYXRlLCAmYmgtPmJfc3RhdGUpOwogICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgIGNsZWFyX2JpdChCSF9VcHRvZGF0ZSwgJmJoLT5iX3N0YXRl
KTsKfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVm
ZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRpYyBpbmxp
bmUgdm9pZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAg
ICAgIGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQkhfRGlydHksICYoYmgpLT5iX3N0YXRlKSkKICAg
ICAgICAgICAgICAgIF9fbWFya19idWZmZXJfY2xlYW4oYmgpOwp9CgpleHRlcm4gdm9pZCBfX21h
cmtfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpOwpleHRlcm4gdm9pZCBfX21hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAq
YmgpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgbWFya19idWZmZXJf
ZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdm9pZCBidWZmZXJfaW5zZXJ0X2lub2RlX2RhdGFfcXVldWUoc3RydWN0IGJ1ZmZl
cl9oZWFkICosIHN0cnVjdCBpbm9kZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9hc3luYyhzdHJ1Y3QgYnVmZmVyX2hlYWQg
KiBiaCwgaW50IG9uKQp7CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChC
SF9Bc3luYywgJmJoLT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVh
cl9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9p
ZCBidWZmZXJfSU9fZXJyb3Ioc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBtYXJr
X2J1ZmZlcl9jbGVhbihiaCk7CgoKCiAgICAgICAgYmgtPmJfZW5kX2lvKGJoLCAwKTsKfQoKZXh0
ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwg
c3RydWN0IGlub2RlICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfZGlydHlfaW5v
ZGUoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAg
IG1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKICAgICAgICBidWZmZXJfaW5zZXJ0X2lub2RlX3F1ZXVl
KGJoLCBpbm9kZSk7Cn0KCmV4dGVybiB2b2lkIGJhbGFuY2VfZGlydHkodm9pZCk7CmV4dGVybiBp
bnQgY2hlY2tfZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2Rl
cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgaW52YWxpZGF0ZV9kZXZpY2Uoa2Rl
dl90LCBpbnQpOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzKHN0cnVjdCBpbm9k
ZSAqKTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlczIoc3RydWN0IGFkZHJlc3Nf
c3BhY2UgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5v
ZGUgKik7CgoKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2Ug
KiwgaW50KTsKZXh0ZXJuIHZvaWQgX19pbnZhbGlkYXRlX2J1ZmZlcnMoa2Rldl90IGRldiwgaW50
KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXMoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY191bmxv
Y2tlZF9pbm9kZXModm9pZCk7CmV4dGVybiB2b2lkIHdyaXRlX2lub2RlX25vdyhzdHJ1Y3QgaW5v
ZGUgKiwgaW50KTsKZXh0ZXJuIGludCBzeW5jX2J1ZmZlcnMoa2Rldl90LCBpbnQpOwpleHRlcm4g
dm9pZCBzeW5jX2RldihrZGV2X3QpOwpleHRlcm4gaW50IGZzeW5jX2RldihrZGV2X3QpOwpleHRl
cm4gaW50IGZzeW5jX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIGludCBmc3lu
Y19ub19zdXBlcihrZGV2X3QpOwpleHRlcm4gdm9pZCBzeW5jX2lub2Rlc19zYihzdHJ1Y3Qgc3Vw
ZXJfYmxvY2sgKik7CmV4dGVybiBpbnQgb3N5bmNfaW5vZGVfYnVmZmVycyhzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBpbnQgb3N5bmNfaW5vZGVfZGF0YV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIGludCBmc3luY19pbm9kZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlu
dCBmc3luY19pbm9kZV9kYXRhX2J1ZmZlcnMoc3RydWN0IGlub2RlICopOwpleHRlcm4gaW50IGlu
b2RlX2hhc19idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZmlsZW1hcF9mZGF0
YXN5bmMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBfZmRhdGF3
YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBzeW5jX3N1cGVycyhrZGV2
X3QpOwpleHRlcm4gaW50IGJtYXAoc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgbm90
aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBw
ZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IHZmc19wZXJtaXNzaW9u
KHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IGdldF93cml0ZV9hY2Nlc3Moc3RydWN0
IGlub2RlICopOwpleHRlcm4gaW50IGRlbnlfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICopOwpz
dGF0aWMgaW5saW5lIHZvaWQgcHV0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKiBpbm9kZSkK
ewogICAgICAgIGF0b21pY19kZWMoJmlub2RlLT5pX3dyaXRlY291bnQpOwp9CnN0YXRpYyBpbmxp
bmUgdm9pZCBhbGxvd193cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCnsKICAgICAgICBp
ZiAoZmlsZSkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJmZpbGUtPmZfZGVudHJ5LT5kX2lu
b2RlLT5pX3dyaXRlY291bnQpOwp9CmV4dGVybiBpbnQgZG9fcGlwZShpbnQgKik7CgpleHRlcm4g
aW50IG9wZW5fbmFtZWkoY29uc3QgY2hhciAqLCBpbnQsIGludCwgc3RydWN0IG5hbWVpZGF0YSAq
KTsKCmV4dGVybiBpbnQga2VybmVsX3JlYWQoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywg
Y2hhciAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Blbl9leGVjKGNv
bnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCBpc19zdWJkaXIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1
Y3QgZGVudHJ5ICopOwpleHRlcm4gaW5vX3QgZmluZF9pbm9kZV9udW1iZXIoc3RydWN0IGRlbnRy
eSAqLCBzdHJ1Y3QgcXN0ciAqKTsKIyAxMjMxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKkVSUl9QVFIobG9uZyBlcnJvcikKewog
ICAgICAgIHJldHVybiAodm9pZCAqKSBlcnJvcjsKfQoKc3RhdGljIGlubGluZSBsb25nIFBUUl9F
UlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRp
YyBpbmxpbmUgbG9uZyBJU19FUlIoY29uc3Qgdm9pZCAqcHRyKQp7CiAgICAgICAgcmV0dXJuICh1
bnNpZ25lZCBsb25nKXB0ciA+ICh1bnNpZ25lZCBsb25nKS0xMDAwTDsKfQojIDEyNjIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFT
VF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklORH07CiMgMTI3MyAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAg
ICAgIHNpemVfdCB3cml0dGVuOwogICAgICAgIHNpemVfdCBjb3VudDsKICAgICAgICBjaGFyICog
YnVmOwogICAgICAgIGludCBlcnJvcjsKfSByZWFkX2Rlc2NyaXB0b3JfdDsKCnR5cGVkZWYgaW50
ICgqcmVhZF9hY3Rvcl90KShyZWFkX2Rlc2NyaXB0b3JfdCAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNp
Z25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCgpleHRlcm4gbG9mZl90IGRlZmF1bHRfbGxzZWVr
KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKCmV4dGVybiBp
bnQgX191c2VyX3dhbGsoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0IG5hbWVpZGF0YSAq
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0aF9pbml0KGNvbnN0
IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVn
cGFybSgzKSkpOwpleHRlcm4gaW50IHBhdGhfd2Fsayhjb25zdCBjaGFyICosIHN0cnVjdCBuYW1l
aWRhdGEgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gaW50IGxpbmtfcGF0
aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHBhdGhfcmVsZWFzZShzdHJ1Y3QgbmFtZWlkYXRhICop
OwpleHRlcm4gaW50IGZvbGxvd19kb3duKHN0cnVjdCB2ZnNtb3VudCAqKiwgc3RydWN0IGRlbnRy
eSAqKik7CmV4dGVybiBpbnQgZm9sbG93X3VwKHN0cnVjdCB2ZnNtb3VudCAqKiwgc3RydWN0IGRl
bnRyeSAqKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3VwX29uZV9sZW4oY29uc3QgY2hh
ciAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogbG9va3Vw
X2hhc2goc3RydWN0IHFzdHIgKiwgc3RydWN0IGRlbnRyeSAqKTsKCgoKZXh0ZXJuIHZvaWQgaXB1
dChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGZvcmNlX2RlbGV0ZShzdHJ1Y3QgaW5vZGUg
Kik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBp
bm9fdCBpdW5pcXVlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbm9fdCk7Cgp0eXBlZGVmIGludCAo
KmZpbmRfaW5vZGVfdCkoc3RydWN0IGlub2RlICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4
dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQg
bG9uZywgZmluZF9pbm9kZV90LCB2b2lkICopOwpzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAq
aWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubykKewogICAgICAg
IHJldHVybiBpZ2V0NChzYiwgaW5vLCAoKHZvaWQgKikwKSwgKCh2b2lkICopMCkpOwp9CgpleHRl
cm4gdm9pZCBjbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUg
KiBnZXRfZW1wdHlfaW5vZGUodm9pZCk7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBpbm9kZSAqIG5l
d19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiAgICAgICAgc3RydWN0IGlub2RlICpp
bm9kZSA9IGdldF9lbXB0eV9pbm9kZSgpOwogICAgICAgIGlmIChpbm9kZSkgewogICAgICAgICAg
ICAgICAgaW5vZGUtPmlfc2IgPSBzYjsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2RldiA9IHNi
LT5zX2RldjsKICAgICAgICAgICAgICAgIGlub2RlLT5pX2Jsa2JpdHMgPSBzYi0+c19ibG9ja3Np
emVfYml0czsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGlub2RlOwp9CmV4dGVybiB2b2lkIHJl
bW92ZV9zdWlkKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKZXh0ZXJuIHZvaWQgaW5zZXJ0X2lub2Rl
X2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCByZW1vdmVfaW5vZGVfaGFzaChzdHJ1
Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIGdldF9lbXB0eV9maWxwKHZvaWQpOwpl
eHRlcm4gdm9pZCBmaWxlX21vdmUoc3RydWN0IGZpbGUgKmYsIHN0cnVjdCBsaXN0X2hlYWQgKmxp
c3QpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X2hhc2hfdGFibGUoa2Rldl90LCBp
bnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBnZXRibGsoa2Rldl90LCBpbnQs
IGludCk7CmV4dGVybiB2b2lkIGxsX3J3X2Jsb2NrKGludCwgaW50LCBzdHJ1Y3QgYnVmZmVyX2hl
YWQgKiBiaFtdKTsKZXh0ZXJuIHZvaWQgc3VibWl0X2JoKGludCwgc3RydWN0IGJ1ZmZlcl9oZWFk
ICopOwpleHRlcm4gaW50IGlzX3JlYWRfb25seShrZGV2X3QpOwpleHRlcm4gdm9pZCBfX2JyZWxz
ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBicmVsc2Uoc3RydWN0
IGJ1ZmZlcl9oZWFkICpidWYpCnsKICAgICAgICBpZiAoYnVmKQogICAgICAgICAgICAgICAgX19i
cmVsc2UoYnVmKTsKfQpleHRlcm4gdm9pZCBfX2Jmb3JnZXQoc3RydWN0IGJ1ZmZlcl9oZWFkICop
OwpzdGF0aWMgaW5saW5lIHZvaWQgYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewog
ICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2Jmb3JnZXQoYnVmKTsKfQpleHRlcm4g
aW50IHNldF9ibG9ja3NpemUoa2Rldl90LCBpbnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFk
ICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7CmV4dGVybiB2b2lkIHdha2V1cF9iZGZsdXNoKHZv
aWQpOwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50
IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcs
c3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVybiBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0
cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9ja19zeW1s
aW5rKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tf
d3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBwYWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBi
bG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBp
bnQgYmxvY2tfcHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwg
Z2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2Uq
LCB1bnNpZ25lZCwgdW5zaWduZWQsIGdldF9ibG9ja190KiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nICopOwpleHRlcm4gaW50IGJsb2NrX2NvbW1pdF93cml0
ZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pOwpleHRlcm4g
aW50IGJsb2NrX3N5bmNfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCmludCBnZW5lcmljX2Jsb2NrX2Jt
YXAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9uZywgZ2V0X2Jsb2NrX3QgKik7CmludCBnZW5l
cmljX2NvbW1pdF93cml0ZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCwg
dW5zaWduZWQpOwppbnQgYmxvY2tfdHJ1bmNhdGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq
LCBsb2ZmX3QsIGdldF9ibG9ja190ICopOwpleHRlcm4gdm9pZCBjcmVhdGVfZW1wdHlfYnVmZmVy
cyhzdHJ1Y3QgcGFnZSAqLCBrZGV2X3QsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIGludCB3YWl0
Zm9yX29uZV9wYWdlKHN0cnVjdCBwYWdlKik7CmV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21tYXAo
c3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gaW50IGZpbGVf
cmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdlICpwYWdlLCB1
bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIHNzaXplX3Qg
Z2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dlbmVyaWNfZmlsZV9y
ZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCByZWFkX2Fj
dG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90
IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xsc2Vlayhz
dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBzc2l6
ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZf
dCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwg
c3RydWN0IGZpbGUgKiBmaWxwKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVy
aWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hh
ciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5rKHN0cnVj
dCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3JlYWRsaW5rKHN0
cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93X2xpbmso
c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3RydWN0IGlub2Rl
X29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRlcm4gaW50IHZm
c19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJuIGludCBk
Y2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7CgpleHRlcm4g
c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIgKm5hbWUpOwpl
eHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQg
ZHJvcF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlubGluZSBpbnQgaXNf
bW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGdl
dF9zdXBlcihkZXYpOwogICAgICAgIGlmIChzYikgewogICAgICAgICAgICAgICAgZHJvcF9zdXBl
cihzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyKGtkZXZfdCwgaW50IGJbXSwgaW50
KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3YWIzMihrZGV2X3QsIGludCBiW10s
IGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJvb3RfZGV2aWNlX25h
bWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CmV4dGVybiB2b2lkIG1vdW50
X3Jvb3Qodm9pZCk7CgoKZXh0ZXJuIGtkZXZfdCByZWFsX3Jvb3RfZGV2OwpleHRlcm4gaW50IGNo
YW5nZV9yb290KGtkZXZfdCwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gc3NpemVfdCBjaGFyX3Jl
YWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXpl
X3QgYmxvY2tfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpl
eHRlcm4gaW50IHJlYWRfYWhlYWRbXTsKCmV4dGVybiBzc2l6ZV90IGNoYXJfd3JpdGUoc3RydWN0
IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3Qg
YmxvY2tfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq
KTsKCmV4dGVybiBpbnQgZmlsZV9mc3luYyhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICos
IGludCk7CmV4dGVybiBpbnQgZ2VuZXJpY19idWZmZXJfZmRhdGFzeW5jKHN0cnVjdCBpbm9kZSAq
aW5vZGUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfaWR4LCB1bnNpZ25lZCBsb25nIGVuZF9pZHgpOwpl
eHRlcm4gaW50IGdlbmVyaWNfb3N5bmNfaW5vZGUoc3RydWN0IGlub2RlICosIGludCk7CgoKCgpl
eHRlcm4gaW50IGlub2RlX2NoYW5nZV9vayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICop
OwpleHRlcm4gaW50IGlub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBpYXR0ciAq
KTsKIyAxNDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0
aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmxvY2tfcGFyZW50KHN0cnVjdCBkZW50cnkgKmRlbnRy
eSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciA9IGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7
CgogICAgICAgIGRvd24oJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIHJldHVybiBkaXI7
Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5
ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGdldChkZW50cnktPmRfcGFyZW50KTsKfQoKc3Rh
dGljIGlubGluZSB2b2lkIHVubG9ja19kaXIoc3RydWN0IGRlbnRyeSAqZGlyKQp7CiAgICAgICAg
dXAoJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXQoZGlyKTsKfQoKCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCBkb3VibGVfZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzMSwgc3RydWN0IHNl
bWFwaG9yZSAqczIpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAgICAgICAgICAgICAgIGlm
ICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgZG93bihzMSk7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwp9CiMgMTQ5OSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSB2b2lkIHRy
aXBsZV9kb3duKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHNlbWFwaG9yZSAqczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc2VtYXBob3JlICpzMykKewogICAgICAgIGlmIChzMSAhPSBzMikgewogICAgICAg
ICAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMikgewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVk
IGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFw
aG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMTsg
czEgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCh1bnNpZ25lZCBsb25nKSBzMSA8ICh1bnNpZ25lZCBsb25nKSBzMikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMyOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMTsgczEgPSB0bXA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh1bnNpZ25l
ZCBsb25nKSBzMiA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnRtcCA9IHMzOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkb3duKHMxKTsKICAgICAgICB9IGVs
c2UgaWYgKCh1bnNpZ25lZCBsb25nKSBzMiA8ICh1bnNpZ25lZCBsb25nKSBzMykgewogICAgICAg
ICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAgICAgICBzMyA9
IHMyOyBzMiA9IHRtcDsKICAgICAgICB9CiAgICAgICAgZG93bihzMik7CiAgICAgICAgZG93bihz
Myk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfdXAoc3RydWN0IHNlbWFwaG9yZSAqczEs
IHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChzMSAh
PSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHRyaXBs
ZV91cChzdHJ1Y3Qgc2VtYXBob3JlICpzMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlICpzMykKewogICAgICAgIHVwKHMxKTsKICAgICAgICBpZiAoczEgIT0gczIpCiAg
ICAgICAgICAgICAgICB1cChzMik7CiAgICAgICAgdXAoczMpOwp9CgpzdGF0aWMgaW5saW5lIHZv
aWQgZG91YmxlX2xvY2soc3RydWN0IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAg
ICAgICAgZG91YmxlX2Rvd24oJmQxLT5kX2lub2RlLT5pX3NlbSwgJmQyLT5kX2lub2RlLT5pX3Nl
bSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfdW5sb2NrKHN0cnVjdCBkZW50cnkgKmQx
LCBzdHJ1Y3QgZGVudHJ5ICpkMikKewogICAgICAgIGRvdWJsZV91cCgmZDEtPmRfaW5vZGUtPmlf
c2VtLCZkMi0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXQoZDEpOwogICAgICAgIGRwdXQo
ZDIpOwp9CiMgMTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NhcGFiaWxp
dHkuaCIgMgojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jYXBhYmls
aXR5LmgiCnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiAgICAgICAg
X191MzIgdmVyc2lvbjsKICAgICAgICBpbnQgcGlkOwp9ICpjYXBfdXNlcl9oZWFkZXJfdDsKCnR5
cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewogICAgICAgIF9fdTMyIGVmZmVj
dGl2ZTsKICAgICAgICBfX3UzMiBwZXJtaXR0ZWQ7CiAgICAgICAgX191MzIgaW5oZXJpdGFibGU7
Cn0gKmNhcF91c2VyX2RhdGFfdDsKIyA1NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvY2FwYWJpbGl0eS5oIgp0eXBlZGVmIF9fdTMyIGtlcm5lbF9jYXBfdDsKIyAyODQgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKZXh0ZXJuIGtl
cm5lbF9jYXBfdCBjYXBfYnNldDsKIyAzMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJp
bmUoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRl
c3Q7CiAgICAgKGRlc3QpID0gKGEpIHwgKGIpOwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMg
aW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW50ZXJzZWN0KGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxf
Y2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IChhKSAmIChi
KTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2Ry
b3Aoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9jYXBfdCBkcm9wKQp7CiAgICAga2VybmVsX2NhcF90
IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYgfihkcm9wKTsKICAgICByZXR1cm4gZGVzdDsKfQoK
c3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2ludmVydChrZXJuZWxfY2FwX3QgYykKewog
ICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAgIChkZXN0KSA9IH4oYyk7CiAgICAgcmV0dXJuIGRl
c3Q7Cn0KIyA2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmgi
IDIKIyAyMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvYmluZm10cy5oIgpz
dHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0
IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hf
YmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dp
ZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBj
YXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxl
bmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3Qg
bGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAg
ICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVj
dCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCps
b2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcg
c2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmlu
Zm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQo
c3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0
IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51
eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51
eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhz
dHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0
cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFy
Z2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNv
cHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5w
cm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0g
KmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3Jl
Z3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpu
ZXcpOwojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMg
MTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQojIDEyICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvdGltZXMuaCIgMQoKCgpzdHJ1Y3QgdG1zIHsKICAgICAgICBjbG9j
a190IHRtc191dGltZTsKICAgICAgICBjbG9ja190IHRtc19zdGltZTsKICAgICAgICBjbG9ja190
IHRtc19jdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3N0aW1lOwp9OwojIDE0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDU0ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2FzbS9wYXJhbS5oIiAxCiMgNTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3RpbWV4LmgiIDIKIyAxNTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3RpbWV4LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3RpbWV4
LmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdGltZXguaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDEwICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDMyICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vdGltZXguaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgY3ljbGVzX3Q7
CgpleHRlcm4gY3ljbGVzX3QgY2FjaGVmbHVzaF90aW1lOwoKc3RhdGljIGlubGluZSBjeWNsZXNf
dCBnZXRfY3ljbGVzICh2b2lkKQp7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHJldDsK
CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHJldCkpOwogICAg
ICAgIHJldHVybiByZXQ7Cgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBjcHVfa2h6OwojIDE1MyAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE2MSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZXguaCIKc3RydWN0IHRpbWV4IHsK
ICAgICAgICB1bnNpZ25lZCBpbnQgbW9kZXM7CiAgICAgICAgbG9uZyBvZmZzZXQ7CiAgICAgICAg
bG9uZyBmcmVxOwogICAgICAgIGxvbmcgbWF4ZXJyb3I7CiAgICAgICAgbG9uZyBlc3RlcnJvcjsK
ICAgICAgICBpbnQgc3RhdHVzOwogICAgICAgIGxvbmcgY29uc3RhbnQ7CiAgICAgICAgbG9uZyBw
cmVjaXNpb247CiAgICAgICAgbG9uZyB0b2xlcmFuY2U7CgoKICAgICAgICBzdHJ1Y3QgdGltZXZh
bCB0aW1lOwogICAgICAgIGxvbmcgdGljazsKCiAgICAgICAgbG9uZyBwcHNmcmVxOwogICAgICAg
IGxvbmcgaml0dGVyOwogICAgICAgIGludCBzaGlmdDsKICAgICAgICBsb25nIHN0YWJpbDsKICAg
ICAgICBsb25nIGppdGNudDsKICAgICAgICBsb25nIGNhbGNudDsKICAgICAgICBsb25nIGVycmNu
dDsKICAgICAgICBsb25nIHN0YmNudDsKCiAgICAgICAgaW50IDozMjsgaW50IDozMjsgaW50IDoz
MjsgaW50IDozMjsKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwog
ICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7Cn07CiMgMjUzICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1leC5oIgpleHRlcm4gbG9uZyB0aWNr
OwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVfc3RhdGU7CmV4dGVybiBp
bnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0OwpleHRlcm4gbG9uZyB0aW1l
X2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0ZXJuIGxvbmcgdGltZV9w
cmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVybiBsb25nIHRpbWVfZXN0
ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9uZyB0aW1lX2ZyZXE7CmV4
dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRpbWU7CgpleHRlcm4gbG9u
ZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0OwpleHRlcm4gbG9uZyBwcHNf
aml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcgcHBzX3N0YWJpbDsKZXh0
ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0OwpleHRlcm4gbG9uZyBw
cHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4gbG9uZyBwcHNfZXJyY250
OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcmJ0cmVlLmgiIDEKIyA5NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvcmJ0cmVlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgva2Vy
bmVsLmgiIDEKIyA5OCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcmJ0cmVl
LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIg
MQojIDk5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIgMgoK
dHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJf
cGFyZW50OwogICAgICAgIGludCByYl9jb2xvcjsKCgogICAgICAgIHN0cnVjdCByYl9ub2RlX3Mg
KiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfbGVmdDsKfQpyYl9ub2Rl
X3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290X3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3Mg
KiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoKCgpleHRlcm4gdm9pZCByYl9pbnNlcnRfY29sb3Io
cmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJfbm9kZV90
ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCByYl9saW5rX25vZGUocmJfbm9k
ZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFyZW50LCByYl9ub2RlX3QgKiogcmJfbGluaykKewog
ICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBhcmVudDsKICAgICAgICBub2RlLT5yYl9jb2xvciA9
IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7
CgogICAgICAgICpyYl9saW5rID0gbm9kZTsKfQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2FzbS9zeXN0ZW0uaCIgMQojIDE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Nl
bWFwaG9yZS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Nj
aGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFnZS5oIiAx
CiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyMSAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9tbXUuaCIgMQoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgIHZvaWQgKnNlZ21lbnRzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1dmFsaWQ7
Cn0gbW1fY29udGV4dF90OwojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9zY2hlZC5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Nt
cC5oIiAxCiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc21wLmgiCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxMCAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc21wLmgiIDIKIyAyNCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMTkgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3R0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3R0eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
ZnMuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90dHkuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21ham9yLmgiIDEKIyAx
NzcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21ham9yLmgiCnN0YXRpYyBf
X2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKCht
KSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDE5
MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbWFqb3IuaCIKc3RhdGljIF9f
aW5saW5lX18gaW50IGlkZV9ibGtfbWFqb3IoaW50IG0pCnsKICAgICAgICByZXR1cm4gKChtKSA9
PSAzIHx8IChtKSA9PSAyMiB8fCAobSkgPT0gMzMgfHwgKG0pID09IDM0IHx8IChtKSA9PSA1NiB8
fCAobSkgPT0gNTcgfHwgKG0pID09IDg4IHx8IChtKSA9PSA4OSB8fCAobSkgPT0gOTAgfHwgKG0p
ID09IDkxKTsKfQojIDIyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90dHku
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIg
MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEK
IyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdGVybWlvcy5oIiAxCgoKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxCiMgNSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Rlcm1iaXRzLmgiIDIKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKCgpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFn
X3QgY19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNf
Y2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfbGluZTsKICAg
ICAgICBjY190IGNfY2NbMTldOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2FzbS90ZXJtaW9zLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20v
aW9jdGxzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaW9j
dGwuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9pb2N0bHMuaCIg
MgojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDIKCnN0
cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29mbGFn
OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
Y19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGNfY2NbOF07Cn07CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
dGVybWlvcy5oIiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R0
eS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi
IDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgiIDEKIyAx
MTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9mcy5oIiAxCiMgMTE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgiIDIKCnN0cnVjdCB0
dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVy
X25hbWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwog
ICAgICAgIHNob3J0IG1ham9yOwogICAgICAgIHNob3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNo
b3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAg
ICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJtaW9zOwogICAgICAgIGludCBmbGFnczsKICAgICAg
ICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRy
eTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqb3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0
dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAg
ICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvc19sb2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVy
X3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgqb3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHks
IHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0
cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3Ry
dWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBmcm9tX3VzZXIsCiAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1
dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAg
ICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGlu
dCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmNo
YXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9j
dGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAg
dm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlv
cyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRocm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0
eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0bGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsK
ICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9p
ZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3Vw
KShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAgICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3RhdGUpOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZm
ZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0
cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0
cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0aW1lb3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94
Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVh
ZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBp
bnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEp
OwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5
X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvdHR5LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90dHlf
bGRpc2MuaCIgMQojIDEwMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHR5
X2xkaXNjLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnMuaCIg
MQojIDEwMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC93YWl0LmgiIDEKIyAx
MDIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oIiAyCgpz
dHJ1Y3QgdHR5X2xkaXNjIHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgY2hhciAqbmFtZTsK
ICAgICAgICBpbnQgbnVtOwogICAgICAgIGludCBmbGFnczsKCgoKICAgICAgICBpbnQgKCpvcGVu
KShzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKICAgICAgICB2b2lkICgqY2xvc2UpKHN0cnVjdCB0dHlf
c3RydWN0ICopOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0
ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpjaGFyc19pbl9idWZmZXIpKHN0cnVjdCB0dHlfc3Ry
dWN0ICp0dHkpOwogICAgICAgIHNzaXplX3QgKCpyZWFkKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0
eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyICogYnVmLCBzaXplX3QgbnIpOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkoc3RydWN0IHR0
eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgaW50ICgq
aW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7
CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1
Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdW5zaWduZWQgaW50ICgqcG9sbCkoc3RydWN0IHR0
eV9zdHJ1Y3QgKiwgc3RydWN0IGZpbGUgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CgoKCgogICAgICAgIHZvaWQgKCpyZWNlaXZlX2J1
Zikoc3RydWN0IHR0eV9zdHJ1Y3QgKiwgY29uc3QgdW5zaWduZWQgY2hhciAqY3AsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmcCwgaW50IGNvdW50KTsKICAgICAgICBpbnQg
KCpyZWNlaXZlX3Jvb20pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCp3cml0
ZV93YWtldXApKHN0cnVjdCB0dHlfc3RydWN0ICopOwp9OwojIDI2ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC90dHkuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vc3lzdGVtLmgiIDEKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvdHR5LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvdHR5LmgiCnN0cnVjdCBzY3JlZW5faW5mbyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln
X3g7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg
ZG9udHVzZTE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdlOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3Jp
Z192aWRlb19jb2xzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAgICAgICAgdW5z
aWduZWQgc2hvcnQgb3JpZ192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51
c2VkMzsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAgICAgICAgdW5z
aWduZWQgY2hhciBvcmlnX3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdf
dmlkZW9fcG9pbnRzOwoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRoOwogICAgICAg
IHVuc2lnbmVkIHNob3J0IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2Rl
cHRoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBsZmJfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9udHVzZTM7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hh
ciByZWRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBncmVlbl9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fcG9zOwogICAg
ICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9w
b3M7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hh
ciByc3ZkX3BvczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwogICAgICAgIHVu
c2lnbmVkIHNob3J0IHZlc2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFnZXM7Cgp9
OwoKZXh0ZXJuIHN0cnVjdCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R0eS5oIgpzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVy
IHsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHRxdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo
b3JlIHB0eV9zZW07CiAgICAgICAgY2hhciAqY2hhcl9idWZfcHRyOwogICAgICAgIHVuc2lnbmVk
IGNoYXIgKmZsYWdfYnVmX3B0cjsKICAgICAgICBpbnQgY291bnQ7CiAgICAgICAgaW50IGJ1Zl9u
dW07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGFyX2J1ZlsyKjUxMl07CiAgICAgICAgY2hhciBm
bGFnX2J1ZlsyKjUxMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBzbG9wWzRdOwp9OwojIDI1OSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfc3Ry
dWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgZHJpdmVy
OwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAgc3RydWN0IHRlcm1pb3Mg
KnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdycDsKICAgICAgICBpbnQg
c2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh
Z3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5zaXplIHdpbnNpemU7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVk
OjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xhdGVuY3k6MSwgd2FybmVk
OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAgICAgICAgc3RydWN0IHR0
eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luYzsKICAg
ICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAgaW50IG1heF9mbGlwX2Nu
dDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdyaXRl
X3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0OwogICAgICAgIHN0cnVj
dCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2NfZGF0YTsKICAgICAgICB2
b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHR0eV9maWxlczsKCgoK
CgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxu
ZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5vbjoxOwogICAgICAgIHVu
c2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbmltdW1fdG9f
d2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAgICAgaW50IG51bV9vdmVy
cnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21hcFsyNTYvKDgqc2l6ZW9m
KHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7CiAgICAgICAgaW50IHJl
YWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGludCByZWFkX2NudDsKICAg
ICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXplb2YodW5zaWduZWQgbG9u
ZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhbm9u
X2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qg
c2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dy
aXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAgICBzdHJ1Y3QgdHFfc3Ry
dWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3R0eS5oIgpleHRlcm4gdm9pZCB0dHlfd3JpdGVfZmx1c2goc3RydWN0IHR0eV9zdHJ1Y3QgKik7
CgpleHRlcm4gc3RydWN0IHRlcm1pb3MgdHR5X3N0ZF90ZXJtaW9zOwpleHRlcm4gc3RydWN0IHR0
eV9zdHJ1Y3QgKiByZWRpcmVjdDsKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2NzW107CmV4
dGVybiBpbnQgZmdfY29uc29sZSwgbGFzdF9jb25zb2xlLCB3YW50X2NvbnNvbGU7CgpleHRlcm4g
aW50IGttc2dfcmVkaXJlY3Q7CgpleHRlcm4gdm9pZCBjb25faW5pdCh2b2lkKTsKZXh0ZXJuIHZv
aWQgY29uc29sZV9pbml0KHZvaWQpOwoKZXh0ZXJuIGludCBscF9pbml0KHZvaWQpOwpleHRlcm4g
aW50IHB0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCB0dHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBteHNlcl9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1veGFfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu
dCBpcDJfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY3hlX2luaXQodm9pZCk7CmV4dGVybiBpbnQg
cGNfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB2Y3NfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBycF9p
bml0KHZvaWQpOwpleHRlcm4gaW50IGN5X2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3RsX2luaXQo
dm9pZCk7CmV4dGVybiBpbnQgc3RsaV9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNwZWNpYWxpeF9p
bml0KHZvaWQpOwpleHRlcm4gaW50IGVzcHNlcmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IG1h
Y3NlcmlhbF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGEyMjMyYm9hcmRfaW5pdCh2b2lkKTsKCmV4
dGVybiBpbnQgdHR5X3BhcmFub2lhX2NoZWNrKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGtkZXZf
dCBkZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJvdXRp
bmUpOwpleHRlcm4gY2hhciAqdHR5X25hbWUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAq
YnVmKTsKZXh0ZXJuIHZvaWQgdHR5X3dhaXRfdW50aWxfc2VudChzdHJ1Y3QgdHR5X3N0cnVjdCAq
IHR0eSwgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCB0dHlfY2hlY2tfY2hhbmdlKHN0cnVjdCB0
dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RvcF90dHkoc3RydWN0IHR0eV9zdHJ1Y3Qg
KiB0dHkpOwpleHRlcm4gdm9pZCBzdGFydF90dHkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpl
eHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9sZGlzYyhpbnQgZGlzYywgc3RydWN0IHR0eV9sZGlzYyAq
bmV3X2xkaXNjKTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJp
dmVyICpkcml2ZXIpOwpleHRlcm4gaW50IHR0eV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgdHR5
X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIHZvaWQgdHR5X3JlZ2lzdGVyX2RldmZzIChzdHJ1Y3Qg
dHR5X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbWlub3IpOwpleHRlcm4gdm9pZCB0dHlfdW5yZWdpc3Rl
cl9kZXZmcyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgbWlub3IpOwpleHRl
cm4gaW50IHR0eV9yZWFkX3Jhd19kYXRhKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHVuc2lnbmVk
IGNoYXIgKmJ1ZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zmxlbik7CmV4
dGVybiB2b2lkIHR0eV93cml0ZV9tZXNzYWdlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGNoYXIg
Km1zZyk7CgpleHRlcm4gaW50IGlzX29ycGhhbmVkX3BncnAoaW50IHBncnApOwpleHRlcm4gaW50
IGlzX2lnbm9yZWQoaW50IHNpZyk7CmV4dGVybiBpbnQgdHR5X3NpZ25hbChpbnQgc2lnLCBzdHJ1
Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgdHR5X2hhbmd1cChzdHJ1Y3QgdHR5X3N0
cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV92aGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICog
dHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3VuaGFuZ3VwKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJu
IGludCB0dHlfaHVuZ191cF9wKHN0cnVjdCBmaWxlICogZmlscCk7CmV4dGVybiB2b2lkIGRvX1NB
SyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKZXh0ZXJuIHZvaWQgZGlzYXNzb2NpYXRlX2N0dHko
aW50IHByaXYpOwpleHRlcm4gdm9pZCB0dHlfZmxpcF9idWZmZXJfcHVzaChzdHJ1Y3QgdHR5X3N0
cnVjdCAqdHR5KTsKZXh0ZXJuIGludCB0dHlfZ2V0X2JhdWRfcmF0ZShzdHJ1Y3QgdHR5X3N0cnVj
dCAqdHR5KTsKCgpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyB0dHlfbGRpc2NfTl9UVFk7CgoKZXh0
ZXJuIGludCBuX3R0eV9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUg
KiBmaWxlLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVk
IGxvbmcgYXJnKTsKCgoKZXh0ZXJuIHZvaWQgc2VyaWFsX2NvbnNvbGVfaW5pdCh2b2lkKTsKCgoK
ZXh0ZXJuIGludCBwY3hlX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUg
KmZpbHApOwoKCgpleHRlcm4gdm9pZCBjb25zb2xlX3ByaW50KGNvbnN0IGNoYXIgKik7CgoKCmV4
dGVybiBpbnQgdnRfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBm
aWxlLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg
YXJnKTsKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIg
MgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoKCiMg
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXBjLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXBjLmgiIDIKCgoKCnN0cnVjdCBpcGNfcGVy
bQp7CiAgICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZF90IHVp
ZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkX3QgY3Vp
ZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBjZ2lkOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBt
b2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2FzbS9pcGNidWYuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vaXBjYnVmLmgiCnN0cnVjdCBpcGM2NF9wZXJtCnsKICAgICAgICBfX2tl
cm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7CiAgICAgICAgX19r
ZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBjdWlkOwogICAgICAg
IF9fa2VybmVsX2dpZDMyX3QgY2dpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKICAg
ICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VxOwog
ICAgICAgIHVuc2lnbmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51
c2VkMTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKfTsKIyAyMiAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvaXBjLmgiCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAg
ICBrZXlfdCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAg
ICB1aWRfdCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvc2VtLmgiIDIKIyAyMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvc2VtLmgiCnN0cnVjdCBzZW1pZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNl
bV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJu
ZWxfdGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAg
ICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVl
ICoqc2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAg
ICAgdW5zaWduZWQgc2hvcnQgc2VtX25zZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvYXNtL3NlbWJ1Zi5oIiAxCiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogICAgICAgIHN0cnVjdCBp
cGM2NF9wZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVsX3RpbWVfdCBzZW1fb3RpbWU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNl
bV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25l
ZCBsb25nIHNlbV9uc2VtczsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAg
ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKfTsKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvc2VtLmgiIDIKCgpzdHJ1Y3Qgc2VtYnVmIHsKICAgICAgICB1bnNpZ25l
ZCBzaG9ydCBzZW1fbnVtOwogICAgICAgIHNob3J0IHNlbV9vcDsKICAgICAgICBzaG9ydCBzZW1f
ZmxnOwp9OwoKCnVuaW9uIHNlbXVuIHsKICAgICAgICBpbnQgdmFsOwogICAgICAgIHN0cnVjdCBz
ZW1pZF9kcyAqYnVmOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICphcnJheTsKICAgICAgICBzdHJ1
Y3Qgc2VtaW5mbyAqX19idWY7CiAgICAgICAgdm9pZCAqX19wYWQ7Cn07CgpzdHJ1Y3Qgc2VtaW5m
byB7CiAgICAgICAgaW50IHNlbW1hcDsKICAgICAgICBpbnQgc2VtbW5pOwogICAgICAgIGludCBz
ZW1tbnM7CiAgICAgICAgaW50IHNlbW1udTsKICAgICAgICBpbnQgc2VtbXNsOwogICAgICAgIGlu
dCBzZW1vcG07CiAgICAgICAgaW50IHNlbXVtZTsKICAgICAgICBpbnQgc2VtdXN6OwogICAgICAg
IGludCBzZW12bXg7CiAgICAgICAgaW50IHNlbWFlbTsKfTsKIyA4MiAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW0gewogICAgICAgIGludCBzZW12
YWw7CiAgICAgICAgaW50IHNlbXBpZDsKfTsKCgpzdHJ1Y3Qgc2VtX2FycmF5IHsKICAgICAgICBz
dHJ1Y3Qga2Vybl9pcGNfcGVybSBzZW1fcGVybTsKICAgICAgICB0aW1lX3Qgc2VtX290aW1lOwog
ICAgICAgIHRpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CiAg
ICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiAgICAgICAgc3RydWN0IHNlbV9x
dWV1ZSAqKnNlbV9wZW5kaW5nX2xhc3Q7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICp1bmRvOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgc2VtX25zZW1zOwp9OwoKCnN0cnVjdCBzZW1fcXVldWUgewog
ICAgICAgIHN0cnVjdCBzZW1fcXVldWUgKiBuZXh0OwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg
KiogcHJldjsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QqIHNsZWVwZXI7CiAgICAgICAgc3Ry
dWN0IHNlbV91bmRvICogdW5kbzsKICAgICAgICBpbnQgcGlkOwogICAgICAgIGludCBzdGF0dXM7
CiAgICAgICAgc3RydWN0IHNlbV9hcnJheSAqIHNtYTsKICAgICAgICBpbnQgaWQ7CiAgICAgICAg
c3RydWN0IHNlbWJ1ZiAqIHNvcHM7CiAgICAgICAgaW50IG5zb3BzOwogICAgICAgIGludCBhbHRl
cjsKfTsKCgoKCnN0cnVjdCBzZW1fdW5kbyB7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogcHJv
Y19uZXh0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqIGlkX25leHQ7CiAgICAgICAgaW50IHNl
bWlkOwogICAgICAgIHNob3J0ICogc2VtYWRqOwp9OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MCkpKSBsb25nIHN5c19zZW1nZXQgKGtleV90IGtleSwgaW50IG5zZW1zLCBpbnQgc2VtZmxnKTsK
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBz
dHJ1Y3Qgc2VtYnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDApKSkgbG9uZyBzeXNfc2VtY3RsIChpbnQgc2VtaWQsIGludCBzZW1udW0sIGludCBjbWQs
IHVuaW9uIHNlbXVuIGFyZyk7CiMgMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9z
aWduYWwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zaWdu
YWwuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIK
CgpzdHJ1Y3Qgc2lnaW5mbzsKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNt
L3NpZ25hbC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgb2xkX3NpZ3NldF90OwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAvIDMyKV07Cn0gc2lnc2V0X3Q7
CiMgMTI5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVk
ZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3NpZ2FjdGlv
biB7CiAgICAgICAgX19zaWdoYW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRfc2lnc2V0
X3Qgc2FfbWFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQg
KCpzYV9yZXN0b3Jlcikodm9pZCk7Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICBfX3Np
Z2hhbmRsZXJfdCBzYV9oYW5kbGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAg
ICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNr
Owp9OwoKc3RydWN0IGtfc2lnYWN0aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwp9
OwojIDE3MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NpZ25hbC5oIgp0eXBl
ZGVmIHN0cnVjdCBzaWdhbHRzdGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50
IHNzX2ZsYWdzOwogICAgICAgIHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnY29udGV4dC5oIiAxCiMgMTc5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDIKCgoKc3RhdGljIF9faW5s
aW5lX18gdm9pZCBzaWdhZGRzZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBf
X2FzbV9fKCJidHNsICUxLCUwIiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIp
Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRfdCAqc2V0LCBpbnQg
X3NpZykKewogICAgICAgIF9fYXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIo
X3NpZyAtIDEpIDogImNjIik7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2NvbnN0X3NpZ2lz
bWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz
aWcgPSBfc2lnIC0gMTsKICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tzaWcgLyAzMl0gPj4g
KHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9zaWdpc21lbWJlcihz
aWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIGludCByZXQ7CiAgICAgICAgX19hc21f
XygiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSA6
ICJtIigqc2V0KSwgIklyIihfc2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHJldDsKfQoj
IDIxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NpZ25hbC5oIgpzdGF0aWMg
X19pbmxpbmVfXyBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdvcmQpCnsKICAgICAg
ICBfX2FzbV9fKCJic2ZsICUxLCUwIiA6ICI9ciIod29yZCkgOiAicm0iKHdvcmQpIDogImNjIik7
CiAgICAgICAgcmV0dXJuIHdvcmQ7Cn0KIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9zaWduYWwuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2Fz
bS9zaWdpbmZvLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC90eXBlcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NpZ2lu
Zm8uaCIgMgoKCgp0eXBlZGVmIHVuaW9uIHNpZ3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsK
ICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0gc2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBz
aWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAg
ICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3Bh
ZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICB9IF9raWxsOwoKCiAgICAgICAgICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF90aW1lcjI7CiAgICAgICAgICAgICAg
ICB9IF90aW1lcjsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAg
ICAgICAgICAgICAgICAgICAgICAgc2lndmFsX3QgX3NpZ3ZhbDsKICAgICAgICAgICAgICAgIH0g
X3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBw
aWRfdCBfcGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tf
dCBfdXRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX3N0aW1lOwogICAgICAg
ICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7CiAgICAgICAgICAgICAgICB9IF9zaWdmYXVsdDsK
CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9i
YW5kOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2ZkOwogICAgICAgICAgICAgICAgfSBf
c2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxkczsKfSBzaWdpbmZvX3Q7CiMgMTk5ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc2lnaW5mby5oIgp0eXBlZGVmIHN0cnVjdCBzaWdl
dmVudCB7CiAgICAgICAgc2lndmFsX3Qgc2lnZXZfdmFsdWU7CiAgICAgICAgaW50IHNpZ2V2X3Np
Z25vOwogICAgICAgIGludCBzaWdldl9ub3RpZnk7CiAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgaW50IF9wYWRbKCg2NC9zaXplb2YoaW50KSkgLSAzKV07CgogICAgICAgICAgICAgICAg
c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9mdW5jdGlvbikoc2lndmFs
X3QpOwogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYXR0cmlidXRlOwogICAgICAgICAg
ICAgICAgfSBfc2lnZXZfdGhyZWFkOwogICAgICAgIH0gX3NpZ2V2X3VuOwp9IHNpZ2V2ZW50X3Q7
CgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIg
MQojIDIxOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NpZ2luZm8uaCIgMgoK
c3RhdGljIGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3Qg
KmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCiAgICAgICAgICAgICAgICAo
X19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9mKHNpZ2luZm9fdCkpID8gX19jb25zdGFudF9tZW1j
cHkzZCgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSA6IF9fbWVtY3B5M2QoKHRvKSwo
ZnJvbSksKHNpemVvZihzaWdpbmZvX3QpKSkpOwogICAgICAgIGVsc2UKCiAgICAgICAgICAgICAg
ICAoX19idWlsdGluX2NvbnN0YW50X3AoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lm
aWVsZHMuX3NpZ2NobGQpKSA/IF9fY29uc3RhbnRfbWVtY3B5M2QoKHRvKSwoZnJvbSksKDMqc2l6
ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkpIDogX19tZW1jcHkz
ZCgodG8pLChmcm9tKSwoMypzaXplb2YoaW50KSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3Np
Z2NobGQpKSkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5mb190b191c2VyKHNpZ2luZm9fdCAq
dG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3RydWN0IHNpZ3F1ZXVlIHsKICAgICAgICBzdHJ1Y3Qg
c2lncXVldWUgKm5leHQ7CiAgICAgICAgc2lnaW5mb190IGluZm87Cn07CgpzdHJ1Y3Qgc2lncGVu
ZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpoZWFkLCAqKnRhaWw7CiAgICAgICAgc2ln
c2V0X3Qgc2lnbmFsOwp9OwojIDY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9zaWduYWwuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zdHJp
bmcuaCIgMQojIDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zaWduYWwu
aCIgMgojIDEwOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2lnbmFsLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdvcnNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3NldF90
ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEzLCBi
MCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIp
LzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBh
LT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsgYjEg
PSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSszXTsg
ci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChi
MSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgfCAoYjIpKTsgci0+c2lnWzQqaSszXSA9ICgoYTMp
IHwgKGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdb
NCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5z
aWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2ln
WzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSB8IChiMSkpOyBy
LT5zaWdbNCppKzJdID0gKChhMikgfCAoYjIpKTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdb
NCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5z
aWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsxXSA9
ICgoYTEpIHwgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQqaSswXTsgYjAgPSBi
LT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgYnJlYWs7IH0gfQoK
CnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdzZXRf
dCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBhMywg
YjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMy
KS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0g
YS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIx
ID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0KmkrM107
IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAo
YjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAoKGEz
KSAmIChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+c2ln
WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0gYi0+
c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHItPnNp
Z1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgJiAoYjEpKTsg
ci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+c2ln
WzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+
c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0KmkrMV0g
PSAoKGExKSAmIChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIwID0g
Yi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IGJyZWFrOyB9IH0K
CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbmFuZHNldHMoc2lnc2V0X3QgKnIsIGNvbnN0IHNpZ3Nl
dF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBsb25nIGEwLCBhMSwgYTIsIGEz
LCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8g
MzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIg
PSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIwID0gYi0+c2lnWzQqaSswXTsg
YjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IGIzID0gYi0+c2lnWzQqaSsz
XTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkg
JiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIpKTsgci0+c2lnWzQqaSszXSA9
ICgoYTMpICYgfihiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0g
YS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIw
ID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07
IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYg
fihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEw
ID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07
IGIxID0gYi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5z
aWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0gYS0+c2lnWzQq
aSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7
IGJyZWFrOyB9IH0KIyAxNDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Np
Z25hbC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnbm90c2V0KHNpZ3NldF90ICpzZXQpIHsgdW5z
aWduZWQgbG9uZyBpOyBmb3IgKGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBzZXQtPnNp
Z1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0
LT5zaWdbNCppKzFdKSk7IHNldC0+c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBz
ZXQtPnNpZ1s0KmkrM10gPSAofihzZXQtPnNpZ1s0KmkrM10pKTsgfSBzd2l0Y2ggKCg2NCAvIDMy
KSAlIDQpIHsgY2FzZSAzOiBzZXQtPnNpZ1s0KmkrMl0gPSAofihzZXQtPnNpZ1s0KmkrMl0pKTsg
Y2FzZSAyOiBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgY2FzZSAxOiBz
ZXQtPnNpZ1s0KmkrMF0gPSAofihzZXQtPnNpZ1s0KmkrMF0pKTsgfSB9CgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgc2lnZW1wdHlzZXQoc2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0
IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29u
c3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8g
X19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5z
aWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkgOiBfX2NvbnN0YW50X2NfbWVt
c2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yo
c2lnc2V0X3QpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkp
ID8gX19tZW1zZXRfZ2VuZXJpYygoKChzZXQpKSksKCgoMCkpKSwoKChzaXplb2Yoc2lnc2V0X3Qp
KSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChzZXQpKSwoKDApKSwoKHNpemVvZihzaWdzZXRfdCkp
KSkpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0g
PSAwOwogICAgICAgIGNhc2UgMTogc2V0LT5zaWdbMF0gPSAwOwogICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnZmlsbHNldChzaWdzZXRfdCAq
c2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQo
KChzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2ln
c2V0X3QpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1
bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihzaWdzZXRfdCkpKSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wKChzaXplb2Yoc2lnc2V0X3QpKSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHNldCkp
KSwoKCgtMSkpKSwoKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6IF9fbWVtc2V0X2dlbmVyaWMoKChz
ZXQpKSwoKC0xKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAgY2FzZSAxOiBzZXQt
PnNpZ1swXSA9IC0xOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgpleHRlcm4g
Y2hhciAqIHJlbmRlcl9zaWdzZXRfdChzaWdzZXRfdCAqc2V0LCBjaGFyICpidWZmZXIpOwoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBs
b25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSB8PSBtYXNrOwp9CgpzdGF0aWMgaW5saW5l
IHZvaWQgc2lnZGVsc2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsK
ICAgICAgICBzZXQtPnNpZ1swXSAmPSB+bWFzazsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lndGVz
dHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgcmV0
dXJuIChzZXQtPnNpZ1swXSAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdp
bml0c2V0KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIHNldC0+
c2lnWzBdID0gbWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGlu
X2NvbnN0YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2Nf
YW5kX2NvdW50X21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25l
ZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkgOiBfX2NvbnN0YW50
X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIp
KDApKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX21lbXNldF9nZW5lcmljKCgo
KCZzZXQtPnNpZ1sxXSkpKSwoKCgwKSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkp
KSA6IF9fbWVtc2V0X2dlbmVyaWMoKCgmc2V0LT5zaWdbMV0pKSwoKDApKSwoKHNpemVvZihsb25n
KSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IDI6IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6IDsKICAgICAgICB9Cn0KCnN0YXRp
YyBpbmxpbmUgdm9pZCBzaWdpbml0c2V0aW52KHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcg
bWFzaykKewogICAgICAgIHNldC0+c2lnWzBdID0gfm1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQg
LyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25z
dGFudF9wKC0xKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAz
MiktMSkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSks
KCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQg
LyAzMiktMSkpKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgoJnNldC0+c2lnWzFdKSksKCgweDAx
MDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMikt
MSkpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0x
KSkpID8gX19tZW1zZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdbMV0pKSksKCgoLTEpKSksKCgoc2l6
ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogX19tZW1zZXRfZ2VuZXJpYygoKCZzZXQtPnNp
Z1sxXSkpLCgoLTEpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSk7CiAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gLTE7CiAgICAgICAg
Y2FzZSAxOiA7CiAgICAgICAgfQp9CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NpZ3BlbmRp
bmcoc3RydWN0IHNpZ3BlbmRpbmcgKnNpZykKewogICAgICAgIHNpZ2VtcHR5c2V0KCZzaWctPnNp
Z25hbCk7CiAgICAgICAgc2lnLT5oZWFkID0gKCh2b2lkICopMCk7CiAgICAgICAgc2lnLT50YWls
ID0gJnNpZy0+aGVhZDsKfQoKZXh0ZXJuIGxvbmcgZG9fc2lncGVuZGluZyh2b2lkICosIHVuc2ln
bmVkIGxvbmcpOwojIDI3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hl
ZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2VjdXJlYml0
cy5oIiAxCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7
CiAgICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBp
bnQgdW1hc2s7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7
CiAgICAgICAgc3RydWN0IHZmc21vdW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1u
dDsKfTsKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZnNfc3RydWN0
LmgiCmV4dGVybiB2b2lkIGV4aXRfZnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9p
ZCBzZXRfZnNfYWx0cm9vdCh2b2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIHNldF9mc19y
b290KHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAog
ICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9s
ZF9yb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgKHZv
aWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3Jvb3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRf
cm9vdG1udCA9IGZzLT5yb290bW50OwogICAgICAgIGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7
CiAgICAgICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgZG8geyB9IHdoaWxlKDAp
OwogICAgICAgIGlmIChvbGRfcm9vdCkgewogICAgICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7
CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jvb3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpz
dGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChzdHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAg
ICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsK
ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdkOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAq
b2xkX3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0g
ZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdk
bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAg
ICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYgKG9sZF9wd2QpIHsKICAgICAgICAgICAgICAg
IGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAg
ICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0
ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3RydWN0IGZzX3N0cnVjdCAqZnMpOwojIDI5ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgpzdHJ1Y3QgZXhl
Y19kb21haW47CiMgNTggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIGludCBucl9ydW5uaW5nLCBucl90
aHJlYWRzOwpleHRlcm4gaW50IGxhc3RfcGlkOwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9mcy5oIiAxCiMgNzkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC90aW1lLmgiIDEKIyA4MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BhcmFtLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFyYW0uaCIgMQoj
IDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BhcmFtLmgiIDIKIyA4MSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAyCiMgMjEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2UgewogICAg
ICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0
aW1lOwogICAgICAgIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAg
ICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVf
bWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAg
ICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBs
b25nIHJ1X21zZ3NuZDsKICAgICAgICBsb25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25z
aWduYWxzOwogICAgICAgIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07
CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7Cn07CiMgNTYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL3Jlc291cmNlLmgiIDEKIyA1NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvcmVzb3VyY2UuaCIgMgojIDgyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
dGltZXIuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZXIu
aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMQoj
IDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiIDIKIyAxNiAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVy
X2xpc3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBs
b25nIGV4cGlyZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpm
dW5jdGlvbikodW5zaWduZWQgbG9uZyk7Cn07CgpleHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0
IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBpbnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9s
aXN0ICogdGltZXIpOwojIDQxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90
aW1lci5oIgppbnQgbW9kX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5zaWduZWQg
bG9uZyBleHBpcmVzKTsKCmV4dGVybiB2b2lkIGl0X3JlYWxfZm4odW5zaWduZWQgbG9uZyk7Cgpz
dGF0aWMgaW5saW5lIHZvaWQgaW5pdF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7
CiAgICAgICAgdGltZXItPmxpc3QubmV4dCA9IHRpbWVyLT5saXN0LnByZXYgPSAoKHZvaWQgKikw
KTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGltZXJfcGVuZGluZyAoY29uc3Qgc3RydWN0IHRpbWVy
X2xpc3QgKiB0aW1lcikKewogICAgICAgIHJldHVybiB0aW1lci0+bGlzdC5uZXh0ICE9ICgodm9p
ZCAqKTApOwp9CiMgODMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVk
LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o
IiAxCiMgODUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIK
IyAxMjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVj
dCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3ByaW9yaXR5Owp9OwoKc3RydWN0IGNv
bXBsZXRpb247CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3Bp
bmxvY2suaCIgMQojIDEzNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2No
ZWQuaCIgMgoKCgoKCgoKZXh0ZXJuIHJ3bG9ja190IHRhc2tsaXN0X2xvY2s7CmV4dGVybiBzcGlu
bG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlubG9ja190IG1tbGlzdF9sb2NrOwoKZXh0
ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpl
eHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRlcm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7
CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3Nf
dGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRhdGVfb25lX3Byb2Nlc3Moc3RydWN0IHRh
c2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBs
b25nIHNjaGVkdWxlX3RpbWVvdXQoc2lnbmVkIGxvbmcgdGltZW91dCkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgc2NoZWR1bGUo
dm9pZCk7CgpleHRlcm4gaW50IHNjaGVkdWxlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqdGFzayk7
CmV4dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNrcyh2b2lkKTsKZXh0ZXJuIGludCBzdGFy
dF9jb250ZXh0X3RocmVhZCh2b2lkKTsKZXh0ZXJuIGludCBjdXJyZW50X2lzX2tldmVudGQodm9p
ZCk7CiMgMTcyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpz
dHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xv
Y2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNl
dDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAg
ICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAg
ICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0
OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwNCAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IG1tX3N0cnVjdCB7CiAg
ICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcDsKICAgICAgICByYl9yb290X3QgbW1f
cmI7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBw
Z2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBt
bV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0cnVjdCByd19zZW1hcGhv
cmUgbW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAg
IHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0
X2NvZGUsIGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBs
b25nIHN0YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFy
Z19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxv
bmcgcnNzLCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2Zs
YWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBzd2FwX2FkZHJlc3M7CgogICAgICAgIHVuc2lnbmVkIGR1bXBhYmxlOjE7CgoKICAgICAg
ICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBpbnQgbW1saXN0X25yOwojIDI0NyAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNpZ25h
bF9zdHJ1Y3QgewogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHN0cnVjdCBrX3NpZ2Fj
dGlvbiBhY3Rpb25bNjRdOwogICAgICAgIHNwaW5sb2NrX3Qgc2lnbG9jazsKfTsKIyAyNjMgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1c2VyX3N0
cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3VudDsKICAgICAgICBhdG9taWNfdCBwcm9jZXNz
ZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qg
Km5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3QgdWlkOwp9OwoKCgoKCgpleHRlcm4gc3RydWN0
IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3QgewoKCgogICAgICAg
IHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAg
ICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsKCgoKICAg
ICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNfZG9tYWluOwogICAgICAgIHZvbGF0aWxlIGxv
bmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlOwoKICAgICAgICBp
bnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBsb25nIGNvdW50ZXI7CiAgICAgICAgbG9uZyBu
aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAgIHN0cnVjdCBtbV9zdHJ1
Y3QgKm1tOwogICAgICAgIGludCBoYXNfY3B1LCBwcm9jZXNzb3I7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBjcHVzX2FsbG93ZWQ7CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVlcF90aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19z
dHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFzazsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICph
Y3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1
bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRlciwgbnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBz
dHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAgICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9z
aWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWduYWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg
cGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9leGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwog
ICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlkX3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBp
ZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdpZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoK
CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwg
KnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3Vw
OwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3Ry
dWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJldjsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsK
ICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcg
aXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNp
Z25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAg
ICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBsb25nIHBlcl9jcHVf
dXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbWluX2Zs
dCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBjbWFqX2ZsdCwgY25zd2FwOwogICAgICAgIGlu
dCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3QgdWlkLGV1aWQsc3VpZCxmc3VpZDsKICAgICAg
ICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwogICAgICAgIGludCBuZ3JvdXBzOwogICAgICAg
IGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9lZmZlY3RpdmUsIGNh
cF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsKICAgICAgICBpbnQga2VlcF9jYXBhYmlsaXRp
ZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXI7CgogICAgICAgIHN0cnVjdCBy
bGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNlZF9tYXRoOwogICAgICAg
IGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBsaW5rX2NvdW50OwogICAgICAgIHN0cnVjdCB0
dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoKICAgICAgICBzdHJ1
Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqc2Vtc2xlZXBp
bmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAgICAgICAgc3RydWN0
IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKICAg
ICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qgc2lnbmFsX3N0cnVj
dCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0cnVjdCBzaWdwZW5k
aW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwogICAgICAgIHNp
emVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9pZCAqcHJpdik7CiAg
ICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAqbm90aWZpZXJfbWFz
azsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIgc2VsZl9leGVjX2lk
OwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7Cn07CiMgNDQ0ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gc3RydWN0IGV4ZWNfZG9tYWlu
IGRlZmF1bHRfZXhlY19kb21haW47CiMgNDk2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9zY2hlZC5oIgp1bmlvbiB0YXNrX3VuaW9uIHsKICAgICAgICBzdHJ1Y3QgdGFza19z
dHJ1Y3QgdGFzazsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YWNrWzIwNDgqc2l6ZW9mKGxvbmcp
L3NpemVvZihsb25nKV07Cn07CgpleHRlcm4gdW5pb24gdGFza191bmlvbiBpbml0X3Rhc2tfdW5p
b247CgpleHRlcm4gc3RydWN0IG1tX3N0cnVjdCBpbml0X21tOwpleHRlcm4gc3RydWN0IHRhc2tf
c3RydWN0ICppbml0X3Rhc2tzWzFdOwoKCgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpwaWRo
YXNoWyg0MDk2ID4+IDIpXTsKCgoKc3RhdGljIGlubGluZSB2b2lkIGhhc2hfcGlkKHN0cnVjdCB0
YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqKmh0YWJsZSA9ICZw
aWRoYXNoWygoKChwLT5waWQpID4+IDgpIF4gKHAtPnBpZCkpICYgKCg0MDk2ID4+IDIpIC0gMSkp
XTsKCiAgICAgICAgaWYoKHAtPnBpZGhhc2hfbmV4dCA9ICpodGFibGUpICE9ICgodm9pZCAqKTAp
KQogICAgICAgICAgICAgICAgKCpodGFibGUpLT5waWRoYXNoX3BwcmV2ID0gJnAtPnBpZGhhc2hf
bmV4dDsKICAgICAgICAqaHRhYmxlID0gcDsKICAgICAgICBwLT5waWRoYXNoX3BwcmV2ID0gaHRh
YmxlOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KnApCnsKICAgICAgICBpZihwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICBwLT5waWRo
YXNoX25leHQtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX3BwcmV2OwogICAgICAgICpwLT5w
aWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9uZXh0Owp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0
YXNrX3N0cnVjdCAqZmluZF90YXNrX2J5X3BpZChpbnQgcGlkKQp7CiAgICAgICAgc3RydWN0IHRh
c2tfc3RydWN0ICpwLCAqKmh0YWJsZSA9ICZwaWRoYXNoWygoKChwaWQpID4+IDgpIF4gKHBpZCkp
ICYgKCg0MDk2ID4+IDIpIC0gMSkpXTsKCiAgICAgICAgZm9yKHAgPSAqaHRhYmxlOyBwICYmIHAt
PnBpZCAhPSBwaWQ7IHAgPSBwLT5waWRoYXNoX25leHQpCiAgICAgICAgICAgICAgICA7CgogICAg
ICAgIHJldHVybiBwOwp9CgoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCAqIGFsbG9jX3VpZCh1
aWRfdCk7CmV4dGVybiB2b2lkIGZyZWVfdWlkKHN0cnVjdCB1c2VyX3N0cnVjdCAqKTsKCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQoKCgpzdHJ1Y3Qg
dGFza19zdHJ1Y3Q7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqIGdldF9jdXJy
ZW50KHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJlbnQ7CiAgICAgICAg
X19hc21fXygiYW5kbCAlJWVzcCwlMDsgIjoiPXIiIChjdXJyZW50KSA6ICIwIiAofjgxOTFVTCkp
OwogICAgICAgIHJldHVybiBjdXJyZW50OwogfQojIDU0NCAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUg
amlmZmllczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRpbWVyX3RpY2tzOwpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0ZXJuIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4g
dm9pZCBkb190aW1lcihzdHJ1Y3QgcHRfcmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBw
cm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25l
ZCBsb25nIHByb2Zfc2hpZnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hl
YWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFy
bSgzKSkpOwpleHRlcm4gdm9pZCBfX3dha2VfdXBfc3luYyh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwg
dW5zaWduZWQgaW50IG1vZGUsIGludCBucikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpl
eHRlcm4gdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSkgX19hdHRyaWJ1dGVfXygo
cmVncGFybSgzKSkpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1lb3V0KHdhaXRfcXVldWVfaGVh
ZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CgpleHRlcm4gdm9pZCBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uKHdhaXRfcXVldWVfaGVhZF90ICpx
KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBsb25nIGludGVycnVwdGlibGVf
c2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgc2lnbmVkIGxvbmcgdGltZW91
dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nl
c3Moc3RydWN0IHRhc2tfc3RydWN0ICogdHNrKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7
CiMgNTc3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIgogX19h
dHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3dhaXQ0KHBpZF90IHBpZCx1bnNpZ25l
ZCBpbnQgKiBzdGF0X2FkZHIsIGludCBvcHRpb25zLCBzdHJ1Y3QgcnVzYWdlICogcnUpOwoKZXh0
ZXJuIGludCBpbl9ncm91cF9wKGdpZF90KTsKZXh0ZXJuIGludCBpbl9lZ3JvdXBfcChnaWRfdCk7
CgpleHRlcm4gdm9pZCBwcm9jX2NhY2hlc19pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBmbHVzaF9z
aWduYWxzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFsX2hh
bmRsZXJzKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBkZXF1ZXVlX3NpZ25hbChz
aWdzZXRfdCAqLCBzaWdpbmZvX3QgKik7CmV4dGVybiB2b2lkIGJsb2NrX2FsbF9zaWduYWxzKGlu
dCAoKm5vdGlmaWVyKSh2b2lkICpwcml2KSwgdm9pZCAqcHJpdiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2lnc2V0X3QgKm1hc2spOwpleHRlcm4gdm9pZCB1bmJsb2NrX2FsbF9zaWdu
YWxzKHZvaWQpOwpleHRlcm4gaW50IHNlbmRfc2lnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAq
LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgZm9yY2Vfc2lnX2luZm8oaW50LCBz
dHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQga2lsbF9w
Z19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3QpOwpleHRlcm4gaW50IGtpbGxfc2xf
aW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0ZXJuIGludCBraWxsX3Byb2Nf
aW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsKZXh0ZXJuIHZvaWQgbm90aWZ5X3Bh
cmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZG9fbm90aWZ5X3Bh
cmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZm9yY2Vfc2lnKGlu
dCwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50IHNlbmRfc2lnKGludCwgc3RydWN0
IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiBpbnQga2lsbF9wZyhwaWRfdCwgaW50LCBpbnQp
OwpleHRlcm4gaW50IGtpbGxfc2wocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBraWxsX3By
b2MocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBkb19zaWdhY3Rpb24oaW50LCBjb25zdCBz
dHJ1Y3Qga19zaWdhY3Rpb24gKiwgc3RydWN0IGtfc2lnYWN0aW9uICopOwpleHRlcm4gaW50IGRv
X3NpZ2FsdHN0YWNrKGNvbnN0IHN0YWNrX3QgKiwgc3RhY2tfdCAqLCB1bnNpZ25lZCBsb25nKTsK
CnN0YXRpYyBpbmxpbmUgaW50IHNpZ25hbF9wZW5kaW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkK
ewogICAgICAgIHJldHVybiAocC0+c2lncGVuZGluZyAhPSAwKTsKfQoKCgoKCnN0YXRpYyBpbmxp
bmUgaW50IGhhc19wZW5kaW5nX3NpZ25hbHMoc2lnc2V0X3QgKnNpZ25hbCwgc2lnc2V0X3QgKmJs
b2NrZWQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWR5OwogICAgICAgIGxvbmcgaTsKCiAg
ICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgZm9yIChpID0gKDY0IC8gMzIpLCByZWFkeSA9IDA7IC0taSA+PSAwIDspCiAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnW2ldICZ+IGJsb2NrZWQtPnNpZ1tpXTsK
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6IHJlYWR5ID0gc2lnbmFsLT5z
aWdbM10gJn4gYmxvY2tlZC0+c2lnWzNdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFs
LT5zaWdbMl0gJn4gYmxvY2tlZC0+c2lnWzJdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0gc2ln
bmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAgICAgICAgICAgICAgcmVhZHkgfD0g
c2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwogICAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgIGNhc2UgMjogcmVhZHkgPSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdb
MV07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5z
aWdbMF07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAxOiByZWFkeSA9IHNp
Z25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJu
IHJlYWR5ICE9IDA7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcmVjYWxjX3NpZ3BlbmRpbmco
c3RydWN0IHRhc2tfc3RydWN0ICp0KQp7CiAgICAgICAgdC0+c2lncGVuZGluZyA9IGhhc19wZW5k
aW5nX3NpZ25hbHMoJnQtPnBlbmRpbmcuc2lnbmFsLCAmdC0+YmxvY2tlZCk7Cn0KCgoKc3RhdGlj
IGlubGluZSBpbnQgb25fc2lnX3N0YWNrKHVuc2lnbmVkIGxvbmcgc3ApCnsKICAgICAgICByZXR1
cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NwIDwgZ2V0X2N1cnJlbnQoKS0+c2FzX3Nz
X3NpemUpOwp9CgpzdGF0aWMgaW5saW5lIGludCBzYXNfc3NfZmxhZ3ModW5zaWduZWQgbG9uZyBz
cCkKewogICAgICAgIHJldHVybiAoZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUgPT0gMCA/IDIK
ICAgICAgICAgICAgICAgIDogb25fc2lnX3N0YWNrKHNwKSA/IDEgOiAwKTsKfQoKZXh0ZXJuIGlu
dCByZXF1ZXN0X2lycSh1bnNpZ25lZCBpbnQsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo
KmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKSwKICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICosIHZvaWQgKik7CmV4dGVybiB2b2lk
IGZyZWVfaXJxKHVuc2lnbmVkIGludCwgdm9pZCAqKTsKIyA2ODAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgaW50IHN1c2VyKHZvaWQp
CnsKICAgICAgICBpZiAoISggKDEgPDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkp
ICYgMHgwMDAwMDAwMCA6ICgxIDw8ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgZ2V0X2N1cnJlbnQo
KS0+ZXVpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAw
eDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJl
dHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBmc3VzZXIodm9pZCkKewogICAgICAgIGlmICgh
KCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgxIDw8ICgwKSkgJiAweDAwMDAwMDAwIDog
KDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBnZXRfY3VycmVudCgpLT5mc3VpZCA9PSAwKSB7
CiAgICAgICAgICAgICAgICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgoKCgoK
CgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsKCiAgICAgICAgaWYgKCgoZ2V0
X2N1cnJlbnQoKS0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2FwKSkpKQoKCgogICAgICAgIHsK
ICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCmV4
dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7CgpleHRlcm4gc3RydWN0IG1t
X3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4gdm9pZCBlbmRfbGF6eV90bGIo
c3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUgdm9pZCBfX21tZHJvcChzdHJ1
Y3QgbW1fc3RydWN0ICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKc3RhdGljIGlubGlu
ZSB2b2lkIG1tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCnsKICAgICAgICBpZiAoYXRvbWlj
X2RlY19hbmRfdGVzdCgmbW0tPm1tX2NvdW50KSkKICAgICAgICAgICAgICAgIF9fbW1kcm9wKG1t
KTsKfQoKCmV4dGVybiB2b2lkIG1tcHV0KHN0cnVjdCBtbV9zdHJ1Y3QgKik7CgpleHRlcm4gdm9p
ZCBtbV9yZWxlYXNlKHZvaWQpOwoKCgoKZXh0ZXJuIHN0cnVjdCBmaWxlICoqIGFsbG9jX2ZkX2Fy
cmF5KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2ZkX2FycmF5KHN0cnVjdCBmaWxlc19zdHJ1Y3Qg
KiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZF9hcnJheShzdHJ1Y3QgZmlsZSAqKiwgaW50
KTsKCmV4dGVybiBmZF9zZXQgKmFsbG9jX2Zkc2V0KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2Zk
c2V0KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZHNl
dChmZF9zZXQgKiwgaW50KTsKCmV4dGVybiBpbnQgY29weV90aHJlYWQoaW50LCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwg
c3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKTsKZXh0ZXJu
IHZvaWQgZXhpdF90aHJlYWQodm9pZCk7CgpleHRlcm4gdm9pZCBleGl0X21tKHN0cnVjdCB0YXNr
X3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9maWxlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7
CmV4dGVybiB2b2lkIGV4aXRfc2lnaGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4g
dm9pZCByZXBhcmVudF90b19pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBkYWVtb25pemUodm9pZCk7
CgpleHRlcm4gaW50IGRvX2V4ZWN2ZShjaGFyICosIGNoYXIgKiosIGNoYXIgKiosIHN0cnVjdCBw
dF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
Zywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdm9pZCBhZGRfd2Fp
dF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRy
aWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZV9leGNsdXNp
dmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRl
X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3dhaXRfcXVldWUod2FpdF9xdWV1
ZV9oZWFkX3QgKnEsIHdhaXRfcXVldWVfdCAqIHdhaXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o
MykpKTsKIyA4NDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi
CnN0YXRpYyBpbmxpbmUgdm9pZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3Qg
KiBwKQp7CiAgICAgICAgbnJfcnVubmluZy0tOwogICAgICAgIHAtPnNsZWVwX3RpbWUgPSBqaWZm
aWVzOwogICAgICAgIGxpc3RfZGVsKCZwLT5ydW5fbGlzdCk7CiAgICAgICAgcC0+cnVuX2xpc3Qu
bmV4dCA9ICgodm9pZCAqKTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0YXNrX29uX3J1bnF1ZXVl
KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+cnVuX2xpc3QubmV4
dCAhPSAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hfcHJvY2Vzcyhz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBpZiAodGFza19vbl9ydW5xdWV1ZShwKSkg
X19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGRvIHsgX19h
c21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0YXNrbGlzdF9s
b2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgbnJfdGhyZWFkcy0tOwogICAgICAgIHVuaGFzaF9w
aWQocCk7CiAgICAgICAgZG8geyAocCktPm5leHRfdGFzay0+cHJldl90YXNrID0gKHApLT5wcmV2
X3Rhc2s7IChwKS0+cHJldl90YXNrLT5uZXh0X3Rhc2sgPSAocCktPm5leHRfdGFzazsgaWYgKChw
KS0+cF9vc3B0cikgKHApLT5wX29zcHRyLT5wX3lzcHRyID0gKHApLT5wX3lzcHRyOyBpZiAoKHAp
LT5wX3lzcHRyKSAocCktPnBfeXNwdHItPnBfb3NwdHIgPSAocCktPnBfb3NwdHI7IGVsc2UgKHAp
LT5wX3BwdHItPnBfY3B0ciA9IChwKS0+cF9vc3B0cjsgfSB3aGlsZSAoMCk7CiAgICAgICAgbGlz
dF9kZWwoJnAtPnRocmVhZF9ncm91cCk7CiAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9f
YXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CgoK
c3RhdGljIGlubGluZSB2b2lkIHRhc2tfbG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAg
ICAgICAodm9pZCkoJnAtPmFsbG9jX2xvY2spOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza191
bmxvY2soc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9
CgoKc3RhdGljIGlubGluZSBjaGFyICogZF9wYXRoKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3Ry
dWN0IHZmc21vdW50ICp2ZnNtbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqYnVmLCBpbnQgYnVmbGVuKQp7CiAgICAgICAgY2hhciAqcmVzOwogICAgICAgIHN0cnVjdCB2
ZnNtb3VudCAqcm9vdG1udDsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpyb290OwogICAgICAgICh2
b2lkKSgmZ2V0X2N1cnJlbnQoKS0+ZnMtPmxvY2spOwogICAgICAgIHJvb3RtbnQgPSBtbnRnZXQo
Z2V0X2N1cnJlbnQoKS0+ZnMtPnJvb3RtbnQpOwogICAgICAgIHJvb3QgPSBkZ2V0KGdldF9jdXJy
ZW50KCktPmZzLT5yb290KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgKHZvaWQp
KCZkY2FjaGVfbG9jayk7CiAgICAgICAgcmVzID0gX19kX3BhdGgoZGVudHJ5LCB2ZnNtbnQsIHJv
b3QsIHJvb3RtbnQsIGJ1ZiwgYnVmbGVuKTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAg
ICAgZHB1dChyb290KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAgICAgICAgcmV0dXJuIHJl
czsKfQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW0uaCIgMgoKCgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgMTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvbGlzdC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tbXpvbmUu
aCIgMQoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZp
Zy5oIiAxCiMgOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAx
CiMgOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9saXN0LmgiIDEKIyAxMCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKIyAyMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYgc3RydWN0IGZy
ZWVfYXJlYV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0OwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgKm1hcDsKfSBmcmVlX2FyZWFfdDsKCnN0cnVjdCBwZ2xpc3RfZGF0
YTsKIyAzNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnR5
cGVkZWYgc3RydWN0IHpvbmVfc3RydWN0IHsKCgoKICAgICAgICBzcGlubG9ja190IGxvY2s7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcGFn
ZXNfbWluLCBwYWdlc19sb3csIHBhZ2VzX2hpZ2g7CiAgICAgICAgaW50IG5lZWRfYmFsYW5jZTsK
CgoKCiAgICAgICAgZnJlZV9hcmVhX3QgZnJlZV9hcmVhWzEwXTsKCgoKCiAgICAgICAgc3RydWN0
IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0OwogICAgICAgIHN0cnVjdCBwYWdlICp6b25lX21lbV9t
YXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRyOwogICAgICAgIHVuc2ln
bmVkIGxvbmcgem9uZV9zdGFydF9tYXBucjsKCgoKCiAgICAgICAgY2hhciAqbmFtZTsKICAgICAg
ICB1bnNpZ25lZCBsb25nIHNpemU7Cn0gem9uZV90OwojIDgxICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKdHlwZWRlZiBzdHJ1Y3Qgem9uZWxpc3Rfc3RydWN0
IHsKICAgICAgICB6b25lX3QgKiB6b25lcyBbMyArMV07Cn0gem9uZWxpc3RfdDsKIyA5OCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBib290bWVt
X2RhdGE7CnR5cGVkZWYgc3RydWN0IHBnbGlzdF9kYXRhIHsKICAgICAgICB6b25lX3Qgbm9kZV96
b25lc1szXTsKICAgICAgICB6b25lbGlzdF90IG5vZGVfem9uZWxpc3RzWzB4MGYgKzFdOwogICAg
ICAgIGludCBucl96b25lczsKICAgICAgICBzdHJ1Y3QgcGFnZSAqbm9kZV9tZW1fbWFwOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgKnZhbGlkX2FkZHJfYml0bWFwOwogICAgICAgIHN0cnVjdCBib290
bWVtX2RhdGEgKmJkYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFydF9wYWRkcjsK
ICAgICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfbWFwbnI7CiAgICAgICAgdW5zaWduZWQg
bG9uZyBub2RlX3NpemU7CiAgICAgICAgaW50IG5vZGVfaWQ7CiAgICAgICAgc3RydWN0IHBnbGlz
dF9kYXRhICpub2RlX25leHQ7Cn0gcGdfZGF0YV90OwoKZXh0ZXJuIGludCBudW1ub2RlczsKZXh0
ZXJuIHBnX2RhdGFfdCAqcGdkYXRfbGlzdDsKIyAxMjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdHJ1Y3QgcGFnZTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVl
X2FyZWFzX2NvcmUocGdfZGF0YV90ICpwZ2RhdCk7CmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0
X2NvcmUoaW50IG5pZCwgcGdfZGF0YV90ICpwZ2RhdCwgc3RydWN0IHBhZ2UgKipnbWFwLAogIHVu
c2lnbmVkIGxvbmcgKnpvbmVzX3NpemUsIHVuc2lnbmVkIGxvbmcgcGFkZHIsIHVuc2lnbmVkIGxv
bmcgKnpob2xlc19zaXplLAogIHN0cnVjdCBwYWdlICpwbWFwKTsKCmV4dGVybiBwZ19kYXRhX3Qg
Y29udGlnX3BhZ2VfZGF0YTsKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N3YXAu
aCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr
LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zd2FwLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgNiAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3dhcC5oIiAyCiMgMjUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKdW5pb24gc3dhcF9oZWFkZXIgewog
ICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgcmVzZXJ2ZWRbKDFV
TCA8PCAxMikgLSAxMF07CiAgICAgICAgICAgICAgICBjaGFyIG1hZ2ljWzEwXTsKICAgICAgICB9
IG1hZ2ljOwogICAgICAgIHN0cnVjdAogICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgYm9v
dGJpdHNbMTAyNF07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBsYXN0X3BhZ2U7CiAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgbnJfYmFkcGFnZXM7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFkZGluZ1sx
MjVdOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGJhZHBhZ2VzWzFdOwogICAgICAgIH0g
aW5mbzsKfTsKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3dhcC5o
IgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDUy
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zd2FwLmgiIDIKIyA2NCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc3dhcC5oIgpzdHJ1Y3Qgc3dhcF9pbmZv
X3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwogICAgICAgIGtkZXZfdCBzd2Fw
X2RldmljZTsKICAgICAgICBzcGlubG9ja190IHNkZXZfbG9jazsKICAgICAgICBzdHJ1Y3QgZGVu
dHJ5ICogc3dhcF9maWxlOwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqc3dhcF92ZnNtbnQ7CiAg
ICAgICAgdW5zaWduZWQgc2hvcnQgKiBzd2FwX21hcDsKICAgICAgICB1bnNpZ25lZCBpbnQgbG93
ZXN0X2JpdDsKICAgICAgICB1bnNpZ25lZCBpbnQgaGlnaGVzdF9iaXQ7CiAgICAgICAgdW5zaWdu
ZWQgaW50IGNsdXN0ZXJfbmV4dDsKICAgICAgICB1bnNpZ25lZCBpbnQgY2x1c3Rlcl9ucjsKICAg
ICAgICBpbnQgcHJpbzsKICAgICAgICBpbnQgcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBt
YXg7CiAgICAgICAgaW50IG5leHQ7Cn07CgpleHRlcm4gaW50IG5yX3N3YXBfcGFnZXM7CmV4dGVy
biB1bnNpZ25lZCBpbnQgbnJfZnJlZV9wYWdlcyh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBu
cl9mcmVlX2J1ZmZlcl9wYWdlcyh2b2lkKTsKZXh0ZXJuIGludCBucl9hY3RpdmVfcGFnZXM7CmV4
dGVybiBpbnQgbnJfaW5hY3RpdmVfcGFnZXM7CmV4dGVybiBhdG9taWNfdCBucl9hc3luY19wYWdl
czsKZXh0ZXJuIGF0b21pY190IHBhZ2VfY2FjaGVfc2l6ZTsKZXh0ZXJuIGF0b21pY190IGJ1ZmZl
cm1lbV9wYWdlczsKZXh0ZXJuIHNwaW5sb2NrX3QgcGFnZWNhY2hlX2xvY2s7CmV4dGVybiB2b2lk
IF9fcmVtb3ZlX2lub2RlX3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgoKc3RydWN0IHRhc2tfc3RydWN0
OwpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CnN0cnVjdCBzeXNpbmZvOwoKc3RydWN0IHpvbmVfdDsK
CgpleHRlcm4gdm9pZCBscnVfY2FjaGVfYWRkKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18o
KHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19scnVfY2FjaGVfZGVsKHN0cnVjdCBwYWdlICop
IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgbHJ1X2NhY2hlX2RlbChz
dHJ1Y3QgcGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpleHRlcm4gdm9pZCBk
ZWFjdGl2YXRlX3BhZ2Uoc3RydWN0IHBhZ2UgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp
OwpleHRlcm4gdm9pZCBkZWFjdGl2YXRlX3BhZ2Vfbm9sb2NrKHN0cnVjdCBwYWdlICopIF9fYXR0
cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYWN0aXZhdGVfcGFnZShzdHJ1Y3Qg
cGFnZSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFjdGl2YXRl
X3BhZ2Vfbm9sb2NrKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
CmV4dGVybiB2b2lkIHN3YXBfc2V0dXAodm9pZCk7CgoKZXh0ZXJuIHdhaXRfcXVldWVfaGVhZF90
IGtzd2FwZF93YWl0OwpleHRlcm4gaW50IHRyeV90b19mcmVlX3BhZ2VzKHpvbmVfdCAqLCB1bnNp
Z25lZCBpbnQsIHVuc2lnbmVkIGludCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCmV4
dGVybiB2b2lkIHJ3X3N3YXBfcGFnZShpbnQsIHN0cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCBy
d19zd2FwX3BhZ2Vfbm9sb2NrKGludCwgc3dwX2VudHJ5X3QsIGNoYXIgKik7CgoKCgoKCmV4dGVy
biB2b2lkIHNob3dfc3dhcF9jYWNoZV9pbmZvKHZvaWQpOwoKZXh0ZXJuIGludCBhZGRfdG9fc3dh
cF9jYWNoZShzdHJ1Y3QgcGFnZSAqLCBzd3BfZW50cnlfdCk7CmV4dGVybiB2b2lkIF9fZGVsZXRl
X2Zyb21fc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIGRlbGV0ZV9m
cm9tX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRlcm4gdm9pZCBmcmVlX3BhZ2Vf
YW5kX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBhZ2UpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBs
b29rdXBfc3dhcF9jYWNoZShzd3BfZW50cnlfdCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqIHJlYWRf
c3dhcF9jYWNoZV9hc3luYyhzd3BfZW50cnlfdCk7CgoKZXh0ZXJuIGludCBvdXRfb2ZfbWVtb3J5
KHZvaWQpOwpleHRlcm4gdm9pZCBvb21fa2lsbCh2b2lkKTsKCgpleHRlcm4gaW50IHRvdGFsX3N3
YXBfcGFnZXM7CmV4dGVybiB1bnNpZ25lZCBpbnQgbnJfc3dhcGZpbGVzOwpleHRlcm4gc3RydWN0
IHN3YXBfaW5mb19zdHJ1Y3Qgc3dhcF9pbmZvW107CmV4dGVybiBpbnQgaXNfc3dhcF9wYXJ0aXRp
b24oa2Rldl90KTsKZXh0ZXJuIHZvaWQgc2lfc3dhcGluZm8oc3RydWN0IHN5c2luZm8gKik7CmV4
dGVybiBzd3BfZW50cnlfdCBnZXRfc3dhcF9wYWdlKHZvaWQpOwpleHRlcm4gdm9pZCBnZXRfc3dh
cGhhbmRsZV9pbmZvKHN3cF9lbnRyeV90LCB1bnNpZ25lZCBsb25nICosIGtkZXZfdCAqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlub2RlICoqKTsKZXh0
ZXJuIGludCBzd2FwX2R1cGxpY2F0ZShzd3BfZW50cnlfdCk7CmV4dGVybiBpbnQgc3dhcF9jb3Vu
dChzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB2YWxpZF9zd2FwaGFuZGxlcyhzd3BfZW50cnlf
dCwgdW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJuIHZvaWQgc3dhcF9mcmVlKHN3cF9lbnRyeV90KTsK
c3RydWN0IHN3YXBfbGlzdF90IHsKICAgICAgICBpbnQgaGVhZDsKICAgICAgICBpbnQgbmV4dDsK
fTsKZXh0ZXJuIHN0cnVjdCBzd2FwX2xpc3RfdCBzd2FwX2xpc3Q7CiBfX2F0dHJpYnV0ZV9fKChy
ZWdwYXJtKDApKSkgbG9uZyBzeXNfc3dhcG9mZihjb25zdCBjaGFyICopOwogX19hdHRyaWJ1dGVf
XygocmVncGFybSgwKSkpIGxvbmcgc3lzX3N3YXBvbihjb25zdCBjaGFyICosIGludCk7CgpleHRl
cm4gc3BpbmxvY2tfdCBwYWdlbWFwX2xydV9sb2NrOwoKZXh0ZXJuIHZvaWQgbWFya19wYWdlX2Fj
Y2Vzc2VkKHN0cnVjdCBwYWdlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyAyMjIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N3YXAuaCIKZXh0ZXJuIHNwaW5s
b2NrX3Qgc3dhcGxvY2s7CgoKCgoKCmV4dGVybiB2b2lkIHNobWVtX3VudXNlKHN3cF9lbnRyeV90
IGVudHJ5LCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CiMgMTQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L21tLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9yYnRyZWUuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9tbS5oIiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyBtYXhfbWFwbnI7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIG51bV9waHlzcGFnZXM7CmV4dGVybiB2b2lkICogaGlnaF9tZW1vcnk7CmV4dGVybiBp
bnQgcGFnZV9jbHVzdGVyOwoKZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7CmV4
dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGluYWN0aXZlX2xpc3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2FzbS9wYWdlLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvbW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2FzbS9wZ3RhYmxlLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9w
Z3RhYmxlLmgiIDIKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFi
bGUuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgi
IDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgoj
IDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDE2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vZml4bWFwLmgiCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL2FwaWNkZWYuaCIgMQojIDEyMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
YXNtL2FwaWNkZWYuaCIKc3RydWN0IGxvY2FsX2FwaWMgewoKICAgICAgICBzdHJ1Y3QgeyB1bnNp
Z25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAxOwoKICAgICAgICBzdHJ1Y3Qg
eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAyOwoKICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAog
ICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2FwaWNfaWQgOiA0LAogICAgICAgICAgICAgICAg
ICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbM107CiAgICAgICAgfSBpZDsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3Qg
ewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlcnNpb24gOiA4LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBtYXhf
bHZ0IDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogODsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdmVyc2lvbjsK
CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl
ZF8wMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y
ZXNlcnZlZF8wNDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wNTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8wNjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz
ZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz
XTsKICAgICAgICB9IHRwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAgICAg
ICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZF8yWzNdOwogICAgICAgIH0gYXByOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSBwcHI7CgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW9pOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRbM107CiAgICAgICAgfSBlb2k7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk
IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDc7CgogICAgICAgIHN0cnVjdCB7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ2ljYWxfZGVzdCA6IDg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gbGRyOwoKICAgICAgICBzdHJ1Y3QgewogICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI4LAogICAgICAgICAgICAg
ICAgICAgICAgICBtb2RlbCA6IDQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNl
cnZlZF8yWzNdOwogICAgICAgIH0gZGZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHNwdXJpb3VzX3ZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGFwaWNfZW5hYmxlZCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzX2NwdSA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDIyOwogICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICB9IHN2cjsKCiAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gaXNyIFs4XTsK
CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsK
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAgIH0gdG1y
IFs4XTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBiaXRm
aWVsZDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwogICAgICAg
IH0gaXJyIFs4XTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlbmRfY3NfZXJyb3IgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZW5kX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWNlaXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDI0OwogICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogICAgICAgICAgICAgICAg
fSBlcnJvcl9iaXRzOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGVycm9yczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gYWxsX2Vycm9yczsKICAg
ICAgICB9IGVzcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8wODsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2
ZWRbNF07IH0gX19yZXNlcnZlZF8wOTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9f
cmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg
aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5z
aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0
IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAg
c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAg
ICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IgOiA4LAog
ICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2RlIDogMywKICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdGluYXRpb25fbW9kZSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsIDogMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6
IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZCA6IDIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDEyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGljcjE7CgogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBf
X3Jlc2VydmVkXzEgOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaHlzX2Rl
c3QgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAg
ICAgICAgICAgfSBkZXN0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf
NFszXTsKICAgICAgICB9IGljcjI7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZl
ZF8xIDogNCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAg
ICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX21vZGUgOiAxLAog
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzMgOiAxNDsKICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfdGltZXI7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTU7
CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDog
OCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRl
bGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6
IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX3Jlc2VydmVkXzMgOiAxNTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl
c2VydmVkXzRbM107CiAgICAgICAgfSBsdnRfcGM7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAg
ZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6
IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVt
b3RlX2lyciA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgOiAxLAogICAgICAg
ICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNl
cnZlZF8yIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zWzNd
OwogICAgICAgIH0gbHZ0X2xpbnQwOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5
X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAg
ICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAg
ICAgICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9pcnIg
OiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6
IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAg
ICB9IGx2dF9saW50MTsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA0
LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAg
ICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBt
YXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTU7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X2Vy
cm9yOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluaXRp
YWxfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwog
ICAgICAgIH0gdGltZXJfaWNyOwoKICAgICAgICBjb25zdAogICAgICAgIHN0cnVjdCB7CiAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1lcl9jY3I7CgogICAgICAgIHN0
cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAg
ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7
CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2
ZWRfMTg7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f
cmVzZXJ2ZWRfMTk7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZGl2aXNvciA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI4
OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAgICB9
IHRpbWVyX2RjcjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07
IH0gX19yZXNlcnZlZF8yMDsKCn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwojIDE5ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgojIDUwICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9hc20vZml4bWFwLmgiCmVudW0gZml4ZWRfYWRkcmVzc2VzIHsKIyA2OCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIF9fZW5kX29mX2Zp
eGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQgX19zZXRfZml4bWFwIChlbnVtIGZpeGVkX2Fk
ZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdzKTsKIyA5NCAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgpleHRlcm4gdm9pZCBfX3RoaXNfZml4bWFwX2RvZXNf
bm90X2V4aXN0KHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZml4X3Rv
X3ZpcnQoY29uc3QgdW5zaWduZWQgaW50IGlkeCkKewojIDExMiAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIGlmIChpZHggPj0gX19lbmRfb2ZfZml4
ZWRfYWRkcmVzc2VzKQogICAgICAgICAgICAgICAgX190aGlzX2ZpeG1hcF9kb2VzX25vdF9leGlz
dCgpOwoKICAgICAgICByZXR1cm4gKCgweGZmZmZlMDAwVUwpIC0gKChpZHgpIDw8IDEyKSk7Cn0K
IyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDE5ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAyCgoKCgoKZXh0ZXJu
IHBnZF90IHN3YXBwZXJfcGdfZGlyWzEwMjRdOwpleHRlcm4gdm9pZCBwYWdpbmdfaW5pdCh2b2lk
KTsKIyA2NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgcGdrZXJuX21hc2s7CiMgOTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGVtcHR5X3plcm9f
cGFnZVsxMDI0XTsKIyAxMDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wZ3Rh
YmxlLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUtMmxl
dmVsLmgiIDEKIyAzMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUt
MmxldmVsLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25lKHBnZF90IHBnZCkgeyByZXR1cm4g
MDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpz
dGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KIyA1
MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmgiCnN0
YXRpYyBpbmxpbmUgcG1kX3QgKiBwbWRfb2Zmc2V0KHBnZF90ICogZGlyLCB1bnNpZ25lZCBsb25n
IGFkZHJlc3MpCnsKICAgICAgICByZXR1cm4gKHBtZF90ICopIGRpcjsKfQojIDExMCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIgMgojIDI0NCAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcg
cGcwWzEwMjRdOwojIDI2NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFi
bGUuaCIKc3RhdGljIGlubGluZSBpbnQgcHRlX3JlYWQocHRlX3QgcHRlKSB7IHJldHVybiAocHRl
KS5wdGVfbG93ICYgMHgwMDQ7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX2V4ZWMocHRlX3QgcHRl
KSB7IHJldHVybiAocHRlKS5wdGVfbG93ICYgMHgwMDQ7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRl
X2RpcnR5KHB0ZV90IHB0ZSkgeyByZXR1cm4gKHB0ZSkucHRlX2xvdyAmIDB4MDQwOyB9CnN0YXRp
YyBpbmxpbmUgaW50IHB0ZV95b3VuZyhwdGVfdCBwdGUpIHsgcmV0dXJuIChwdGUpLnB0ZV9sb3cg
JiAweDAyMDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfd3JpdGUocHRlX3QgcHRlKSB7IHJldHVy
biAocHRlKS5wdGVfbG93ICYgMHgwMDI7IH0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX3JkcHJv
dGVjdChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAmPSB+MHgwMDQ7IHJldHVybiBwdGU7IH0K
c3RhdGljIGlubGluZSBwdGVfdCBwdGVfZXhwcm90ZWN0KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVf
bG93ICY9IH4weDAwNDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2Ns
ZWFuKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDA0MDsgcmV0dXJuIHB0ZTsgfQpz
dGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta29sZChwdGVfdCBwdGUpIHsgKHB0ZSkucHRlX2xvdyAm
PSB+MHgwMjA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfd3Jwcm90ZWN0
KHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93ICY9IH4weDAwMjsgcmV0dXJuIHB0ZTsgfQpzdGF0
aWMgaW5saW5lIHB0ZV90IHB0ZV9ta3JlYWQocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0g
MHgwMDQ7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWtleGVjKHB0ZV90
IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDA0OyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxp
bmUgcHRlX3QgcHRlX21rZGlydHkocHRlX3QgcHRlKSB7IChwdGUpLnB0ZV9sb3cgfD0gMHgwNDA7
IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbWt5b3VuZyhwdGVfdCBwdGUp
IHsgKHB0ZSkucHRlX2xvdyB8PSAweDAyMDsgcmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0
ZV90IHB0ZV9ta3dyaXRlKHB0ZV90IHB0ZSkgeyAocHRlKS5wdGVfbG93IHw9IDB4MDAyOyByZXR1
cm4gcHRlOyB9CgpzdGF0aWMgaW5saW5lIGludCBwdGVwX3Rlc3RfYW5kX2NsZWFyX2RpcnR5KHB0
ZV90ICpwdGVwKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoNiwgcHRlcCk7IH0Kc3RhdGlj
IGlubGluZSBpbnQgcHRlcF90ZXN0X2FuZF9jbGVhcl95b3VuZyhwdGVfdCAqcHRlcCkgeyByZXR1
cm4gdGVzdF9hbmRfY2xlYXJfYml0KDUsIHB0ZXApOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVw
X3NldF93cnByb3RlY3QocHRlX3QgKnB0ZXApIHsgY2xlYXJfYml0KDEsIHB0ZXApOyB9CnN0YXRp
YyBpbmxpbmUgdm9pZCBwdGVwX21rZGlydHkocHRlX3QgKnB0ZXApIHsgc2V0X2JpdCg2LCBwdGVw
KTsgfQojIDI5NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BndGFibGUuaCIK
c3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90X3QgbmV3cHJv
dCkKewogICAgICAgIHB0ZS5wdGVfbG93ICY9ICgofigoMVVMIDw8IDEyKS0xKSkgfCAweDAyMCB8
IDB4MDQwKTsKICAgICAgICBwdGUucHRlX2xvdyB8PSAoKG5ld3Byb3QpLnBncHJvdCk7CiAgICAg
ICAgcmV0dXJuIHB0ZTsKfQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9tbS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2F0b21pYy5o
IiAxCiMgMjcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21tLmgiIDIKIyA0
MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW0uaCIKc3RydWN0IHZtX2Fy
ZWFfc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICogdm1fbW07CiAgICAgICAgdW5z
aWduZWQgbG9uZyB2bV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2VuZDsKCgogICAg
ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1fbmV4dDsKCiAgICAgICAgcGdwcm90X3Qgdm1f
cGFnZV9wcm90OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgogICAgICAgIHJiX25v
ZGVfdCB2bV9yYjsKCgoKCgoKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRf
c2hhcmU7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgoK
ICAgICAgICBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgKiB2bV9vcHM7CgoKICAgICAgICB1
bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwoKICAgICAgICBzdHJ1Y3QgZmlsZSAqIHZtX2ZpbGU7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyB2bV9yYWVuZDsKICAgICAgICB2b2lkICogdm1fcHJpdmF0ZV9k
YXRhOwp9OwojIDExNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW0uaCIK
ZXh0ZXJuIHBncHJvdF90IHByb3RlY3Rpb25fbWFwWzE2XTsKCgoKCgoKCnN0cnVjdCB2bV9vcGVy
YXRpb25zX3N0cnVjdCB7CiAgICAgICAgdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVhX3N0cnVj
dCAqIGFyZWEpOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICog
YXJlYSk7CiAgICAgICAgc3RydWN0IHBhZ2UgKiAoKm5vcGFnZSkoc3RydWN0IHZtX2FyZWFfc3Ry
dWN0ICogYXJlYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNjZXNzKTsKfTsK
IyAxNDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21tLmgiCnR5cGVkZWYg
c3RydWN0IHBhZ2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKICAgICAgICBzdHJ1
Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAgICAgICB1bnNpZ25lZCBsb25nIGluZGV4Owog
ICAgICAgIHN0cnVjdCBwYWdlICpuZXh0X2hhc2g7CgogICAgICAgIGF0b21pY190IGNvdW50Owog
ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbHJ1
OwoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwogICAgICAgIHN0cnVjdCBwYWdlICoq
cHByZXZfaGFzaDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBidWZmZXJzOwogICAgICAg
IHZvaWQgKnZpcnR1YWw7CgogICAgICAgIHN0cnVjdCB6b25lX3N0cnVjdCAqem9uZTsKfSBtZW1f
bWFwX3Q7CiMgMjk2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tbS5oIgpl
eHRlcm4gdm9pZCBfX3NldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICopOwoKc3RhdGljIGlubGlu
ZSB2b2lkIHNldF9wYWdlX2RpcnR5KHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIGlmICgh
dGVzdF9hbmRfc2V0X2JpdCg0LCAmcGFnZS0+ZmxhZ3MpKQogICAgICAgICAgICAgICAgX19zZXRf
cGFnZV9kaXJ0eShwYWdlKTsKfQojIDM2MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvbW0uaCIKZXh0ZXJuIG1lbV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKCgpleHRlcm4gc3Ry
dWN0IHBhZ2UgKiBfYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBp
bnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCBwYWdl
ICogX19hbGxvY19wYWdlcyh1bnNpZ25lZCBpbnQgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRl
ciwgem9uZWxpc3RfdCAqem9uZWxpc3QpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0
ZXJuIHN0cnVjdCBwYWdlICogYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCB1bnNpZ25lZCBpbnQg
Z2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdl
ICogYWxsb2NfcGFnZXModW5zaWduZWQgaW50IGdmcF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIp
CnsKCgoKICAgICAgICBpZiAob3JkZXIgPj0gMTApCiAgICAgICAgICAgICAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9hbGxvY19wYWdlcyhnZnBfbWFzaywgb3JkZXIpOwp9
CgoKCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0X2ZyZWVfcGFnZXModW5zaWduZWQgaW50IGdm
cF9tYXNrLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3plcm9lZF9wYWdlKHVuc2lnbmVkIGludCBnZnBfbWFz
aykgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDQwMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvbW0uaCIKZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBw
YWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykp
KTsKZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGlu
dCBvcmRlcikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwoKCgoKZXh0ZXJuIHZvaWQgc2hv
d19mcmVlX2FyZWFzKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X2ZyZWVfYXJlYXNfbm9kZShwZ19k
YXRhX3QgKnBnZGF0KTsKCmV4dGVybiB2b2lkIGNsZWFyX3BhZ2VfdGFibGVzKHN0cnVjdCBtbV9z
dHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgaW50KTsKCnN0cnVjdCBwYWdlICogc2htZW1fbm9wYWdl
KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQg
bm9fc2hhcmUpOwpzdHJ1Y3QgZmlsZSAqc2htZW1fZmlsZV9zZXR1cChjaGFyICogbmFtZSwgbG9m
Zl90IHNpemUpOwpleHRlcm4gdm9pZCBzaG1lbV9sb2NrKHN0cnVjdCBmaWxlICogZmlsZSwgaW50
IGxvY2spOwpleHRlcm4gaW50IHNobWVtX3plcm9fc2V0dXAoc3RydWN0IHZtX2FyZWFfc3RydWN0
ICopOwoKZXh0ZXJuIHZvaWQgemFwX3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVu
c2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIGludCBjb3B5
X3BhZ2VfcmFuZ2Uoc3RydWN0IG1tX3N0cnVjdCAqZHN0LCBzdHJ1Y3QgbW1fc3RydWN0ICpzcmMs
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKZXh0ZXJuIGludCByZW1hcF9wYWdlX3Jhbmdl
KHVuc2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyB0bywgdW5zaWduZWQgbG9uZyBzaXpl
LCBwZ3Byb3RfdCBwcm90KTsKZXh0ZXJuIGludCB6ZXJvbWFwX3BhZ2VfcmFuZ2UodW5zaWduZWQg
bG9uZyBmcm9tLCB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHByb3QpOwoKZXh0ZXJuIGlu
dCB2bXRydW5jYXRlKHN0cnVjdCBpbm9kZSAqIGlub2RlLCBsb2ZmX3Qgb2Zmc2V0KTsKZXh0ZXJu
IHBtZF90ICpfX3BtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0ICptbSwgcGdkX3QgKnBnZCwgdW5z
aWduZWQgbG9uZyBhZGRyZXNzKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBw
dGVfdCAqcHRlX2FsbG9jKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCBwbWRfdCAqcG1kLCB1bnNpZ25l
ZCBsb25nIGFkZHJlc3MpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIGludCBo
YW5kbGVfbW1fZmF1bHQoc3RydWN0IG1tX3N0cnVjdCAqbW0sc3RydWN0IHZtX2FyZWFfc3RydWN0
ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgaW50IHdyaXRlX2FjY2Vzcyk7CmV4dGVybiBp
bnQgbWFrZV9wYWdlc19wcmVzZW50KHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBl
bmQpOwpleHRlcm4gaW50IGFjY2Vzc19wcm9jZXNzX3ZtKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNr
LCB1bnNpZ25lZCBsb25nIGFkZHIsIHZvaWQgKmJ1ZiwgaW50IGxlbiwgaW50IHdyaXRlKTsKZXh0
ZXJuIGludCBwdHJhY2VfcmVhZGRhdGEoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVk
IGxvbmcgc3JjLCBjaGFyICpkc3QsIGludCBsZW4pOwpleHRlcm4gaW50IHB0cmFjZV93cml0ZWRh
dGEoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNoYXIgKiBzcmMsIHVuc2lnbmVkIGxvbmcgZHN0
LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBwdHJhY2VfYXR0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAq
dHNrKTsKZXh0ZXJuIGludCBwdHJhY2VfZGV0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCB1bnNp
Z25lZCBpbnQpOwpleHRlcm4gdm9pZCBwdHJhY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3Qg
Kik7CgoKCgoKCnN0YXRpYyBpbmxpbmUgcG1kX3QgKnBtZF9hbGxvYyhzdHJ1Y3QgbW1fc3RydWN0
ICptbSwgcGdkX3QgKnBnZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgaWYgKHBn
ZF9ub25lKCpwZ2QpKQogICAgICAgICAgICAgICAgcmV0dXJuIF9fcG1kX2FsbG9jKG1tLCBwZ2Qs
IGFkZHJlc3MpOwogICAgICAgIHJldHVybiBwbWRfb2Zmc2V0KHBnZCwgYWRkcmVzcyk7Cn0KCmV4
dGVybiBpbnQgcGd0X2NhY2hlX3dhdGVyWzJdOwpleHRlcm4gaW50IGNoZWNrX3BndF9jYWNoZSh2
b2lkKTsKCmV4dGVybiB2b2lkIGZyZWVfYXJlYV9pbml0KHVuc2lnbmVkIGxvbmcgKiB6b25lc19z
aXplKTsKZXh0ZXJuIHZvaWQgZnJlZV9hcmVhX2luaXRfbm9kZShpbnQgbmlkLCBwZ19kYXRhX3Qg
KnBnZGF0LCBzdHJ1Y3QgcGFnZSAqcG1hcCwKICAgICAgICB1bnNpZ25lZCBsb25nICogem9uZXNf
c2l6ZSwgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X3BhZGRyLAogICAgICAgIHVuc2lnbmVkIGxv
bmcgKnpob2xlc19zaXplKTsKZXh0ZXJuIHZvaWQgbWVtX2luaXQodm9pZCk7CmV4dGVybiB2b2lk
IHNob3dfbWVtKHZvaWQpOwpleHRlcm4gdm9pZCBzaV9tZW1pbmZvKHN0cnVjdCBzeXNpbmZvICog
dmFsKTsKZXh0ZXJuIHZvaWQgc3dhcGluX3JlYWRhaGVhZChzd3BfZW50cnlfdCk7CgpleHRlcm4g
c3RydWN0IGFkZHJlc3Nfc3BhY2Ugc3dhcHBlcl9zcGFjZTsKCgpzdGF0aWMgaW5saW5lIGludCBp
c19wYWdlX2NhY2hlX2ZyZWVhYmxlKHN0cnVjdCBwYWdlICogcGFnZSkKewogICAgICAgIHJldHVy
biAoKCYocGFnZSktPmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgPT0gMTsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgaW50IGV4Y2x1c2l2ZV9zd2FwX3BhZ2Uoc3RydWN0IHBhZ2UgKnBh
Z2UpCnsKICAgICAgICBpZiAoIShfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IGNvbnN0YW50X3Rl
c3RfYml0KCgwKSwoJihwYWdlKS0+ZmxhZ3MpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KCgwKSwoJihw
YWdlKS0+ZmxhZ3MpKSkpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5
dGUgMHgwZiwweDBiIik7CiAgICAgICAgaWYgKCEoKHBhZ2UpLT5tYXBwaW5nID09ICZzd2FwcGVy
X3NwYWNlKSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmICgoKCYocGFnZSkt
PmNvdW50KS0+Y291bnRlcikgLSAhIXBhZ2UtPmJ1ZmZlcnMgIT0gMikKICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgIHJldHVybiBzd2FwX2NvdW50KHBhZ2UpID09IDE7Cn0KCmV4dGVy
biB2b2lkIF9fZnJlZV9wdGUocHRlX3QpOwoKCmV4dGVybiB2b2lkIGxvY2tfdm1hX21hcHBpbmdz
KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgdW5sb2NrX3ZtYV9tYXBwaW5n
cyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGluc2VydF92bV9zdHJ1Y3Qo
c3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lk
IF9faW5zZXJ0X3ZtX3N0cnVjdChzdHJ1Y3QgbW1fc3RydWN0ICosIHN0cnVjdCB2bV9hcmVhX3N0
cnVjdCAqKTsKZXh0ZXJuIHZvaWQgYnVpbGRfbW1hcF9yYihzdHJ1Y3QgbW1fc3RydWN0ICopOwpl
eHRlcm4gdm9pZCBleGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqKTsKCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGdldF91bm1hcHBlZF9hcmVhKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgZG9fbW1hcF9wZ29mZihzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBh
ZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHByb3QsCiAgICAg
ICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIHBnb2ZmKTsKCnN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbG9uZyBkb19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBsb25n
IGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyBsZW4sIHVuc2lnbmVkIGxvbmcgcHJvdCwKICAg
ICAgICB1bnNpZ25lZCBsb25nIGZsYWcsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAg
dW5zaWduZWQgbG9uZyByZXQgPSAtMjI7CiAgICAgICAgaWYgKChvZmZzZXQgKyAoKChsZW4pKygx
VUwgPDwgMTIpLTEpJih+KCgxVUwgPDwgMTIpLTEpKSkpIDwgb2Zmc2V0KQogICAgICAgICAgICAg
ICAgZ290byBvdXQ7CiAgICAgICAgaWYgKCEob2Zmc2V0ICYgfih+KCgxVUwgPDwgMTIpLTEpKSkp
CiAgICAgICAgICAgICAgICByZXQgPSBkb19tbWFwX3Bnb2ZmKGZpbGUsIGFkZHIsIGxlbiwgcHJv
dCwgZmxhZywgb2Zmc2V0ID4+IDEyKTsKb3V0OgogICAgICAgIHJldHVybiByZXQ7Cn0KCmV4dGVy
biBpbnQgZG9fbXVubWFwKHN0cnVjdCBtbV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgc2l6ZV90
KTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRvX2Jyayh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3ZtYV91bmxpbmsoc3RydWN0IG1tX3N0cnVjdCAq
IG1tLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq
IHByZXYpCnsKICAgICAgICBwcmV2LT52bV9uZXh0ID0gdm1hLT52bV9uZXh0OwogICAgICAgIHJi
X2VyYXNlKCZ2bWEtPnZtX3JiLCAmbW0tPm1tX3JiKTsKICAgICAgICBpZiAobW0tPm1tYXBfY2Fj
aGUgPT0gdm1hKQogICAgICAgICAgICAgICAgbW0tPm1tYXBfY2FjaGUgPSBwcmV2Owp9CgpzdGF0
aWMgaW5saW5lIGludCBjYW5fdm1hX21lcmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSwg
dW5zaWduZWQgbG9uZyB2bV9mbGFncykKewogICAgICAgIGlmICghdm1hLT52bV9maWxlICYmIHZt
YS0+dm1fZmxhZ3MgPT0gdm1fZmxhZ3MpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKfQoKc3RydWN0IHpvbmVfdDsKCmV4dGVy
biB2b2lkIHJlbW92ZV9pbm9kZV9wYWdlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdW5zaWduZWQg
bG9uZyBwYWdlX3VudXNlKHN0cnVjdCBwYWdlICopOwpleHRlcm4gdm9pZCB0cnVuY2F0ZV9pbm9k
ZV9wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QpOwoKCmV4dGVybiBpbnQgZmls
ZW1hcF9zeW5jKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCB1bnNpZ25lZCBsb25nLCBzaXplX3Qs
IHVuc2lnbmVkIGludCk7CmV4dGVybiBzdHJ1Y3QgcGFnZSAqZmlsZW1hcF9ub3BhZ2Uoc3RydWN0
IHZtX2FyZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CiMgNTcyICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9tbS5oIgpzdGF0aWMgaW5saW5lIGludCBleHBhbmRf
c3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp
CnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgoKCgoKCiAgICAgICAgYWRkcmVzcyAmPSAo
figoMVVMIDw8IDEyKS0xKSk7CiAgICAgICAgZ3JvdyA9ICh2bWEtPnZtX3N0YXJ0IC0gYWRkcmVz
cykgPj4gMTI7CiAgICAgICAgaWYgKHZtYS0+dm1fZW5kIC0gYWRkcmVzcyA+IGdldF9jdXJyZW50
KCktPnJsaW1bM10ucmxpbV9jdXIgfHwKICAgICAgICAgICAgKCh2bWEtPnZtX21tLT50b3RhbF92
bSArIGdyb3cpIDw8IDEyKSA+IGdldF9jdXJyZW50KCktPnJsaW1bOV0ucmxpbV9jdXIpCiAgICAg
ICAgICAgICAgICByZXR1cm4gLTEyOwogICAgICAgICh2b2lkKSgmdm1hLT52bV9tbS0+cGFnZV90
YWJsZV9sb2NrKTsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2bWEt
PnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3JvdzsK
ICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAgICB2
bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92
bWEoc3RydWN0IG1tX3N0cnVjdCAqIG1tLCB1bnNpZ25lZCBsb25nIGFkZHIpOwpleHRlcm4gc3Ry
dWN0IHZtX2FyZWFfc3RydWN0ICogZmluZF92bWFfcHJldihzdHJ1Y3QgbW1fc3RydWN0ICogbW0s
IHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoqcHByZXYpOwoKCgpzdGF0aWMgaW5saW5l
IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGZpbmRfdm1hX2ludGVyc2VjdGlvbihzdHJ1Y3QgbW1f
c3RydWN0ICogbW0sIHVuc2lnbmVkIGxvbmcgc3RhcnRfYWRkciwgdW5zaWduZWQgbG9uZyBlbmRf
YWRkcikKewogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIHZtYSA9IGZpbmRfdm1hKG1t
LHN0YXJ0X2FkZHIpOwoKICAgICAgICBpZiAodm1hICYmIGVuZF9hZGRyIDw9IHZtYS0+dm1fc3Rh
cnQpCiAgICAgICAgICAgICAgICB2bWEgPSAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gdm1h
Owp9CgpleHRlcm4gc3RydWN0IHZtX2FyZWFfc3RydWN0ICpmaW5kX2V4dGVuZF92bWEoc3RydWN0
IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CiMgMTUgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgNDggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3NsYWIuaCIKZXh0ZXJuIHZvaWQga21lbV9jYWNoZV9pbml0KHZvaWQpOwpleHRlcm4g
dm9pZCBrbWVtX2NhY2hlX3NpemVzX2luaXQodm9pZCk7CgpleHRlcm4ga21lbV9jYWNoZV90ICpr
bWVtX2ZpbmRfZ2VuZXJhbF9jYWNoZXAoc2l6ZV90LCBpbnQgZ2ZwZmxhZ3MpOwpleHRlcm4ga21l
bV9jYWNoZV90ICprbWVtX2NhY2hlX2NyZWF0ZShjb25zdCBjaGFyICosIHNpemVfdCwgc2l6ZV90
LCB1bnNpZ25lZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1bnNpZ25lZCBsb25nKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKikodm9pZCAqLCBrbWVtX2NhY2hl
X3QgKiwgdW5zaWduZWQgbG9uZykpOwpleHRlcm4gaW50IGttZW1fY2FjaGVfZGVzdHJveShrbWVt
X2NhY2hlX3QgKik7CmV4dGVybiBpbnQga21lbV9jYWNoZV9zaHJpbmsoa21lbV9jYWNoZV90ICop
OwpleHRlcm4gdm9pZCAqa21lbV9jYWNoZV9hbGxvYyhrbWVtX2NhY2hlX3QgKiwgaW50KTsKZXh0
ZXJuIHZvaWQga21lbV9jYWNoZV9mcmVlKGttZW1fY2FjaGVfdCAqLCB2b2lkICopOwoKZXh0ZXJu
IHZvaWQgKmttYWxsb2Moc2l6ZV90LCBpbnQpOwpleHRlcm4gdm9pZCBrZnJlZShjb25zdCB2b2lk
ICopOwoKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3JlYXAoaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdw
YXJtKDMpKSk7CmV4dGVybiBpbnQgc2xhYmluZm9fcmVhZF9wcm9jKGNoYXIgKnBhZ2UsIGNoYXIg
KipzdGFydCwgb2ZmX3Qgb2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
Y291bnQsIGludCAqZW9mLCB2b2lkICpkYXRhKTsKZXh0ZXJuIGludCBzbGFiaW5mb193cml0ZV9w
cm9jKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCmV4dGVybiBr
bWVtX2NhY2hlX3QgKnZtX2FyZWFfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICptbV9jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKm5hbWVzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVf
dCAqZmlsZXNfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxwX2NhY2hlcDsKZXh0ZXJu
IGttZW1fY2FjaGVfdCAqZHF1b3RfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpiaF9jYWNo
ZXA7CmV4dGVybiBrbWVtX2NhY2hlX3QgKmZzX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAq
c2lnYWN0X2NhY2hlcDsKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Bj
aS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3NjYXR0ZXJsaXN0
LmgiIDEKCgoKc3RydWN0IHNjYXR0ZXJsaXN0IHsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgY2hh
ciAqIGFsdF9hZGRyZXNzOwoKICAgIHVuc2lnbmVkIGludCBsZW5ndGg7Cn07CiMgMzIgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2FzbS9wY2kuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2FzbS9pby5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaW8u
aCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaW8uaCIKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDEKCgoKIyAxICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAxCiMgNSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdm1hbGxvYy5oIiAyCiMgMSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbW0uaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC92bWFsbG9jLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3BndGFibGUuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3ZtYWxsb2MuaCIgMgoKCgoKCnN0cnVjdCB2bV9zdHJ1Y3QgewogICAgICAgIHVuc2ln
bmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdm9pZCAqIGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBzaXplOwogICAgICAgIHN0cnVjdCB2bV9zdHJ1Y3QgKiBuZXh0Owp9OwoKZXh0ZXJuIHN0cnVj
dCB2bV9zdHJ1Y3QgKiBnZXRfdm1fYXJlYSAodW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBs
b25nIGZsYWdzKTsKZXh0ZXJuIHZvaWQgdmZyZWUodm9pZCAqIGFkZHIpOwpleHRlcm4gdm9pZCAq
IF9fdm1hbGxvYyAodW5zaWduZWQgbG9uZyBzaXplLCBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHBy
b3QpOwpleHRlcm4gbG9uZyB2cmVhZChjaGFyICpidWYsIGNoYXIgKmFkZHIsIHVuc2lnbmVkIGxv
bmcgY291bnQpOwpleHRlcm4gdm9pZCB2bWZyZWVfYXJlYV9wYWdlcyh1bnNpZ25lZCBsb25nIGFk
ZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBpbnQgdm1hbGxvY19hcmVhX3BhZ2Vz
KHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZ2ZwX21hc2ssIHBncHJvdF90IHByb3QpOwoKCgoKCnN0YXRp
YyBpbmxpbmUgdm9pZCAqIHZtYWxsb2MgKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJl
dHVybiBfX3ZtYWxsb2Moc2l6ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDIwMCB8
IDB4MTAwKSB8IDB4MDIsICgocGdwcm90X3QpIHsgKCgoMHgwMDEgfCAweDAwMiB8IDB4MDQwIHwg
MHgwMjApKSB8IDB4MTAwKSB9ICkpOwp9CgoKCgoKc3RhdGljIGlubGluZSB2b2lkICogdm1hbGxv
Y19kbWEgKHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiBfX3ZtYWxsb2Moc2l6
ZSwgKDB4MjAgfCAweDEwIHwgMHg0MCB8IDB4ODAgfCAweDIwMCB8IDB4MTAwKXwweDAxLCAoKHBn
cHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIgfCAweDA0MCB8IDB4MDIwKSkgfCAweDEwMCkgfSAp
KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIHZtYWxsb2NfMzIodW5zaWduZWQgbG9uZyBz
aXplKQp7CiAgICAgICAgcmV0dXJuIF9fdm1hbGxvYyhzaXplLCAoMHgyMCB8IDB4MTAgfCAweDQw
IHwgMHg4MCB8IDB4MjAwIHwgMHgxMDApLCAoKHBncHJvdF90KSB7ICgoKDB4MDAxIHwgMHgwMDIg
fCAweDA0MCB8IDB4MDIwKSkgfCAweDEwMCkgfSApKTsKfQoKCgoKCmV4dGVybiByd2xvY2tfdCB2
bWxpc3RfbG9jazsKCmV4dGVybiBzdHJ1Y3Qgdm1fc3RydWN0ICogdm1saXN0OwojIDQ3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaW8uaCIgMgojIDY2ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHZp
cnRfdG9fcGh5cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykKewogICAgICAgIHJldHVybiAoKHVu
c2lnbmVkIGxvbmcpKGFkZHJlc3MpLSgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKTsKfQoK
c3RhdGljIGlubGluZSB2b2lkICogcGh5c190b192aXJ0KHVuc2lnbmVkIGxvbmcgYWRkcmVzcykK
ewogICAgICAgIHJldHVybiAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKGFkZHJlc3MpKygodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKSk7Cn0KCgoKCgoKZXh0ZXJuIHZvaWQgKiBfX2lvcmVt
YXAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9u
ZyBmbGFncyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgKiBpb3JlbWFwICh1bnNpZ25lZCBsb25nIG9m
ZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICAgICAgcmV0dXJuIF9faW9yZW1hcChvZmZz
ZXQsIHNpemUsIDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqIGlvcmVtYXBfbm9jYWNo
ZSAodW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJl
dHVybiBfX2lvcmVtYXAob2Zmc2V0LCBzaXplLCAweDAxMCk7Cn0KCmV4dGVybiB2b2lkIGlvdW5t
YXAodm9pZCAqYWRkcik7CiMgMTYwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20v
aW8uaCIKc3RhdGljIGlubGluZSBpbnQgY2hlY2tfc2lnbmF0dXJlKHVuc2lnbmVkIGxvbmcgaW9f
YWRkciwKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWduYXR1cmUsIGludCBsZW5ndGgp
CnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBp
ZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9fYWRkcikpKSAhPSAq
c2lnbmF0dXJlKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAg
ICAgIGlvX2FkZHIrKzsKICAgICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAgICAgICAgICAg
ICAgbGVuZ3RoLS07CiAgICAgICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAx
OwpvdXQ6CiAgICAgICAgcmV0dXJuIHJldHZhbDsKfQoKc3RhdGljIGlubGluZSBpbnQgaXNhX2No
ZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlvX2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3RoKQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7
CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAgaWYgKCgqKHZvbGF0aWxlIHVuc2lnbmVkIGNo
YXIgKikgKCh2b2lkICopKCgoY2hhciAqKSgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkp
ICsgKGlvX2FkZHIpKSkpICE9ICpzaWduYXR1cmUpCiAgICAgICAgICAgICAgICAgICAgICAgIGdv
dG8gb3V0OwogICAgICAgICAgICAgICAgaW9fYWRkcisrOwogICAgICAgICAgICAgICAgc2lnbmF0
dXJlKys7CiAgICAgICAgICAgICAgICBsZW5ndGgtLTsKICAgICAgICB9IHdoaWxlIChsZW5ndGgp
OwogICAgICAgIHJldHZhbCA9IDE7Cm91dDoKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CiMgMjg1
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaW8uaCIKc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjaGFyIGluYih1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGNoYXIgX3Y7
IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJiIiAiICUiICJ3IiAiMSwlIiAiIiAiMCIgOiAi
PWEiIChfdikgOiAiTmQiIChwb3J0KSApOyByZXR1cm4gX3Y7IH0gc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjaGFyIGluYl9wKHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgdW5zaWduZWQgY2hhciBfdjsg
X19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgImIiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5v
dXRiICUlYWwsJDB4ODAiIDogIj1hIiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9
CgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbncodW5zaWduZWQgc2hvcnQgcG9ydCkg
eyB1bnNpZ25lZCBzaG9ydCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpbiIgInciICIgJSIg
InciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBvcnQpICk7IHJldHVybiBfdjsg
fSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHNob3J0IGlud19wKHVuc2lnbmVkIHNob3J0IHBvcnQp
IHsgdW5zaWduZWQgc2hvcnQgX3Y7IF9fYXNtX18gX192b2xhdGlsZV9fICgiaW4iICJ3IiAiICUi
ICJ3IiAiMSwlIiAiIiAiMCIgIlxub3V0YiAlJWFsLCQweDgwIiA6ICI9YSIgKF92KSA6ICJOZCIg
KHBvcnQpICk7IHJldHVybiBfdjsgfQoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGlubCh1
bnNpZ25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiA6ICI9YSIgKF92KSA6ICJOZCIgKHBv
cnQpICk7IHJldHVybiBfdjsgfSBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbmxfcCh1bnNp
Z25lZCBzaG9ydCBwb3J0KSB7IHVuc2lnbmVkIGludCBfdjsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJpbiIgImwiICIgJSIgInciICIxLCUiICIiICIwIiAiXG5vdXRiICUlYWwsJDB4ODAiIDogIj1h
IiAoX3YpIDogIk5kIiAocG9ydCkgKTsgcmV0dXJuIF92OyB9CgoKc3RhdGljIGlubGluZSB2b2lk
IG91dGIodW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgc2hvcnQgcG9ydCkgeyBfX2FzbV9f
IF9fdm9sYXRpbGVfXyAoIm91dCIgImIiICIgJSIgImIiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAo
dmFsdWUpLCAiTmQiIChwb3J0KSk7IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGJfcCh1bnNpZ25l
ZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBzaG9ydCBwb3J0KSB7IF9fYXNtX18gX192b2xhdGlsZV9f
ICgib3V0IiAiYiIgIiAlIiAiYiIgIjAsJSIgInciICIxIiAiXG5vdXRiICUlYWwsJDB4ODAiIDog
OiAiYSIgKHZhbHVlKSwgIk5kIiAocG9ydCkpO30Kc3RhdGljIGlubGluZSB2b2lkIG91dHcodW5z
aWduZWQgc2hvcnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0
aWxlX18gKCJvdXQiICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiIDogOiAiYSIgKHZhbHVlKSwg
Ik5kIiAocG9ydCkpOyB9IHN0YXRpYyBpbmxpbmUgdm9pZCBvdXR3X3AodW5zaWduZWQgc2hvcnQg
dmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQi
ICJ3IiAiICUiICJ3IiAiMCwlIiAidyIgIjEiICJcbm91dGIgJSVhbCwkMHg4MCIgOiA6ICJhIiAo
dmFsdWUpLCAiTmQiIChwb3J0KSk7fQpzdGF0aWMgaW5saW5lIHZvaWQgb3V0bCh1bnNpZ25lZCBp
bnQgdmFsdWUsIHVuc2lnbmVkIHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJv
dXQiICJsIiAiICUiICIwLCUiICJ3IiAiMSIgOiA6ICJhIiAodmFsdWUpLCAiTmQiIChwb3J0KSk7
IH0gc3RhdGljIGlubGluZSB2b2lkIG91dGxfcCh1bnNpZ25lZCBpbnQgdmFsdWUsIHVuc2lnbmVk
IHNob3J0IHBvcnQpIHsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJvdXQiICJsIiAiICUiICIwLCUi
ICJ3IiAiMSIgIlxub3V0YiAlJWFsLCQweDgwIiA6IDogImEiICh2YWx1ZSksICJOZCIgKHBvcnQp
KTt9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5zYih1bnNpZ25lZCBzaG9ydCBwb3J0LCB2b2lkICog
YWRkciwgdW5zaWduZWQgbG9uZyBjb3VudCkgeyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJlcCA7
IGlucyIgImIiIDogIj1EIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChh
ZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIGluc3codW5zaWduZWQgc2hv
cnQgcG9ydCwgdm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgY291bnQpIHsgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJyZXAgOyBpbnMiICJ3IiA6ICI9RCIgKGFkZHIpLCAiPWMiIChjb3VudCkgOiAi
ZCIgKHBvcnQpLCIwIiAoYWRkciksIjEiIChjb3VudCkpOyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBp
bnNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50
KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgaW5zIiAibCIgOiAiPUQiIChhZGRyKSwg
Ij1jIiAoY291bnQpIDogImQiIChwb3J0KSwiMCIgKGFkZHIpLCIxIiAoY291bnQpKTsgfQoKc3Rh
dGljIGlubGluZSB2b2lkIG91dHNiKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBh
ZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsg
b3V0cyIgImIiIDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChh
ZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGluZSB2b2lkIG91dHN3KHVuc2lnbmVkIHNo
b3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNpZ25lZCBsb25nIGNvdW50KSB7IF9fYXNt
X18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgInciIDogIj1TIiAoYWRkciksICI9YyIgKGNv
dW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIgKGNvdW50KSk7IH0Kc3RhdGljIGlubGlu
ZSB2b2lkIG91dHNsKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IHZvaWQgKiBhZGRyLCB1bnNp
Z25lZCBsb25nIGNvdW50KSB7IF9fYXNtX18gX192b2xhdGlsZV9fICgicmVwIDsgb3V0cyIgImwi
IDogIj1TIiAoYWRkciksICI9YyIgKGNvdW50KSA6ICJkIiAocG9ydCksIjAiIChhZGRyKSwiMSIg
KGNvdW50KSk7IH0KIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3BjaS5o
IiAyCgpzdHJ1Y3QgcGNpX2RldjsKIyA0NCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
YXNtL3BjaS5oIgpleHRlcm4gdm9pZCAqcGNpX2FsbG9jX2NvbnNpc3RlbnQoc3RydWN0IHBjaV9k
ZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpOwojIDU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9hc20vcGNpLmgiCmV4dGVybiB2b2lkIHBjaV9mcmVlX2NvbnNpc3RlbnQoc3RydWN0IHBj
aV9kZXYgKmh3ZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKTsKCgoKCgoKCnN0YXRpYyBpbmxp
bmUgZG1hX2FkZHJfdCBwY2lfbWFwX3NpbmdsZShzdHJ1Y3QgcGNpX2RldiAqaHdkZXYsIHZvaWQg
KnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LCBpbnQgZGlyZWN0aW9uKQp7CiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAzKQogICAgICAgICAg
ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIHJl
dHVybiB2aXJ0X3RvX3BoeXMocHRyKTsKfQojIDc5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfdW5tYXBfc2luZ2xlKHN0cnVj
dCBwY2lfZGV2ICpod2RldiwgZG1hX2FkZHJfdCBkbWFfYWRkciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIGludCBkaXJlY3Rpb24pCnsKICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
LmJ5dGUgMHgwZiwweDBiIik7Cgp9CiMgMTAyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgaW50IHBjaV9tYXBfc2coc3RydWN0IHBjaV9kZXYg
Kmh3ZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuZW50cywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
MykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4MGIi
KTsKICAgICAgICByZXR1cm4gbmVudHM7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3Vu
bWFwX3NnKHN0cnVjdCBwY2lfZGV2ICpod2Rldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmVudHMsIGludCBkaXJlY3Rpb24pCnsK
ICAgICAgICBpZiAoZGlyZWN0aW9uID09IDMpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7Cgp9CiMgMTMxICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5bmNfc2lu
Z2xlKHN0cnVjdCBwY2lfZGV2ICpod2RldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0
ZSAweDBmLDB4MGIiKTsKCn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwY2lfZG1hX3N5bmNf
c2coc3RydWN0IHBjaV9kZXYgKmh3ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IG5lbGVtcywgaW50IGRpcmVjdGlvbikKewogICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gMykKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIuYnl0ZSAweDBmLDB4
MGIiKTsKCn0KCgoKCgoKc3RhdGljIGlubGluZSBpbnQgcGNpX2RtYV9zdXBwb3J0ZWQoc3RydWN0
IHBjaV9kZXYgKmh3ZGV2LCBkbWFfYWRkcl90IG1hc2spCnsKCgoKCgogICAgICAgIGlmKG1hc2sg
PCAweDAwZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgIHJldHVybiAx
Owp9CiMgMTgzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGNpLmgiCnN0YXRp
YyBpbmxpbmUgaW50IHBjaV9jb250cm9sbGVyX251bShzdHJ1Y3QgcGNpX2RldiAqZGV2KQp7CiAg
ICAgICAgcmV0dXJuIDA7Cn0KCgpleHRlcm4gaW50IHBjaV9tbWFwX3BhZ2VfcmFuZ2Uoc3RydWN0
IHBjaV9kZXYgKmRldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbnVtIHBjaV9tbWFwX3N0YXRlIG1tYXBfc3RhdGUsIGludCB3cml0
ZV9jb21iaW5lKTsKIyA2MDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3Bj
aS5oIiAyCiMgNjY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wY2kuaCIK
c3RhdGljIGlubGluZSBpbnQgcGNpX21vZHVsZV9pbml0KHN0cnVjdCBwY2lfZHJpdmVyICpkcnYp
CnsKICAgICAgICBpbnQgcmMgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyIChkcnYpOwoKICAgICAgICBp
ZiAocmMgPiAwKQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiMgNjg0ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wY2kuaCIKICAgICAgICBpZiAocmMgPT0gMCkKICAgICAg
ICAgICAgICAgIHJjID0gLTE5OwoKCgoKICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgKGRy
dik7CgogICAgICAgIHJldHVybiByYzsKfQojIDcxNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvcGNpLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqcGNpX2dldF9kcnZkYXRhIChz
dHJ1Y3QgcGNpX2RldiAqcGRldikKewogICAgICAgIHJldHVybiBwZGV2LT5kcml2ZXJfZGF0YTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIHBjaV9zZXRfZHJ2ZGF0YSAoc3RydWN0IHBjaV9kZXYgKnBk
ZXYsIHZvaWQgKmRhdGEpCnsKICAgICAgICBwZGV2LT5kcml2ZXJfZGF0YSA9IGRhdGE7Cn0KIyA3
MzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3BjaS5oIgpzdHJ1Y3QgcGNp
X2ZpeHVwIHsKICAgICAgICBpbnQgcGFzczsKICAgICAgICB1MTYgdmVuZG9yLCBkZXZpY2U7CiAg
ICAgICAgdm9pZCAoKmhvb2spKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwp9OwoKZXh0ZXJuIHN0cnVj
dCBwY2lfZml4dXAgcGNpYmlvc19maXh1cHNbXTsKCgoKCnZvaWQgcGNpX2ZpeHVwX2RldmljZShp
bnQgcGFzcywgc3RydWN0IHBjaV9kZXYgKmRldik7CgpleHRlcm4gaW50IHBjaV9wY2lfcHJvYmxl
bXM7CiMgMTQ5ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9pbml0LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2luaXQuaCIgMgojIDQ4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbml0
LmgiCnR5cGVkZWYgaW50ICgqaW5pdGNhbGxfdCkodm9pZCk7CnR5cGVkZWYgdm9pZCAoKmV4aXRj
YWxsX3QpKHZvaWQpOwoKZXh0ZXJuIGluaXRjYWxsX3QgX19pbml0Y2FsbF9zdGFydCwgX19pbml0
Y2FsbF9lbmQ7CiMgNjEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2luaXQu
aCIKc3RydWN0IGtlcm5lbF9wYXJhbSB7CiAgICAgICAgY29uc3QgY2hhciAqc3RyOwogICAgICAg
IGludCAoKnNldHVwX2Z1bmMpKGNoYXIgKik7Cn07CgpleHRlcm4gc3RydWN0IGtlcm5lbF9wYXJh
bSBfX3NldHVwX3N0YXJ0LCBfX3NldHVwX2VuZDsKIyAxNTAgIjgxMzl0b28uYyIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCiMgMTUxICI4MTM5
dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXRkZXZp
Y2UuaCIgMQojIDI4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXRkZXZp
Y2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pZi5oIiAxCiMg
MjIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2lmLmgiCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDIzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKIyAyNCAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvaWYuaCIgMgojIDU4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9pZi5oIgpzdHJ1Y3QgaWZtYXAKewogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX3N0
YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWVtX2VuZDsKICAgICAgICB1bnNpZ25lZCBzaG9y
dCBiYXNlX2FkZHI7CiAgICAgICAgdW5zaWduZWQgY2hhciBpcnE7CiAgICAgICAgdW5zaWduZWQg
Y2hhciBkbWE7CiAgICAgICAgdW5zaWduZWQgY2hhciBwb3J0OwoKfTsKIyA3NiAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaWYuaCIKc3RydWN0IGlmcmVxCnsKCgogICAgICAg
IHVuaW9uCiAgICAgICAgewogICAgICAgICAgICAgICAgY2hhciBpZnJuX25hbWVbMTZdOwogICAg
ICAgIH0gaWZyX2lmcm47CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBz
b2NrYWRkciBpZnJ1X2FkZHI7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgaWZydV9k
c3RhZGRyOwogICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfYnJvYWRhZGRyOwog
ICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyIGlmcnVfbmV0bWFzazsKICAgICAgICAgICAg
ICAgIHN0cnVjdCBzb2NrYWRkciBpZnJ1X2h3YWRkcjsKICAgICAgICAgICAgICAgIHNob3J0IGlm
cnVfZmxhZ3M7CiAgICAgICAgICAgICAgICBpbnQgaWZydV9pdmFsdWU7CiAgICAgICAgICAgICAg
ICBpbnQgaWZydV9tdHU7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZtYXAgaWZydV9tYXA7CiAg
ICAgICAgICAgICAgICBjaGFyIGlmcnVfc2xhdmVbMTZdOwogICAgICAgICAgICAgICAgY2hhciBp
ZnJ1X25ld25hbWVbMTZdOwogICAgICAgICAgICAgICAgY2hhciAqIGlmcnVfZGF0YTsKICAgICAg
ICB9IGlmcl9pZnJ1Owp9OwojIDEyNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvaWYuaCIKc3RydWN0IGlmY29uZgp7CiAgICAgICAgaW50IGlmY19sZW47CiAgICAgICAgdW5p
b24KICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGFyICogaWZjdV9idWY7CiAgICAgICAgICAg
ICAgICBzdHJ1Y3QgaWZyZXEgKmlmY3VfcmVxOwogICAgICAgIH0gaWZjX2lmY3U7Cn07CiMgMjkg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaWZfZXRoZXIuaCIgMQojIDkyICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pZl9ldGhlci5oIgpzdHJ1Y3QgZXRo
aGRyCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGhfZGVzdFs2XTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIGhfc291cmNlWzZdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGhfcHJvdG87Cn07CiMgMzAg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaWZfcGFja2V0LmgiIDEKCgoKc3Ry
dWN0IHNvY2thZGRyX3BrdAp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3BrdF9mYW1pbHk7CiAg
ICAgICAgdW5zaWduZWQgY2hhciBzcGt0X2RldmljZVsxNF07CiAgICAgICAgdW5zaWduZWQgc2hv
cnQgc3BrdF9wcm90b2NvbDsKfTsKCnN0cnVjdCBzb2NrYWRkcl9sbAp7CiAgICAgICAgdW5zaWdu
ZWQgc2hvcnQgc2xsX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzbGxfcHJvdG9jb2w7
CiAgICAgICAgaW50IHNsbF9pZmluZGV4OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNsbF9oYXR5
cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzbGxfcGt0dHlwZTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIHNsbF9oYWxlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNsbF9hZGRyWzhdOwp9OwojIDQz
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pZl9wYWNrZXQuaCIKc3RydWN0
IHRwYWNrZXRfc3RhdHMKewogICAgICAgIHVuc2lnbmVkIGludCB0cF9wYWNrZXRzOwogICAgICAg
IHVuc2lnbmVkIGludCB0cF9kcm9wczsKfTsKCnN0cnVjdCB0cGFja2V0X2hkcgp7CiAgICAgICAg
dW5zaWduZWQgbG9uZyB0cF9zdGF0dXM7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfbGVu
OwogICAgICAgIHVuc2lnbmVkIGludCB0cF9zbmFwbGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0
IHRwX21hYzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB0cF9uZXQ7CiAgICAgICAgdW5zaWduZWQg
aW50IHRwX3NlYzsKICAgICAgICB1bnNpZ25lZCBpbnQgdHBfdXNlYzsKfTsKIyA4MiAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaWZfcGFja2V0LmgiCnN0cnVjdCB0cGFja2V0
X3JlcQp7CiAgICAgICAgdW5zaWduZWQgaW50IHRwX2Jsb2NrX3NpemU7CiAgICAgICAgdW5zaWdu
ZWQgaW50IHRwX2Jsb2NrX25yOwogICAgICAgIHVuc2lnbmVkIGludCB0cF9mcmFtZV9zaXplOwog
ICAgICAgIHVuc2lnbmVkIGludCB0cF9mcmFtZV9ucjsKfTsKCnN0cnVjdCBwYWNrZXRfbXJlcQp7
CiAgICAgICAgaW50IG1yX2lmaW5kZXg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbXJfdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcl9hbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXJf
YWRkcmVzc1s4XTsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRl
dmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2NhY2hlLmgi
IDEKIyAzNCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEK
IyAzNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiIDIK
CgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMg
MzggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCgoK
CgpzdHJ1Y3QgZGl2ZXJ0X2JsazsKIyA5NiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvbmV0ZGV2aWNlLmgiCnN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzCnsKICAgICAgICB1bnNp
Z25lZCBsb25nIHJ4X3BhY2tldHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9wYWNrZXRzOwog
ICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9i
eXRlczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBs
b25nIHR4X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2Ryb3BwZWQ7CiAgICAgICAg
dW5zaWduZWQgbG9uZyB0eF9kcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbXVsdGljYXN0
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY29sbGlzaW9uczsKCgogICAgICAgIHVuc2lnbmVkIGxv
bmcgcnhfbGVuZ3RoX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X292ZXJfZXJyb3Jz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfY3JjX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBs
b25nIHJ4X2ZyYW1lX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2ZpZm9fZXJyb3Jz
OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnhfbWlzc2VkX2Vycm9yczsKCgogICAgICAgIHVuc2ln
bmVkIGxvbmcgdHhfYWJvcnRlZF9lcnJvcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9jYXJy
aWVyX2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X2ZpZm9fZXJyb3JzOwogICAgICAg
IHVuc2lnbmVkIGxvbmcgdHhfaGVhcnRiZWF0X2Vycm9yczsKICAgICAgICB1bnNpZ25lZCBsb25n
IHR4X3dpbmRvd19lcnJvcnM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJ4X2NvbXByZXNzZWQ7
CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9jb21wcmVzc2VkOwp9OwoKCgplbnVtIHsKICAgICAg
ICBJRl9QT1JUX1VOS05PV04gPSAwLAogICAgICAgIElGX1BPUlRfMTBCQVNFMiwKICAgICAgICBJ
Rl9QT1JUXzEwQkFTRVQsCiAgICAgICAgSUZfUE9SVF9BVUksCiAgICAgICAgSUZfUE9SVF8xMDBC
QVNFVCwKICAgICAgICBJRl9QT1JUXzEwMEJBU0VUWCwKICAgICAgICBJRl9QT1JUXzEwMEJBU0VG
WAp9OwoKCgpleHRlcm4gY29uc3QgY2hhciAqaWZfcG9ydF90ZXh0W107CgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NhY2hlLmgiIDEKIyAxNDYgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9rZXJuZWwuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3NjaGVkLmgiIDEKIyAyMCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2ti
dWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC90aW1lLmgi
IDEKIyAyMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiIDIK
IyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCiMgMjIg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQojIDI0ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCiMgMjUgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMQojIDI2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9za2J1ZmYuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L21tLmgiIDEKIyAyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGlu
dXgvc2tidWZmLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9o
aWdobWVtLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9j
b25maWcuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2hpZ2ht
ZW0uaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgi
IDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9jb25maWcuaCIg
MQojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEKIyA2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGdhbGxvYy5oIiAyCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAxCiMgNyAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIu
NC4xMS9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQojIDggIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIKIyA1MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvYXNtL3BnYWxsb2MuaCIKc3RhdGljIF9faW5saW5lX18gcGdkX3QgKmdldF9wZ2Rfc2xv
dyh2b2lkKQp7CiAgICAgICAgcGdkX3QgKnBnZCA9IChwZ2RfdCAqKV9fZ2V0X2ZyZWVfcGFnZXMo
KCgweDIwIHwgMHgxMCB8IDB4NDAgfCAweDgwIHwgMHgyMDAgfCAweDEwMCkpLDApOwoKICAgICAg
ICBpZiAocGdkKSB7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygx
VUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVt
c2V0KCgocGdkKSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKCgoKCgodW5z
aWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkp
IDogX19jb25zdGFudF9jX21lbXNldCgoKHBnZCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBj
aGFyKSgwKSkpLCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikp
ICogc2l6ZW9mKHBnZF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKCgoKCh1bnNpZ25l
ZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSAqIHNpemVvZihwZ2RfdCkpKSA/IF9f
bWVtc2V0X2dlbmVyaWMoKCgocGdkKSkpLCgoKDApKSksKCgoKCgoKHVuc2lnbmVkIGxvbmcpKDB4
QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpICogc2l6ZW9mKHBnZF90KSkpKSkgOiBfX21lbXNldF9n
ZW5lcmljKCgocGdkKSksKCgwKSksKCgoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8o
MVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKSkpKSk7CiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoKDEwMjQgLSAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8o
MVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkgPyBfX2NvbnN0YW50X21lbWNweTNkKChwZ2Qg
KyAoKCgodW5zaWduZWQgbG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpLChzd2FwcGVy
X3BnX2RpciArICgoKCh1bnNpZ25lZCBsb25nKSgweEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSks
KCgxMDI0IC0gKCgoKHVuc2lnbmVkIGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSAq
IHNpemVvZihwZ2RfdCkpKSA6IF9fbWVtY3B5M2QoKHBnZCArICgoKCh1bnNpZ25lZCBsb25nKSgw
eEMwMDAwMDAwKSkpLygxVUwgPDwgMjIpKSksKHN3YXBwZXJfcGdfZGlyICsgKCgoKHVuc2lnbmVk
IGxvbmcpKDB4QzAwMDAwMDApKSkvKDFVTCA8PCAyMikpKSwoKDEwMjQgLSAoKCgodW5zaWduZWQg
bG9uZykoMHhDMDAwMDAwMCkpKS8oMVVMIDw8IDIyKSkpICogc2l6ZW9mKHBnZF90KSkpKTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHBnZDsKfQoKCgpzdGF0aWMgX19pbmxpbmVfXyBwZ2RfdCAq
Z2V0X3BnZF9mYXN0KHZvaWQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nICpyZXQ7CgogICAgICAg
IGlmICgocmV0ID0gKGJvb3RfY3B1X2RhdGEucGdkX3F1aWNrKSkgIT0gKCh2b2lkICopMCkpIHsK
ICAgICAgICAgICAgICAgIChib290X2NwdV9kYXRhLnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9u
ZyAqKSgqcmV0KTsKICAgICAgICAgICAgICAgIHJldFswXSA9IDA7CiAgICAgICAgICAgICAgICAo
Ym9vdF9jcHVfZGF0YS5wZ3RhYmxlX2NhY2hlX3N6KS0tOwogICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgcmV0ID0gKHVuc2lnbmVkIGxvbmcgKilnZXRfcGdkX3Nsb3coKTsKICAgICAgICBy
ZXR1cm4gKHBnZF90ICopcmV0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGZyZWVfcGdkX2Zh
c3QocGdkX3QgKnBnZCkKewogICAgICAgICoodW5zaWduZWQgbG9uZyAqKXBnZCA9ICh1bnNpZ25l
ZCBsb25nKSAoYm9vdF9jcHVfZGF0YS5wZ2RfcXVpY2spOwogICAgICAgIChib290X2NwdV9kYXRh
LnBnZF9xdWljaykgPSAodW5zaWduZWQgbG9uZyAqKSBwZ2Q7CiAgICAgICAgKGJvb3RfY3B1X2Rh
dGEucGd0YWJsZV9jYWNoZV9zeikrKzsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBmcmVlX3Bn
ZF9zbG93KHBnZF90ICpwZ2QpCnsKCgoKCgoKCiAgICAgICAgZnJlZV9wYWdlcygoKHVuc2lnbmVk
IGxvbmcpcGdkKSwwKTsKCn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgKnB0ZV9hbGxvY19vbmUoc3Ry
dWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHB0ZV90
ICpwdGU7CgogICAgICAgIHB0ZSA9IChwdGVfdCAqKSBfX2dldF9mcmVlX3BhZ2VzKCgoMHgyMCB8
IDB4MTAgfCAweDQwIHwgMHg4MCB8IDB4MjAwIHwgMHgxMDApKSwwKTsKICAgICAgICBpZiAocHRl
KQogICAgICAgICAgICAgICAgbW14X2NsZWFyX3BhZ2UocHRlKTsKICAgICAgICByZXR1cm4gcHRl
Owp9CgpzdGF0aWMgaW5saW5lIHB0ZV90ICpwdGVfYWxsb2Nfb25lX2Zhc3Qoc3RydWN0IG1tX3N0
cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHVuc2lnbmVkIGxvbmcg
KnJldDsKCiAgICAgICAgaWYgKChyZXQgPSAodW5zaWduZWQgbG9uZyAqKShib290X2NwdV9kYXRh
LnB0ZV9xdWljaykpICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAoYm9vdF9jcHVf
ZGF0YS5wdGVfcXVpY2spID0gKHVuc2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAg
ICByZXRbMF0gPSByZXRbMV07CiAgICAgICAgICAgICAgICAoYm9vdF9jcHVfZGF0YS5wZ3RhYmxl
X2NhY2hlX3N6KS0tOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKHB0ZV90ICopcmV0Owp9Cgpz
dGF0aWMgX19pbmxpbmVfXyB2b2lkIHB0ZV9mcmVlX2Zhc3QocHRlX3QgKnB0ZSkKewogICAgICAg
ICoodW5zaWduZWQgbG9uZyAqKXB0ZSA9ICh1bnNpZ25lZCBsb25nKSAoYm9vdF9jcHVfZGF0YS5w
dGVfcXVpY2spOwogICAgICAgIChib290X2NwdV9kYXRhLnB0ZV9xdWljaykgPSAodW5zaWduZWQg
bG9uZyAqKSBwdGU7CiAgICAgICAgKGJvb3RfY3B1X2RhdGEucGd0YWJsZV9jYWNoZV9zeikrKzsK
fQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBwdGVfZnJlZV9zbG93KHB0ZV90ICpwdGUpCnsKICAg
ICAgICBmcmVlX3BhZ2VzKCgodW5zaWduZWQgbG9uZylwdGUpLDApOwp9CiMgMTUzICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpleHRlcm4gaW50IGRvX2NoZWNr
X3BndF9jYWNoZShpbnQsIGludCk7CiMgMTc1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfdGxiX21tKHN0cnVjdCBt
bV9zdHJ1Y3QgKm1tKQp7CiAgICAgICAgaWYgKG1tID09IGdldF9jdXJyZW50KCktPmFjdGl2ZV9t
bSkKICAgICAgICAgICAgICAgIGRvIHsgdW5zaWduZWQgaW50IHRtcHJlZzsgX19hc21fXyBfX3Zv
bGF0aWxlX18oICJtb3ZsICUlY3IzLCAlMDsgICMgZmx1c2ggVExCIFxuIiAibW92bCAlMCwgJSVj
cjM7ICAgICAgICAgICAgICBcbiIgOiAiPXIiICh0bXByZWcpIDo6ICJtZW1vcnkiKTsgfSB3aGls
ZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBmbHVzaF90bGJfcGFnZShzdHJ1Y3Qgdm1fYXJl
YV9zdHJ1Y3QgKnZtYSwKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCnsKICAgICAgICBpZiAo
dm1hLT52bV9tbSA9PSBnZXRfY3VycmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiaW52bHBnICUwIjogOiJtIiAoKihjaGFyICopIGFkZHIpKTsK
fQoKc3RhdGljIGlubGluZSB2b2lkIGZsdXNoX3RsYl9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICpt
bSwKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKewogICAg
ICAgIGlmIChtbSA9PSBnZXRfY3VycmVudCgpLT5hY3RpdmVfbW0pCiAgICAgICAgICAgICAgICBk
byB7IHVuc2lnbmVkIGludCB0bXByZWc7IF9fYXNtX18gX192b2xhdGlsZV9fKCAibW92bCAlJWNy
MywgJTA7ICAjIGZsdXNoIFRMQiBcbiIgIm1vdmwgJTAsICUlY3IzOyAgICAgICAgICAgICAgXG4i
IDogIj1yIiAodG1wcmVnKSA6OiAibWVtb3J5Iik7IH0gd2hpbGUgKDApOwp9CiMgMjI3ICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcGdhbGxvYy5oIgpzdGF0aWMgaW5saW5lIHZv
aWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxv
bmcgZW5kKQp7Cgp9CiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaGln
aG1lbS5oIiAyCiMgMzEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2hpZ2ht
ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbnJfZnJlZV9oaWdocGFnZXModm9pZCkg
eyByZXR1cm4gMDsgfQoKc3RhdGljIGlubGluZSB2b2lkICprbWFwKHN0cnVjdCBwYWdlICpwYWdl
KSB7IHJldHVybiAoKHBhZ2UpLT52aXJ0dWFsKTsgfQojIDQ2ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9oaWdobWVtLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl91c2Vy
X2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7CiAgICAg
ICAgdm9pZCAqYWRkciA9IGttYXAocGFnZSk7CiAgICAgICAgbW14X2NsZWFyX3BhZ2UoYWRkcik7
CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2hp
Z2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAgICAgICAgbW14X2NsZWFyX3BhZ2Uoa21hcChw
YWdlKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1l
bWNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1
bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRyOwoKICAgICAgICBpZiAob2Zm
c2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0
aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOwogICAgICAgIGthZGRyID0ga21hcChwYWdlKTsKICAg
ICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNp
emUpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwo
KDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemUpKSkgOiBfX2NvbnN0YW50
X2NfbWVtc2V0KCgoa2FkZHIgKyBvZmZzZXQpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKHNpemUpKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplKSkgPyBfX21l
bXNldF9nZW5lcmljKCgoKGthZGRyICsgb2Zmc2V0KSkpLCgoKDApKSksKCgoc2l6ZSkpKSkgOiBf
X21lbXNldF9nZW5lcmljKCgoa2FkZHIgKyBvZmZzZXQpKSwoKDApKSwoKHNpemUpKSkpKTsKICAg
ICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgbWVtY2xlYXJf
aGlnaHBhZ2VfZmx1c2goc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVu
c2lnbmVkIGludCBzaXplKQp7CiAgICAgICAgY2hhciAqa2FkZHI7CgogICAgICAgIGlmIChvZmZz
ZXQgKyBzaXplID4gKDFVTCA8PCAxMikpCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAg
ICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgwKSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6
ZSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgo
MHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZSkpKSA6IF9fY29uc3RhbnRf
Y19tZW1zZXQoKChrYWRkciArIG9mZnNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFy
KSgwKSkpLCgoc2l6ZSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemUpKSA/IF9fbWVt
c2V0X2dlbmVyaWMoKCgoa2FkZHIgKyBvZmZzZXQpKSksKCgoMCkpKSwoKChzaXplKSkpKSA6IF9f
bWVtc2V0X2dlbmVyaWMoKChrYWRkciArIG9mZnNldCkpLCgoMCkpLCgoc2l6ZSkpKSkpOwogICAg
ICAgIGRvIHsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKc3RhdGlj
IGlubGluZSB2b2lkIGNvcHlfdXNlcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBw
YWdlICpmcm9tLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2
dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsK
ICAgICAgICBtbXhfY29weV9wYWdlKHZ0byx2ZnJvbSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgw
KTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgY29weV9o
aWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tKQp7CiAgICAgICAgY2hh
ciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsKICAgICAgICB2dG8g
PSBrbWFwKHRvKTsKICAgICAgICBtbXhfY29weV9wYWdlKHZ0byx2ZnJvbSk7CiAgICAgICAgZG8g
eyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CiMgMjggIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIiAyCiMgODUgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdHJ1Y3QgbmZfY29ubnRyYWNrIHsK
ICAgICAgICBhdG9taWNfdCB1c2U7CiAgICAgICAgdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBuZl9j
b25udHJhY2sgKik7Cn07CgpzdHJ1Y3QgbmZfY3RfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mX2Nv
bm50cmFjayAqbWFzdGVyOwp9OwoKCnN0cnVjdCBza19idWZmX2hlYWQgewoKICAgICAgICBzdHJ1
Y3Qgc2tfYnVmZiAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKiBwcmV2OwoKICAgICAg
ICBfX3UzMiBxbGVuOwogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKfTsKCnN0cnVjdCBza19idWZm
OwoKCgp0eXBlZGVmIHN0cnVjdCBza2JfZnJhZ19zdHJ1Y3Qgc2tiX2ZyYWdfdDsKCnN0cnVjdCBz
a2JfZnJhZ19zdHJ1Y3QKewogICAgICAgIHN0cnVjdCBwYWdlICpwYWdlOwogICAgICAgIF9fdTE2
IHBhZ2Vfb2Zmc2V0OwogICAgICAgIF9fdTE2IHNpemU7Cn07CgoKCgpzdHJ1Y3Qgc2tiX3NoYXJl
ZF9pbmZvIHsKICAgICAgICBhdG9taWNfdCBkYXRhcmVmOwogICAgICAgIHVuc2lnbmVkIGludCBu
cl9mcmFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqZnJhZ19saXN0OwogICAgICAgIHNrYl9m
cmFnX3QgZnJhZ3NbNl07Cn07CgpzdHJ1Y3Qgc2tfYnVmZiB7CgogICAgICAgIHN0cnVjdCBza19i
dWZmICogbmV4dDsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIHByZXY7CgogICAgICAgIHN0cnVj
dCBza19idWZmX2hlYWQgKiBsaXN0OwogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAgICBz
dHJ1Y3QgdGltZXZhbCBzdGFtcDsKICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwoKCiAg
ICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdGNwaGRyICp0aDsK
ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBoZHIgKnVoOwogICAgICAgICAgICAgICAgc3RydWN0
IGljbXBoZHIgKmljbXBoOwogICAgICAgICAgICAgICAgc3RydWN0IGlnbXBoZHIgKmlnbXBoOwog
ICAgICAgICAgICAgICAgc3RydWN0IGlwaGRyICppcGlwaDsKICAgICAgICAgICAgICAgIHN0cnVj
dCBzcHhoZHIgKnNweGg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyYXc7CiAgICAg
ICAgfSBoOwoKCiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
aXBoZHIgKmlwaDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpcHY2aGRyICppcHY2aDsKICAgICAg
ICAgICAgICAgIHN0cnVjdCBhcnBoZHIgKmFycGg7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXB4
aGRyICppcHhoOwogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAgIH0g
bmg7CgoKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBldGho
ZHIgKmV0aGVybmV0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmF3OwogICAgICAg
IH0gbWFjOwoKICAgICAgICBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CgoKCgoKCgogICAgICAgIGNo
YXIgY2JbNDhdOwoKICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGlu
dCBkYXRhX2xlbjsKICAgICAgICB1bnNpZ25lZCBpbnQgY3N1bTsKICAgICAgICB1bnNpZ25lZCBj
aGFyIF9fdW51c2VkLAogICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHBrdF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpcF9zdW1tZWQ7
CiAgICAgICAgX191MzIgcHJpb3JpdHk7CiAgICAgICAgYXRvbWljX3QgdXNlcnM7CiAgICAgICAg
dW5zaWduZWQgc2hvcnQgcHJvdG9jb2w7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VjdXJpdHk7
CiAgICAgICAgdW5zaWduZWQgaW50IHRydWVzaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyICpo
ZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciAq
dGFpbDsKICAgICAgICB1bnNpZ25lZCBjaGFyICplbmQ7CgogICAgICAgIHZvaWQgKCpkZXN0cnVj
dG9yKShzdHJ1Y3Qgc2tfYnVmZiAqKTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbmZtYXJrOwoK
ICAgICAgICBfX3UzMiBuZmNhY2hlOwoKICAgICAgICBzdHJ1Y3QgbmZfY3RfaW5mbyAqbmZjdDsK
CiAgICAgICAgdW5zaWduZWQgaW50IG5mX2RlYnVnOwojIDIxNiAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCn07CiMgMjI1ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9zbGFiLmgiIDEKIyAyMjYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L3NrYnVmZi5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2Fz
bS9zeXN0ZW0uaCIgMQojIDIyOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
c2tidWZmLmgiIDIKCmV4dGVybiB2b2lkIF9fa2ZyZWVfc2tiKHN0cnVjdCBza19idWZmICpza2Ip
OwpleHRlcm4gc3RydWN0IHNrX2J1ZmYgKiBhbGxvY19za2IodW5zaWduZWQgaW50IHNpemUsIGlu
dCBwcmlvcml0eSk7CmV4dGVybiB2b2lkIGtmcmVlX3NrYm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2ti
KTsKZXh0ZXJuIHN0cnVjdCBza19idWZmICogc2tiX2Nsb25lKHN0cnVjdCBza19idWZmICpza2Is
IGludCBwcmlvcml0eSk7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9jb3B5KGNvbnN0IHN0
cnVjdCBza19idWZmICpza2IsIGludCBwcmlvcml0eSk7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAq
IHBza2JfY29weShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZ2ZwX21hc2spOwpleHRlcm4gaW50
IHBza2JfZXhwYW5kX2hlYWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG5oZWFkLCBpbnQgbnRh
aWwsIGludCBnZnBfbWFzayk7CmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9yZWFsbG9jX2hl
YWRyb29tKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBoZWFkcm9vbSk7CmV4dGVy
biBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9jb3B5X2V4cGFuZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bmV3aGVhZHJvb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBuZXd0YWlscm9vbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHByaW9yaXR5KTsKCmV4dGVybiB2b2lkIHNrYl9vdmVyX3BhbmljKHN0
cnVjdCBza19idWZmICpza2IsIGludCBsZW4sIHZvaWQgKmhlcmUpOwpleHRlcm4gdm9pZCBza2Jf
dW5kZXJfcGFuaWMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGxlbiwgdm9pZCAqaGVyZSk7CiMg
MjU1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGlj
IGlubGluZSBpbnQgc2tiX3F1ZXVlX2VtcHR5KHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsK
ICAgICAgICByZXR1cm4gKGxpc3QtPm5leHQgPT0gKHN0cnVjdCBza19idWZmICopIGxpc3QpOwp9
CiMgMjY4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3Rh
dGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2dldChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7
CiAgICAgICAgYXRvbWljX2luYygmc2tiLT51c2Vycyk7CiAgICAgICAgcmV0dXJuIHNrYjsKfQoj
IDI4NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgdm9pZCBrZnJlZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAgIGlm
ICgoKCZza2ItPnVzZXJzKS0+Y291bnRlcikgPT0gMSB8fCBhdG9taWNfZGVjX2FuZF90ZXN0KCZz
a2ItPnVzZXJzKSkKICAgICAgICAgICAgICAgIF9fa2ZyZWVfc2tiKHNrYik7Cn0KCgpzdGF0aWMg
aW5saW5lIHZvaWQga2ZyZWVfc2tiX2Zhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYikKewogICAgICAg
IGlmICgoKCZza2ItPnVzZXJzKS0+Y291bnRlcikgPT0gMSB8fCBhdG9taWNfZGVjX2FuZF90ZXN0
KCZza2ItPnVzZXJzKSkKICAgICAgICAgICAgICAgIGtmcmVlX3NrYm1lbShza2IpOwp9CiMgMzA5
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlu
bGluZSBpbnQgc2tiX2Nsb25lZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJu
IHNrYi0+Y2xvbmVkICYmICgoJigoc3RydWN0IHNrYl9zaGFyZWRfaW5mbyAqKSgoc2tiKS0+ZW5k
KSktPmRhdGFyZWYpLT5jb3VudGVyKSAhPSAxOwp9CiMgMzIyICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQgc2tiX3NoYXJlZChz
dHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuICgoKCZza2ItPnVzZXJzKS0+Y291
bnRlcikgIT0gMSk7Cn0KIyAzNDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2Jfc2hhcmVfY2hlY2so
c3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHByaSkKewogICAgICAgIGlmIChza2Jfc2hhcmVkKHNr
YikpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBza19idWZmICpuc2tiOwogICAgICAgICAgICAg
ICAgbnNrYiA9IHNrYl9jbG9uZShza2IsIHByaSk7CiAgICAgICAgICAgICAgICBrZnJlZV9za2Io
c2tiKTsKICAgICAgICAgICAgICAgIHJldHVybiBuc2tiOwogICAgICAgIH0KICAgICAgICByZXR1
cm4gc2tiOwp9CiMgMzc0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1
ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3Vuc2hhcmUoc3RydWN0IHNr
X2J1ZmYgKnNrYiwgaW50IHByaSkKewogICAgICAgIHN0cnVjdCBza19idWZmICpuc2tiOwogICAg
ICAgIGlmKCFza2JfY2xvbmVkKHNrYikpCiAgICAgICAgICAgICAgICByZXR1cm4gc2tiOwogICAg
ICAgIG5za2I9c2tiX2NvcHkoc2tiLCBwcmkpOwogICAgICAgIGtmcmVlX3NrYihza2IpOwogICAg
ICAgIHJldHVybiBuc2tiOwp9CiMgMzk4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3BlZWsoc3Ry
dWN0IHNrX2J1ZmZfaGVhZCAqbGlzdF8pCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqbGlzdCA9
ICgoc3RydWN0IHNrX2J1ZmYgKilsaXN0XyktPm5leHQ7CiAgICAgICAgaWYgKGxpc3QgPT0gKHN0
cnVjdCBza19idWZmICopbGlzdF8pCiAgICAgICAgICAgICAgICBsaXN0ID0gKCh2b2lkICopMCk7
CiAgICAgICAgcmV0dXJuIGxpc3Q7Cn0KIyA0MjAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2JfcGVl
a190YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgc3RydWN0IHNrX2J1
ZmYgKmxpc3QgPSAoKHN0cnVjdCBza19idWZmICopbGlzdF8pLT5wcmV2OwogICAgICAgIGlmIChs
aXN0ID09IChzdHJ1Y3Qgc2tfYnVmZiAqKWxpc3RfKQogICAgICAgICAgICAgICAgbGlzdCA9ICgo
dm9pZCAqKTApOwogICAgICAgIHJldHVybiBsaXN0Owp9CiMgNDM1ICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBfX3UzMiBza2JfcXVl
dWVfbGVuKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3RfKQp7CiAgICAgICAgcmV0dXJuKGxpc3Rf
LT5xbGVuKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV9oZWFkX2luaXQoc3RydWN0
IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBs
aXN0LT5wcmV2ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBsaXN0LT5uZXh0ID0g
KHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBsaXN0LT5xbGVuID0gMDsKfQojIDQ2NiAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgdm9pZCBfX3NrYl9xdWV1ZV9oZWFkKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIHN0cnVj
dCBza19idWZmICpuZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpwcmV2LCAqbmV4dDsK
CiAgICAgICAgbmV3c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKICAgICAg
ICBwcmV2ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBuZXh0ID0gcHJldi0+bmV4
dDsKICAgICAgICBuZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2
OwogICAgICAgIG5leHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7
Cn0KIyA0OTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpz
dGF0aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX2hlYWQoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlz
dCwgc3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK
CiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNs
aSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxl
ICgwKTsKICAgICAgICBfX3NrYl9xdWV1ZV9oZWFkKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwi
OiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDUxNCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBfX3NrYl9xdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QsIHN0cnVjdCBz
a19idWZmICpuZXdzaykKewogICAgICAgIHN0cnVjdCBza19idWZmICpwcmV2LCAqbmV4dDsKCiAg
ICAgICAgbmV3c2stPmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKICAgICAgICBu
ZXh0ID0gKHN0cnVjdCBza19idWZmICopbGlzdDsKICAgICAgICBwcmV2ID0gbmV4dC0+cHJldjsK
ICAgICAgICBuZXdzay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2Owog
ICAgICAgIG5leHQtPnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7Cn0K
IyA1NDAgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0
aWMgaW5saW5lIHZvaWQgc2tiX3F1ZXVlX3RhaWwoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwg
c3RydWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAg
ICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6
Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJmxpc3QtPmxvY2spOyB9IHdoaWxlICgw
KTsKICAgICAgICBfX3NrYl9xdWV1ZV90YWlsKGxpc3QsIG5ld3NrKTsKICAgICAgICBkbyB7IGRv
IHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6
ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQojIDU1OCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3Ry
dWN0IHNrX2J1ZmYgKl9fc2tiX2RlcXVldWUoc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCkKewog
ICAgICAgIHN0cnVjdCBza19idWZmICpuZXh0LCAqcHJldiwgKnJlc3VsdDsKCiAgICAgICAgcHJl
diA9IChzdHJ1Y3Qgc2tfYnVmZiAqKSBsaXN0OwogICAgICAgIG5leHQgPSBwcmV2LT5uZXh0Owog
ICAgICAgIHJlc3VsdCA9ICgodm9pZCAqKTApOwogICAgICAgIGlmIChuZXh0ICE9IHByZXYpIHsK
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgICBuZXh0ID0gbmV4
dC0+bmV4dDsKICAgICAgICAgICAgICAgIGxpc3QtPnFsZW4tLTsKICAgICAgICAgICAgICAgIG5l
eHQtPnByZXYgPSBwcmV2OwogICAgICAgICAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7CiAgICAg
ICAgICAgICAgICByZXN1bHQtPm5leHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICAgIHJl
c3VsdC0+cHJldiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgcmVzdWx0LT5saXN0ID0g
KCh2b2lkICopMCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KIyA1ODcgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5l
IHN0cnVjdCBza19idWZmICpza2JfZGVxdWV1ZShzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0KQp7
CiAgICAgICAgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzdWx0OwoKICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoi
PWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2b2lkKSgmbGlzdC0+bG9jayk7IH0gd2hpbGUgKDAp
OwogICAgICAgIHJlc3VsdCA9IF9fc2tiX2RlcXVldWUobGlzdCk7CiAgICAgICAgZG8geyBkbyB7
IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn
IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIHJl
c3VsdDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3NrYl9pbnNlcnQoc3RydWN0IHNrX2J1
ZmYgKm5ld3NrLAogICAgICAgIHN0cnVjdCBza19idWZmICogcHJldiwgc3RydWN0IHNrX2J1ZmYg
Km5leHQsCiAgICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCAqIGxpc3QpCnsKICAgICAgICBuZXdz
ay0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3c2stPnByZXYgPSBwcmV2OwogICAgICAgIG5leHQt
PnByZXYgPSBuZXdzazsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3c2s7CiAgICAgICAgbmV3c2st
Pmxpc3QgPSBsaXN0OwogICAgICAgIGxpc3QtPnFsZW4rKzsKfQojIDYyNCAiL3Vzci9zcmMvbGlu
dXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCBza2Jf
aW5zZXJ0KHN0cnVjdCBza19idWZmICpvbGQsIHN0cnVjdCBza19idWZmICpuZXdzaykKewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZv
aWQpKCZvbGQtPmxpc3QtPmxvY2spOyB9IHdoaWxlICgwKTsKICAgICAgICBfX3NrYl9pbnNlcnQo
bmV3c2ssIG9sZC0+cHJldiwgb2xkLCBvbGQtPmxpc3QpOwogICAgICAgIGRvIHsgZG8geyB9IHdo
aWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZs
YWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoKCgoKc3RhdGljIGlubGluZSB2
b2lkIF9fc2tiX2FwcGVuZChzdHJ1Y3Qgc2tfYnVmZiAqb2xkLCBzdHJ1Y3Qgc2tfYnVmZiAqbmV3
c2spCnsKICAgICAgICBfX3NrYl9pbnNlcnQobmV3c2ssIG9sZCwgb2xkLT5uZXh0LCBvbGQtPmxp
c3QpOwp9CiMgNjUzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9hcHBlbmQoc3RydWN0IHNrX2J1ZmYgKm9sZCwgc3Ry
dWN0IHNrX2J1ZmYgKm5ld3NrKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAg
ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n
IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJm9sZC0+bGlzdC0+bG9jayk7IH0gd2hpbGUg
KDApOwogICAgICAgIF9fc2tiX2FwcGVuZChvbGQsIG5ld3NrKTsKICAgICAgICBkbyB7IGRvIHsg
fSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6Imci
IChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKfQoKCgoKCgpzdGF0aWMgaW5s
aW5lIHZvaWQgX19za2JfdW5saW5rKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZm
X2hlYWQgKmxpc3QpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIG5leHQsICogcHJldjsKCiAg
ICAgICAgbGlzdC0+cWxlbi0tOwogICAgICAgIG5leHQgPSBza2ItPm5leHQ7CiAgICAgICAgcHJl
diA9IHNrYi0+cHJldjsKICAgICAgICBza2ItPm5leHQgPSAoKHZvaWQgKikwKTsKICAgICAgICBz
a2ItPnByZXYgPSAoKHZvaWQgKikwKTsKICAgICAgICBza2ItPmxpc3QgPSAoKHZvaWQgKikwKTsK
ICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoj
IDY5NCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRp
YyBpbmxpbmUgdm9pZCBza2JfdW5saW5rKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBz
dHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0ID0gc2tiLT5saXN0OwoKICAgICAgICBpZihsaXN0KSB7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZs
YWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgICAgICAgICBpZihza2ItPmxpc3QgPT0gbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAg
X19za2JfdW5saW5rKHNrYiwgc2tiLT5saXN0KTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9
IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIg
KGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0KfQojIDcxOSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxp
bmUgc3RydWN0IHNrX2J1ZmYgKl9fc2tiX2RlcXVldWVfdGFpbChzdHJ1Y3Qgc2tfYnVmZl9oZWFk
ICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiA9IHNrYl9wZWVrX3RhaWwobGlz
dCk7CiAgICAgICAgaWYgKHNrYikKICAgICAgICAgICAgICAgIF9fc2tiX3VubGluayhza2IsIGxp
c3QpOwogICAgICAgIHJldHVybiBza2I7Cn0KIyA3MzYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpza2Jf
ZGVxdWV1ZV90YWlsKHN0cnVjdCBza19idWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBsb25nIGZs
YWdzOwogICAgICAgIHN0cnVjdCBza19idWZmICpyZXN1bHQ7CgogICAgICAgIGRvIHsgX19hc21f
XyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJt
ZW1vcnkiKTsgKHZvaWQpKCZsaXN0LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmVzdWx0
ID0gX19za2JfZGVxdWV1ZV90YWlsKGxpc3QpOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDAp
OyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToi
bWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwogICAgICAgIHJldHVybiByZXN1bHQ7Cn0KCnN0
YXRpYyBpbmxpbmUgaW50IHNrYl9pc19ub25saW5lYXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNr
YikKewogICAgICAgIHJldHVybiBza2ItPmRhdGFfbGVuOwp9CgpzdGF0aWMgaW5saW5lIGludCBz
a2JfaGVhZGxlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNr
Yi0+bGVuIC0gc2tiLT5kYXRhX2xlbjsKfQojIDc2NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqX19za2Jf
cHV0KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICB1bnNp
Z25lZCBjaGFyICp0bXA9c2tiLT50YWlsOwogICAgICAgIGRvIHsgaWYgKHNrYl9pc19ub25saW5l
YXIoc2tiKSkgX19hc21fXyBfX3ZvbGF0aWxlX18oIi5ieXRlIDB4MGYsMHgwYiIpOyB9IHdoaWxl
ICgwKTsKICAgICAgICBza2ItPnRhaWwrPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAg
ICAgIHJldHVybiB0bXA7Cn0KIyA3ODQgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9wdXQoc3RydWN0
IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHVuc2lnbmVkIGNoYXIg
KnRtcD1za2ItPnRhaWw7CiAgICAgICAgZG8geyBpZiAoc2tiX2lzX25vbmxpbmVhcihza2IpKSBf
X2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7IH0gd2hpbGUgKDApOwogICAg
ICAgIHNrYi0+dGFpbCs9bGVuOwogICAgICAgIHNrYi0+bGVuKz1sZW47CiAgICAgICAgaWYoc2ti
LT50YWlsPnNrYi0+ZW5kKSB7CiAgICAgICAgICAgICAgICBza2Jfb3Zlcl9wYW5pYyhza2IsIGxl
biwgKHsgdm9pZCAqcGM7IF9fYXNtX18oIm1vdmwgJDFmLCUwXG4xOiI6Ij1nIiAocGMpKTsgcGM7
IH0pKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRtcDsKfQoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBjaGFyICpfX3NrYl9wdXNoKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBs
ZW4pCnsKICAgICAgICBza2ItPmRhdGEtPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAg
ICAgIHJldHVybiBza2ItPmRhdGE7Cn0KIyA4MTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl9wdXNo
KHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBza2ItPmRh
dGEtPWxlbjsKICAgICAgICBza2ItPmxlbis9bGVuOwogICAgICAgIGlmKHNrYi0+ZGF0YTxza2It
PmhlYWQpIHsKICAgICAgICAgICAgICAgIHNrYl91bmRlcl9wYW5pYyhza2IsIGxlbiwgKHsgdm9p
ZCAqcGM7IF9fYXNtX18oIm1vdmwgJDFmLCUwXG4xOiI6Ij1nIiAocGMpKTsgcGM7IH0pKTsKICAg
ICAgICB9CiAgICAgICAgcmV0dXJuIHNrYi0+ZGF0YTsKfQoKc3RhdGljIGlubGluZSBjaGFyICpf
X3NrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAg
ICBza2ItPmxlbi09bGVuOwogICAgICAgIGlmIChza2ItPmxlbiA8IHNrYi0+ZGF0YV9sZW4pCiAg
ICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiLmJ5dGUgMHgwZiwweDBiIik7CiAg
ICAgICAgcmV0dXJuIHNrYi0+ZGF0YSs9bGVuOwp9CiMgODQyICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICog
c2tiX3B1bGwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAg
IGlmIChsZW4gPiBza2ItPmxlbikKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsK
ICAgICAgICByZXR1cm4gX19za2JfcHVsbChza2IsbGVuKTsKfQoKZXh0ZXJuIHVuc2lnbmVkIGNo
YXIgKiBfX3Bza2JfcHVsbF90YWlsKHN0cnVjdCBza19idWZmICpza2IsIGludCBkZWx0YSk7Cgpz
dGF0aWMgaW5saW5lIGNoYXIgKl9fcHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVuc2ln
bmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiX2hlYWRsZW4oc2tiKSAmJgogICAg
ICAgICAgICBfX3Bza2JfcHVsbF90YWlsKHNrYiwgbGVuLXNrYl9oZWFkbGVuKHNrYikpID09ICgo
dm9pZCAqKTApKQogICAgICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIHNr
Yi0+bGVuIC09IGxlbjsKICAgICAgICByZXR1cm4gc2tiLT5kYXRhICs9IGxlbjsKfQoKc3RhdGlj
IGlubGluZSB1bnNpZ25lZCBjaGFyICogcHNrYl9wdWxsKHN0cnVjdCBza19idWZmICpza2IsIHVu
c2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4pCiAgICAgICAgICAg
ICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICAgICAgcmV0dXJuIF9fcHNrYl9wdWxsKHNrYixs
ZW4pOwp9CgpzdGF0aWMgaW5saW5lIGludCBwc2tiX21heV9wdWxsKHN0cnVjdCBza19idWZmICpz
a2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAobGVuIDw9IHNrYl9oZWFkbGVuKHNr
YikpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBpZiAobGVuID4gc2tiLT5sZW4p
CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gKF9fcHNrYl9wdWxsX3Rh
aWwoc2tiLCBsZW4tc2tiX2hlYWRsZW4oc2tiKSkgIT0gKCh2b2lkICopMCkpOwp9CiMgODgzICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGlu
ZSBpbnQgc2tiX2hlYWRyb29tKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBy
ZXR1cm4gc2tiLT5kYXRhLXNrYi0+aGVhZDsKfQojIDg5NSAiL3Vzci9zcmMvbGludXgtMi40LjEx
L2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgaW50IHNrYl90YWlscm9vbShj
b25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICAgcmV0dXJuIHNrYl9pc19ub25saW5l
YXIoc2tiKSA/IDAgOiBza2ItPmVuZC1za2ItPnRhaWw7Cn0KIyA5MDkgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2tiX3Jl
c2VydmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbikKewogICAgICAgIHNr
Yi0+ZGF0YSs9bGVuOwogICAgICAgIHNrYi0+dGFpbCs9bGVuOwp9CgpleHRlcm4gaW50IF9fX3Bz
a2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgcmVhbGxv
Yyk7CgpzdGF0aWMgaW5saW5lIHZvaWQgX19za2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1
bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgaWYgKCFza2ItPmRhdGFfbGVuKSB7CiAgICAgICAg
ICAgICAgICBza2ItPmxlbiA9IGxlbjsKICAgICAgICAgICAgICAgIHNrYi0+dGFpbCA9IHNrYi0+
ZGF0YStsZW47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9fX3Bza2JfdHJpbShz
a2IsIGxlbiwgMCk7CiAgICAgICAgfQp9CiMgOTM2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl90cmltKHN0cnVjdCBz
a19idWZmICpza2IsIHVuc2lnbmVkIGludCBsZW4pCnsKICAgICAgICBpZiAoc2tiLT5sZW4gPiBs
ZW4pIHsKICAgICAgICAgICAgICAgIF9fc2tiX3RyaW0oc2tiLCBsZW4pOwogICAgICAgIH0KfQoK
CnN0YXRpYyBpbmxpbmUgaW50IF9fcHNrYl90cmltKHN0cnVjdCBza19idWZmICpza2IsIHVuc2ln
bmVkIGludCBsZW4pCnsKICAgICAgICBpZiAoIXNrYi0+ZGF0YV9sZW4pIHsKICAgICAgICAgICAg
ICAgIHNrYi0+bGVuID0gbGVuOwogICAgICAgICAgICAgICAgc2tiLT50YWlsID0gc2tiLT5kYXRh
K2xlbjsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICByZXR1cm4gX19fcHNrYl90cmltKHNrYiwgbGVuLCAxKTsKICAgICAgICB9Cn0KCnN0
YXRpYyBpbmxpbmUgaW50IHBza2JfdHJpbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBp
bnQgbGVuKQp7CiAgICAgICAgaWYgKGxlbiA8IHNrYi0+bGVuKQogICAgICAgICAgICAgICAgcmV0
dXJuIF9fcHNrYl90cmltKHNrYiwgbGVuKTsKICAgICAgICByZXR1cm4gMDsKfQojIDk3MiAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUg
dm9pZCBza2Jfb3JwaGFuKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoc2tiLT5k
ZXN0cnVjdG9yKQogICAgICAgICAgICAgICAgc2tiLT5kZXN0cnVjdG9yKHNrYik7CiAgICAgICAg
c2tiLT5kZXN0cnVjdG9yID0gKCh2b2lkICopMCk7CiAgICAgICAgc2tiLT5zayA9ICgodm9pZCAq
KTApOwp9CiMgOTkwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9za2J1ZmYu
aCIKc3RhdGljIGlubGluZSB2b2lkIHNrYl9xdWV1ZV9wdXJnZShzdHJ1Y3Qgc2tfYnVmZl9oZWFk
ICpsaXN0KQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKICAgICAgICB3aGlsZSAoKHNr
Yj1za2JfZGVxdWV1ZShsaXN0KSkhPSgodm9pZCAqKTApKQogICAgICAgICAgICAgICAga2ZyZWVf
c2tiKHNrYik7Cn0KIyAxMDA3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9z
a2J1ZmYuaCIKc3RhdGljIGlubGluZSB2b2lkIF9fc2tiX3F1ZXVlX3B1cmdlKHN0cnVjdCBza19i
dWZmX2hlYWQgKmxpc3QpCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHdo
aWxlICgoc2tiPV9fc2tiX2RlcXVldWUobGlzdCkpIT0oKHZvaWQgKikwKSkKICAgICAgICAgICAg
ICAgIGtmcmVlX3NrYihza2IpOwp9CiMgMTAyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvc2tidWZmLmgiCnN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKl9fZGV2X2Fs
bG9jX3NrYih1bnNpZ25lZCBpbnQgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGdmcF9tYXNrKQp7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYg
KnNrYjsKCiAgICAgICAgc2tiID0gYWxsb2Nfc2tiKGxlbmd0aCsxNiwgZ2ZwX21hc2spOwogICAg
ICAgIGlmIChza2IpCiAgICAgICAgICAgICAgICBza2JfcmVzZXJ2ZShza2IsMTYpOwogICAgICAg
IHJldHVybiBza2I7Cn0KIyAxMDUxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqZGV2X2FsbG9jX3NrYih1
bnNpZ25lZCBpbnQgbGVuZ3RoKQp7CiAgICAgICAgcmV0dXJuIF9fZGV2X2FsbG9jX3NrYihsZW5n
dGgsICgweDIwKSk7Cn0KIyAxMDY5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9za2J1ZmYuaCIKc3RhdGljIGlubGluZSBpbnQKc2tiX2NvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2ti
LCB1bnNpZ25lZCBpbnQgaGVhZHJvb20pCnsKICAgICAgICBpbnQgZGVsdGEgPSAoaGVhZHJvb20g
PiAxNiA/IGhlYWRyb29tIDogMTYpIC0gc2tiX2hlYWRyb29tKHNrYik7CgogICAgICAgIGlmIChk
ZWx0YSA8IDApCiAgICAgICAgICAgICAgICBkZWx0YSA9IDA7CgogICAgICAgIGlmIChkZWx0YSB8
fCBza2JfY2xvbmVkKHNrYikpCiAgICAgICAgICAgICAgICByZXR1cm4gcHNrYl9leHBhbmRfaGVh
ZChza2IsIChkZWx0YSsxNSkmfjE1LCAwLCAoMHgyMCkpOwogICAgICAgIHJldHVybiAwOwp9CiMg
MTA4OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2tidWZmLmgiCmludCBz
a2JfbGluZWFyaXplKHN0cnVjdCBza19idWZmICpza2IsIGludCBnZnApOwoKc3RhdGljIGlubGlu
ZSB2b2lkICprbWFwX3NrYl9mcmFnKGNvbnN0IHNrYl9mcmFnX3QgKmZyYWcpCnsKCgoKCgoKICAg
ICAgICByZXR1cm4ga21hcChmcmFnLT5wYWdlKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGt1bm1h
cF9za2JfZnJhZyh2b2lkICp2YWRkcikKewogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7CgoKCn0K
CgoKCgoKCmV4dGVybiBzdHJ1Y3Qgc2tfYnVmZiAqIHNrYl9yZWN2X2RhdGFncmFtKHN0cnVjdCBz
b2NrICpzayx1bnNpZ25lZCBmbGFncyxpbnQgbm9ibG9jaywgaW50ICplcnIpOwpleHRlcm4gdW5z
aWduZWQgaW50IGRhdGFncmFtX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQg
KnNvY2ssIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqd2FpdCk7CmV4dGVybiBpbnQgc2tiX2Nv
cHlfZGF0YWdyYW0oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBvZmZzZXQsIGNoYXIg
KnRvLGludCBzaXplKTsKZXh0ZXJuIGludCBza2JfY29weV9kYXRhZ3JhbV9pb3ZlYyhjb25zdCBz
dHJ1Y3Qgc2tfYnVmZiAqZnJvbSwgaW50IG9mZnNldCwgc3RydWN0IGlvdmVjICp0byxpbnQgc2l6
ZSk7CmV4dGVybiBpbnQgc2tiX2NvcHlfYW5kX2NzdW1fZGF0YWdyYW0oY29uc3Qgc3RydWN0IHNr
X2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdTggKnRvLCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgKmNz
dW1wKTsKZXh0ZXJuIGludCBza2JfY29weV9hbmRfY3N1bV9kYXRhZ3JhbV9pb3ZlYyhjb25zdCBz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGxlbiwgc3RydWN0IGlvdmVjICppb3YpOwpleHRlcm4g
dm9pZCBza2JfZnJlZV9kYXRhZ3JhbShzdHJ1Y3Qgc29jayAqIHNrLCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgc2tiX2NoZWNrc3VtKGNvbnN0IHN0cnVjdCBza19i
dWZmICpza2IsIGludCBvZmZzZXQsIGludCBsZW4sIHVuc2lnbmVkIGludCBjc3VtKTsKZXh0ZXJu
IGludCBza2JfY29weV9iaXRzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQs
IHZvaWQgKnRvLCBpbnQgbGVuKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBza2JfY29weV9hbmRfY3N1
bV9iaXRzKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsIHU4ICp0bywgaW50
IGxlbiwgdW5zaWduZWQgaW50IGNzdW0pOwpleHRlcm4gdm9pZCBza2JfY29weV9hbmRfY3N1bV9k
ZXYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggKnRvKTsKCmV4dGVybiB2b2lkIHNrYl9p
bml0KHZvaWQpOwpleHRlcm4gdm9pZCBza2JfYWRkX210dShpbnQgbXR1KTsKCgpzdGF0aWMgaW5s
aW5lIHZvaWQKbmZfY29ubnRyYWNrX3B1dChzdHJ1Y3QgbmZfY3RfaW5mbyAqbmZjdCkKewogICAg
ICAgIGlmIChuZmN0ICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJm5mY3QtPm1hc3Rlci0+dXNlKSkK
ICAgICAgICAgICAgICAgIG5mY3QtPm1hc3Rlci0+ZGVzdHJveShuZmN0LT5tYXN0ZXIpOwp9CnN0
YXRpYyBpbmxpbmUgdm9pZApuZl9jb25udHJhY2tfZ2V0KHN0cnVjdCBuZl9jdF9pbmZvICpuZmN0
KQp7CiAgICAgICAgaWYgKG5mY3QpCiAgICAgICAgICAgICAgICBhdG9taWNfaW5jKCZuZmN0LT5t
YXN0ZXItPnVzZSk7Cn0KIyAxNDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L25ldGRldmljZS5oIiAyCgpzdHJ1Y3QgbmVpZ2hib3VyOwpzdHJ1Y3QgbmVpZ2hfcGFybXM7CnN0
cnVjdCBza19idWZmOwoKc3RydWN0IG5ldGlmX3J4X3N0YXRzCnsKICAgICAgICB1bnNpZ25lZCB0
b3RhbDsKICAgICAgICB1bnNpZ25lZCBkcm9wcGVkOwogICAgICAgIHVuc2lnbmVkIHRpbWVfc3F1
ZWV6ZTsKICAgICAgICB1bnNpZ25lZCB0aHJvdHRsZWQ7CiAgICAgICAgdW5zaWduZWQgZmFzdHJv
dXRlX2hpdDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfc3VjY2VzczsKICAgICAgICB1bnNp
Z25lZCBmYXN0cm91dGVfZGVmZXI7CiAgICAgICAgdW5zaWduZWQgZmFzdHJvdXRlX2RlZmVycmVk
X291dDsKICAgICAgICB1bnNpZ25lZCBmYXN0cm91dGVfbGF0ZW5jeV9yZWR1Y3Rpb247CiAgICAg
ICAgdW5zaWduZWQgY3B1X2NvbGxpc2lvbjsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18o
KDEgPDwgKCg2KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCBuZXRpZl9yeF9zdGF0cyBuZXRkZXZfcnhf
c3RhdFtdOwoKCgoKCgpzdHJ1Y3QgZGV2X21jX2xpc3QKewogICAgICAgIHN0cnVjdCBkZXZfbWNf
bGlzdCAqbmV4dDsKICAgICAgICBfX3U4IGRtaV9hZGRyWzhdOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgZG1pX2FkZHJsZW47CiAgICAgICAgaW50IGRtaV91c2VyczsKICAgICAgICBpbnQgZG1pX2d1
c2VyczsKfTsKCnN0cnVjdCBoaF9jYWNoZQp7CiAgICAgICAgc3RydWN0IGhoX2NhY2hlICpoaF9u
ZXh0OwogICAgICAgIGF0b21pY190IGhoX3JlZmNudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBo
aF90eXBlOwogICAgICAgIGludCBoaF9sZW47CiAgICAgICAgaW50ICgqaGhfb3V0cHV0KShzdHJ1
Y3Qgc2tfYnVmZiAqc2tiKTsKICAgICAgICByd2xvY2tfdCBoaF9sb2NrOwoKICAgICAgICB1bnNp
Z25lZCBsb25nIGhoX2RhdGFbMTYvc2l6ZW9mKHVuc2lnbmVkIGxvbmcpXTsKfTsKCgoKCgoKZW51
bSBuZXRkZXZfc3RhdGVfdAp7CiAgICAgICAgX19MSU5LX1NUQVRFX1hPRkY9MCwKICAgICAgICBf
X0xJTktfU1RBVEVfU1RBUlQsCiAgICAgICAgX19MSU5LX1NUQVRFX1BSRVNFTlQsCiAgICAgICAg
X19MSU5LX1NUQVRFX1NDSEVELAogICAgICAgIF9fTElOS19TVEFURV9OT0NBUlJJRVIKfTsKCgoK
CgoKc3RydWN0IG5ldGRldl9ib290X3NldHVwIHsKICAgICAgICBjaGFyIG5hbWVbMTZdOwogICAg
ICAgIHN0cnVjdCBpZm1hcCBtYXA7Cn07CiMgMjMwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9uZXRkZXZpY2UuaCIKc3RydWN0IG5ldF9kZXZpY2UKewoKCgoKCgogICAgICAg
IGNoYXIgbmFtZVsxNl07CgoKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIHJtZW1fZW5kOwogICAg
ICAgIHVuc2lnbmVkIGxvbmcgcm1lbV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIG1lbV9l
bmQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9u
ZyBiYXNlX2FkZHI7CiAgICAgICAgdW5zaWduZWQgaW50IGlycTsKCgoKCgoKICAgICAgICB1bnNp
Z25lZCBjaGFyIGlmX3BvcnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBkbWE7CgogICAgICAgIHVu
c2lnbmVkIGxvbmcgc3RhdGU7CgogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZXh0OwoKCiAg
ICAgICAgaW50ICgqaW5pdCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgoKCiAgICAgICAgc3Ry
dWN0IG5ldF9kZXZpY2UgKm5leHRfc2NoZWQ7CgoKICAgICAgICBpbnQgaWZpbmRleDsKICAgICAg
ICBpbnQgaWZsaW5rOwoKCiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMqICgqZ2V0X3N0
YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAgICBzdHJ1Y3QgaXdfc3RhdGlzdGlj
cyogKCpnZXRfd2lyZWxlc3Nfc3RhdHMpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwojIDI4NSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCiAgICAgICAg
dW5zaWduZWQgbG9uZyB0cmFuc19zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGxhc3Rfcng7
CgogICAgICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdm
bGFnczsKICAgICAgICB1bnNpZ25lZCBtdHU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZTsK
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBoYXJkX2hlYWRlcl9sZW47CiAgICAgICAgdm9pZCAqcHJp
djsKCiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm1hc3RlcjsKCgoKCiAgICAgICAgdW5zaWdu
ZWQgY2hhciBicm9hZGNhc3RbOF07CiAgICAgICAgdW5zaWduZWQgY2hhciBkZXZfYWRkcls4XTsK
ICAgICAgICB1bnNpZ25lZCBjaGFyIGFkZHJfbGVuOwoKICAgICAgICBzdHJ1Y3QgZGV2X21jX2xp
c3QgKm1jX2xpc3Q7CiAgICAgICAgaW50IG1jX2NvdW50OwogICAgICAgIGludCBwcm9taXNjdWl0
eTsKICAgICAgICBpbnQgYWxsbXVsdGk7CgogICAgICAgIGludCB3YXRjaGRvZ190aW1lbzsKICAg
ICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB3YXRjaGRvZ190aW1lcjsKCgoKICAgICAgICB2b2lkICph
dGFsa19wdHI7CiAgICAgICAgdm9pZCAqaXBfcHRyOwogICAgICAgIHZvaWQgKmRuX3B0cjsKICAg
ICAgICB2b2lkICppcDZfcHRyOwogICAgICAgIHZvaWQgKmVjX3B0cjsKCiAgICAgICAgc3RydWN0
IFFkaXNjICpxZGlzYzsKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNjX3NsZWVwaW5nOwogICAg
ICAgIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGlzdDsKICAgICAgICBzdHJ1Y3QgUWRpc2MgKnFkaXNj
X2luZ3Jlc3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0eF9xdWV1ZV9sZW47CgoKICAgICAgICBz
cGlubG9ja190IHhtaXRfbG9jazsKCgoKICAgICAgICBpbnQgeG1pdF9sb2NrX293bmVyOwoKICAg
ICAgICBzcGlubG9ja190IHF1ZXVlX2xvY2s7CgogICAgICAgIGF0b21pY190IHJlZmNudDsKCiAg
ICAgICAgaW50IGRlYWRiZWFmOwoKCiAgICAgICAgaW50IGZlYXR1cmVzOwojIDM1MCAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgiCiAgICAgICAgdm9pZCAo
KnVuaW5pdCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CgogICAgICAgIHZvaWQgKCpkZXN0cnVj
dG9yKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCgogICAgICAgIGludCAoKm9wZW4pKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwogICAgICAgIGludCAoKnN0b3ApKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwogICAgICAgIGludCAoKmhhcmRfc3RhcnRfeG1pdCkgKHN0cnVjdCBza19idWZmICpz
a2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKICAgICAgICBpbnQgKCpoYXJkX2hlYWRlcikgKHN0cnVj
dCBza19idWZmICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhZGRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzYWRkciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVuKTsK
ICAgICAgICBpbnQgKCpyZWJ1aWxkX2hlYWRlcikoc3RydWN0IHNrX2J1ZmYgKnNrYik7CgogICAg
ICAgIHZvaWQgKCpzZXRfbXVsdGljYXN0X2xpc3QpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoK
ICAgICAgICBpbnQgKCpzZXRfbWFjX2FkZHJlc3MpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFk
ZHIpOwoKICAgICAgICBpbnQgKCpkb19pb2N0bCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZyZXEgKmlm
ciwgaW50IGNtZCk7CgogICAgICAgIGludCAoKnNldF9jb25maWcpKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgaWZtYXAgKm1hcCk7CgogICAgICAgIGludCAoKmhhcmRfaGVhZGVyX2NhY2hlKShzdHJ1Y3Qg
bmVpZ2hib3VyICpuZWlnaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgaGhfY2FjaGUgKmhoKTsKICAgICAgICB2b2lkICgqaGVhZGVy
X2NhY2hlX3VwZGF0ZSkoc3RydWN0IGhoX2NhY2hlICpoaCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjaGFyICogaGFkZHIpOwoKICAgICAgICBpbnQgKCpjaGFuZ2VfbXR1KShzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSk7CgoKICAgICAgICB2b2lkICgqdHhfdGltZW91
dCkgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKICAgICAgICBpbnQgKCpoYXJkX2hlYWRlcl9w
YXJzZSkoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7CiAgICAgICAgaW50
ICgqbmVpZ2hfc2V0dXApKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZWlnaF9wYXJt
cyAqKTsKICAgICAgICBpbnQgKCphY2NlcHRfZmFzdHBhdGgpKHN0cnVjdCBuZXRfZGV2aWNlICos
IHN0cnVjdCBkc3RfZW50cnkqKTsKCgogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwoKCiAg
ICAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqYnJfcG9ydDsKIyA0MTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIgp9OwoKCnN0cnVjdCBwYWNrZXRf
dHlwZQp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZTsKICAgICAgICBzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2OwogICAgICAgIGludCAoKmZ1bmMpIChzdHJ1Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3Qg
bmV0X2RldmljZSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBwYWNrZXRfdHlwZSAqKTsKICAgICAgICB2b2lkICpkYXRhOwogICAgICAgIHN0cnVjdCBw
YWNrZXRfdHlwZSAqbmV4dDsKfTsKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2ludGVycnVwdC5oIiAxCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L2NvbmZpZy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUv
bGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9rZXJuZWwuaCIgMQojIDcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2ludGVycnVwdC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
c21wLmgiIDEKIyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbnRlcnJ1
cHQuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2NhY2hlLmgi
IDEKIyA5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIg
MgoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyAx
MSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAx
ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyAxMiAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAxMyAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKCnN0cnVjdCBpcnFhY3Rp
b24gewogICAgICAgIHZvaWQgKCpoYW5kbGVyKShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3Mg
Kik7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1h
c2s7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICpkZXZfaWQ7CiAgICAg
ICAgc3RydWN0IGlycWFjdGlvbiAqbmV4dDsKfTsKCgoKCgplbnVtIHsKICAgICAgICBUSU1FUl9C
SCA9IDAsCiAgICAgICAgVFFVRVVFX0JILAogICAgICAgIERJR0lfQkgsCiAgICAgICAgU0VSSUFM
X0JILAogICAgICAgIFJJU0NPTThfQkgsCiAgICAgICAgU1BFQ0lBTElYX0JILAogICAgICAgIEFV
Uk9SQV9CSCwKICAgICAgICBFU1BfQkgsCiAgICAgICAgU0NTSV9CSCwKICAgICAgICBJTU1FRElB
VEVfQkgsCiAgICAgICAgQ1lDTEFERVNfQkgsCiAgICAgICAgQ00yMDZfQkgsCiAgICAgICAgSlNf
QkgsCiAgICAgICAgTUFDU0VSSUFMX0JILAogICAgICAgIElTSUNPTV9CSAp9OwoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAxCgoKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaGFyZGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvdGhyZWFkcy5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L2lycS5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRl
L2xpbnV4L2lycS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2Nv
bmZpZy5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2lycS5o
IiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY2FjaGUuaCIg
MQojIDE3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDEg
Ii91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKIyAxOCAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXJxLmgiIDIKCiMgMSAiL3Vzci9z
cmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgMTMgIi91c3Ivc3JjL2xpbnV4
LTIuNC4xMS9pbmNsdWRlL2FzbS9pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9saW51eC9jb25maWcuaCIgMQojIDE0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9hc20vaXJxLmgiIDIKIyAyOCAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2ly
cS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgaXJxX2Nhbm5vbmljYWxpemUoaW50IGlycSkKewog
ICAgICAgIHJldHVybiAoKGlycSA9PSAyKSA/IDkgOiBpcnEpOwp9CgpleHRlcm4gdm9pZCBkaXNh
YmxlX2lycSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBkaXNhYmxlX2lycV9ub3N5bmModW5z
aWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZW5hYmxlX2lycSh1bnNpZ25lZCBpbnQpOwojIDIwICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDEgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMQojIDIxICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pcnEuaCIgMgojIDM5ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9pcnEuaCIKc3RydWN0IGh3X2ludGVycnVwdF90eXBlIHsKICAgICAg
ICBjb25zdCBjaGFyICogdHlwZW5hbWU7CiAgICAgICAgdW5zaWduZWQgaW50ICgqc3RhcnR1cCko
dW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKnNodXRkb3duKSh1bnNpZ25lZCBpbnQg
aXJxKTsKICAgICAgICB2b2lkICgqZW5hYmxlKSh1bnNpZ25lZCBpbnQgaXJxKTsKICAgICAgICB2
b2lkICgqZGlzYWJsZSkodW5zaWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmFjaykodW5z
aWduZWQgaW50IGlycSk7CiAgICAgICAgdm9pZCAoKmVuZCkodW5zaWduZWQgaW50IGlycSk7CiAg
ICAgICAgdm9pZCAoKnNldF9hZmZpbml0eSkodW5zaWduZWQgaW50IGlycSwgdW5zaWduZWQgbG9u
ZyBtYXNrKTsKfTsKCnR5cGVkZWYgc3RydWN0IGh3X2ludGVycnVwdF90eXBlIGh3X2lycV9jb250
cm9sbGVyOwojIDU5ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pcnEuaCIK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGludCBzdGF0dXM7CiAgICAgICAgaHdf
aXJxX2NvbnRyb2xsZXIgKmhhbmRsZXI7CiAgICAgICAgc3RydWN0IGlycWFjdGlvbiAqYWN0aW9u
OwogICAgICAgIHVuc2lnbmVkIGludCBkZXB0aDsKICAgICAgICBzcGlubG9ja190IGxvY2s7Cn0g
X19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKCg2KSkpKSkpIGlycV9kZXNjX3Q7Cgpl
eHRlcm4gaXJxX2Rlc2NfdCBpcnFfZGVzYyBbMjI0XTsKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40
LjExL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2FzbS9od19pcnEuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9jb25maWcuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20v
aHdfaXJxLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWlj
LmgiIDEKIyAxNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2h3X2lycS5oIiAy
CiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2lycS5oIiAxCiMgMTggIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9od19pcnEuaCIgMgojIDYxICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaHdfaXJxLmgiCmV4dGVybiBpbnQgaXJxX3ZlY3Rv
clsyMjRdOwojIDcxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vaHdfaXJxLmgi
CmV4dGVybiB2b2lkIG1hc2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCB1bm1h
c2tfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9pZCBkaXNhYmxlXzgyNTlBX2lycSh1
bnNpZ25lZCBpbnQgaXJxKTsKZXh0ZXJuIHZvaWQgZW5hYmxlXzgyNTlBX2lycSh1bnNpZ25lZCBp
bnQgaXJxKTsKZXh0ZXJuIGludCBpODI1OUFfaXJxX3BlbmRpbmcodW5zaWduZWQgaW50IGlycSk7
CmV4dGVybiB2b2lkIG1ha2VfODI1OUFfaXJxKHVuc2lnbmVkIGludCBpcnEpOwpleHRlcm4gdm9p
ZCBpbml0XzgyNTlBKGludCBhZW9pKTsKZXh0ZXJuIHZvaWQgc2VuZF9JUElfc2VsZihpbnQgdmVj
dG9yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGluaXRfVklTV1Nf
QVBJQ19pcnFzKHZvaWQpOwpleHRlcm4gdm9pZCBzZXR1cF9JT19BUElDKHZvaWQpOwpleHRlcm4g
dm9pZCBkaXNhYmxlX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIHByaW50X0lPX0FQSUModm9p
ZCk7CmV4dGVybiBpbnQgSU9fQVBJQ19nZXRfUENJX2lycV92ZWN0b3IoaW50IGJ1cywgaW50IHNs
b3QsIGludCBmbik7CmV4dGVybiB2b2lkIHNlbmRfSVBJKGludCBkZXN0LCBpbnQgdmVjdG9yKTsK
CmV4dGVybiB1bnNpZ25lZCBsb25nIGlvX2FwaWNfaXJxczsKCmV4dGVybiBhdG9taWNfdCBpcnFf
ZXJyX2NvdW50OwpleHRlcm4gYXRvbWljX3QgaXJxX21pc19jb3VudDsKCmV4dGVybiBjaGFyIF9z
dGV4dCwgX2V0ZXh0OwojIDE4MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2h3
X2lycS5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9mX2NwdV9tYXNrOwpleHRlcm4gdW5zaWdu
ZWQgaW50ICogcHJvZl9idWZmZXI7CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2ZfbGVuOwpleHRl
cm4gdW5zaWduZWQgbG9uZyBwcm9mX3NoaWZ0OwoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB4ODZf
ZG9fcHJvZmlsZSAodW5zaWduZWQgbG9uZyBlaXApCnsKICAgICAgICBpZiAoIXByb2ZfYnVmZmVy
KQogICAgICAgICAgICAgICAgcmV0dXJuOwoKCgoKCiAgICAgICAgaWYgKCEoKDE8PDApICYgcHJv
Zl9jcHVfbWFzaykpCiAgICAgICAgICAgICAgICByZXR1cm47CgogICAgICAgIGVpcCAtPSAodW5z
aWduZWQgbG9uZykgJl9zdGV4dDsKICAgICAgICBlaXAgPj49IHByb2Zfc2hpZnQ7CgoKCgoKICAg
ICAgICBpZiAoZWlwID4gcHJvZl9sZW4tMSkKICAgICAgICAgICAgICAgIGVpcCA9IHByb2ZfbGVu
LTE7CiAgICAgICAgYXRvbWljX2luYygoYXRvbWljX3QgKikmcHJvZl9idWZmZXJbZWlwXSk7Cn0K
CgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBod19yZXNlbmRfaXJxKHN0cnVjdCBod19pbnRlcnJ1
cHRfdHlwZSAqaCwgdW5zaWduZWQgaW50IGkpIHt9CiMgNzAgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2xpbnV4L2lycS5oIiAyCgpleHRlcm4gaW50IGhhbmRsZV9JUlFfZXZlbnQodW5z
aWduZWQgaW50LCBzdHJ1Y3QgcHRfcmVncyAqLCBzdHJ1Y3QgaXJxYWN0aW9uICopOwpleHRlcm4g
aW50IHNldHVwX2lycSh1bnNpZ25lZCBpbnQgLCBzdHJ1Y3QgaXJxYWN0aW9uICogKTsKCmV4dGVy
biBod19pcnFfY29udHJvbGxlciBub19pcnFfdHlwZTsKZXh0ZXJuIHZvaWQgbm9fYWN0aW9uKGlu
dCBjcGwsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDcgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiIDIKCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgaW50IF9fc29mdGlycV9wZW5kaW5nOwogICAgICAgIHVuc2lnbmVk
IGludCBfX2xvY2FsX2lycV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19sb2NhbF9iaF9j
b3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19zeXNjYWxsX2NvdW50OwogICAgICAgIHN0cnVj
dCB0YXNrX3N0cnVjdCAqIF9fa3NvZnRpcnFkX3Rhc2s7CiAgICAgICAgdW5zaWduZWQgaW50IF9f
bm1pX2NvdW50Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgoNikpKSkpKSBp
cnFfY3B1c3RhdF90OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9p
cnFfY3B1c3RhdC5oIiAxCiMgMTIgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L2lycV9jcHVzdGF0LmgiCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
Y29uZmlnLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaXJx
X2NwdXN0YXQuaCIgMgoKCgoKCgoKZXh0ZXJuIGlycV9jcHVzdGF0X3QgaXJxX3N0YXRbXTsKIyAx
OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMgojIDQ2ICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDEKCgoKIyAxICIvdXNy
L3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vYXRvbWljLmgiIDEKIyA1ICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9hc20vc29mdGlycS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIgMQojIDYgIi91c3Ivc3JjL2xpbnV4LTIuNC4x
MS9pbmNsdWRlL2FzbS9zb2Z0aXJxLmgiIDIKIyA0NyAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvaW50ZXJydXB0LmgiIDIKIyA1NiAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmVudW0KewogICAgICAgIEhJX1NPRlRJUlE9MCwKICAg
ICAgICBORVRfVFhfU09GVElSUSwKICAgICAgICBORVRfUlhfU09GVElSUSwKICAgICAgICBUQVNL
TEVUX1NPRlRJUlEKfTsKCgoKCgpzdHJ1Y3Qgc29mdGlycV9hY3Rpb24KewogICAgICAgIHZvaWQg
KCphY3Rpb24pKHN0cnVjdCBzb2Z0aXJxX2FjdGlvbiAqKTsKICAgICAgICB2b2lkICpkYXRhOwp9
OwoKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIGRvX3NvZnRpcnEodm9pZCk7CmV4
dGVybiB2b2lkIG9wZW5fc29mdGlycShpbnQgbnIsIHZvaWQgKCphY3Rpb24pKHN0cnVjdCBzb2Z0
aXJxX2FjdGlvbiopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgc29mdGlycV9pbml0KHZvaWQp
OwoKZXh0ZXJuIHZvaWQgY3B1X3JhaXNlX3NvZnRpcnEodW5zaWduZWQgaW50IGNwdSwgdW5zaWdu
ZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHJhaXNl
X3NvZnRpcnEodW5zaWduZWQgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CiMg
MTAzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKc3Ry
dWN0IHRhc2tsZXRfc3RydWN0CnsKICAgICAgICBzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKm5leHQ7
CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg
ICAgICB2b2lkICgqZnVuYykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk
YXRhOwp9OwojIDExOSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaW50ZXJy
dXB0LmgiCmVudW0KewogICAgICAgIFRBU0tMRVRfU1RBVEVfU0NIRUQsCiAgICAgICAgVEFTS0xF
VF9TVEFURV9SVU4KfTsKCnN0cnVjdCB0YXNrbGV0X2hlYWQKewogICAgICAgIHN0cnVjdCB0YXNr
bGV0X3N0cnVjdCAqbGlzdDsKfSBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18oKDEgPDwgKCg2
KSkpKSkpOwoKZXh0ZXJuIHN0cnVjdCB0YXNrbGV0X2hlYWQgdGFza2xldF92ZWNbMV07CmV4dGVy
biBzdHJ1Y3QgdGFza2xldF9oZWFkIHRhc2tsZXRfaGlfdmVjWzFdOwojIDE1NSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgiCmV4dGVybiB2b2lkIF9fdGFz
a2xldF9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpIF9fYXR0cmlidXRlX18oKHJl
Z3Bhcm0oMykpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X3NjaGVkdWxlKHN0cnVjdCB0
YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChUQVNLTEVU
X1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQogICAgICAgICAgICAgICAgX190YXNrbGV0X3NjaGVk
dWxlKHQpOwp9CgpleHRlcm4gdm9pZCBfX3Rhc2tsZXRfaGlfc2NoZWR1bGUoc3RydWN0IHRhc2ts
ZXRfc3RydWN0ICp0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CgpzdGF0aWMgaW5saW5l
IHZvaWQgdGFza2xldF9oaV9zY2hlZHVsZShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpCnsKICAg
ICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwgJnQtPnN0YXRl
KSkKICAgICAgICAgICAgICAgIF9fdGFza2xldF9oaV9zY2hlZHVsZSh0KTsKfQoKCnN0YXRpYyBp
bmxpbmUgdm9pZCB0YXNrbGV0X2Rpc2FibGVfbm9zeW5jKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAq
dCkKewogICAgICAgIGF0b21pY19pbmMoJnQtPmNvdW50KTsKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xldF9k
aXNhYmxlKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCkKewogICAgICAgIHRhc2tsZXRfZGlzYWJs
ZV9ub3N5bmModCk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBfX2FzbV9fIF9f
dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza2xl
dF9lbmFibGUoc3RydWN0IHRhc2tsZXRfc3RydWN0ICp0KQp7CiAgICAgICAgX19hc21fXyBfX3Zv
bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZ0LT5jb3VudCk7
Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrbGV0X2hpX2VuYWJsZShzdHJ1Y3QgdGFza2xldF9z
dHJ1Y3QgKnQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp
OwogICAgICAgIGF0b21pY19kZWMoJnQtPmNvdW50KTsKfQoKZXh0ZXJuIHZvaWQgdGFza2xldF9r
aWxsKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdCk7CmV4dGVybiB2b2lkIHRhc2tsZXRfaW5pdChz
dHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQsCiAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgq
ZnVuYykodW5zaWduZWQgbG9uZyksIHVuc2lnbmVkIGxvbmcgZGF0YSk7CiMgMjIyICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCIKZXh0ZXJuIHN0cnVjdCB0
YXNrbGV0X3N0cnVjdCBiaF90YXNrX3ZlY1tdOwoKCmV4dGVybiBzcGlubG9ja190IGdsb2JhbF9i
aF9sb2NrOwoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYmgoaW50IG5yKQp7CiAgICAgICAgdGFz
a2xldF9oaV9zY2hlZHVsZShiaF90YXNrX3ZlYytucik7Cn0KCmV4dGVybiB2b2lkIGluaXRfYmgo
aW50IG5yLCB2b2lkICgqcm91dGluZSkodm9pZCkpOwpleHRlcm4gdm9pZCByZW1vdmVfYmgoaW50
IG5yKTsKIyAyNjMgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2ludGVycnVw
dC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBwcm9iZV9pcnFfb24odm9pZCk7CmV4dGVybiBpbnQg
cHJvYmVfaXJxX29mZih1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBwcm9iZV9p
cnFfbWFzayh1bnNpZ25lZCBsb25nKTsKIyA0MjUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L25ldGRldmljZS5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvbGludXgvbm90aWZpZXIuaCIgMQojIDEyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVk
ZS9saW51eC9ub3RpZmllci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L2Vycm5vLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgv
bm90aWZpZXIuaCIgMgoKc3RydWN0IG5vdGlmaWVyX2Jsb2NrCnsKICAgICAgICBpbnQgKCpub3Rp
Zmllcl9jYWxsKShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcsIHZv
aWQgKik7CiAgICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuZXh0OwogICAgICAgIGludCBw
cmlvcml0eTsKfTsKCgoKCmV4dGVybiBpbnQgbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0
IG5vdGlmaWVyX2Jsb2NrICoqbGlzdCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuKTsKZXh0ZXJu
IGludCBub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKm5s
LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm4pOwpleHRlcm4gaW50IG5vdGlmaWVyX2NhbGxfY2hh
aW4oc3RydWN0IG5vdGlmaWVyX2Jsb2NrICoqbiwgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYp
OwojIDQyNiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgi
IDIKCmV4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSBsb29wYmFja19kZXY7CmV4dGVybiBzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2X2Jhc2U7CmV4dGVybiByd2xvY2tfdCBkZXZfYmFzZV9sb2NrOwoKZXh0
ZXJuIGludCBuZXRkZXZfYm9vdF9zZXR1cF9hZGQoY2hhciAqbmFtZSwgc3RydWN0IGlmbWFwICpt
YXApOwpleHRlcm4gaW50IG5ldGRldl9ib290X3NldHVwX2NoZWNrKHN0cnVjdCBuZXRfZGV2aWNl
ICpkZXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRieWh3YWRkcih1bnNpZ25l
ZCBzaG9ydCB0eXBlLCBjaGFyICpod2FkZHIpOwpleHRlcm4gdm9pZCBkZXZfYWRkX3BhY2soc3Ry
dWN0IHBhY2tldF90eXBlICpwdCk7CmV4dGVybiB2b2lkIGRldl9yZW1vdmVfcGFjayhzdHJ1Y3Qg
cGFja2V0X3R5cGUgKnB0KTsKZXh0ZXJuIGludCBkZXZfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpOwpl
eHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmRldl9nZXRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1l
KTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpfX2Rldl9nZXRfYnlfbmFtZShjb25zdCBjaGFy
ICpuYW1lKTsKZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfYWxsb2MoY29uc3QgY2hhciAq
bmFtZSwgaW50ICplcnIpOwpleHRlcm4gaW50IGRldl9hbGxvY19uYW1lKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldl9vcGVuKHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKZXh0ZXJuIGludCBkZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0
ZXJuIGludCByZWdpc3Rlcl9uZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVy
biBpbnQgdW5yZWdpc3Rlcl9uZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVy
biBpbnQgcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAq
bmIpOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKHN0cnVjdCBub3Rp
Zmllcl9ibG9jayAqbmIpOwpleHRlcm4gaW50IGRldl9uZXdfaW5kZXgodm9pZCk7CmV4dGVybiBz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9pbmRleChpbnQgaWZpbmRleCk7CmV4dGVybiBz
dHJ1Y3QgbmV0X2RldmljZSAqX19kZXZfZ2V0X2J5X2luZGV4KGludCBpZmluZGV4KTsKZXh0ZXJu
IGludCBkZXZfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCnR5cGVkZWYgaW50IGdp
ZmNvbmZfZnVuY190KHN0cnVjdCBuZXRfZGV2aWNlICogZGV2LCBjaGFyICogYnVmcHRyLCBpbnQg
bGVuKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9naWZjb25mKHVuc2lnbmVkIGludCBmYW1pbHksIGdp
ZmNvbmZfZnVuY190ICogZ2lmY29uZik7CnN0YXRpYyBpbmxpbmUgaW50IHVucmVnaXN0ZXJfZ2lm
Y29uZih1bnNpZ25lZCBpbnQgZmFtaWx5KQp7CiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyX2dpZmNv
bmYoZmFtaWx5LCAwKTsKfQoKCgoKCgpzdHJ1Y3Qgc29mdG5ldF9kYXRhCnsKICAgICAgICBpbnQg
dGhyb3R0bGU7CiAgICAgICAgaW50IGNuZ19sZXZlbDsKICAgICAgICBpbnQgYXZnX2Jsb2c7CiAg
ICAgICAgc3RydWN0IHNrX2J1ZmZfaGVhZCBpbnB1dF9wa3RfcXVldWU7CiAgICAgICAgc3RydWN0
IG5ldF9kZXZpY2UgKm91dHB1dF9xdWV1ZTsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqY29tcGxl
dGlvbl9xdWV1ZTsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoKDYpKSkpKSk7
CgoKZXh0ZXJuIHN0cnVjdCBzb2Z0bmV0X2RhdGEgc29mdG5ldF9kYXRhWzFdOwoKCgpzdGF0aWMg
aW5saW5lIHZvaWQgX19uZXRpZl9zY2hlZHVsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAg
ICAgICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KF9fTElOS19TVEFURV9TQ0hFRCwgJmRldi0+c3Rh
dGUpKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAg
ICAgaW50IGNwdSA9IDA7CgogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1
c2hmbCA7IHBvcGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsKICAgICAgICAg
ICAgICAgIGRldi0+bmV4dF9zY2hlZCA9IHNvZnRuZXRfZGF0YVtjcHVdLm91dHB1dF9xdWV1ZTsK
ICAgICAgICAgICAgICAgIHNvZnRuZXRfZGF0YVtjcHVdLm91dHB1dF9xdWV1ZSA9IGRldjsKICAg
ICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGNwdSwgTkVUX1RYX1NPRlRJUlEpOwogICAg
ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6Imci
IChmbGFncyk6Im1lbW9yeSIsICJjYyIpOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lk
IG5ldGlmX3NjaGVkdWxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAoIShf
X2J1aWx0aW5fY29uc3RhbnRfcChfX0xJTktfU1RBVEVfWE9GRikgPyBjb25zdGFudF90ZXN0X2Jp
dCgoX19MSU5LX1NUQVRFX1hPRkYpLCgmZGV2LT5zdGF0ZSkpIDogdmFyaWFibGVfdGVzdF9iaXQo
KF9fTElOS19TVEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSkpCiAgICAgICAgICAgICAgICBfX25l
dGlmX3NjaGVkdWxlKGRldik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zdGFydF9xdWV1
ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgY2xlYXJfYml0KF9fTElOS19TVEFU
RV9YT0ZGLCAmZGV2LT5zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl93YWtlX3F1
ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJf
Yml0KF9fTElOS19TVEFURV9YT0ZGLCAmZGV2LT5zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX25l
dGlmX3NjaGVkdWxlKGRldik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9zdG9wX3F1ZXVl
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzZXRfYml0KF9fTElOS19TVEFURV9Y
T0ZGLCAmZGV2LT5zdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IG5ldGlmX3F1ZXVlX3N0b3Bw
ZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHJldHVybiAoX19idWlsdGluX2Nv
bnN0YW50X3AoX19MSU5LX1NUQVRFX1hPRkYpID8gY29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19T
VEFURV9YT0ZGKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RB
VEVfWE9GRiksKCZkZXYtPnN0YXRlKSkpOwp9CgpzdGF0aWMgaW5saW5lIGludCBuZXRpZl9ydW5u
aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICByZXR1cm4gKF9fYnVpbHRpbl9j
b25zdGFudF9wKF9fTElOS19TVEFURV9TVEFSVCkgPyBjb25zdGFudF90ZXN0X2JpdCgoX19MSU5L
X1NUQVRFX1NUQVJUKSwoJmRldi0+c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktf
U1RBVEVfU1RBUlQpLCgmZGV2LT5zdGF0ZSkpKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRl
dl9rZnJlZV9za2JfaXJxKHN0cnVjdCBza19idWZmICpza2IpCnsKICAgICAgICBpZiAoYXRvbWlj
X2RlY19hbmRfdGVzdCgmc2tiLT51c2VycykpIHsKICAgICAgICAgICAgICAgIGludCBjcHUgPTA7
CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgIF9f
YXNtX18gX192b2xhdGlsZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6
IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICBza2ItPm5leHQgPSBzb2Z0bmV0X2RhdGFbY3B1
XS5jb21wbGV0aW9uX3F1ZXVlOwogICAgICAgICAgICAgICAgc29mdG5ldF9kYXRhW2NwdV0uY29t
cGxldGlvbl9xdWV1ZSA9IHNrYjsKICAgICAgICAgICAgICAgIGNwdV9yYWlzZV9zb2Z0aXJxKGNw
dSwgTkVUX1RYX1NPRlRJUlEpOwogICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o
InB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOwogICAgICAg
IH0KfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIGRldl9rZnJlZV9za2JfYW55KHN0cnVjdCBza19i
dWZmICpza2IpCnsKICAgICAgICBpZiAoKCgodm9pZCkoKDApKSwgaXJxX3N0YXRbMF0uX19sb2Nh
bF9pcnFfY291bnQpICE9IDApKQogICAgICAgICAgICAgICAgZGV2X2tmcmVlX3NrYl9pcnEoc2ti
KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBrZnJlZV9za2Ioc2tiKTsKfQoKZXh0ZXJu
IHZvaWQgbmV0X2NhbGxfcnhfYXRvbWljKHZvaWQgKCpmbikodm9pZCkpOwoKZXh0ZXJuIGludCBu
ZXRpZl9yeChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKZXh0ZXJuIGludCBkZXZfaW9jdGwodW5zaWdu
ZWQgaW50IGNtZCwgdm9pZCAqKTsKZXh0ZXJuIGludCBkZXZfY2hhbmdlX2ZsYWdzKHN0cnVjdCBu
ZXRfZGV2aWNlICosIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgZGV2X3F1ZXVlX3htaXRfbml0KHN0
cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwoKZXh0ZXJuIHZvaWQg
ZGV2X2luaXQodm9pZCk7CgpleHRlcm4gaW50IG5ldGRldl9uaXQ7CgoKCgpzdGF0aWMgaW5saW5l
IGludCBuZXRpZl9yeF9uaShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQp7CiAgICAgICBpbnQgZXJyID0g
bmV0aWZfcngoc2tiKTsKICAgICAgIGlmICgoKHZvaWQpKCgwKSksIGlycV9zdGF0WzBdLl9fc29m
dGlycV9wZW5kaW5nKSkKICAgICAgICAgICAgICAgZG9fc29mdGlycSgpOwogICAgICAgcmV0dXJu
IGVycjsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRldl9pbml0X2J1ZmZlcnMoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldikKewoKfQoKZXh0ZXJuIGludCBuZXRkZXZfZmluaXNoX3VucmVnaXN0ZXIoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldik7CgpzdGF0aWMgaW5saW5lIHZvaWQgZGV2X3B1dChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmRldi0+
cmVmY250KSkKICAgICAgICAgICAgICAgIG5ldGRldl9maW5pc2hfdW5yZWdpc3RlcihkZXYpOwp9
CiMgNTk3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCIK
c3RhdGljIGlubGluZSBpbnQgbmV0aWZfY2Fycmllcl9vayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KQp7CiAgICAgICAgcmV0dXJuICEoX19idWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX05P
Q0FSUklFUikgPyBjb25zdGFudF90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX05PQ0FSUklFUiksKCZk
ZXYtPnN0YXRlKSkgOiB2YXJpYWJsZV90ZXN0X2JpdCgoX19MSU5LX1NUQVRFX05PQ0FSUklFUiks
KCZkZXYtPnN0YXRlKSkpOwp9CgpleHRlcm4gdm9pZCBfX25ldGRldl93YXRjaGRvZ191cChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBuZXRpZl9jYXJyaWVyX29u
KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBjbGVhcl9iaXQoX19MSU5LX1NUQVRF
X05PQ0FSUklFUiwgJmRldi0+c3RhdGUpOwogICAgICAgIGlmIChuZXRpZl9ydW5uaW5nKGRldikp
CiAgICAgICAgICAgICAgICBfX25ldGRldl93YXRjaGRvZ191cChkZXYpOwp9CgpzdGF0aWMgaW5s
aW5lIHZvaWQgbmV0aWZfY2Fycmllcl9vZmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAg
ICAgIHNldF9iaXQoX19MSU5LX1NUQVRFX05PQ0FSUklFUiwgJmRldi0+c3RhdGUpOwp9CgoKc3Rh
dGljIGlubGluZSBpbnQgbmV0aWZfZGV2aWNlX3ByZXNlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRl
dikKewogICAgICAgIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoX19MSU5LX1NUQVRFX1BS
RVNFTlQpID8gY29uc3RhbnRfdGVzdF9iaXQoKF9fTElOS19TVEFURV9QUkVTRU5UKSwoJmRldi0+
c3RhdGUpKSA6IHZhcmlhYmxlX3Rlc3RfYml0KChfX0xJTktfU1RBVEVfUFJFU0VOVCksKCZkZXYt
PnN0YXRlKSkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbmV0aWZfZGV2aWNlX2RldGFjaChzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChfX0xJ
TktfU1RBVEVfUFJFU0VOVCwgJmRldi0+c3RhdGUpICYmCiAgICAgICAgICAgIG5ldGlmX3J1bm5p
bmcoZGV2KSkgewogICAgICAgICAgICAgICAgbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwogICAgICAg
IH0KfQoKc3RhdGljIGlubGluZSB2b2lkIG5ldGlmX2RldmljZV9hdHRhY2goc3RydWN0IG5ldF9k
ZXZpY2UgKmRldikKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdChfX0xJTktfU1RBVEVf
UFJFU0VOVCwgJmRldi0+c3RhdGUpICYmCiAgICAgICAgICAgIG5ldGlmX3J1bm5pbmcoZGV2KSkg
ewogICAgICAgICAgICAgICAgbmV0aWZfd2FrZV9xdWV1ZShkZXYpOwogICAgICAgICAgICAgICAg
X19uZXRkZXZfd2F0Y2hkb2dfdXAoZGV2KTsKICAgICAgICB9Cn0KCgoKZXh0ZXJuIHZvaWQgZXRo
ZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGZkZGlfc2V0dXAo
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIHRyX3NldHVwKHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBmY19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKZXh0ZXJuIHZvaWQgZmNfZnJlZWRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVy
biBpbnQgcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpleHRlcm4gdm9p
ZCB1bnJlZ2lzdGVyX25ldGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVybiB2b2lk
IGRldl9tY191cGxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmV4dGVybiBpbnQgZGV2X21j
X2RlbGV0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICphZGRyLCBpbnQgYWxlbiwgaW50
IGFsbCk7CmV4dGVybiBpbnQgZGV2X21jX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lk
ICphZGRyLCBpbnQgYWxlbiwgaW50IG5ld29ubHkpOwpleHRlcm4gdm9pZCBkZXZfbWNfZGlzY2Fy
ZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZGV2X3NldF9wcm9taXNjdWl0
eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJuIHZvaWQgZGV2X3NldF9h
bGxtdWx0aShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKZXh0ZXJuIHZvaWQgbmV0
ZGV2X3N0YXRlX2NoYW5nZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKCmV4dGVybiB2b2lkIGRl
dl9sb2FkKGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCBkZXZfbWNhc3RfaW5pdCh2b2lk
KTsKZXh0ZXJuIGludCBuZXRkZXZfcmVnaXN0ZXJfZmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg
dm9pZCAoKnN0aW11bCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldikpOwpleHRlcm4gdm9pZCBuZXRk
ZXZfdW5yZWdpc3Rlcl9mYyhpbnQgYml0KTsKZXh0ZXJuIGludCBuZXRkZXZfbWF4X2JhY2tsb2c7
CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldGRldl9mY194b2ZmOwpleHRlcm4gYXRvbWljX3QgbmV0
ZGV2X2Ryb3BwaW5nOwpleHRlcm4gaW50IG5ldGRldl9zZXRfbWFzdGVyKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICptYXN0ZXIpOwpleHRlcm4gc3RydWN0IHNrX2J1
ZmYgKiBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKIyAxNTIgIjgxMzl0
b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2
aWNlLmgiIDEKIyAyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXRoZXJk
ZXZpY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9pZl9ldGhl
ci5oIiAxCiMgMjggIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2V0aGVyZGV2
aWNlLmgiIDIKCgpleHRlcm4gaW50IGV0aF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBzaG9ydCB0eXBlLCB2b2lkICpkYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2b2lkICpzYWRkciwgdW5zaWduZWQgbGVuKTsKZXh0ZXJuIGludCBldGhfcmVi
dWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBl
dGhfdHlwZV90cmFucyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKZXh0ZXJuIHZvaWQgZXRoX2hlYWRlcl9jYWNoZV91cGRhdGUoc3RydWN0IGhoX2NhY2hlICpo
aCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGhhZGRyKTsKZXh0ZXJuIGludCBldGhf
aGVhZGVyX2NhY2hlKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoaF9jYWNoZSAqaGgpOwpleHRlcm4gaW50IGV0
aF9oZWFkZXJfcGFyc2Uoc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpoYWRkcik7CmV4dGVybiBzdHJ1Y3Qg
bmV0X2RldmljZSAqaW5pdF9ldGhlcmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc2l6
ZW9mX3ByaXYpOwpleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UgKmFsbG9jX2V0aGVyZGV2KGludCBz
aXplb2ZfcHJpdik7CgpzdGF0aWMgaW5saW5lIHZvaWQgZXRoX2NvcHlfYW5kX3N1bSAoc3RydWN0
IHNrX2J1ZmYgKmRlc3QsIHVuc2lnbmVkIGNoYXIgKnNyYywgaW50IGxlbiwgaW50IGJhc2UpCnsK
ICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AobGVuKSA/IF9fY29uc3RhbnRfbWVtY3B5M2Qo
KGRlc3QtPmRhdGEpLChzcmMpLChsZW4pKSA6IF9fbWVtY3B5M2QoKGRlc3QtPmRhdGEpLChzcmMp
LChsZW4pKSk7Cn0KIyA1OSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXRo
ZXJkZXZpY2UuaCIKc3RhdGljIGlubGluZSBpbnQgaXNfdmFsaWRfZXRoZXJfYWRkciggdTggKmFk
ZHIgKQp7CiAgICAgICAgY29uc3QgY2hhciB6YWRkcls2XSA9IHswLH07CgogICAgICAgIHJldHVy
biAhKGFkZHJbMF0mMSkgJiYgX19idWlsdGluX21lbWNtcCggYWRkciwgemFkZHIsIDYpOwp9CiMg
MTUzICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9ydG5ldGxpbmsuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L25ldGxpbmsuaCIgMQojIDE2ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51
eC9uZXRsaW5rLmgiCnN0cnVjdCBzb2NrYWRkcl9ubAp7CiAgICAgICAgc2FfZmFtaWx5X3Qgbmxf
ZmFtaWx5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5sX3BhZDsKICAgICAgICBfX3UzMiBubF9w
aWQ7CiAgICAgICAgX191MzIgbmxfZ3JvdXBzOwp9OwoKc3RydWN0IG5sbXNnaGRyCnsKICAgICAg
ICBfX3UzMiBubG1zZ19sZW47CiAgICAgICAgX191MTYgbmxtc2dfdHlwZTsKICAgICAgICBfX3Ux
NiBubG1zZ19mbGFnczsKICAgICAgICBfX3UzMiBubG1zZ19zZXE7CiAgICAgICAgX191MzIgbmxt
c2dfcGlkOwp9OwojIDc3ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXRs
aW5rLmgiCnN0cnVjdCBubG1zZ2Vycgp7CiAgICAgICAgaW50IGVycm9yOwogICAgICAgIHN0cnVj
dCBubG1zZ2hkciBtc2c7Cn07CgoKCgoKc3RydWN0IG5ldGxpbmtfc2tiX3Bhcm1zCnsKICAgICAg
ICBzdHJ1Y3QgdWNyZWQgY3JlZHM7CiAgICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIGdy
b3VwczsKICAgICAgICBfX3UzMiBkc3RfcGlkOwogICAgICAgIF9fdTMyIGRzdF9ncm91cHM7CiAg
ICAgICAga2VybmVsX2NhcF90IGVmZl9jYXA7Cn07CgoKCgoKZXh0ZXJuIGludCBuZXRsaW5rX2F0
dGFjaChpbnQgdW5pdCwgaW50ICgqZnVuY3Rpb24pKGludCxzdHJ1Y3Qgc2tfYnVmZiAqc2tiKSk7
CmV4dGVybiB2b2lkIG5ldGxpbmtfZGV0YWNoKGludCB1bml0KTsKZXh0ZXJuIGludCBuZXRsaW5r
X3Bvc3QoaW50IHVuaXQsIHN0cnVjdCBza19idWZmICpza2IpOwpleHRlcm4gaW50IGluaXRfbmV0
bGluayh2b2lkKTsKZXh0ZXJuIHN0cnVjdCBzb2NrICpuZXRsaW5rX2tlcm5lbF9jcmVhdGUoaW50
IHVuaXQsIHZvaWQgKCppbnB1dCkoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGVuKSk7CmV4dGVybiB2
b2lkIG5ldGxpbmtfYWNrKHN0cnVjdCBza19idWZmICppbl9za2IsIHN0cnVjdCBubG1zZ2hkciAq
bmxoLCBpbnQgZXJyKTsKZXh0ZXJuIGludCBuZXRsaW5rX3VuaWNhc3Qoc3RydWN0IHNvY2sgKnNz
aywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX191MzIgcGlkLCBpbnQgbm9uYmxvY2spOwpleHRlcm4g
dm9pZCBuZXRsaW5rX2Jyb2FkY2FzdChzdHJ1Y3Qgc29jayAqc3NrLCBzdHJ1Y3Qgc2tfYnVmZiAq
c2tiLCBfX3UzMiBwaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGdyb3Vw
LCBpbnQgYWxsb2NhdGlvbik7CmV4dGVybiB2b2lkIG5ldGxpbmtfc2V0X2VycihzdHJ1Y3Qgc29j
ayAqc3NrLCBfX3UzMiBwaWQsIF9fdTMyIGdyb3VwLCBpbnQgY29kZSk7CiMgMTIwICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9uZXRsaW5rLmgiCnN0cnVjdCBuZXRsaW5rX2Nh
bGxiYWNrCnsKICAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogICAgICAgIHN0cnVjdCBubG1z
Z2hkciAqbmxoOwogICAgICAgIGludCAoKmR1bXApKHN0cnVjdCBza19idWZmICogc2tiLCBzdHJ1
Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpOwogICAgICAgIGludCAoKmRvbmUpKHN0cnVjdCBuZXRs
aW5rX2NhbGxiYWNrICpjYik7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBsb25nIGFyZ3Nb
NF07Cn07CgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3Qgbmxtc2doZHIgKgpfX25sbXNnX3B1dChz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcGlkLCB1MzIgc2VxLCBpbnQgdHlwZSwgaW50IGxlbikK
ewogICAgICAgIHN0cnVjdCBubG1zZ2hkciAqbmxoOwogICAgICAgIGludCBzaXplID0gKChsZW4p
KyggKChzaXplb2Yoc3RydWN0IG5sbXNnaGRyKSkrNCAtMSkgJiB+KDQgLTEpICkpOwoKICAgICAg
ICBubGggPSAoc3RydWN0IG5sbXNnaGRyKilza2JfcHV0KHNrYiwgKCAoKHNpemUpKzQgLTEpICYg
fig0IC0xKSApKTsKICAgICAgICBubGgtPm5sbXNnX3R5cGUgPSB0eXBlOwogICAgICAgIG5saC0+
bmxtc2dfbGVuID0gc2l6ZTsKICAgICAgICBubGgtPm5sbXNnX2ZsYWdzID0gMDsKICAgICAgICBu
bGgtPm5sbXNnX3BpZCA9IHBpZDsKICAgICAgICBubGgtPm5sbXNnX3NlcSA9IHNlcTsKICAgICAg
ICByZXR1cm4gbmxoOwp9CgoKCgoKZXh0ZXJuIGludCBuZXRsaW5rX2R1bXBfc3RhcnQoc3RydWN0
IHNvY2sgKnNzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IG5sbXNnaGRyICpubGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAoKmR1bXApKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNr
KiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmRvbmUpKHN0cnVjdCBuZXRs
aW5rX2NhbGxiYWNrKikpOwojIDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3J0bmV0bGluay5oIiAyCiMgNTcgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4
L3J0bmV0bGluay5oIgpzdHJ1Y3QgcnRhdHRyCnsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBydGFf
bGVuOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHJ0YV90eXBlOwp9OwojIDgzICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0bXNnCnsKICAg
ICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1f
ZHN0X2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJ0bV9zcmNfbGVuOwogICAgICAgIHVuc2ln
bmVkIGNoYXIgcnRtX3RvczsKCiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fdGFibGU7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBydG1fcHJvdG9jb2w7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1f
c2NvcGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBydG1fdHlwZTsKCiAgICAgICAgdW5zaWduZWQg
cnRtX2ZsYWdzOwp9OwoKCgplbnVtCnsKICAgICAgICBSVE5fVU5TUEVDLAogICAgICAgIFJUTl9V
TklDQVNULAogICAgICAgIFJUTl9MT0NBTCwKICAgICAgICBSVE5fQlJPQURDQVNULAoKICAgICAg
ICBSVE5fQU5ZQ0FTVCwKCiAgICAgICAgUlROX01VTFRJQ0FTVCwKICAgICAgICBSVE5fQkxBQ0tI
T0xFLAogICAgICAgIFJUTl9VTlJFQUNIQUJMRSwKICAgICAgICBSVE5fUFJPSElCSVQsCiAgICAg
ICAgUlROX1RIUk9XLAogICAgICAgIFJUTl9OQVQsCiAgICAgICAgUlROX1hSRVNPTFZFLAp9Owoj
IDE1NSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCmVu
dW0gcnRfc2NvcGVfdAp7CiAgICAgICAgUlRfU0NPUEVfVU5JVkVSU0U9MCwKCiAgICAgICAgUlRf
U0NPUEVfU0lURT0yMDAsCiAgICAgICAgUlRfU0NPUEVfTElOSz0yNTMsCiAgICAgICAgUlRfU0NP
UEVfSE9TVD0yNTQsCiAgICAgICAgUlRfU0NPUEVfTk9XSEVSRT0yNTUKfTsKIyAxNzMgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgplbnVtIHJ0X2NsYXNz
X3QKewogICAgICAgIFJUX1RBQkxFX1VOU1BFQz0wLAoKICAgICAgICBSVF9UQUJMRV9ERUZBVUxU
PTI1MywKICAgICAgICBSVF9UQUJMRV9NQUlOPTI1NCwKICAgICAgICBSVF9UQUJMRV9MT0NBTD0y
NTUKfTsKCgoKCgoKZW51bSBydGF0dHJfdHlwZV90CnsKICAgICAgICBSVEFfVU5TUEVDLAogICAg
ICAgIFJUQV9EU1QsCiAgICAgICAgUlRBX1NSQywKICAgICAgICBSVEFfSUlGLAogICAgICAgIFJU
QV9PSUYsCiAgICAgICAgUlRBX0dBVEVXQVksCiAgICAgICAgUlRBX1BSSU9SSVRZLAogICAgICAg
IFJUQV9QUkVGU1JDLAogICAgICAgIFJUQV9NRVRSSUNTLAogICAgICAgIFJUQV9NVUxUSVBBVEgs
CiAgICAgICAgUlRBX1BST1RPSU5GTywKICAgICAgICBSVEFfRkxPVywKICAgICAgICBSVEFfQ0FD
SEVJTkZPCn07CiMgMjE4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ydG5l
dGxpbmsuaCIKc3RydWN0IHJ0bmV4dGhvcAp7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcnRuaF9s
ZW47CiAgICAgICAgdW5zaWduZWQgY2hhciBydG5oX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNo
YXIgcnRuaF9ob3BzOwogICAgICAgIGludCBydG5oX2lmaW5kZXg7Cn07CiMgMjQ1ICIvdXNyL3Ny
Yy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IHJ0YV9jYWNo
ZWluZm8KewogICAgICAgIF9fdTMyIHJ0YV9jbG50cmVmOwogICAgICAgIF9fdTMyIHJ0YV9sYXN0
dXNlOwogICAgICAgIF9fczMyIHJ0YV9leHBpcmVzOwogICAgICAgIF9fdTMyIHJ0YV9lcnJvcjsK
ICAgICAgICBfX3UzMiBydGFfdXNlZDsKCgogICAgICAgIF9fdTMyIHJ0YV9pZDsKICAgICAgICBf
X3UzMiBydGFfdHM7CiAgICAgICAgX191MzIgcnRhX3RzYWdlOwp9OwoKCgplbnVtCnsKICAgICAg
ICBSVEFYX1VOU1BFQywKCiAgICAgICAgUlRBWF9MT0NLLAoKICAgICAgICBSVEFYX01UVSwKCiAg
ICAgICAgUlRBWF9XSU5ET1csCgogICAgICAgIFJUQVhfUlRULAoKICAgICAgICBSVEFYX1JUVFZB
UiwKCiAgICAgICAgUlRBWF9TU1RIUkVTSCwKCiAgICAgICAgUlRBWF9DV05ELAoKICAgICAgICBS
VEFYX0FEVk1TUywKCiAgICAgICAgUlRBWF9SRU9SREVSSU5HLAoKfTsKIyAyOTMgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgaWZhZGRybXNn
CnsKICAgICAgICB1bnNpZ25lZCBjaGFyIGlmYV9mYW1pbHk7CiAgICAgICAgdW5zaWduZWQgY2hh
ciBpZmFfcHJlZml4bGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZhX2ZsYWdzOwogICAgICAg
IHVuc2lnbmVkIGNoYXIgaWZhX3Njb3BlOwogICAgICAgIGludCBpZmFfaW5kZXg7Cn07CgplbnVt
CnsKICAgICAgICBJRkFfVU5TUEVDLAogICAgICAgIElGQV9BRERSRVNTLAogICAgICAgIElGQV9M
T0NBTCwKICAgICAgICBJRkFfTEFCRUwsCiAgICAgICAgSUZBX0JST0FEQ0FTVCwKICAgICAgICBJ
RkFfQU5ZQ0FTVCwKICAgICAgICBJRkFfQ0FDSEVJTkZPCn07CiMgMzIzICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IGlmYV9jYWNoZWluZm8K
ewogICAgICAgIF9fczMyIGlmYV9wcmVmZXJlZDsKICAgICAgICBfX3MzMiBpZmFfdmFsaWQ7Cn07
CiMgMzQ1ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIK
c3RydWN0IG5kbXNnCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG5kbV9mYW1pbHk7CiAgICAgICAg
dW5zaWduZWQgY2hhciBuZG1fcGFkMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBuZG1fcGFkMjsK
ICAgICAgICBpbnQgbmRtX2lmaW5kZXg7CiAgICAgICAgX191MTYgbmRtX3N0YXRlOwogICAgICAg
IF9fdTggbmRtX2ZsYWdzOwogICAgICAgIF9fdTggbmRtX3R5cGU7Cn07CgplbnVtCnsKICAgICAg
ICBOREFfVU5TUEVDLAogICAgICAgIE5EQV9EU1QsCiAgICAgICAgTkRBX0xMQUREUiwKICAgICAg
ICBOREFfQ0FDSEVJTkZPCn07CiMgMzkzICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9s
aW51eC9ydG5ldGxpbmsuaCIKc3RydWN0IG5kYV9jYWNoZWluZm8KewogICAgICAgIF9fdTMyIG5k
bV9jb25maXJtZWQ7CiAgICAgICAgX191MzIgbmRtX3VzZWQ7CiAgICAgICAgX191MzIgbmRtX3Vw
ZGF0ZWQ7CiAgICAgICAgX191MzIgbmRtX3JlZmNudDsKfTsKCgoKCgpzdHJ1Y3QgcnRnZW5tc2cK
ewogICAgICAgIHVuc2lnbmVkIGNoYXIgcnRnZW5fZmFtaWx5Owp9OwojIDQxOSAiL3Vzci9zcmMv
bGludXgtMi40LjExL2luY2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiCnN0cnVjdCBpZmluZm9tc2cK
ewogICAgICAgIHVuc2lnbmVkIGNoYXIgaWZpX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFy
IF9faWZpX3BhZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpZmlfdHlwZTsKICAgICAgICBpbnQg
aWZpX2luZGV4OwogICAgICAgIHVuc2lnbmVkIGlmaV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBp
ZmlfY2hhbmdlOwp9OwoKZW51bQp7CiAgICAgICAgSUZMQV9VTlNQRUMsCiAgICAgICAgSUZMQV9B
RERSRVNTLAogICAgICAgIElGTEFfQlJPQURDQVNULAogICAgICAgIElGTEFfSUZOQU1FLAogICAg
ICAgIElGTEFfTVRVLAogICAgICAgIElGTEFfTElOSywKICAgICAgICBJRkxBX1FESVNDLAogICAg
ICAgIElGTEFfU1RBVFMsCiAgICAgICAgSUZMQV9DT1NULAoKICAgICAgICBJRkxBX1BSSU9SSVRZ
LAoKICAgICAgICBJRkxBX01BU1RFUgoKfTsKIyA0ODYgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpzdHJ1Y3QgdGNtc2cKewogICAgICAgIHVuc2lnbmVk
IGNoYXIgdGNtX2ZhbWlseTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRjbV9fcGFkMTsKICAgICAg
ICB1bnNpZ25lZCBzaG9ydCB0Y21fX3BhZDI7CiAgICAgICAgaW50IHRjbV9pZmluZGV4OwogICAg
ICAgIF9fdTMyIHRjbV9oYW5kbGU7CiAgICAgICAgX191MzIgdGNtX3BhcmVudDsKICAgICAgICBf
X3UzMiB0Y21faW5mbzsKfTsKCmVudW0KewogICAgICAgIFRDQV9VTlNQRUMsCiAgICAgICAgVENB
X0tJTkQsCiAgICAgICAgVENBX09QVElPTlMsCiAgICAgICAgVENBX1NUQVRTLAogICAgICAgIFRD
QV9YU1RBVFMsCiAgICAgICAgVENBX1JBVEUsCn07CiMgNTM5ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9jb25maWcuaCIgMQojIDU0MCAiL3Vzci9zcmMvbGludXgtMi40LjExL2lu
Y2x1ZGUvbGludXgvcnRuZXRsaW5rLmgiIDIKCnN0YXRpYyBfX2lubGluZV9fIGludCBydGF0dHJf
c3RyY21wKHN0cnVjdCBydGF0dHIgKnJ0YSwgY2hhciAqc3RyKQp7CiAgICAgICAgaW50IGxlbiA9
IHN0cmxlbihzdHIpICsgMTsKICAgICAgICByZXR1cm4gbGVuID4gcnRhLT5ydGFfbGVuIHx8IF9f
YnVpbHRpbl9tZW1jbXAoKCh2b2lkKikoKChjaGFyKikocnRhKSkgKyAoKCAoKHNpemVvZihzdHJ1
Y3QgcnRhdHRyKSkrNCAtMSkgJiB+KDQgLTEpICkgKyAoMCkpKSksIHN0ciwgbGVuKTsKfQoKZXh0
ZXJuIGludCBydGF0dHJfcGFyc2Uoc3RydWN0IHJ0YXR0ciAqdGJbXSwgaW50IG1heGF0dHIsIHN0
cnVjdCBydGF0dHIgKnJ0YSwgaW50IGxlbik7CgoKZXh0ZXJuIHN0cnVjdCBzb2NrICpydG5sOwoK
c3RydWN0IHJ0bmV0bGlua19saW5rCnsKICAgICAgICBpbnQgKCpkb2l0KShzdHJ1Y3Qgc2tfYnVm
ZiAqLCBzdHJ1Y3Qgbmxtc2doZHIqLCB2b2lkICphdHRyKTsKICAgICAgICBpbnQgKCpkdW1waXQp
KHN0cnVjdCBza19idWZmICosIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYik7Cn07CgpleHRl
cm4gc3RydWN0IHJ0bmV0bGlua19saW5rICogcnRuZXRsaW5rX2xpbmtzWzMyXTsKZXh0ZXJuIGlu
dCBydG5ldGxpbmtfZHVtcF9pZmluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxp
bmtfY2FsbGJhY2sgKmNiKTsKZXh0ZXJuIGludCBydG5ldGxpbmtfc2VuZChzdHJ1Y3Qgc2tfYnVm
ZiAqc2tiLCB1MzIgcGlkLCB1MzIgZ3JvdXAsIGludCBlY2hvKTsKZXh0ZXJuIGludCBydG5ldGxp
bmtfcHV0X21ldHJpY3Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgKm1ldHJpY3MpOwoK
ZXh0ZXJuIHZvaWQgX19ydGFfZmlsbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgYXR0cnR5cGUs
IGludCBhdHRybGVuLCBjb25zdCB2b2lkICpkYXRhKTsKCgoKCgpleHRlcm4gdm9pZCBydG1zZ19p
ZmluZm8oaW50IHR5cGUsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGNoYW5nZSk7
CgoKCgoKCgpleHRlcm4gc3RydWN0IHNlbWFwaG9yZSBydG5sX3NlbTsKIyA1OTUgIi91c3Ivc3Jj
L2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3J0bmV0bGluay5oIgpleHRlcm4gdm9pZCBydG5s
X2xvY2sodm9pZCk7CmV4dGVybiB2b2lkIHJ0bmxfdW5sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBy
dG5ldGxpbmtfaW5pdCh2b2lkKTsKIyAxNTQgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L2RlbGF5LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgt
Mi40LjExL2luY2x1ZGUvbGludXgvZGVsYXkuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9vcHNf
cGVyX2ppZmZ5OwoKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vZGVsYXku
aCIgMQojIDEwICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vZGVsYXkuaCIKZXh0
ZXJuIHZvaWQgX19iYWRfdWRlbGF5KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX191ZGVsYXkodW5zaWdu
ZWQgbG9uZyB1c2Vjcyk7CmV4dGVybiB2b2lkIF9fY29uc3RfdWRlbGF5KHVuc2lnbmVkIGxvbmcg
dXNlY3MpOwpleHRlcm4gdm9pZCBfX2RlbGF5KHVuc2lnbmVkIGxvbmcgbG9vcHMpOwojIDEzICIv
dXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9kZWxheS5oIiAyCiMgMTU1ICI4MTM5
dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9ldGh0b29s
LmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvZXRodG9vbC5o
IgpzdHJ1Y3QgZXRodG9vbF9jbWQgewogICAgICAgIHUzMiBjbWQ7CiAgICAgICAgdTMyIHN1cHBv
cnRlZDsKICAgICAgICB1MzIgYWR2ZXJ0aXNpbmc7CiAgICAgICAgdTE2IHNwZWVkOwogICAgICAg
IHU4IGR1cGxleDsKICAgICAgICB1OCBwb3J0OwogICAgICAgIHU4IHBoeV9hZGRyZXNzOwogICAg
ICAgIHU4IHRyYW5zY2VpdmVyOwogICAgICAgIHU4IGF1dG9uZWc7CiAgICAgICAgdTMyIG1heHR4
cGt0OwogICAgICAgIHUzMiBtYXhyeHBrdDsKICAgICAgICB1MzIgcmVzZXJ2ZWRbNF07Cn07CgoK
c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyB7CiAgICAgICAgdTMyIGNtZDsKICAgICAgICBjaGFyIGRy
aXZlclszMl07CiAgICAgICAgY2hhciB2ZXJzaW9uWzMyXTsKICAgICAgICBjaGFyIGZ3X3ZlcnNp
b25bMzJdOwogICAgICAgIGNoYXIgYnVzX2luZm9bMzJdOwoKICAgICAgICBjaGFyIHJlc2VydmVk
MVszMl07CiAgICAgICAgY2hhciByZXNlcnZlZDJbMjhdOwogICAgICAgIHUzMiByZWdkdW1wX2xl
bjsKfTsKCgoKc3RydWN0IGV0aHRvb2xfd29saW5mbyB7CiAgICAgICAgdTMyIGNtZDsKICAgICAg
ICB1MzIgc3VwcG9ydGVkOwogICAgICAgIHUzMiB3b2xvcHRzOwogICAgICAgIHU4IHNvcGFzc1s2
XTsKfTsKIyAxNTYgIjgxMzl0b28uYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNs
dWRlL2xpbnV4L21paS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xp
bnV4L21paS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L3R5cGVz
LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvbWlpLmgiIDIK
IyAxMDUgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21paS5oIgpzdHJ1Y3Qg
bWlpX2lvY3RsX2RhdGEgewogICAgICAgIHUxNiBwaHlfaWQ7CiAgICAgICAgdTE2IHJlZ19udW07
CiAgICAgICAgdTE2IHZhbF9pbjsKICAgICAgICB1MTYgdmFsX291dDsKfTsKIyAxMjcgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2xpbnV4L21paS5oIgpzdGF0aWMgaW5saW5lIHVuc2ln
bmVkIGludCBtaWlfbndheV9yZXN1bHQgKHVuc2lnbmVkIGludCBuZWdvdGlhdGVkKQp7CiAgICAg
ICAgdW5zaWduZWQgaW50IHJldDsKCiAgICAgICAgaWYgKG5lZ290aWF0ZWQgJiAweDAxMDApCiAg
ICAgICAgICAgICAgICByZXQgPSAweDAxMDA7CiAgICAgICAgZWxzZSBpZiAobmVnb3RpYXRlZCAm
IDB4MDIwMCkKICAgICAgICAgICAgICAgIHJldCA9IDB4MDIwMDsKICAgICAgICBlbHNlIGlmIChu
ZWdvdGlhdGVkICYgMHgwMDgwKQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMDgwOwogICAgICAg
IGVsc2UgaWYgKG5lZ290aWF0ZWQgJiAweDAwNDApCiAgICAgICAgICAgICAgICByZXQgPSAweDAw
NDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gMHgwMDIwOwoKICAgICAgICBy
ZXR1cm4gcmV0Owp9CiMgMTU0ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9t
aWkuaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgbWlpX2R1cGxleCAodW5zaWduZWQgaW50
IGR1cGxleF9sb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgbmVnb3RpYXRlZCkKewogICAgICAgIGlmIChkdXBsZXhfbG9jaykKICAgICAgICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIGlmIChtaWlfbndheV9yZXN1bHQobmVnb3RpYXRlZCkg
JiAoMHgwMDQwIHwgMHgwMTAwKSkKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIHJl
dHVybiAwOwp9CiMgMTU3ICI4MTM5dG9vLmMiIDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEv
aW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDEKIyAxNTggIjgxMzl0b28uYyIgMgojIDEgIi91
c3Ivc3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS9pby5oIiAxCiMgMTU5ICI4MTM5dG9vLmMi
IDIKIyAxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAxCgoK
CgoKCiMgMSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvY29uZmlnLmgiIDEK
IyA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIiAyCiMgMSAi
L3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQojIDkgIi91c3Iv
c3JjL2xpbnV4LTIuNC4xMS9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9s
aW51eC0yLjQuMTEvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAxCiMgMTAgIi91c3Ivc3JjL2xp
bnV4LTIuNC4xMS9pbmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC0y
LjQuMTEvaW5jbHVkZS9hc20vcGFnZS5oIiAxCiMgMTEgIi91c3Ivc3JjL2xpbnV4LTIuNC4xMS9p
bmNsdWRlL2FzbS91YWNjZXNzLmgiIDIKIyAzNSAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1
ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGludCBfX3ZlcmlmeV93cml0ZShjb25zdCB2b2lkICos
IHVuc2lnbmVkIGxvbmcpOwojIDYyICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20v
dWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfYXJlYShpbnQgdHlwZSwgY29uc3Qg
dm9pZCAqIGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogICAgICAgIHJldHVybiAoKHsgdW5z
aWduZWQgbG9uZyBmbGFnLHN1bTsgYXNtKCJhZGRsICUzLCUxIDsgc2JibCAlMCwlMDsgY21wbCAl
MSwlNDsgc2JibCAkMCwlMCIgOiI9JnIiIChmbGFnKSwgIj1yIiAoc3VtKSA6IjEiIChhZGRyKSwi
ZyIgKChpbnQpKHNpemUpKSwiZyIgKGdldF9jdXJyZW50KCktPmFkZHJfbGltaXQuc2VnKSk7IGZs
YWc7IH0pID09IDApID8gMCA6IC0xNDsKfQojIDgxICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5j
bHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5CnsKICAgICAg
ICB1bnNpZ25lZCBsb25nIGluc24sIGZpeHVwOwp9OwoKCmV4dGVybiB1bnNpZ25lZCBsb25nIHNl
YXJjaF9leGNlcHRpb25fdGFibGUodW5zaWduZWQgbG9uZyk7CiMgMTA1ICIvdXNyL3NyYy9saW51
eC0yLjQuMTEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpleHRlcm4gdm9pZCBfX2dldF91c2VyXzEo
dm9pZCk7CmV4dGVybiB2b2lkIF9fZ2V0X3VzZXJfMih2b2lkKTsKZXh0ZXJuIHZvaWQgX19nZXRf
dXNlcl80KHZvaWQpOwojIDEyNyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3Vh
Y2Nlc3MuaCIKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl8xKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B1
dF91c2VyXzIodm9pZCk7CmV4dGVybiB2b2lkIF9fcHV0X3VzZXJfNCh2b2lkKTsKZXh0ZXJuIHZv
aWQgX19wdXRfdXNlcl84KHZvaWQpOwoKZXh0ZXJuIHZvaWQgX19wdXRfdXNlcl9iYWQodm9pZCk7
CiMgMTg4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpzdHJ1
Y3QgX19sYXJnZV9zdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIGJ1ZlsxMDBdOyB9OwojIDIyMCAiL3Vz
ci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIKZXh0ZXJuIGxvbmcgX19n
ZXRfdXNlcl9iYWQodm9pZCk7CiMgMzA4ICIvdXNyL3NyYy9saW51eC0yLjQuMTEvaW5jbHVkZS9h
c20vdWFjY2Vzcy5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKX19nZW5lcmljX2NvcHlf
ZnJvbV91c2VyX25vY2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxv
bmcgbikKewogICAgICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIgIjI6
XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxuIiAi
NDoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIgly
ZXA7IHN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglqbXAgMmJcbiIgIi5w
cmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJ
LmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9JmMiKG4pLCAi
PSZEIiAoX19kMCksICI9JlMiIChfX2QxKSA6ICJyIihuICYgMyksICIwIihuIC8gNCksICIxIih0
byksICIyIihmcm9tKSA6ICJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIG47
Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2dlbmVyaWNfY29weV90b191c2VyX25v
Y2hlY2sodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAg
ICAgIGRvIHsgaW50IF9fZDAsIF9fZDE7IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBt
b3ZzbFxuIiAiCW1vdmwgJTMsJTBcbiIgIjE6CXJlcDsgbW92c2JcbiIgIjI6XG4iICIuc2VjdGlv
biAuZml4dXAsXCJheFwiXG4iICIzOglsZWEgMCglMywlMCw0KSwlMFxuIiAiCWptcCAyYlxuIiAi
LnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIg
IgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDJiXG4iICIucHJldmlvdXMiIDogIj0mYyIobiks
ICI9JkQiIChfX2QwKSwgIj0mUyIgKF9fZDEpIDogInIiKG4gJiAzKSwgIjAiKG4gLyA0KSwgIjEi
KHRvKSwgIjIiKGZyb20pIDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4g
bjsKfQojIDU0MyAiL3Vzci9zcmMvbGludXgtMi40LjExL2luY2x1ZGUvYXNtL3VhY2Nlc3MuaCIK
dW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV90b191c2VyKHZvaWQgKiwgY29uc3Qgdm9pZCAq
LCB1bnNpZ25lZCBsb25nKTsKdW5zaWduZWQgbG9uZyBfX2dlbmVyaWNfY29weV9mcm9tX3VzZXIo
dm9pZCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBsb25nCl9fY29uc3RhbnRfY29weV90b191c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpm
cm9tLCB1bnNpZ25lZCBsb25nIG4pCnsKICAgICAgICBwcmVmZXRjaChmcm9tKTsKICAgICAgICBp
ZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAlMywlMSA7IHNiYmwgJTAs
JTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyksICI9ciIgKHN1bSkgOiIx
IiAodG8pLCJnIiAoKGludCkobikpLCJnIiAoZ2V0X2N1cnJlbnQoKS0+YWRkcl9saW1pdC5zZWcp
KTsgZmxhZzsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgICBkbyB7IGludCBfX2QwLCBfX2QxOyBz
d2l0Y2ggKG4gJiAzKSB7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBt
b3ZzbFxuIiAiMTpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjI6CXNobCAkMiwlMFxu
IiAiCWptcCAxYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9
JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6
ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7
IG1vdnNsXG4iICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIg
IjM6CXNobCAkMiwlMFxuIiAiNDoJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4i
ICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwz
YlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDAp
LCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIp
OyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIg
IjE6CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQy
LCUwXG4iICI0OglhZGRsICQyLCUwXG4iICIJam1wIDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0
aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJ
LmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQi
IChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFr
OyBjYXNlIDM6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92
c3dcbiIgIjI6CW1vdnNiXG4iICIzOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIiAiNDoJ
c2hsICQyLCUwXG4iICI1OglhZGRsICQyLCUwXG4iICI2OglpbmNsICUwXG4iICIJam1wIDNiXG4i
ICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxu
IiAiCS5sb25nIDBiLDRiXG4iICIJLmxvbmcgMWIsNWJcbiIgIgkubG9uZyAyYiw2YlxuIiAiLnBy
ZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20p
LCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAg
ICAgICAgcmV0dXJuIG47Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwpfX2NvbnN0YW50
X2NvcHlfZnJvbV91c2VyKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25n
IG4pCnsKICAgICAgICBpZiAoKCh7IHVuc2lnbmVkIGxvbmcgZmxhZyxzdW07IGFzbSgiYWRkbCAl
MywlMSA7IHNiYmwgJTAsJTA7IGNtcGwgJTEsJTQ7IHNiYmwgJDAsJTAiIDoiPSZyIiAoZmxhZyks
ICI9ciIgKHN1bSkgOiIxIiAoZnJvbSksImciICgoaW50KShuKSksImciIChnZXRfY3VycmVudCgp
LT5hZGRyX2xpbWl0LnNlZykpOyBmbGFnOyB9KSA9PSAwKSkKICAgICAgICAgICAgICAgIGRvIHsg
aW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0
aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxu
IiAiMjoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIg
IglyZXA7IHN0b3NsXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBc
biIgIglqbXAgMWJcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxu
IiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsMmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAi
PSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkg
OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAiMDoJcmVw
OyBtb3ZzbFxuIiAiMToJbW92c2JcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i
ICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi
CXJlcDsgc3Rvc2xcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3BsICUwXG4iICIJ
c2hsICQyLCUwXG4iICIJaW5jbCAlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVzaGwgJSVlYXhcbiIg
Igl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAl
MFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwi
XG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25nIDFiLDRiXG4iICIucHJl
dmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSks
ICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAyOiBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4iICIyOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJcHVzaGwgJTBcbiIgIglwdXNobCAlJWVheFxuIiAiCXhv
cmwgJSVlYXgsJSVlYXhcbiIgIglyZXA7IHN0b3NsXG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4
XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWFkZGwgJDIsJTBcbiIgIglqbXAgMmJc
biIgIjQ6CXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJ
cG9wbCAlJWVheFxuIiAiCWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIgIi5wcmV2aW91c1xuIiAi
LnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsM2Jc
biIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2QwKSwg
Ij0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnkiKTsg
YnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIx
Ogltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4i
ICI0OglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAi
CXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBv
cGwgJTBcbiIgIglzaGwgJDIsJTBcbiIgIglhZGRsICQzLCUwXG4iICIJam1wIDJiXG4iICI1Oglw
dXNobCAlJWVheFxuIiAiCXhvcmwgJSVlYXgsJSVlYXhcbiIgIglzdG9zd1xuIiAiCXN0b3NiXG4i
ICIJcG9wbCAlJWVheFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjY6CXB1c2hsICUl
ZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAi
CWluY2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJs
ZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAxYiw1Ylxu
IiAiCS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAi
PSZEIiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBi
cmVhazsgfSB9IHdoaWxlICgwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoX19idWls
dGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKG4pKSA/IF9fY29uc3Rh
bnRfY19hbmRfY291bnRfbWVtc2V0KCgodG8pKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hh
cikoMCkpKSwoKG4pKSkgOiBfX2NvbnN0YW50X2NfbWVtc2V0KCgodG8pKSwoKDB4MDEwMTAxMDFV
TCoodW5zaWduZWQgY2hhcikoMCkpKSwoKG4pKSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wKChu
KSkgPyBfX21lbXNldF9nZW5lcmljKCgoKHRvKSkpLCgoKDApKSksKCgobikpKSkgOiBfX21lbXNl
dF9nZW5lcmljKCgodG8pKSwoKDApKSwoKG4pKSkpKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3Rh
dGljIGlubGluZSB1bnNpZ25lZCBsb25nCl9fY29uc3RhbnRfY29weV90b191c2VyX25vY2hlY2so
dm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKewogICAgICAgIGRv
IHsgaW50IF9fZDAsIF9fZDE7IHN3aXRjaCAobiAmIDMpIHsgZGVmYXVsdDogX19hc21fXyBfX3Zv
bGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4iICIxOlxuIiAiLnNlY3Rpb24gLmZpeHVwLFwiYXhc
IlxuIiAiMjoJc2hsICQyLCUwXG4iICIJam1wIDFiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9u
IF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxpZ24gNFxuIiAiCS5sb25nIDBiLDJiXG4iICIucHJl
dmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19kMSkgOiAiMSIoZnJvbSks
ICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSAxOiBfX2FzbV9fIF9f
dm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnNiXG4iICIyOlxuIiAiLnNlY3Rp
b24gLmZpeHVwLFwiYXhcIlxuIiAiMzoJc2hsICQyLCUwXG4iICI0OglpbmNsICUwXG4iICIJam1w
IDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxp
Z24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAi
PWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwg
IjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICIzOglzaGwgJDIsJTBcbiIgIjQ6CWFkZGwgJDIsJTBcbiIgIglqbXAgMmJcbiIg
Ii5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIiAiCS5hbGlnbiA0XG4i
ICIJLmxvbmcgMGIsM2JcbiIgIgkubG9uZyAxYiw0YlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiks
ICI9JlMiIChfX2QwKSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80
KSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgMzogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOgly
ZXA7IG1vdnNsXG4iICIxOgltb3Zzd1xuIiAiMjoJbW92c2JcbiIgIjM6XG4iICIuc2VjdGlvbiAu
Zml4dXAsXCJheFwiXG4iICI0OglzaGwgJDIsJTBcbiIgIjU6CWFkZGwgJDIsJTBcbiIgIjY6CWlu
Y2wgJTBcbiIgIglqbXAgM2JcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gX19leF90YWJsZSxc
ImFcIlxuIiAiCS5hbGlnbiA0XG4iICIJLmxvbmcgMGIsNGJcbiIgIgkubG9uZyAxYiw1YlxuIiAi
CS5sb25nIDJiLDZiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZE
IiAoX19kMSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVh
azsgfSB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gbjsKfQoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBsb25nCl9fY29uc3RhbnRfY29weV9mcm9tX3VzZXJfbm9jaGVjayh2b2lkICp0bywgY29u
c3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQp7CiAgICAgICAgZG8geyBpbnQgX19kMCwg
X19kMTsgc3dpdGNoIChuICYgMykgeyBkZWZhdWx0OiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6
CXJlcDsgbW92c2xcbiIgIjE6XG4iICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iICIyOglwdXNo
bCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXJlcDsgc3Rv
c2xcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAiCXNobCAkMiwlMFxuIiAiCWptcCAx
YlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWdu
IDRcbiIgIgkubG9uZyAwYiwyYlxuIiAiLnByZXZpb3VzIiA6ICI9YyIobiksICI9JlMiIChfX2Qw
KSwgIj0mRCIgKF9fZDEpIDogIjEiKGZyb20pLCAiMiIodG8pLCAiMCIobi80KSA6ICJtZW1vcnki
KTsgYnJlYWs7IGNhc2UgMTogX19hc21fXyBfX3ZvbGF0aWxlX18oICIwOglyZXA7IG1vdnNsXG4i
ICIxOgltb3ZzYlxuIiAiMjpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjM6CXB1c2hs
ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z
bFxuIiAiCXN0b3NiXG4iICIJcG9wbCAlJWVheFxuIiAiCXBvcGwgJTBcbiIgIglzaGwgJDIsJTBc
biIgIglpbmNsICUwXG4iICIJam1wIDJiXG4iICI0OglwdXNobCAlJWVheFxuIiAiCXhvcmwgJSVl
YXgsJSVlYXhcbiIgIglzdG9zYlxuIiAiCXBvcGwgJSVlYXhcbiIgIglpbmNsICUwXG4iICIJam1w
IDJiXG4iICIucHJldmlvdXNcbiIgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIgIgkuYWxp
Z24gNFxuIiAiCS5sb25nIDBiLDNiXG4iICIJLmxvbmcgMWIsNGJcbiIgIi5wcmV2aW91cyIgOiAi
PWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2QxKSA6ICIxIihmcm9tKSwgIjIiKHRvKSwg
IjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IF9fYXNtX18gX192b2xhdGlsZV9f
KCAiMDoJcmVwOyBtb3ZzbFxuIiAiMToJbW92c3dcbiIgIjI6XG4iICIuc2VjdGlvbiAuZml4dXAs
XCJheFwiXG4iICIzOglwdXNobCAlMFxuIiAiCXB1c2hsICUlZWF4XG4iICIJeG9ybCAlJWVheCwl
JWVheFxuIiAiCXJlcDsgc3Rvc2xcbiIgIglzdG9zd1xuIiAiCXBvcGwgJSVlYXhcbiIgIglwb3Bs
ICUwXG4iICIJc2hsICQyLCUwXG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiNDoJcHVz
aGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc3dcbiIgIglwb3BsICUlZWF4
XG4iICIJYWRkbCAkMiwlMFxuIiAiCWptcCAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBf
X2V4X3RhYmxlLFwiYVwiXG4iICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiwzYlxuIiAiCS5sb25n
IDFiLDRiXG4iICIucHJldmlvdXMiIDogIj1jIihuKSwgIj0mUyIgKF9fZDApLCAiPSZEIiAoX19k
MSkgOiAiMSIoZnJvbSksICIyIih0byksICIwIihuLzQpIDogIm1lbW9yeSIpOyBicmVhazsgY2Fz
ZSAzOiBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIjA6CXJlcDsgbW92c2xcbiIgIjE6CW1vdnN3XG4i
ICIyOgltb3ZzYlxuIiAiMzpcbiIgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIgIjQ6CXB1c2hs
ICUwXG4iICIJcHVzaGwgJSVlYXhcbiIgIgl4b3JsICUlZWF4LCUlZWF4XG4iICIJcmVwOyBzdG9z
bFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJcG9wbCAlMFxuIiAi
CXNobCAkMiwlMFxuIiAiCWFkZGwgJDMsJTBcbiIgIglqbXAgMmJcbiIgIjU6CXB1c2hsICUlZWF4
XG4iICIJeG9ybCAlJWVheCwlJWVheFxuIiAiCXN0b3N3XG4iICIJc3Rvc2JcbiIgIglwb3BsICUl
ZWF4XG4iICIJYWRkbCAkMywlMFxuIiAiCWptcCAyYlxuIiAiNjoJcHVzaGwgJSVlYXhcbiIgIgl4
b3JsICUlZWF4LCUlZWF4XG4iICIJc3Rvc2JcbiIgIglwb3BsICUlZWF4XG4iICIJaW5jbCAlMFxu
IiAiCWptcCAzYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4i
ICIJLmFsaWduIDRcbiIgIgkubG9uZyAwYiw0YlxuIiAiCS5sb25nIDFiLDViXG4iICIJLmxvbmcg
MmIsNmJcbiIgIi5wcmV2aW91cyIgOiAiPWMiKG4pLCAiPSZTIiAoX19kMCksICI9JkQiIChfX2Qx
KSA6ICIxIihmcm9tKSwgIjIiKHRvKSwgIjAiKG4vNCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IH0g
d2hpbGUgKDApOwogICAgICAgIHJldHVybiBuOwp9CiMgNTk5ICIvdXNyL3NyYy9saW51eC0yLjQu
MTEvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIgpsb25nIHN0cm5jcHlfZnJvbV91c2VyKGNoYXIgKmRz
dCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKbG9uZyBfX3N0cm5jcHlfZnJvbV91c2Vy
KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBsb25nIGNvdW50KTsKCmxvbmcgc3Rybmxlbl91
c2VyKGNvbnN0IGNoYXIgKnN0ciwgbG9uZyBuKTsKdW5zaWduZWQgbG9uZyBjbGVhcl91c2VyKHZv
aWQgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOwp1bnNpZ25lZCBsb25nIF9fY2xlYXJfdXNlcih2
b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuKTsKIyAxNjAgIjgxMzl0b28uYyIgMgojIDE5OCAi
ODEzOXRvby5jIgpzdGF0aWMgaW50IG1lZGlhWzhdID0gey0xLCAtMSwgLTEsIC0xLCAtMSwgLTEs
IC0xLCAtMX07CnN0YXRpYyBpbnQgZnVsbF9kdXBsZXhbOF0gPSB7LTEsIC0xLCAtMSwgLTEsIC0x
LCAtMSwgLTEsIC0xfTsKCgpzdGF0aWMgaW50IG1heF9pbnRlcnJ1cHRfd29yayA9IDIwOwoKCgpz
dGF0aWMgaW50IG11bHRpY2FzdF9maWx0ZXJfbGltaXQgPSAzMjsKIyAyNDEgIjgxMzl0b28uYyIK
ZW51bSB7CiAgICAgICAgSEFTX01JSV9YQ1ZSID0gMHgwMTAwMDAsCiAgICAgICAgSEFTX0NISVBf
WENWUiA9IDB4MDIwMDAwLAogICAgICAgIEhBU19MTktfQ0hORyA9IDB4MDQwMDAwLAp9OwoKCgoK
CgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBSVEw4MTM5ID0gMCwKICAgICAgICBSVEw4MTM5X0NC
LAogICAgICAgIFNNQzEyMTFUWCwKCiAgICAgICAgREVMVEE4MTM5LAogICAgICAgIEFERFRST044
MTM5LAogICAgICAgIERGRTUzOFRYLAogICAgICAgIFJUTDgxMjksCn0gYm9hcmRfdDsKCgoKc3Rh
dGljIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB1MzIgaHdfZmxh
Z3M7Cn0gYm9hcmRfaW5mb1tdIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi5kYXRhLmlu
aXQiKSkpID0gewogICAgICAgIHsgIlJlYWxUZWsgUlRMODEzOSBGYXN0IEV0aGVybmV0IiwgSEFT
X0NISVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJSZWFsVGVrIFJUTDgxMzlCIFBD
SS9DYXJkQnVzIiwgSEFTX0NISVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJTTUMx
MjExVFggRVpDYXJkIDEwLzEwMCAoUmVhbFRlayBSVEw4MTM5KSIsIEhBU19DSElQX1hDVlJ8SEFT
X0xOS19DSE5HIH0sCgogICAgICAgIHsgIkRlbHRhIEVsZWN0cm9uaWNzIDgxMzkgMTAvMTAwQmFz
ZVRYIiwgSEFTX0NISVBfWENWUnxIQVNfTE5LX0NITkcgfSwKICAgICAgICB7ICJBZGR0cm9uIFRl
Y2hub2xneSA4MTM5IDEwLzEwMEJhc2VUWCIsIEhBU19DSElQX1hDVlJ8SEFTX0xOS19DSE5HIH0s
CiAgICAgICAgeyAiRC1MaW5rIERGRS01MzhUWCAoUmVhbFRlayBSVEw4MTM5KSIsIEhBU19DSElQ
X1hDVlJ8SEFTX0xOS19DSE5HIH0sCiAgICAgICAgeyAiUmVhbFRlayBSVEw4MTI5IiwgSEFTX01J
SV9YQ1ZSIH0sCn07CgoKc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ0bDgxMzlfcGNpX3Ri
bFtdIF9fYXR0cmlidXRlX18gKChfX3NlY3Rpb25fXyAoIi5kYXRhLmluaXQiKSkpID0gewogICAg
ICAgIHsweDEwZWMsIDB4ODEzOSwgKH4wKSwgKH4wKSwgMCwgMCwgUlRMODEzOSB9LAogICAgICAg
IHsweDEwZWMsIDB4ODEzOCwgKH4wKSwgKH4wKSwgMCwgMCwgUlRMODEzOV9DQiB9LAogICAgICAg
IHsweDExMTMsIDB4MTIxMSwgKH4wKSwgKH4wKSwgMCwgMCwgU01DMTIxMVRYIH0sCgogICAgICAg
IHsweDE1MDAsIDB4MTM2MCwgKH4wKSwgKH4wKSwgMCwgMCwgREVMVEE4MTM5IH0sCiAgICAgICAg
ezB4NDAzMywgMHgxMzYwLCAofjApLCAofjApLCAwLCAwLCBBRERUUk9OODEzOSB9LAogICAgICAg
IHsweDExODYsIDB4MTMwMCwgKH4wKSwgKH4wKSwgMCwgMCwgREZFNTM4VFggfSwKIyAyOTggIjgx
Mzl0b28uYyIKICAgICAgICB7KH4wKSwgMHg4MTM5LCAweDEwZWMsIDB4ODEzOSwgMCwgMCwgUlRM
ODEzOSB9LAogICAgICAgIHsofjApLCAweDgxMzksIDB4MTE4NiwgMHgxMzAwLCAwLCAwLCBERkU1
MzhUWCB9LAoKICAgICAgICB7MCx9Cn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDsKCgoKCgplbnVtIFJUTDgxMzlfcmVnaXN0ZXJzIHsKICAgICAgICBNQUMwID0g
MCwKICAgICAgICBNQVIwID0gOCwKICAgICAgICBUeFN0YXR1czAgPSAweDEwLAogICAgICAgIFR4
QWRkcjAgPSAweDIwLAogICAgICAgIFJ4QnVmID0gMHgzMCwKICAgICAgICBSeEVhcmx5Q250ID0g
MHgzNCwKICAgICAgICBSeEVhcmx5U3RhdHVzID0gMHgzNiwKICAgICAgICBDaGlwQ21kID0gMHgz
NywKICAgICAgICBSeEJ1ZlB0ciA9IDB4MzgsCiAgICAgICAgUnhCdWZBZGRyID0gMHgzQSwKICAg
ICAgICBJbnRyTWFzayA9IDB4M0MsCiAgICAgICAgSW50clN0YXR1cyA9IDB4M0UsCiAgICAgICAg
VHhDb25maWcgPSAweDQwLAogICAgICAgIENoaXBWZXJzaW9uID0gMHg0MywKICAgICAgICBSeENv
bmZpZyA9IDB4NDQsCiAgICAgICAgVGltZXIgPSAweDQ4LAogICAgICAgIFJ4TWlzc2VkID0gMHg0
QywKICAgICAgICBDZmc5MzQ2ID0gMHg1MCwKICAgICAgICBDb25maWcwID0gMHg1MSwKICAgICAg
ICBDb25maWcxID0gMHg1MiwKICAgICAgICBGbGFzaFJlZyA9IDB4NTQsCiAgICAgICAgTWVkaWFT
dGF0dXMgPSAweDU4LAogICAgICAgIENvbmZpZzMgPSAweDU5LAogICAgICAgIENvbmZpZzQgPSAw
eDVBLAogICAgICAgIEhsdENsayA9IDB4NUIsCiAgICAgICAgTXVsdGlJbnRyID0gMHg1QywKICAg
ICAgICBUeFN1bW1hcnkgPSAweDYwLAogICAgICAgIEJhc2ljTW9kZUN0cmwgPSAweDYyLAogICAg
ICAgIEJhc2ljTW9kZVN0YXR1cyA9IDB4NjQsCiAgICAgICAgTldheUFkdmVydCA9IDB4NjYsCiAg
ICAgICAgTldheUxQQVIgPSAweDY4LAogICAgICAgIE5XYXlFeHBhbnNpb24gPSAweDZBLAoKICAg
ICAgICBGSUZPVE1TID0gMHg3MCwKICAgICAgICBDU0NSID0gMHg3NCwKICAgICAgICBQQVJBNzgg
PSAweDc4LAogICAgICAgIFBBUkE3YyA9IDB4N2MsCiAgICAgICAgQ29uZmlnNSA9IDB4RDgsCn07
CgplbnVtIENsZWFyQml0TWFza3MgewogICAgICAgIE11bHRpSW50ckNsZWFyID0gMHhGMDAwLAog
ICAgICAgIENoaXBDbWRDbGVhciA9IDB4RTIsCiAgICAgICAgQ29uZmlnMUNsZWFyID0gKDE8PDcp
fCgxPDw2KXwoMTw8Myl8KDE8PDIpfCgxPDwxKSwKfTsKCmVudW0gQ2hpcENtZEJpdHMgewogICAg
ICAgIENtZFJlc2V0ID0gMHgxMCwKICAgICAgICBDbWRSeEVuYiA9IDB4MDgsCiAgICAgICAgQ21k
VHhFbmIgPSAweDA0LAogICAgICAgIFJ4QnVmRW1wdHkgPSAweDAxLAp9OwoKCmVudW0gSW50clN0
YXR1c0JpdHMgewogICAgICAgIFBDSUVyciA9IDB4ODAwMCwKICAgICAgICBQQ1NUaW1lb3V0ID0g
MHg0MDAwLAogICAgICAgIFJ4RklGT092ZXIgPSAweDQwLAogICAgICAgIFJ4VW5kZXJydW4gPSAw
eDIwLAogICAgICAgIFJ4T3ZlcmZsb3cgPSAweDEwLAogICAgICAgIFR4RXJyID0gMHgwOCwKICAg
ICAgICBUeE9LID0gMHgwNCwKICAgICAgICBSeEVyciA9IDB4MDIsCiAgICAgICAgUnhPSyA9IDB4
MDEsCgogICAgICAgIFJ4QWNrQml0cyA9IFJ4RklGT092ZXIgfCBSeE92ZXJmbG93IHwgUnhPSywK
fTsKCmVudW0gVHhTdGF0dXNCaXRzIHsKICAgICAgICBUeEhvc3RPd25zID0gMHgyMDAwLAogICAg
ICAgIFR4VW5kZXJydW4gPSAweDQwMDAsCiAgICAgICAgVHhTdGF0T0sgPSAweDgwMDAsCiAgICAg
ICAgVHhPdXRPZldpbmRvdyA9IDB4MjAwMDAwMDAsCiAgICAgICAgVHhBYm9ydGVkID0gMHg0MDAw
MDAwMCwKICAgICAgICBUeENhcnJpZXJMb3N0ID0gMHg4MDAwMDAwMCwKfTsKZW51bSBSeFN0YXR1
c0JpdHMgewogICAgICAgIFJ4TXVsdGljYXN0ID0gMHg4MDAwLAogICAgICAgIFJ4UGh5c2ljYWwg
PSAweDQwMDAsCiAgICAgICAgUnhCcm9hZGNhc3QgPSAweDIwMDAsCiAgICAgICAgUnhCYWRTeW1i
b2wgPSAweDAwMjAsCiAgICAgICAgUnhSdW50ID0gMHgwMDEwLAogICAgICAgIFJ4VG9vTG9uZyA9
IDB4MDAwOCwKICAgICAgICBSeENSQ0VyciA9IDB4MDAwNCwKICAgICAgICBSeEJhZEFsaWduID0g
MHgwMDAyLAogICAgICAgIFJ4U3RhdHVzT0sgPSAweDAwMDEsCn07CgoKZW51bSByeF9tb2RlX2Jp
dHMgewogICAgICAgIEFjY2VwdEVyciA9IDB4MjAsCiAgICAgICAgQWNjZXB0UnVudCA9IDB4MTAs
CiAgICAgICAgQWNjZXB0QnJvYWRjYXN0ID0gMHgwOCwKICAgICAgICBBY2NlcHRNdWx0aWNhc3Qg
PSAweDA0LAogICAgICAgIEFjY2VwdE15UGh5cyA9IDB4MDIsCiAgICAgICAgQWNjZXB0QWxsUGh5
cyA9IDB4MDEsCn07CgoKZW51bSB0eF9jb25maWdfYml0cyB7CiAgICAgICAgVHhJRkcxID0gKDEg
PDwgMjUpLAogICAgICAgIFR4SUZHMCA9ICgxIDw8IDI0KSwKICAgICAgICBUeExvb3BCYWNrID0g
KDEgPDwgMTgpIHwgKDEgPDwgMTcpLAogICAgICAgIFR4Q1JDID0gKDEgPDwgMTYpLAogICAgICAg
IFR4Q2xlYXJBYnQgPSAoMSA8PCAwKSwKICAgICAgICBUeERNQVNoaWZ0ID0gOCwKCiAgICAgICAg
VHhWZXJzaW9uTWFzayA9IDB4N0M4MDAwMDAsCn07CgoKZW51bSBDb25maWcxQml0cyB7CiAgICAg
ICAgQ2ZnMV9QTV9FbmFibGUgPSAweDAxLAogICAgICAgIENmZzFfVlBEX0VuYWJsZSA9IDB4MDIs
CiAgICAgICAgQ2ZnMV9QSU8gPSAweDA0LAogICAgICAgIENmZzFfTU1JTyA9IDB4MDgsCiAgICAg
ICAgTFdBS0UgPSAweDEwLAogICAgICAgIENmZzFfRHJpdmVyX0xvYWQgPSAweDIwLAogICAgICAg
IENmZzFfTEVEMCA9IDB4NDAsCiAgICAgICAgQ2ZnMV9MRUQxID0gMHg4MCwKICAgICAgICBTTEVF
UCA9ICgxIDw8IDEpLAogICAgICAgIFBXUkROID0gKDEgPDwgMCksCn07CgoKZW51bSBDb25maWcz
Qml0cyB7CiAgICAgICAgQ2ZnM19GQnRCRW4gPSAoMSA8PCAwKSwKICAgICAgICBDZmczX0Z1bmNS
ZWdFbiA9ICgxIDw8IDEpLAogICAgICAgIENmZzNfQ0xLUlVOX0VuID0gKDEgPDwgMiksCiAgICAg
ICAgQ2ZnM19DYXJkQl9FbiA9ICgxIDw8IDMpLAogICAgICAgIENmZzNfTGlua1VwID0gKDEgPDwg
NCksCiAgICAgICAgQ2ZnM19NYWdpYyA9ICgxIDw8IDUpLAogICAgICAgIENmZzNfUEFSTV9FbiA9
ICgxIDw8IDYpLAogICAgICAgIENmZzNfR05UU2VsID0gKDEgPDwgNyksCn07CgoKZW51bSBDb25m
aWc0Qml0cyB7CiAgICAgICAgTFdQVE4gPSAoMSA8PCAyKSwKfTsKCgplbnVtIENvbmZpZzVCaXRz
IHsKICAgICAgICBDZmc1X1BNRV9TVFMgPSAoMSA8PCAwKSwKICAgICAgICBDZmc1X0xBTldha2Ug
PSAoMSA8PCAxKSwKICAgICAgICBDZmc1X0xEUFMgPSAoMSA8PCAyKSwKICAgICAgICBDZmc1X0ZJ
Rk9BZGRyUHRyID0gKDEgPDwgMyksCiAgICAgICAgQ2ZnNV9VV0YgPSAoMSA8PCA0KSwKICAgICAg
ICBDZmc1X01XRiA9ICgxIDw8IDUpLAogICAgICAgIENmZzVfQldGID0gKDEgPDwgNiksCn07Cgpl
bnVtIFJ4Q29uZmlnQml0cyB7CgogICAgICAgIFJ4Q2ZnRWFybHlSeE5vbmUgPSAwLAogICAgICAg
IFJ4Q2ZnRWFybHlSeFNoaWZ0ID0gMjQsCgoKICAgICAgICBSeENmZ0ZJRk9TaGlmdCA9IDEzLAog
ICAgICAgIFJ4Q2ZnRklGT05vbmUgPSAoNyA8PCBSeENmZ0ZJRk9TaGlmdCksCgoKICAgICAgICBS
eENmZ0RNQVNoaWZ0ID0gOCwKICAgICAgICBSeENmZ0RNQVVubGltaXRlZCA9ICg3IDw8IFJ4Q2Zn
RE1BU2hpZnQpLAoKCiAgICAgICAgUnhDZmdSY3Y4SyA9IDAsCiAgICAgICAgUnhDZmdSY3YxNksg
PSAoMSA8PCAxMSksCiAgICAgICAgUnhDZmdSY3YzMksgPSAoMSA8PCAxMiksCiAgICAgICAgUnhD
ZmdSY3Y2NEsgPSAoMSA8PCAxMSkgfCAoMSA8PCAxMiksCgoKICAgICAgICBSeE5vV3JhcCA9ICgx
IDw8IDcpLAp9OwoKCgoKZW51bSBDU0NSQml0cyB7CiAgICAgICAgQ1NDUl9MaW5rT0tCaXQgPSAw
eDA0MDAsCiAgICAgICAgQ1NDUl9MaW5rQ2hhbmdlQml0ID0gMHgwODAwLAogICAgICAgIENTQ1Jf
TGlua1N0YXR1c0JpdHMgPSAweDBmMDAwLAogICAgICAgIENTQ1JfTGlua0Rvd25PZmZDbWQgPSAw
eDAwM2MwLAogICAgICAgIENTQ1JfTGlua0Rvd25DbWQgPSAweDBmM2MwLAp9OwoKCmVudW0gQ2Zn
OTM0NkJpdHMgewogICAgICAgIENmZzkzNDZfTG9jayA9IDB4MDAsCiAgICAgICAgQ2ZnOTM0Nl9V
bmxvY2sgPSAweEMwLAp9OwoKCgoKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHBhcmFtWzRd
WzRdID0gewogICAgICAgIHsweGNiMzlkZTQzLCAweGNiMzljZTQzLCAweGZiMzhkZTAzLCAweGNi
MzhkZTQzfSwKICAgICAgICB7MHhjYjM5ZGU0MywgMHhjYjM5Y2U0MywgMHhjYjM5Y2U4MywgMHhj
YjM5Y2U4M30sCiAgICAgICAgezB4Y2IzOWRlNDMsIDB4Y2IzOWNlNDMsIDB4Y2IzOWNlODMsIDB4
Y2IzOWNlODN9LAogICAgICAgIHsweGJiMzlkZTQzLCAweGJiMzljZTQzLCAweGJiMzljZTgzLCAw
eGJiMzljZTgzfQp9OwoKc3RydWN0IHJpbmdfaW5mbyB7CiAgICAgICAgc3RydWN0IHNrX2J1ZmYg
KnNrYjsKICAgICAgICBkbWFfYWRkcl90IG1hcHBpbmc7Cn07CgoKdHlwZWRlZiBlbnVtIHsKICAg
ICAgICBDSF84MTM5ID0gMCwKICAgICAgICBDSF84MTM5X0ssCiAgICAgICAgQ0hfODEzOUEsCiAg
ICAgICAgQ0hfODEzOUIsCiAgICAgICAgQ0hfODEzMCwKICAgICAgICBDSF84MTM5QywKfSBjaGlw
X3Q7CgplbnVtIGNoaXBfZmxhZ3MgewogICAgICAgIEhhc0hsdENsayA9ICgxIDw8IDApLAogICAg
ICAgIEhhc0xXYWtlID0gKDEgPDwgMSksCn07CgoKCmNvbnN0IHN0YXRpYyBzdHJ1Y3QgewogICAg
ICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgdTggdmVyc2lvbjsKICAgICAgICB1MzIgUnhD
b25maWdNYXNrOwogICAgICAgIHUzMiBmbGFnczsKfSBydGxfY2hpcF9pbmZvW10gPSB7CiAgICAg
ICAgeyAiUlRMLTgxMzkiLAogICAgICAgICAgMHg0MCwKICAgICAgICAgIDB4ZjBmZTAwNDAsCiAg
ICAgICAgICBIYXNIbHRDbGssCiAgICAgICAgfSwKCiAgICAgICAgeyAiUlRMLTgxMzkgcmV2IEsi
LAogICAgICAgICAgMHg2MCwKICAgICAgICAgIDB4ZjBmZTAwNDAsCiAgICAgICAgICBIYXNIbHRD
bGssCiAgICAgICAgfSwKCiAgICAgICAgeyAiUlRMLTgxMzlBIiwKICAgICAgICAgIDB4NzAsCiAg
ICAgICAgICAweGYwZmUwMDQwLAogICAgICAgICAgSGFzSGx0Q2xrLAogICAgICAgIH0sCgogICAg
ICAgIHsgIlJUTC04MTM5QiIsCiAgICAgICAgICAweDc4LAogICAgICAgICAgMHhmMGZjMDA0MCwK
ICAgICAgICAgIEhhc0xXYWtlLAogICAgICAgIH0sCgogICAgICAgIHsgIlJUTC04MTMwIiwKICAg
ICAgICAgIDB4N0MsCiAgICAgICAgICAweGYwZmUwMDQwLAogICAgICAgICAgSGFzTFdha2UsCiAg
ICAgICAgfSwKCiAgICAgICAgeyAiUlRMLTgxMzlDIiwKICAgICAgICAgIDB4NzQsCiAgICAgICAg
ICAweGYwZmMwMDQwLAogICAgICAgICAgSGFzTFdha2UsCiAgICAgICAgfSwKCn07CgpzdHJ1Y3Qg
cnRsX2V4dHJhX3N0YXRzIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGVhcmx5X3J4OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgdHhfYnVmX21hcHBlZDsKICAgICAgICB1bnNpZ25lZCBsb25nIHR4X3Rp
bWVvdXRzOwp9OwoKc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSB7CiAgICAgICAgdm9pZCAqbW1pb19h
ZGRyOwogICAgICAgIGludCBkcnZfZmxhZ3M7CiAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBjaV9k
ZXY7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgc3RhdHM7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciAqcnhfcmluZzsKICAgICAgICB1bnNpZ25lZCBpbnQgY3VyX3J4OwogICAgICAgIHVu
c2lnbmVkIGludCB0eF9mbGFnOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3VyX3R4OwogICAgICAg
IHVuc2lnbmVkIGxvbmcgZGlydHlfdHg7CgogICAgICAgIHN0cnVjdCByaW5nX2luZm8gdHhfaW5m
b1s0XTsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0eF9idWZbNF07CiAgICAgICAgdW5zaWduZWQg
Y2hhciAqdHhfYnVmczsKICAgICAgICBkbWFfYWRkcl90IHJ4X3JpbmdfZG1hOwogICAgICAgIGRt
YV9hZGRyX3QgdHhfYnVmc19kbWE7CiAgICAgICAgc2lnbmVkIGNoYXIgcGh5c1s0XTsKICAgICAg
ICBjaGFyIHR3aXN0aWUsIHR3aXN0X3JvdywgdHdpc3RfY29sOwogICAgICAgIHVuc2lnbmVkIGlu
dCBmdWxsX2R1cGxleDoxOwogICAgICAgIHVuc2lnbmVkIGludCBkdXBsZXhfbG9jazoxOwogICAg
ICAgIHVuc2lnbmVkIGludCBkZWZhdWx0X3BvcnQ6NDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWVk
aWEyOjQ7CiAgICAgICAgdW5zaWduZWQgaW50IG1lZGlhbG9jazoxOwogICAgICAgIHVuc2lnbmVk
IGludCBtZWRpYXNlbnNlOjE7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIGNoaXBf
dCBjaGlwc2V0OwogICAgICAgIHBpZF90IHRocl9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk
X3QgdGhyX3dhaXQ7CiAgICAgICAgc3RydWN0IGNvbXBsZXRpb24gdGhyX2V4aXRlZDsKICAgICAg
ICB1MzIgcnhfY29uZmlnOwogICAgICAgIHN0cnVjdCBydGxfZXh0cmFfc3RhdHMgeHN0YXRzOwp9
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgpzdGF0aWMgaW50IHJlYWRfZWVwcm9tICh2b2lkICppb2FkZHIsIGlu
dCBsb2NhdGlvbiwgaW50IGFkZHJfbGVuKTsKc3RhdGljIGludCBydGw4MTM5X29wZW4gKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgaW50IG1kaW9fcmVhZCAoc3RydWN0IG5ldF9kZXZp
Y2UgKmRldiwgaW50IHBoeV9pZCwgaW50IGxvY2F0aW9uKTsKc3RhdGljIHZvaWQgbWRpb193cml0
ZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHBoeV9pZCwgaW50IGxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKc3RhdGljIGludCBydGw4MTM5X3RocmVhZCAo
dm9pZCAqZGF0YSk7CnN0YXRpYyB2b2lkIHJ0bDgxMzlfdHhfdGltZW91dCAoc3RydWN0IG5ldF9k
ZXZpY2UgKmRldik7CnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW5pdF9yaW5nIChzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKc3RhdGljIGludCBydGw4MTM5X3N0YXJ0X3htaXQgKHN0cnVjdCBza19idWZm
ICpza2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2KTsKc3RhdGljIHZvaWQgcnRsODEzOV9pbnRlcnJ1cHQgKGludCBpcnEsIHZvaWQgKmRldl9p
bnN0YW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpy
ZWdzKTsKc3RhdGljIGludCBydGw4MTM5X2Nsb3NlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsK
c3RhdGljIGludCBuZXRkZXZfaW9jdGwgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBp
ZnJlcSAqcnEsIGludCBjbWQpOwpzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnJ0bDgx
MzlfZ2V0X3N0YXRzIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKc3RhdGljIGlubGluZSB1MzIg
ZXRoZXJfY3JjIChpbnQgbGVuZ3RoLCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKc3RhdGljIHZvaWQg
cnRsODEzOV9zZXRfcnhfbW9kZSAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CnN0YXRpYyB2b2lk
IF9fc2V0X3J4X21vZGUgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpzdGF0aWMgdm9pZCBydGw4
MTM5X2h3X3N0YXJ0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKIyA3MDkgIjgxMzl0b28uYyIK
c3RhdGljIGNvbnN0IHUxNiBydGw4MTM5X2ludHJfbWFzayA9CiAgICAgICAgUENJRXJyIHwgUENT
VGltZW91dCB8IFJ4VW5kZXJydW4gfCBSeE92ZXJmbG93IHwgUnhGSUZPT3ZlciB8CiAgICAgICAg
VHhFcnIgfCBUeE9LIHwgUnhFcnIgfCBSeE9LOwoKc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBy
dGw4MTM5X3J4X2NvbmZpZyA9CiAgICAgICAgICAoMTQgPDwgUnhDZmdFYXJseVJ4U2hpZnQpIHwg
UnhDZmdSY3YzMksgfCBSeE5vV3JhcCB8CiAgICAgICAgICAoNyA8PCBSeENmZ0ZJRk9TaGlmdCkg
fAogICAgICAgICAgKDcgPDwgUnhDZmdETUFTaGlmdCk7CgoKc3RhdGljIHZvaWQgX19ydGw4MTM5
X2NsZWFudXBfZGV2IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0
bDgxMzlfcHJpdmF0ZSAqdHA7CiAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBkZXY7CgogICAgICAg
IGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAl
cywlcywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05f
Xyw3MjQpOyB9OwogICAgICAgIGlmKCEoZGV2LT5wcml2ICE9ICgodm9pZCAqKTApKSkgeyBwcmlu
dGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2LT5wcml2ICE9
IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXyw3MjUpOyB9OwoKICAgICAgICB0cCA9IGRl
di0+cHJpdjsKICAgICAgICBpZighKHRwLT5wY2lfZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmlu
dGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAtPnBjaV9kZXYg
IT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDcyOCk7IH07CiAgICAgICAgcGRldiA9
IHRwLT5wY2lfZGV2OwoKCiAgICAgICAgaWYgKHRwLT5tbWlvX2FkZHIpCiAgICAgICAgICAgICAg
ICBpb3VubWFwICh0cC0+bW1pb19hZGRyKTsKCgoKICAgICAgICBwY2lfcmVsZWFzZV9yZWdpb25z
IChwZGV2KTsKCgoKICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMHhCQykgPyAoX19idWls
dGluX2NvbnN0YW50X3AoKHNpemVvZiAoc3RydWN0IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChzdHJ1
Y3QgcnRsODEzOV9wcml2YXRlKSkpID8gX19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKChk
ZXYpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoMHhCQykpKSwoKHNpemVvZiAoc3Ry
dWN0IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkpKSA6IF9f
Y29uc3RhbnRfY19tZW1zZXQoKChkZXYpKSwoKDB4MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhciko
MHhCQykpKSwoKHNpemVvZiAoc3RydWN0IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChzdHJ1Y3QgcnRs
ODEzOV9wcml2YXRlKSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZiAoc3RydWN0
IG5ldF9kZXZpY2UpICsgc2l6ZW9mIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlKSkpID8gX19tZW1z
ZXRfZ2VuZXJpYygoKChkZXYpKSksKCgoMHhCQykpKSwoKChzaXplb2YgKHN0cnVjdCBuZXRfZGV2
aWNlKSArIHNpemVvZiAoc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSkpKSkpIDogX19tZW1zZXRfZ2Vu
ZXJpYygoKGRldikpLCgoMHhCQykpLCgoc2l6ZW9mIChzdHJ1Y3QgbmV0X2RldmljZSkgKyBzaXpl
b2YgKHN0cnVjdCBydGw4MTM5X3ByaXZhdGUpKSkpKSk7CgoKCgogICAgICAgIGtmcmVlIChkZXYp
OwoKICAgICAgICBwY2lfc2V0X2RydmRhdGEgKHBkZXYsICgodm9pZCAqKTApKTsKfQoKCnN0YXRp
YyB2b2lkIHJ0bDgxMzlfY2hpcF9yZXNldCAodm9pZCAqaW9hZGRyKQp7CiAgICAgICAgaW50IGk7
CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIg
KyAoQ2hpcENtZCkpKSA9ICgoQ21kUmVzZXQpKSk7CgoKICAgICAgICBmb3IgKGkgPSAxMDAwOyBp
ID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6
Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgaWYgKCgoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSkgJiBDbWRSZXNldCkgPT0gMCkKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2Nv
bnN0YW50X3AoMTApID8gKCgxMCkgPiAyMDAwMCA/IF9fYmFkX3VkZWxheSgpIDogX19jb25zdF91
ZGVsYXkoKDEwKSAqIDB4MTBjNnVsKSkgOiBfX3VkZWxheSgxMCkpOwogICAgICAgIH0KfQoKCnN0
YXRpYyBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgiLnRleHQuaW5pdCIpKSkgcnRs
ODEzOV9pbml0X2JvYXJkIChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqKmRldl9vdXQpCnsKICAg
ICAgICB2b2lkICppb2FkZHI7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKICAgICAg
ICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cDsKICAgICAgICB1OCB0bXA4OwogICAgICAgIGlu
dCByYzsKICAgICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICAgICB1MzIgcGlvX3N0YXJ0LCBwaW9f
ZW5kLCBwaW9fZmxhZ3MsIHBpb19sZW47CiAgICAgICAgdW5zaWduZWQgbG9uZyBtbWlvX3N0YXJ0
LCBtbWlvX2VuZCwgbW1pb19mbGFncywgbW1pb19sZW47CiAgICAgICAgdTMyIHRtcDsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYoIShwZGV2ICE9ICgodm9pZCAqKTAp
KSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAicGRl
diAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sNzg0KTsgfTsKCiAgICAgICAgKmRl
dl9vdXQgPSAoKHZvaWQgKikwKTsKCgogICAgICAgIGRldiA9IGFsbG9jX2V0aGVyZGV2IChzaXpl
b2YgKCp0cCkpOwogICAgICAgIGlmIChkZXYgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAg
ICAgIHByaW50ayAoIjwzPiIgIjgxMzl0b28iICI6ICIgIiVzOiBVbmFibGUgdG8gYWxsb2MgbmV3
IG5ldCBkZXZpY2VcbiIsIHBkZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgcmV0dXJuIC0x
MjsKICAgICAgICB9CiAgICAgICAgZG8geyAoZGV2KS0+b3duZXIgPSAoKHZvaWQgKikwKTsgfSB3
aGlsZSAoMCk7CiAgICAgICAgdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdHAtPnBjaV9kZXYgPSBw
ZGV2OwoKCiAgICAgICAgcmMgPSBwY2lfZW5hYmxlX2RldmljZSAocGRldik7CiAgICAgICAgaWYg
KHJjKQogICAgICAgICAgICAgICAgZ290byBlcnJfb3V0OwoKICAgICAgICBwaW9fc3RhcnQgPSAo
KHBkZXYpLT5yZXNvdXJjZVsoMCldLnN0YXJ0KTsKICAgICAgICBwaW9fZW5kID0gKChwZGV2KS0+
cmVzb3VyY2VbKDApXS5lbmQpOwogICAgICAgIHBpb19mbGFncyA9ICgocGRldiktPnJlc291cmNl
WygwKV0uZmxhZ3MpOwogICAgICAgIHBpb19sZW4gPSAoKCgoKHBkZXYpKS0+cmVzb3VyY2VbKCgw
KSldLnN0YXJ0KSA9PSAwICYmICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLmVuZCkgPT0gKCgo
cGRldikpLT5yZXNvdXJjZVsoKDApKV0uc3RhcnQpKSA/IDAgOiAoKCgocGRldikpLT5yZXNvdXJj
ZVsoKDApKV0uZW5kKSAtICgoKHBkZXYpKS0+cmVzb3VyY2VbKCgwKSldLnN0YXJ0KSArIDEpKTsK
CiAgICAgICAgbW1pb19zdGFydCA9ICgocGRldiktPnJlc291cmNlWygxKV0uc3RhcnQpOwogICAg
ICAgIG1taW9fZW5kID0gKChwZGV2KS0+cmVzb3VyY2VbKDEpXS5lbmQpOwogICAgICAgIG1taW9f
ZmxhZ3MgPSAoKHBkZXYpLT5yZXNvdXJjZVsoMSldLmZsYWdzKTsKICAgICAgICBtbWlvX2xlbiA9
ICgoKCgocGRldikpLT5yZXNvdXJjZVsoKDEpKV0uc3RhcnQpID09IDAgJiYgKCgocGRldikpLT5y
ZXNvdXJjZVsoKDEpKV0uZW5kKSA9PSAoKChwZGV2KSktPnJlc291cmNlWygoMSkpXS5zdGFydCkp
ID8gMCA6ICgoKChwZGV2KSktPnJlc291cmNlWygoMSkpXS5lbmQpIC0gKCgocGRldikpLT5yZXNv
dXJjZVsoKDEpKV0uc3RhcnQpICsgMSkpOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwojIDgzNCAiODEzOXRvby5jIgogICAgICAg
IGlmICghKG1taW9fZmxhZ3MgJiAweDAwMDAwMjAwKSkgewogICAgICAgICAgICAgICAgcHJpbnRr
ICgiPDM+IiAiODEzOXRvbyIgIjogIiAiJXM6IHJlZ2lvbiAjMSBub3QgYW4gTU1JTyByZXNvdXJj
ZSwgYWJvcnRpbmdcbiIsIHBkZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICByYyA9IC0x
OTsKICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKICAgICAgICB9CiAgICAgICAgaWYgKG1t
aW9fbGVuIDwgMHg4MCkgewogICAgICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiODEzOXRvbyIg
IjogIiAiJXM6IEludmFsaWQgUENJIG1lbSByZWdpb24gc2l6ZShzKSwgYWJvcnRpbmdcbiIsIHBk
ZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICByYyA9IC0xOTsKICAgICAgICAgICAgICAg
IGdvdG8gZXJyX291dDsKICAgICAgICB9CgoKICAgICAgICByYyA9IHBjaV9yZXF1ZXN0X3JlZ2lv
bnMgKHBkZXYsICI4MTM5dG9vIik7CiAgICAgICAgaWYgKHJjKQogICAgICAgICAgICAgICAgZ290
byBlcnJfb3V0OwoKCiAgICAgICAgcGNpX3NldF9tYXN0ZXIgKHBkZXYpOwoKCgoKCgoKICAgICAg
ICBpb2FkZHIgPSBpb3JlbWFwIChtbWlvX3N0YXJ0LCBtbWlvX2xlbik7CiAgICAgICAgaWYgKGlv
YWRkciA9PSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiODEz
OXRvbyIgIjogIiAiJXM6IGNhbm5vdCByZW1hcCBNTUlPLCBhYm9ydGluZ1xuIiwgcGRldi0+c2xv
dF9uYW1lKTsKICAgICAgICAgICAgICAgIHJjID0gLTU7CiAgICAgICAgICAgICAgICBnb3RvIGVy
cl9vdXQ7CiAgICAgICAgfQogICAgICAgIGRldi0+YmFzZV9hZGRyID0gKGxvbmcpIGlvYWRkcjsK
ICAgICAgICB0cC0+bW1pb19hZGRyID0gaW9hZGRyOwoKCgogICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChIbHRDbGspKSkgPSAoKCdSJykpKTsK
CgogICAgICAgIGlmICgoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpKSkgPT0gMHhGRkZGRkZGRikgewogICAg
ICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiODEzOXRvbyIgIjogIiAiJXM6IENoaXAgbm90IHJl
c3BvbmRpbmcsIGlnbm9yaW5nIGJvYXJkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBwZGV2
LT5zbG90X25hbWUpOwogICAgICAgICAgICAgICAgcmMgPSAtNTsKICAgICAgICAgICAgICAgIGdv
dG8gZXJyX291dDsKICAgICAgICB9CgoKICAgICAgICB0bXAgPSAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcFZlcnNpb24pKSkpOwogICAgICAgIGZv
ciAoaSA9IDA7IGkgPCAoc2l6ZW9mKHJ0bF9jaGlwX2luZm8pIC8gc2l6ZW9mKChydGxfY2hpcF9p
bmZvKVswXSkpOyBpKyspCiAgICAgICAgICAgICAgICBpZiAodG1wID09IHJ0bF9jaGlwX2luZm9b
aV0udmVyc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICB0cC0+Y2hpcHNldCA9IGk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF0Y2g7CiAgICAgICAgICAgICAgICB9CgoKICAg
ICAgICBwcmludGsgKCI8Nz4iICI4MTM5dG9vIiAiOiAiICIlczogdW5rbm93biBjaGlwIHZlcnNp
b24sIGFzc3VtaW5nIFJUTC04MTM5XG4iLAogICAgICAgICAgICAgICAgcGRldi0+c2xvdF9uYW1l
KTsKICAgICAgICBwcmludGsgKCI8Nz4iICI4MTM5dG9vIiAiOiAiICIlczogVHhDb25maWcgPSAw
eCVseFxuIiwgcGRldi0+c2xvdF9uYW1lLCAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4Q29uZmlnKSkpKSkpOwogICAgICAg
IHRwLT5jaGlwc2V0ID0gMDsKCm1hdGNoOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA7CgoKCgogICAgICAgIGlmICh0cC0+Y2hpcHNldCA+PSBDSF84MTM5
QikgewogICAgICAgICAgICAgICAgdTggbmV3X3RtcDggPSB0bXA4ID0gKCoodm9sYXRpbGUgdW5z
aWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICBpZiAoKHJ0
bF9jaGlwX2luZm9bdHAtPmNoaXBzZXRdLmZsYWdzICYgSGFzTFdha2UpICYmCiAgICAgICAgICAg
ICAgICAgICAgKHRtcDggJiBMV0FLRSkpCiAgICAgICAgICAgICAgICAgICAgICAgIG5ld190bXA4
ICY9IH5MV0FLRTsKICAgICAgICAgICAgICAgIG5ld190bXA4IHw9IENmZzFfUE1fRW5hYmxlOwog
ICAgICAgICAgICAgICAgaWYgKG5ld190bXA4ICE9IHRtcDgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENm
ZzkzNDYpKSkgPSAoKENmZzkzNDZfVW5sb2NrKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAo
Kih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMSkp
KSA9ICgodG1wOCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9j
aykpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChydGxfY2hpcF9pbmZv
W3RwLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHRtcDggPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAo
Q29uZmlnNCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXA4ICYgTFdQVE4pCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAq
KSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzQpKSkgPSAoKHRtcDggJiB+TFdQVE4pKSk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkpOwogICAgICAg
ICAgICAgICAgdG1wOCAmPSB+KFNMRUVQIHwgUFdSRE4pOwogICAgICAgICAgICAgICAgKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzEpKSkgPSAo
KHRtcDgpKSk7CiAgICAgICAgfQoKICAgICAgICBydGw4MTM5X2NoaXBfcmVzZXQgKGlvYWRkcik7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgKmRldl9v
dXQgPSBkZXY7CiAgICAgICAgcmV0dXJuIDA7CgplcnJfb3V0OgogICAgICAgIF9fcnRsODEzOV9j
bGVhbnVwX2RldiAoZGV2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIHJjOwp9CgoKc3RhdGljIGludCBfX2F0dHJpYnV0ZV9fICgo
X19zZWN0aW9uX18gKCIudGV4dC5pbml0IikpKSBydGw4MTM5X2luaXRfb25lIChzdHJ1Y3QgcGNp
X2RldiAqcGRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYgPSAoKHZvaWQgKikwKTsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cDsKICAg
ICAgICBpbnQgaSwgYWRkcl9sZW4sIG9wdGlvbjsKICAgICAgICB2b2lkICppb2FkZHI7CiAgICAg
ICAgc3RhdGljIGludCBib2FyZF9pZHggPSAtMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKCiAgICAgICAgaWYoIShwZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRp
b24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAicGRldiAhPSBOVUxMIiwiODEzOXRvby5j
IixfX0ZVTkNUSU9OX18sOTQ4KTsgfTsKICAgICAgICBpZighKGVudCAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImVudCAh
PSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTQ5KTsgfTsKCiAgICAgICAgYm9hcmRf
aWR4Kys7CgoKCgoKICAgICAgICB7CiAgICAgICAgICAgICAgICBzdGF0aWMgaW50IHByaW50ZWRf
dmVyc2lvbjsKICAgICAgICAgICAgICAgIGlmICghcHJpbnRlZF92ZXJzaW9uKyspCiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ayAoIjw2PiIgIjgxMzl0b28iICIgRmFzdCBFdGhlcm5ldCBk
cml2ZXIgIiAiMC45LjE5IiAiXG4iKTsKICAgICAgICB9CgoKICAgICAgICBpID0gcnRsODEzOV9p
bml0X2JvYXJkIChwZGV2LCAmZGV2KTsKICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAg
cmV0dXJuIGk7CiAgICAgICAgfQoKICAgICAgICB0cCA9IGRldi0+cHJpdjsKICAgICAgICBpb2Fk
ZHIgPSB0cC0+bW1pb19hZGRyOwoKICAgICAgICBpZighKGlvYWRkciAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImlvYWRk
ciAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTczKTsgfTsKICAgICAgICBpZigh
KGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMs
JXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sOTc0
KTsgfTsKICAgICAgICBpZighKHRwICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRp
b24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAgIT0gTlVMTCIsIjgxMzl0b28uYyIs
X19GVU5DVElPTl9fLDk3NSk7IH07CgogICAgICAgIGFkZHJfbGVuID0gcmVhZF9lZXByb20gKGlv
YWRkciwgMCwgOCkgPT0gMHg4MTI5ID8gOCA6IDY7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7
IGkrKykKICAgICAgICAgICAgICAgICgodTE2ICopIChkZXYtPmRldl9hZGRyKSlbaV0gPQogICAg
ICAgICAgICAgICAgICAgICgoX191MTYpKHJlYWRfZWVwcm9tIChpb2FkZHIsIGkgKyA3LCBhZGRy
X2xlbikpKTsKCgogICAgICAgIGRldi0+b3BlbiA9IHJ0bDgxMzlfb3BlbjsKICAgICAgICBkZXYt
PmhhcmRfc3RhcnRfeG1pdCA9IHJ0bDgxMzlfc3RhcnRfeG1pdDsKICAgICAgICBkZXYtPnN0b3Ag
PSBydGw4MTM5X2Nsb3NlOwogICAgICAgIGRldi0+Z2V0X3N0YXRzID0gcnRsODEzOV9nZXRfc3Rh
dHM7CiAgICAgICAgZGV2LT5zZXRfbXVsdGljYXN0X2xpc3QgPSBydGw4MTM5X3NldF9yeF9tb2Rl
OwogICAgICAgIGRldi0+ZG9faW9jdGwgPSBuZXRkZXZfaW9jdGw7CiAgICAgICAgZGV2LT50eF90
aW1lb3V0ID0gcnRsODEzOV90eF90aW1lb3V0OwogICAgICAgIGRldi0+d2F0Y2hkb2dfdGltZW8g
PSAoNioxMDApOwogICAgICAgIGRldi0+ZmVhdHVyZXMgfD0gMXw4OwoKICAgICAgICBkZXYtPmly
cSA9IHBkZXYtPmlycTsKCgogICAgICAgIHRwID0gZGV2LT5wcml2OwoKCiAgICAgICAgdHAtPmRy
dl9mbGFncyA9IGJvYXJkX2luZm9bZW50LT5kcml2ZXJfZGF0YV0uaHdfZmxhZ3M7CiAgICAgICAg
dHAtPm1taW9fYWRkciA9IGlvYWRkcjsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAg
aW5pdF93YWl0cXVldWVfaGVhZCAoJnRwLT50aHJfd2FpdCk7CiAgICAgICAgaW5pdF9jb21wbGV0
aW9uICgmdHAtPnRocl9leGl0ZWQpOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICBp
ID0gcmVnaXN0ZXJfbmV0ZGV2IChkZXYpOwogICAgICAgIGlmIChpKSBnb3RvIGVycl9vdXQ7Cgog
ICAgICAgIHBjaV9zZXRfZHJ2ZGF0YSAocGRldiwgZGV2KTsKCiAgICAgICAgcHJpbnRrICgiPDY+
IiAiJXM6ICVzIGF0IDB4JWx4LCAiCiAgICAgICAgICAgICAgICAiJTIuMng6JTIuMng6JTIuMng6
JTIuMng6JTIuMng6JTIuMngsICIKICAgICAgICAgICAgICAgICJJUlEgJWRcbiIsCiAgICAgICAg
ICAgICAgICBkZXYtPm5hbWUsCiAgICAgICAgICAgICAgICBib2FyZF9pbmZvW2VudC0+ZHJpdmVy
X2RhdGFdLm5hbWUsCiAgICAgICAgICAgICAgICBkZXYtPmJhc2VfYWRkciwKICAgICAgICAgICAg
ICAgIGRldi0+ZGV2X2FkZHJbMF0sIGRldi0+ZGV2X2FkZHJbMV0sCiAgICAgICAgICAgICAgICBk
ZXYtPmRldl9hZGRyWzJdLCBkZXYtPmRldl9hZGRyWzNdLAogICAgICAgICAgICAgICAgZGV2LT5k
ZXZfYWRkcls0XSwgZGV2LT5kZXZfYWRkcls1XSwKICAgICAgICAgICAgICAgIGRldi0+aXJxKTsK
CiAgICAgICAgcHJpbnRrICgiPDc+IiAiJXM6ICBJZGVudGlmaWVkIDgxMzkgY2hpcCB0eXBlICcl
cydcbiIsCiAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIHJ0bF9jaGlwX2luZm9bdHAtPmNoaXBz
ZXRdLm5hbWUpOwojIDEwNTAgIjgxMzl0b28uYyIKICAgICAgICAgICAgICAgIHRwLT5waHlzWzBd
ID0gMzI7CgoKICAgICAgICBvcHRpb24gPSAoYm9hcmRfaWR4ID49IDgpID8gMCA6IG1lZGlhW2Jv
YXJkX2lkeF07CiAgICAgICAgaWYgKG9wdGlvbiA+IDApIHsKICAgICAgICAgICAgICAgIHRwLT5m
dWxsX2R1cGxleCA9IChvcHRpb24gJiAweDIxMCkgPyAxIDogMDsKICAgICAgICAgICAgICAgIHRw
LT5kZWZhdWx0X3BvcnQgPSBvcHRpb24gJiAweEZGOwogICAgICAgICAgICAgICAgaWYgKHRwLT5k
ZWZhdWx0X3BvcnQpCiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5tZWRpYWxvY2sgPSAxOwog
ICAgICAgIH0KICAgICAgICBpZiAoYm9hcmRfaWR4IDwgOCAmJiBmdWxsX2R1cGxleFtib2FyZF9p
ZHhdID4gMCkKICAgICAgICAgICAgICAgIHRwLT5mdWxsX2R1cGxleCA9IGZ1bGxfZHVwbGV4W2Jv
YXJkX2lkeF07CiAgICAgICAgaWYgKHRwLT5mdWxsX2R1cGxleCkgewogICAgICAgICAgICAgICAg
cHJpbnRrKCI8Nj4iICIlczogTWVkaWEgdHlwZSBmb3JjZWQgdG8gRnVsbCBEdXBsZXguXG4iLCBk
ZXYtPm5hbWUpOwoKCiAgICAgICAgICAgICAgICB0cC0+ZHVwbGV4X2xvY2sgPSAxOwogICAgICAg
IH0KICAgICAgICBpZiAodHAtPmRlZmF1bHRfcG9ydCkgewogICAgICAgICAgICAgICAgcHJpbnRr
KCI8Nj4iICIgIEZvcmNpbmcgJWRNYnBzICVzLWR1cGxleCBvcGVyYXRpb24uXG4iLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAob3B0aW9uICYgMHgyMCA/IDEwMCA6IDEwKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG9wdGlvbiAmIDB4MTAgPyAiZnVsbCIgOiAiaGFsZiIpKTsKICAg
ICAgICAgICAgICAgIG1kaW9fd3JpdGUoZGV2LCB0cC0+cGh5c1swXSwgMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoKG9wdGlvbiAmIDB4MjApID8gMHgyMDAwIDogMCkgfAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3B0aW9uICYgMHgxMCkgPyAweDAx
MDAgOiAwKSk7CiAgICAgICAgfQoKCiAgICAgICAgaWYgKHJ0bF9jaGlwX2luZm9bdHAtPmNoaXBz
ZXRdLmZsYWdzICYgSGFzSGx0Q2xrKQogICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEhsdENsaykpKSA9ICgoJ0gnKSkpOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsK
CmVycl9vdXQ6CiAgICAgICAgX19ydGw4MTM5X2NsZWFudXBfZGV2IChkZXYpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICByZXR1cm4gaTsKfQoK
CnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQsIF9fc2VjdGlvbl9fKCIudGV4dC5l
eGl0IikpKSBydGw4MTM5X3JlbW92ZV9vbmUgKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQp7CiAgICAg
ICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBjaV9nZXRfZHJ2ZGF0YSAocGRldik7CiAgICAg
ICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnA7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgogICAgICAgIGlmKCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRp
b24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMi
LF9fRlVOQ1RJT05fXywxMDk4KTsgfTsKICAgICAgICBucCA9IGRldi0+cHJpdjsKICAgICAgICBp
ZighKG5wICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywl
cywlcyxsaW5lPSVkXG4iLCAibnAgIT0gTlVMTCIsIjgxMzl0b28uYyIsX19GVU5DVElPTl9fLDEx
MDApOyB9OwoKICAgICAgICB1bnJlZ2lzdGVyX25ldGRldiAoZGV2KTsKCiAgICAgICAgX19ydGw4
MTM5X2NsZWFudXBfZGV2IChkZXYpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KIyAx
MTMyICI4MTM5dG9vLmMiCnN0YXRpYyBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgi
LnRleHQuaW5pdCIpKSkgcmVhZF9lZXByb20gKHZvaWQgKmlvYWRkciwgaW50IGxvY2F0aW9uLCBp
bnQgYWRkcl9sZW4pCnsKICAgICAgICBpbnQgaTsKICAgICAgICB1bnNpZ25lZCByZXR2YWwgPSAw
OwogICAgICAgIHZvaWQgKmVlX2FkZHIgPSBpb2FkZHIgKyBDZmc5MzQ2OwogICAgICAgIGludCBy
ZWFkX2NtZCA9IGxvY2F0aW9uIHwgKCg2KSA8PCBhZGRyX2xlbik7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lk
ICopKGVlX2FkZHIpKSA9ICgoMHg4MCB8IDB4MDgpICYgfjB4MDgpKTsKICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShlZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4
KSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRk
cikpKTsKCgogICAgICAgIGZvciAoaSA9IDQgKyBhZGRyX2xlbjsgaSA+PSAwOyBpLS0pIHsKICAg
ICAgICAgICAgICAgIGludCBkYXRhdmFsID0gKHJlYWRfY21kICYgKDEgPDwgaSkpID8gMHgwMiA6
IDA7CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAq
KShlZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4KSB8IGRhdGF2YWwpKTsKICAgICAgICAgICAgICAg
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsKICAgICAg
ICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIp
KSA9ICgoMHg4MCB8IDB4MDgpIHwgZGF0YXZhbCB8IDB4MDQpKTsKICAgICAgICAgICAgICAgICgq
KHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsKICAgICAgICB9
CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikp
ID0gKCgweDgwIHwgMHgwOCkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikg
KCh2b2lkICopKGVlX2FkZHIpKSk7CgogICAgICAgIGZvciAoaSA9IDE2OyBpID4gMDsgaS0tKSB7
CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShl
ZV9hZGRyKSkgPSAoKDB4ODAgfCAweDA4KSB8IDB4MDQpKTsKICAgICAgICAgICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoZWVfYWRkcikpKTsKICAgICAgICAgICAg
ICAgIHJldHZhbCA9CiAgICAgICAgICAgICAgICAgICAgKHJldHZhbCA8PCAxKSB8ICgoKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpKSAmIDB4MDEpID8gMSA6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICAgICAgICAgICAgICAg
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGVlX2FkZHIpKSA9ICgoMHg4
MCB8IDB4MDgpKSk7CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikg
KCh2b2lkICopKGVlX2FkZHIpKSk7CiAgICAgICAgfQoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5z
aWduZWQgY2hhciAqKSAoKHZvaWQgKikoZWVfYWRkcikpID0gKH4weDA4KSk7CiAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShlZV9hZGRyKSkpOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICByZXR1cm4g
cmV0dmFsOwp9CiMgMTE5MCAiODEzOXRvby5jIgpzdGF0aWMgY2hhciBtaWlfMl84MTM5X21hcFs4
XSA9IHsKICAgICAgICBCYXNpY01vZGVDdHJsLAogICAgICAgIEJhc2ljTW9kZVN0YXR1cywKICAg
ICAgICAwLAogICAgICAgIDAsCiAgICAgICAgTldheUFkdmVydCwKICAgICAgICBOV2F5TFBBUiwK
ICAgICAgICBOV2F5RXhwYW5zaW9uLAogICAgICAgIDAKfTsKIyAxMjIxICI4MTM5dG9vLmMiCnN0
YXRpYyBpbnQgbWRpb19yZWFkIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcGh5X2lkLCBp
bnQgbG9jYXRpb24pCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9IGRldi0+
cHJpdjsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKCgoKCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOwoKICAgICAgICBpZiAocGh5X2lkID4gMzEpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg
ICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb24gPCA4ICYmIG1paV8yXzgxMzlfbWFwW2xvY2F0
aW9uXSA/CiAgICAgICAgICAgICAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikg
KCh2b2lkICopKHRwLT5tbWlvX2FkZHIgKyBtaWlfMl84MTM5X21hcFtsb2NhdGlvbl0pKSkgOiAw
OwogICAgICAgIH0KIyAxMjYxICI4MTM5dG9vLmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgcmV0dXJuIChy
ZXR2YWwgPj4gMSkgJiAweGZmZmY7Cn0KCgpzdGF0aWMgdm9pZCBtZGlvX3dyaXRlIChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB2YWx1ZSkKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRw
ID0gZGV2LT5wcml2OwoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAg
IGlmIChwaHlfaWQgPiAzMSkgewogICAgICAgICAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1t
aW9fYWRkcjsKICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRk
ciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X1VubG9jaykpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChC
YXNpY01vZGVDdHJsKSkpID0gKCh2YWx1ZSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgKCoo
dm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkg
PSAoKENmZzkzNDZfTG9jaykpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYXRpb24g
PCA4ICYmIG1paV8yXzgxMzlfbWFwW2xvY2F0aW9uXSkKICAgICAgICAgICAgICAgICAgICAgICAg
KCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChtaWlfMl84
MTM5X21hcFtsb2NhdGlvbl0pKSkgPSAoKHZhbHVlKSkpOwogICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgIH0KIyAxMzA5ICI4MTM5dG9vLmMiCn0KCgpzdGF0aWMgaW50IHJ0bDgxMzlfb3Bl
biAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZh
dGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIGludCByZXR2YWw7CgoKCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgIHJldHZhbCA9IHJlcXVlc3RfaXJxIChkZXYtPmlycSwg
cnRsODEzOV9pbnRlcnJ1cHQsIDB4MDQwMDAwMDAsIGRldi0+bmFtZSwgZGV2KTsKICAgICAgICBp
ZiAocmV0dmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKICAgICAgICB9Cgog
ICAgICAgIHRwLT50eF9idWZzID0gcGNpX2FsbG9jX2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgx
NTM2ICogNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHAt
PnR4X2J1ZnNfZG1hKTsKICAgICAgICB0cC0+cnhfcmluZyA9IHBjaV9hbGxvY19jb25zaXN0ZW50
KHRwLT5wY2lfZGV2LCAoKDgxOTIgPDwgMikgKyAxNiArIDIwNDgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwLT5yeF9yaW5nX2RtYSk7CiAgICAgICAgaWYg
KHRwLT50eF9idWZzID09ICgodm9pZCAqKTApIHx8IHRwLT5yeF9yaW5nID09ICgodm9pZCAqKTAp
KSB7CiAgICAgICAgICAgICAgICBmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKCiAgICAgICAgICAg
ICAgICBpZiAodHAtPnR4X2J1ZnMpCiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9mcmVlX2Nv
bnNpc3RlbnQodHAtPnBjaV9kZXYsICgxNTM2ICogNCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2J1ZnMsIHRwLT50eF9idWZzX2RtYSk7CiAgICAg
ICAgICAgICAgICBpZiAodHAtPnJ4X3JpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9m
cmVlX2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgoODE5MiA8PCAyKSArIDE2ICsgMjA0OCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnJ4X3JpbmcsIHRw
LT5yeF9yaW5nX2RtYSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIHJldHVybiAtMTI7CgogICAgICAgIH0KCiAg
ICAgICAgdHAtPmZ1bGxfZHVwbGV4ID0gdHAtPmR1cGxleF9sb2NrOwogICAgICAgIHRwLT50eF9m
bGFnID0gKDI1NiA8PCAxMSkgJiAweDAwM2YwMDAwOwogICAgICAgIHRwLT50d2lzdGllID0gMTsK
CiAgICAgICAgcnRsODEzOV9pbml0X3JpbmcgKGRldik7CiAgICAgICAgcnRsODEzOV9od19zdGFy
dCAoZGV2KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgoKCgoKICAgICAgICB0cC0+dGhyX3BpZCA9IGtlcm5lbF90aHJlYWQgKHJ0
bDgxMzlfdGhyZWFkLCBkZXYsIDB4MDAwMDAyMDAgfCAweDAwMDAwNDAwKTsKICAgICAgICBpZiAo
dHAtPnRocl9waWQgPCAwKQogICAgICAgICAgICAgICAgcHJpbnRrICgiPDQ+IiAiJXM6IHVuYWJs
ZSB0byBzdGFydCBrZXJuZWwgdGhyZWFkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYt
Pm5hbWUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAg
IHJldHVybiAwOwp9CgoKc3RhdGljIHZvaWQgcnRsX2NoZWNrX21lZGlhIChzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnBy
aXY7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYgKHRwLT5waHlzWzBd
ID49IDApIHsKICAgICAgICAgICAgICAgIHUxNiBtaWlfcmVnNSA9IG1kaW9fcmVhZChkZXYsIHRw
LT5waHlzWzBdLCA1KTsKICAgICAgICAgICAgICAgIGlmIChtaWlfcmVnNSA9PSAweGZmZmYpCiAg
ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKChtaWlfcmVn
NSAmIDB4MDEwMCkgPT0gMHgwMTAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8
IChtaWlfcmVnNSAmIDB4MDBDMCkgPT0gMHgwMDQwKQogICAgICAgICAgICAgICAgICAgICAgICB0
cC0+ZnVsbF9kdXBsZXggPSAxOwoKICAgICAgICAgICAgICAgIHByaW50ayAoIjw2PiIiJXM6IFNl
dHRpbmcgJXMlcy1kdXBsZXggYmFzZWQgb24iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiBhdXRvLW5lZ290aWF0ZWQgcGFydG5lciBhYmlsaXR5ICU0LjR4LlxuIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBtaWlfcmVnNSA9PSAwID8gIiIgOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChtaWlfcmVnNSAmIDB4MDE4MCkgPyAiMTAwbWJwcyAiIDog
IjEwbWJwcyAiLAogICAgICAgICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPyAiZnVs
bCIgOiAiaGFsZiIsIG1paV9yZWc1KTsKICAgICAgICB9Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5
X2h3X3N0YXJ0IChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAgICAgICAgc3RydWN0IHJ0bDgx
MzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gdHAtPm1t
aW9fYWRkcjsKICAgICAgICB1MzIgaTsKICAgICAgICB1OCB0bXA7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CgoKICAgICAgICBpZiAocnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxh
Z3MgJiBIYXNIbHRDbGspCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoSGx0Q2xrKSkpID0gKCgnUicpKSk7CgogICAgICAgIHJ0
bDgxMzlfY2hpcF9yZXNldCAoaW9hZGRyKTsKCgogICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5z
aWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZf
VW5sb2NrKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIg
KyAoQ2ZnOTM0NikpKSk7IH0gd2hpbGUgKDApOwoKICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyAwKSkpID0gKCgoKF9fdTMy
KSgqKHUzMiAqKSAoZGV2LT5kZXZfYWRkciArIDApKSkpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BQzAgKyAwKSkpKTsgfSB3aGlsZSAoMCk7CiAg
ICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChNQUMwICsgNCkpKSA9ICgoKChfX3UzMikoKih1MzIgKikgKGRldi0+ZGV2X2FkZHIgKyA0KSkp
KSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQUMw
ICsgNCkpKSk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hh
ciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4RW5iIHwgQ21kVHhF
bmIpKSk7CgogICAgICAgIHRwLT5yeF9jb25maWcgPSBydGw4MTM5X3J4X2NvbmZpZyB8IEFjY2Vw
dEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5czsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeENvbmZpZykpKSA9ICgodHAtPnJ4X2NvbmZpZykp
KTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFR4Q29uZmlnKSkpID0gKCgoNiA8PCBUeERNQVNoaWZ0KSkpKTsKCiAgICAgICAgdHAtPmN1
cl9yeCA9IDA7CgogICAgICAgIHJ0bF9jaGVja19tZWRpYSAoZGV2KTsKCiAgICAgICAgaWYgKHRw
LT5jaGlwc2V0ID49IENIXzgxMzlCKSB7CgoKCiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1
bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnMykpKSA9ICgoKCoodm9s
YXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENvbmZpZzMpKSkpICYg
fkNmZzNfTWFnaWMpKSk7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZv
aWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfTG9jaykpKTsKCgogICAgICAg
IGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhC
dWYpKSkgPSAoKHRwLT5yeF9yaW5nX2RtYSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICop
ICgodm9pZCAqKShpb2FkZHIgKyAoUnhCdWYpKSkpOyB9IHdoaWxlICgwKTsKCgogICAgICAgIGZv
ciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAgICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4QWRkcjAgKyAoaSAqIDQpKSkpID0g
KCh0cC0+dHhfYnVmc19kbWEgKyAodHAtPnR4X2J1ZltpXSAtIHRwLT50eF9idWZzKSkpKTsgKCoo
dm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhBZGRyMCArIChp
ICogNCkpKSkpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50
ICopICgodm9pZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkgPSAoKDApKSk7CgogICAgICAgIHJ0
bDgxMzlfc2V0X3J4X21vZGUgKGRldik7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBz
aG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE11bHRpSW50cikpKSA9ICgoKCoodm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChNdWx0aUludHIpKSkpICYgTXVs
dGlJbnRyQ2xlYXIpKSk7CgoKICAgICAgICB0bXAgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFy
ICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAgICAgaWYgKCghKHRtcCAm
IENtZFJ4RW5iKSkgfHwgKCEodG1wICYgQ21kVHhFbmIpKSkKICAgICAgICAgICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0g
KChDbWRSeEVuYiB8IENtZFR4RW5iKSkpOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQg
c2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJbnRyTWFzaykpKSA9ICgocnRsODEzOV9pbnRy
X21hc2spKSk7CgogICAgICAgIG5ldGlmX3N0YXJ0X3F1ZXVlIChkZXYpOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICA7Cn0KCgoKc3RhdGljIHZvaWQgcnRsODEzOV9pbml0X3JpbmcgKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9
IGRldi0+cHJpdjsKICAgICAgICBpbnQgaTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK
CiAgICAgICAgdHAtPmN1cl9yeCA9IDA7CiAgICAgICAgdHAtPmN1cl90eCA9IDA7CiAgICAgICAg
dHAtPmRpcnR5X3R4ID0gMDsKCiAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAg
ICAgICAgICAgICAgdHAtPnR4X2luZm9baV0uc2tiID0gKCh2b2lkICopMCk7CiAgICAgICAgICAg
ICAgICB0cC0+dHhfaW5mb1tpXS5tYXBwaW5nID0gMDsKICAgICAgICAgICAgICAgIHRwLT50eF9i
dWZbaV0gPSAmdHAtPnR4X2J1ZnNbaSAqIDE1MzZdOwogICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgOwp9CgoKCnN0YXRpYyBpbnQgbmV4dF90aWNrID0gMyAqIDEwMDsKCgpzdGF0
aWMgaW5saW5lIHZvaWQgcnRsODEzOV90dW5lX3R3aXN0ZXIgKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2
YXRlICp0cCkge30KIyAxNTg3ICI4MTM5dG9vLmMiCnN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTM5
X3RocmVhZF9pdGVyIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqaW9hZGRyKQp7CiAgICAgICAgaW50IG1paV9yZWc1OwoK
ICAgICAgICBtaWlfcmVnNSA9IG1kaW9fcmVhZCAoZGV2LCB0cC0+cGh5c1swXSwgNSk7CgogICAg
ICAgIGlmICghdHAtPmR1cGxleF9sb2NrICYmIG1paV9yZWc1ICE9IDB4ZmZmZikgewogICAgICAg
ICAgICAgICAgaW50IGR1cGxleCA9IChtaWlfcmVnNSAmIDB4MDEwMCkKICAgICAgICAgICAgICAg
ICAgICB8fCAobWlpX3JlZzUgJiAweDAxQzApID09IDB4MDA0MDsKICAgICAgICAgICAgICAgIGlm
ICh0cC0+ZnVsbF9kdXBsZXggIT0gZHVwbGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRw
LT5mdWxsX2R1cGxleCA9IGR1cGxleDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaWlf
cmVnNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayAoIjw2PiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogU2V0dGluZyAlcy1kdXBs
ZXggYmFzZWQgb24gTUlJICMlZCBsaW5rIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiBwYXJ0bmVyIGFiaWxpdHkgb2YgJTQuNHguXG4iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHAtPmZ1bGxfZHVwbGV4ID8gImZ1bGwiIDogImhhbGYiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnBoeXNbMF0sIG1paV9yZWc1
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludGsoIjw2PiIiJXM6IG1lZGlhIGlzIHVuY29ubmVjdGVkLCBsaW5rIGRv
d24sIG9yIGluY29tcGF0aWJsZSBjb25uZWN0aW9uXG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXYtPm5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgoK
CgoKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG5leHRfdGljayA9IDEwMCAq
IDYwOwoKICAgICAgICBydGw4MTM5X3R1bmVfdHdpc3RlciAoZGV2LCB0cCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDsKCgp9CgoKc3RhdGljIGludCBydGw4MTM5X3RocmVhZCAodm9pZCAqZGF0YSkKewog
ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkYXRhOwogICAgICAgIHN0cnVjdCBydGw4
MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91
dDsKCiAgICAgICAgZGFlbW9uaXplICgpOwogICAgICAgIHJlcGFyZW50X3RvX2luaXQoKTsKICAg
ICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9fKCJjbGkiOiA6IDoibWVtb3J5Iik7ICh2b2lk
KSgmZ2V0X2N1cnJlbnQoKS0+c2lnbWFza19sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc2ln
ZW1wdHlzZXQoJmdldF9jdXJyZW50KCktPmJsb2NrZWQpOwogICAgICAgIHJlY2FsY19zaWdwZW5k
aW5nKGdldF9jdXJyZW50KCkpOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9f
IF9fdm9sYXRpbGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAg
c3RybmNweSAoZ2V0X2N1cnJlbnQoKS0+Y29tbSwgZGV2LT5uYW1lLCBzaXplb2YoZ2V0X2N1cnJl
bnQoKS0+Y29tbSkgLSAxKTsKICAgICAgICBnZXRfY3VycmVudCgpLT5jb21tW3NpemVvZihnZXRf
Y3VycmVudCgpLT5jb21tKSAtIDFdID0gJ1wwJzsKCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAg
ICAgICAgICAgIHRpbWVvdXQgPSBuZXh0X3RpY2s7CiAgICAgICAgICAgICAgICBkbyB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVv
dXQgKCZ0cC0+dGhyX3dhaXQsIHRpbWVvdXQpOwogICAgICAgICAgICAgICAgfSB3aGlsZSAoIXNp
Z25hbF9wZW5kaW5nIChnZXRfY3VycmVudCgpKSAmJiAodGltZW91dCA+IDApKTsKCiAgICAgICAg
ICAgICAgICBpZiAoc2lnbmFsX3BlbmRpbmcgKGdldF9jdXJyZW50KCkpKQogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBydG5sX2xvY2sgKCk7CiAgICAgICAg
ICAgICAgICBydGw4MTM5X3RocmVhZF9pdGVyIChkZXYsIHRwLCB0cC0+bW1pb19hZGRyKTsKICAg
ICAgICAgICAgICAgIHJ0bmxfdW5sb2NrICgpOwogICAgICAgIH0KCiAgICAgICAgY29tcGxldGVf
YW5kX2V4aXQgKCZ0cC0+dGhyX2V4aXRlZCwgMCk7Cn0KCgpzdGF0aWMgdm9pZCBydGw4MTM5X3R4
X2NsZWFyIChzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCkKewogICAgICAgIGludCBpOwoKICAg
ICAgICB0cC0+Y3VyX3R4ID0gMDsKICAgICAgICB0cC0+ZGlydHlfdHggPSAwOwoKCiAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgICAgICAgICAgc3RydWN0IHJpbmdfaW5m
byAqcnAgPSAmdHAtPnR4X2luZm9baV07CiAgICAgICAgICAgICAgICBpZiAocnAtPm1hcHBpbmcg
IT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwY2lfdW5tYXBfc2luZ2xlICh0cC0+cGNp
X2RldiwgcnAtPm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJwLT5za2ItPmxlbiwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJwLT5tYXBwaW5n
ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChycC0+c2tiKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGtmcmVlX3NrYihycC0+c2tiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcnAtPnNrYiA9ICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAgICB0
cC0+c3RhdHMudHhfZHJvcHBlZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKCnN0
YXRpYyB2b2lkIHJ0bDgxMzlfdHhfdGltZW91dCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKewog
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAgIHZv
aWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgaW50IGk7CiAgICAgICAgdTggdG1w
ODsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgoKCgoKICAgICAgICB0cC0+eHN0YXRzLnR4X3RpbWVvdXRzKys7CgoK
ICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKENoaXBDbWQpKSkpOwogICAgICAgIGlmICh0bXA4ICYgQ21kVHhFbmIpCiAgICAgICAg
ICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAo
Q2hpcENtZCkpKSA9ICgoQ21kUnhFbmIpKSk7CgoKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJNYXNrKSkpID0gKCgweDAwMDApKSk7
CgoKICAgICAgICBwcmludGsgKCI8Nz4iICIlczogVHggcXVldWUgc3RhcnQgZW50cnkgJWxkICBk
aXJ0eSBlbnRyeSAlbGQuXG4iLAogICAgICAgICAgICAgICAgZGV2LT5uYW1lLCB0cC0+Y3VyX3R4
LCB0cC0+ZGlydHlfdHgpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICAg
ICAgICAgICBwcmludGsgKCI8Nz4iICIlczogIFR4IGRlc2NyaXB0b3IgJWQgaXMgJTguOGx4LiVz
XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIGksICgodW5zaWduZWQgbG9u
ZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhTdGF0
dXMwICsgKGkgKiA0KSkpKSkpLAogICAgICAgICAgICAgICAgICAgICAgICBpID09IHRwLT5kaXJ0
eV90eCAlIDQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKHF1ZXVlIGhlYWQp
IiA6ICIiKTsKCgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv
cGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgKHZvaWQpKCZ0cC0+bG9jayk7
IH0gd2hpbGUgKDApOwogICAgICAgIHJ0bDgxMzlfdHhfY2xlYXIgKHRwKTsKICAgICAgICBkbyB7
IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwi
OiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKCgogICAgICAgIHJ0
bDgxMzlfaHdfc3RhcnQgKGRldik7CgogICAgICAgIG5ldGlmX3dha2VfcXVldWUgKGRldik7Cn0K
CgpzdGF0aWMgaW50IHJ0bDgxMzlfc3RhcnRfeG1pdCAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRw
ID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAg
ICAgdW5zaWduZWQgaW50IGVudHJ5OwogICAgICAgIHUzMiBkbWFfYWRkcjsKCiAgICAgICAgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJsb2NrOyBhZGRsICQwLDAoJSVlc3ApIjogOiA6Im1lbW9yeSIp
OwoKCiAgICAgICAgZW50cnkgPSB0cC0+Y3VyX3R4ICUgNDsKCiAgICAgICAgaWYoISh0cC0+dHhf
aW5mb1tlbnRyeV0uc2tiID09ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFp
bGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAtPnR4X2luZm9bZW50cnldLnNrYiA9PSBOVUxM
IiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTc1Mik7IH07CiAgICAgICAgaWYoISh0cC0+dHhf
aW5mb1tlbnRyeV0ubWFwcGluZyA9PSAwKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAl
cywlcywlcyxsaW5lPSVkXG4iLCAidHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcgPT0gMCIsIjgx
Mzl0b28uYyIsX19GVU5DVElPTl9fLDE3NTMpOyB9OwoKICAgICAgICB0cC0+dHhfaW5mb1tlbnRy
eV0uc2tiID0gc2tiOwogICAgICAgIGlmICggISgodW5zaWduZWQgbG9uZylza2ItPmRhdGEgJiAz
KSAmJiAoKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKikoKHNrYiktPmVuZCkpLT5ucl9mcmFncyA9
PSAwICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+aXBfc3VtbWVkICE9IDEpIHsKICAg
ICAgICAgICAgICAgIHRwLT54c3RhdHMudHhfYnVmX21hcHBlZCsrOwogICAgICAgICAgICAgICAg
dHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcgPQogICAgICAgICAgICAgICAgICAgIHBjaV9tYXBf
c2luZ2xlICh0cC0+cGNpX2Rldiwgc2tiLT5kYXRhLCBza2ItPmxlbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMSk7CiAgICAgICAgICAgICAgICBkbWFfYWRkciA9IHRwLT50
eF9pbmZvW2VudHJ5XS5tYXBwaW5nOwogICAgICAgIH0gZWxzZSBpZiAoc2tiLT5sZW4gPCAxNTM2
KSB7CiAgICAgICAgICAgICAgICBza2JfY29weV9hbmRfY3N1bV9kZXYoc2tiLCB0cC0+dHhfYnVm
W2VudHJ5XSk7CiAgICAgICAgICAgICAgICBkbWFfYWRkciA9IHRwLT50eF9idWZzX2RtYSArICh0
cC0+dHhfYnVmW2VudHJ5XSAtIHRwLT50eF9idWZzKTsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAga2ZyZWVfc2tiKHNrYik7CiAgICAgICAgICAgICAgICB0cC0+dHhfaW5mb1tlbnRy
eV0uc2tiID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9
CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsg
KHZvaWQpKCZ0cC0+bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIGRvIHsgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhBZGRyMCArIChlbnRyeSAqIDQp
KSkpID0gKChkbWFfYWRkcikpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAq
KShpb2FkZHIgKyAoVHhBZGRyMCArIChlbnRyeSAqIDQpKSkpKTsgfSB3aGlsZSAoMCk7CiAgICAg
ICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChU
eFN0YXR1czAgKyAoZW50cnkgKiBzaXplb2YgKHUzMikpKSkpID0gKCh0cC0+dHhfZmxhZyB8IChz
a2ItPmxlbiA+PSA2MCA/IHNrYi0+bGVuIDogNjApKSkpOyAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChUeFN0YXR1czAgKyAoZW50cnkgKiBzaXplb2YgKHUz
MikpKSkpKTsgfSB3aGlsZSAoMCk7CgoKICAgICAgICBkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmll
czsKCiAgICAgICAgdHAtPmN1cl90eCsrOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgi
bG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKICAgICAgICBpZiAoKHRwLT5j
dXJfdHggLSA0KSA9PSB0cC0+ZGlydHlfdHgpCiAgICAgICAgICAgICAgICBuZXRpZl9zdG9wX3F1
ZXVlIChkZXYpOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRp
bGVfXygic3RpIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICByZXR1cm4g
MDsKfQoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfdHhfaW50ZXJydXB0IChzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0bDgxMzlf
cHJpdmF0ZSAqdHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppb2Fk
ZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGRpcnR5X3R4LCB0eF9sZWZ0OwoKICAgICAgICBp
ZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMs
JXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18s
MTc5OCk7IH07CiAgICAgICAgaWYoISh0cCAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNz
ZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwICE9IE5VTEwiLCI4MTM5dG9v
LmMiLF9fRlVOQ1RJT05fXywxNzk5KTsgfTsKICAgICAgICBpZighKGlvYWRkciAhPSAoKHZvaWQg
KikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwg
ImlvYWRkciAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18sMTgwMCk7IH07CgogICAg
ICAgIGRpcnR5X3R4ID0gdHAtPmRpcnR5X3R4OwogICAgICAgIHR4X2xlZnQgPSB0cC0+Y3VyX3R4
IC0gZGlydHlfdHg7CiAgICAgICAgd2hpbGUgKHR4X2xlZnQgPiAwKSB7CiAgICAgICAgICAgICAg
ICBpbnQgZW50cnkgPSBkaXJ0eV90eCAlIDQ7CiAgICAgICAgICAgICAgICBpbnQgdHhzdGF0dXM7
CgogICAgICAgICAgICAgICAgdHhzdGF0dXMgPSAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxl
IHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFR4U3RhdHVzMCArIChlbnRyeSAq
IHNpemVvZiAodTMyKSkpKSkpKTsKCiAgICAgICAgICAgICAgICBpZiAoISh0eHN0YXR1cyAmIChU
eFN0YXRPSyB8IFR4VW5kZXJydW4gfCBUeEFib3J0ZWQpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CgoKICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIChUeE91dE9mV2luZG93
IHwgVHhBYm9ydGVkKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfZXJy
b3JzKys7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eHN0YXR1cyAmIFR4QWJvcnRlZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9hYm9ydGVkX2Vy
cm9ycysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgKCoodm9sYXRpbGUg
dW5zaWduZWQgaW50ICopICgodm9pZCAqKShpb2FkZHIgKyAoVHhDb25maWcpKSkgPSAoKFR4Q2xl
YXJBYnQgfCAoNiA8PCBUeERNQVNoaWZ0KSkpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICop
ICgodm9pZCAqKShpb2FkZHIgKyAoVHhDb25maWcpKSkpOyB9IHdoaWxlICgwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHhzdGF0dXMgJiBU
eENhcnJpZXJMb3N0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50
eF9jYXJyaWVyX2Vycm9ycysrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHhzdGF0dXMg
JiBUeE91dE9mV2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT5zdGF0
cy50eF93aW5kb3dfZXJyb3JzKys7CgoKCgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHR4c3RhdHVzICYgVHhVbmRlcnJ1bikgewoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodHAtPnR4X2ZsYWcgPCAweDAwMzAwMDAwKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2ZsYWcgKz0gMHgwMDAy
MDAwMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfZmlmb19l
cnJvcnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICB0cC0+c3RhdHMuY29sbGlzaW9ucyArPSAodHhzdGF0dXMgPj4gMjQpICYgMTU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy50eF9ieXRlcyArPSB0eHN0YXR1cyAmIDB4N2ZmOwog
ICAgICAgICAgICAgICAgICAgICAgICB0cC0+c3RhdHMudHhfcGFja2V0cysrOwogICAgICAgICAg
ICAgICAgfQoKCiAgICAgICAgICAgICAgICBpZiAodHAtPnR4X2luZm9bZW50cnldLm1hcHBpbmcg
IT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwY2lfdW5tYXBfc2luZ2xlKHRwLT5wY2lf
ZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwLT50eF9pbmZv
W2VudHJ5XS5tYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRwLT50eF9pbmZvW2VudHJ5XS5za2ItPmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2luZm9bZW50
cnldLm1hcHBpbmcgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGV2X2tm
cmVlX3NrYl9pcnEgKHRwLT50eF9pbmZvW2VudHJ5XS5za2IpOwogICAgICAgICAgICAgICAgdHAt
PnR4X2luZm9bZW50cnldLnNrYiA9ICgodm9pZCAqKTApOwoKICAgICAgICAgICAgICAgIGRpcnR5
X3R4Kys7CiAgICAgICAgICAgICAgICB0eF9sZWZ0LS07CiAgICAgICAgfQoKCiAgICAgICAgaWYg
KHRwLT5jdXJfdHggLSBkaXJ0eV90eCA+IDQpIHsKICAgICAgICAgICAgICAgIHByaW50ayAoIjwz
PiIgIiVzOiBPdXQtb2Ytc3luYyBkaXJ0eSBwb2ludGVyLCAlbGQgdnMuICVsZC5cbiIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGRldi0+bmFtZSwgZGlydHlfdHgsIHRwLT5jdXJfdHgpOwogICAg
ICAgICAgICAgICAgZGlydHlfdHggKz0gNDsKICAgICAgICB9CgoKCiAgICAgICAgaWYgKHRwLT5k
aXJ0eV90eCAhPSBkaXJ0eV90eCkgewogICAgICAgICAgICAgICAgdHAtPmRpcnR5X3R4ID0gZGly
dHlfdHg7CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxvY2s7IGFkZGwg
JDAsMCglJWVzcCkiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICBpZiAobmV0aWZfcXVl
dWVfc3RvcHBlZCAoZGV2KSkKICAgICAgICAgICAgICAgICAgICAgICAgbmV0aWZfd2FrZV9xdWV1
ZSAoZGV2KTsKICAgICAgICB9Cn0KCgoKc3RhdGljIHZvaWQgcnRsODEzOV9yeF9lcnIgKHUzMiBy
eF9zdGF0dXMsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCwgdm9pZCAqaW9hZGRyKQp7CiAgICAgICAg
dTggdG1wODsKICAgICAgICBpbnQgdG1wX3dvcms7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDsKCiAgICAgICAgaWYgKHJ4X3N0YXR1cyAmIFJ4VG9vTG9uZykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCiAgICAgICAgfQog
ICAgICAgIHRwLT5zdGF0cy5yeF9lcnJvcnMrKzsKICAgICAgICBpZiAocnhfc3RhdHVzICYgKFJ4
QmFkU3ltYm9sIHwgUnhCYWRBbGlnbikpCiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfZnJh
bWVfZXJyb3JzKys7CiAgICAgICAgaWYgKHJ4X3N0YXR1cyAmIChSeFJ1bnQgfCBSeFRvb0xvbmcp
KQogICAgICAgICAgICAgICAgdHAtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKICAgICAgICBp
ZiAocnhfc3RhdHVzICYgUnhDUkNFcnIpCiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfY3Jj
X2Vycm9ycysrOwoKCgoKICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikg
KCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKChDbWRUeEVuYikpKTsgKCoodm9sYXRp
bGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOyB9IHdo
aWxlICgwKTsKICAgICAgICB0bXBfd29yayA9IDIwMDsKICAgICAgICB3aGlsZSAoLS10bXBfd29y
ayA+IDApIHsKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSA/ICgoMSkg
PiAyMDAwMCA/IF9fYmFkX3VkZWxheSgpIDogX19jb25zdF91ZGVsYXkoKDEpICogMHgxMGM2dWwp
KSA6IF9fdWRlbGF5KDEpKTsKICAgICAgICAgICAgICAgIHRtcDggPSAoKih2b2xhdGlsZSB1bnNp
Z25lZCBjaGFyICopICgodm9pZCAqKShpb2FkZHIgKyAoQ2hpcENtZCkpKSk7CiAgICAgICAgICAg
ICAgICBpZiAoISh0bXA4ICYgQ21kUnhFbmIpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICB9CiAgICAgICAgaWYgKHRtcF93b3JrIDw9IDApCiAgICAgICAgICAgICAgICBw
cmludGsgKCI8ND4iICI4MTM5dG9vIiAiOiAiICJyeCBzdG9wIHdhaXQgdG9vIGxvbmdcbiIpOwoK
ICAgICAgICB0bXBfd29yayA9IDIwMDsKICAgICAgICB3aGlsZSAoLS10bXBfd29yayA+IDApIHsK
ICAgICAgICAgICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4RW5iIHwgQ21kVHhFbmIpKSk7ICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKTsg
fSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgPyAo
KDEpID4gMjAwMDAgPyBfX2JhZF91ZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5KCgxKSAqIDB4MTBj
NnVsKSkgOiBfX3VkZWxheSgxKSk7CiAgICAgICAgICAgICAgICB0bXA4ID0gKCoodm9sYXRpbGUg
dW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkpOwogICAgICAg
ICAgICAgICAgaWYgKCh0bXA4ICYgQ21kUnhFbmIpICYmICh0bXA4ICYgQ21kVHhFbmIpKQogICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHRtcF93b3Jr
IDw9IDApCiAgICAgICAgICAgICAgICBwcmludGsgKCI8ND4iICI4MTM5dG9vIiAiOiAiICJ0eC9y
eCBlbmFibGUgd2FpdCB0b28gbG9uZ1xuIik7CgoKICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2
X1VubG9jaykpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKENmZzkzNDYpKSkpOyB9IHdoaWxlICgwKTsKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWdu
ZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENoaXBDbWQpKSkgPSAoKENtZFJ4RW5iIHwg
Q21kVHhFbmIpKSk7CgogICAgICAgIHRwLT5yeF9jb25maWcgPSBydGw4MTM5X3J4X2NvbmZpZyB8
IEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE15UGh5czsKICAgICAgICAoKih2b2xhdGlsZSB1bnNp
Z25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeENvbmZpZykpKSA9ICgodHAtPnJ4X2Nv
bmZpZykpKTsKICAgICAgICB0cC0+Y3VyX3J4ID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIg
KikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2X0xvY2spKSk7CgoK
ICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRy
ICsgKFJ4QnVmKSkpID0gKCh0cC0+cnhfcmluZ19kbWEpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4QnVmKSkpKTsgfSB3aGlsZSAoMCk7CgoKICAg
ICAgICBfX3NldF9yeF9tb2RlIChkZXYpOwp9CgpzdGF0aWMgdm9pZCBydGw4MTM5X3J4X2ludGVy
cnVwdCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwLCB2b2lkICppb2FkZHIpCnsKICAgICAg
ICB1bnNpZ25lZCBjaGFyICpyeF9yaW5nOwogICAgICAgIHUxNiBjdXJfcng7CgogICAgICAgIGlm
KCEoZGV2ICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywl
cywlcyxsaW5lPSVkXG4iLCAiZGV2ICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywx
OTUwKTsgfTsKICAgICAgICBpZighKHRwICE9ICgodm9pZCAqKTApKSkgeyBwcmludGsoICJBc3Nl
cnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAidHAgIT0gTlVMTCIsIjgxMzl0b28u
YyIsX19GVU5DVElPTl9fLDE5NTEpOyB9OwogICAgICAgIGlmKCEoaW9hZGRyICE9ICgodm9pZCAq
KTApKSkgeyBwcmludGsoICJBc3NlcnRpb24gZmFpbGVkISAlcywlcywlcyxsaW5lPSVkXG4iLCAi
aW9hZGRyICE9IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywxOTUyKTsgfTsKCiAgICAg
ICAgcnhfcmluZyA9IHRwLT5yeF9yaW5nOwogICAgICAgIGN1cl9yeCA9IHRwLT5jdXJfcng7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoK
CgogICAgICAgIHdoaWxlICgoKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKiko
aW9hZGRyICsgKENoaXBDbWQpKSkpICYgUnhCdWZFbXB0eSkgPT0gMCkgewogICAgICAgICAgICAg
ICAgaW50IHJpbmdfb2Zmc2V0ID0gY3VyX3J4ICUgKDgxOTIgPDwgMik7CiAgICAgICAgICAgICAg
ICB1MzIgcnhfc3RhdHVzOwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJ4X3NpemU7CiAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGt0X3NpemU7CiAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2tfYnVmZiAqc2tiOwoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgi
bG9jazsgYWRkbCAkMCwwKCUlZXNwKSI6IDogOiJtZW1vcnkiKTsKCgogICAgICAgICAgICAgICAg
cnhfc3RhdHVzID0gKChfX3UzMikoKih1MzIgKikgKHJ4X3JpbmcgKyByaW5nX29mZnNldCkpKTsK
ICAgICAgICAgICAgICAgIHJ4X3NpemUgPSByeF9zdGF0dXMgPj4gMTY7CiAgICAgICAgICAgICAg
ICBwa3Rfc2l6ZSA9IHJ4X3NpemUgLSA0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA7CiMgMTk5MCAiODEzOXRvby5jIgogICAgICAgICAgICAgICAgaWYgKHJ4X3Np
emUgPT0gMHhmZmYwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRwLT54c3RhdHMuZWFybHlf
cngrKzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgoK
CgoKCiAgICAgICAgICAgICAgICBpZiAoKHJ4X3NpemUgPiAoMTUzNiArNCkpIHx8CiAgICAgICAg
ICAgICAgICAgICAgKHJ4X3NpemUgPCA4KSB8fAogICAgICAgICAgICAgICAgICAgICghKHJ4X3N0
YXR1cyAmIFJ4U3RhdHVzT0spKSkgewogICAgICAgICAgICAgICAgICAgICAgICBydGw4MTM5X3J4
X2VyciAocnhfc3RhdHVzLCBkZXYsIHRwLCBpb2FkZHIpOwogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiMgMjAxNiAiODEzOXRvby5jIgogICAgICAgICAg
ICAgICAgc2tiID0gZGV2X2FsbG9jX3NrYiAocGt0X3NpemUgKyAyKTsKICAgICAgICAgICAgICAg
IGlmIChza2IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2tiLT5kZXYgPSBkZXY7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHNrYl9yZXNlcnZlIChza2IsIDIpOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgZXRoX2NvcHlfYW5kX3N1bSAoc2tiLCAmcnhfcmluZ1tyaW5nX29mZnNldCArIDRd
LCBwa3Rfc2l6ZSwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNrYl9wdXQgKHNrYiwgcGt0
X3NpemUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgc2tiLT5wcm90b2NvbCA9IGV0aF90eXBl
X3RyYW5zIChza2IsIGRldik7CiAgICAgICAgICAgICAgICAgICAgICAgIG5ldGlmX3J4IChza2Ip
OwogICAgICAgICAgICAgICAgICAgICAgICBkZXYtPmxhc3RfcnggPSBqaWZmaWVzOwogICAgICAg
ICAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfYnl0ZXMgKz0gcGt0X3NpemU7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9wYWNrZXRzKys7CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwcmludGsgKCI8ND4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiVzOiBNZW1vcnkgc3F1ZWV6ZSwgZHJvcHBpbmcgcGFja2V0
LlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUpOwogICAgICAg
ICAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfZHJvcHBlZCsrOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGN1cl9yeCA9IChjdXJfcnggKyByeF9zaXplICsgNCArIDMpICYg
fjM7CiAgICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQg
KikoaW9hZGRyICsgKFJ4QnVmUHRyKSkpID0gKChjdXJfcnggLSAxNikpKTsKCiAgICAgICAgICAg
ICAgICBpZiAoKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciAr
IChJbnRyU3RhdHVzKSkpKSAmIFJ4QWNrQml0cykKICAgICAgICAgICAgICAgICAgICAgICAgZG8g
eyAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJT
dGF0dXMpKSkgPSAoKFJ4QWNrQml0cykpKTsgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikg
KCh2b2lkICopKGlvYWRkciArIChJbnRyU3RhdHVzKSkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OwoKCgoKICAgICAgICB0cC0+Y3VyX3J4ID0gY3VyX3J4OwoKICAgICAgICBpZiAoKCgqKHZvbGF0
aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpKSAmIFJ4
QnVmRW1wdHkpICYmCiAgICAgICAgICAgICgoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkpICYgUnhBY2tCaXRzKSkKICAgICAgICAg
ICAgICAgIGRvIHsgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRk
ciArIChJbnRyU3RhdHVzKSkpID0gKChSeEFja0JpdHMpKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0ICopICgodm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSk7IH0gd2hpbGUgKDAp
Owp9CgoKc3RhdGljIHZvaWQgcnRsODEzOV93ZWlyZF9pbnRlcnJ1cHQgKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRs
ODEzOV9wcml2YXRlICp0cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmlvYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0
dXMsIGludCBsaW5rX2NoYW5nZWQpCnsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7CgoKICAgICAgICBpZighKGRldiAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0
aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgImRldiAhPSBOVUxMIiwiODEzOXRvby5j
IixfX0ZVTkNUSU9OX18sMjA2NCk7IH07CiAgICAgICAgaWYoISh0cCAhPSAoKHZvaWQgKikwKSkp
IHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMsJXMsbGluZT0lZFxuIiwgInRwICE9
IE5VTEwiLCI4MTM5dG9vLmMiLF9fRlVOQ1RJT05fXywyMDY1KTsgfTsKICAgICAgICBpZighKGlv
YWRkciAhPSAoKHZvaWQgKikwKSkpIHsgcHJpbnRrKCAiQXNzZXJ0aW9uIGZhaWxlZCEgJXMsJXMs
JXMsbGluZT0lZFxuIiwgImlvYWRkciAhPSBOVUxMIiwiODEzOXRvby5jIixfX0ZVTkNUSU9OX18s
MjA2Nik7IH07CgoKICAgICAgICB0cC0+c3RhdHMucnhfbWlzc2VkX2Vycm9ycyArPSAoKHVuc2ln
bmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsg
KFJ4TWlzc2VkKSkpKSk7CiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9p
ZCAqKShpb2FkZHIgKyAoUnhNaXNzZWQpKSkgPSAoKDApKSk7CgogICAgICAgIGlmICgoc3RhdHVz
ICYgUnhVbmRlcnJ1bikgJiYgbGlua19jaGFuZ2VkICYmCiAgICAgICAgICAgICh0cC0+ZHJ2X2Zs
YWdzICYgSEFTX0xOS19DSE5HKSkgewoKICAgICAgICAgICAgICAgIGludCBscGFyID0gKCoodm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChOV2F5TFBBUikpKSk7
CiAgICAgICAgICAgICAgICBpbnQgZHVwbGV4ID0gKGxwYXIgJiAweDAxMDApIHx8IChscGFyICYg
MHgwMUMwKSA9PSAweDAwNDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0cC0+
ZHVwbGV4X2xvY2s7CiAgICAgICAgICAgICAgICBpZiAodHAtPmZ1bGxfZHVwbGV4ICE9IGR1cGxl
eCkgewogICAgICAgICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPSBkdXBsZXg7CgoK
CgoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0YXR1cyAmPSB+UnhVbmRlcnJ1
bjsKICAgICAgICB9CgoKICAgICAgICBpZiAoc3RhdHVzICYKICAgICAgICAgICAgKFJ4VW5kZXJy
dW4gfCBSeE92ZXJmbG93IHwgUnhFcnIgfCBSeEZJRk9PdmVyKSkKICAgICAgICAgICAgICAgIHRw
LT5zdGF0cy5yeF9lcnJvcnMrKzsKCiAgICAgICAgaWYgKHN0YXR1cyAmIChQQ1NUaW1lb3V0KSkK
ICAgICAgICAgICAgICAgIHRwLT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7CiAgICAgICAgaWYg
KHN0YXR1cyAmIChSeFVuZGVycnVuIHwgUnhGSUZPT3ZlcikpCiAgICAgICAgICAgICAgICB0cC0+
c3RhdHMucnhfZmlmb19lcnJvcnMrKzsKICAgICAgICBpZiAoc3RhdHVzICYgUENJRXJyKSB7CiAg
ICAgICAgICAgICAgICB1MTYgcGNpX2NtZF9zdGF0dXM7CiAgICAgICAgICAgICAgICBwY2lfcmVh
ZF9jb25maWdfd29yZCAodHAtPnBjaV9kZXYsIDB4MDYsICZwY2lfY21kX3N0YXR1cyk7CgogICAg
ICAgICAgICAgICAgcHJpbnRrICgiPDM+IiAiJXM6IFBDSSBCdXMgZXJyb3IgJTQuNHguXG4iLAog
ICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm5hbWUsIHBjaV9jbWRfc3RhdHVzKTsKICAgICAg
ICB9Cn0KCgoKCnN0YXRpYyB2b2lkIHJ0bDgxMzlfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpk
ZXZfaW5zdGFuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHRfcmVn
cyAqcmVncykKewogICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSAoc3RydWN0IG5ldF9k
ZXZpY2UgKikgZGV2X2luc3RhbmNlOwogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRw
ID0gZGV2LT5wcml2OwogICAgICAgIGludCBib2d1c2NudCA9IG1heF9pbnRlcnJ1cHRfd29yazsK
ICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAgIGludCBhY2tzdGF0
LCBzdGF0dXM7CiAgICAgICAgaW50IGxpbmtfY2hhbmdlZCA9IDA7CgogICAgICAgICh2b2lkKSgm
dHAtPmxvY2spOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAoKih2b2xh
dGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJTdGF0dXMpKSkp
OwoKCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDB4RkZGRikKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CgoKCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICYgUnhVbmRlcnJ1
bikKICAgICAgICAgICAgICAgICAgICAgICAgbGlua19jaGFuZ2VkID0gKCoodm9sYXRpbGUgdW5z
aWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChDU0NSKSkpKSAmIENTQ1JfTGlua0No
YW5nZUJpdDsKCgoKCiAgICAgICAgICAgICAgICBhY2tzdGF0ID0gc3RhdHVzICYgflJ4QWNrQml0
czsKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgodm9pZCAq
KShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoYWNrc3RhdCkpKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOwoKCiAgICAgICAgICAgICAgICBpZiAoKHN0YXR1cyAmCiAgICAgICAgICAgICAgICAgICAg
IChQQ0lFcnIgfCBQQ1NUaW1lb3V0IHwgUnhVbmRlcnJ1biB8IFJ4T3ZlcmZsb3cgfAogICAgICAg
ICAgICAgICAgICAgICAgUnhGSUZPT3ZlciB8IFR4RXJyIHwgVHhPSyB8IFJ4RXJyIHwgUnhPSykp
ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGlm
IChuZXRpZl9ydW5uaW5nIChkZXYpICYmIChzdGF0dXMgJiBSeEFja0JpdHMpKQogICAgICAgICAg
ICAgICAgICAgICAgICBydGw4MTM5X3J4X2ludGVycnVwdCAoZGV2LCB0cCwgaW9hZGRyKTsKCgog
ICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAmIChQQ0lFcnIgfCBQQ1NUaW1lb3V0IHwgUnhVbmRl
cnJ1biB8IFJ4T3ZlcmZsb3cgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSeEZJRk9P
dmVyIHwgVHhFcnIgfCBSeEVycikpCiAgICAgICAgICAgICAgICAgICAgICAgIHJ0bDgxMzlfd2Vp
cmRfaW50ZXJydXB0IChkZXYsIHRwLCBpb2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIGxpbmtfY2hhbmdlZCk7CgogICAgICAgICAg
ICAgICAgaWYgKG5ldGlmX3J1bm5pbmcgKGRldikgJiYgKHN0YXR1cyAmIChUeE9LIHwgVHhFcnIp
KSkKICAgICAgICAgICAgICAgICAgICAgICAgcnRsODEzOV90eF9pbnRlcnJ1cHQgKGRldiwgdHAs
IGlvYWRkcik7CgogICAgICAgICAgICAgICAgYm9ndXNjbnQtLTsKICAgICAgICB9IHdoaWxlIChi
b2d1c2NudCA+IDApOwoKICAgICAgICBpZiAoYm9ndXNjbnQgPD0gMCkgewogICAgICAgICAgICAg
ICAgcHJpbnRrICgiPDQ+IiAiJXM6IFRvbyBtdWNoIHdvcmsgYXQgaW50ZXJydXB0LCAiCiAgICAg
ICAgICAgICAgICAgICAgICAgICJJbnRyU3RhdHVzPTB4JTQuNHguXG4iLCBkZXYtPm5hbWUsIHN0
YXR1cyk7CgoKICAgICAgICAgICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopICgo
dm9pZCAqKShpb2FkZHIgKyAoSW50clN0YXR1cykpKSA9ICgoMHhmZmZmKSkpOwogICAgICAgIH0K
CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDsKCn0KCgpzdGF0aWMgaW50IHJ0bDgxMzlfY2xvc2UgKHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICp0cCA9
IGRldi0+cHJpdjsKICAgICAgICB2b2lkICppb2FkZHIgPSB0cC0+bW1pb19hZGRyOwogICAgICAg
IGludCByZXQgPSAwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgIG5ldGlmX3N0b3BfcXVldWUgKGRldik7CgogICAgICAg
IGlmICh0cC0+dGhyX3BpZCA+PSAwKSB7CiAgICAgICAgICAgICAgICByZXQgPSBraWxsX3Byb2Mg
KHRwLT50aHJfcGlkLCAxNSwgMSk7CiAgICAgICAgICAgICAgICBpZiAocmV0KSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ayAoIjwzPiIgIiVzOiB1bmFibGUgdG8gc2lnbmFsIHRocmVh
ZFxuIiwgZGV2LT5uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdhaXRfZm9yX2NvbXBsZXRpb24gKCZ0cC0+
dGhyX2V4aXRlZCk7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA7CgoKICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGls
ZV9fKCJwdXNoZmwgOyBwb3BsICUwIDsgY2xpIjoiPWciIChmbGFncyk6IDoibWVtb3J5Iik7ICh2
b2lkKSgmdHAtPmxvY2spOyB9IHdoaWxlICgwKTsKCgogICAgICAgICgqKHZvbGF0aWxlIHVuc2ln
bmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKCgwKSkpOwoKCiAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgKCh2b2lkICopKGlvYWRkciArIChJ
bnRyTWFzaykpKSA9ICgoMCkpKTsKCgogICAgICAgIHRwLT5zdGF0cy5yeF9taXNzZWRfZXJyb3Jz
ICs9ICgodW5zaWduZWQgbG9uZykgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopICgodm9pZCAq
KShpb2FkZHIgKyAoUnhNaXNzZWQpKSkpKTsKICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgoMCkpKTsKCiAgICAgICAg
ZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBv
cGZsIjogOiJnIiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CgogICAgICAg
IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAgICAgICAgZnJlZV9pcnEg
KGRldi0+aXJxLCBkZXYpOwoKICAgICAgICBydGw4MTM5X3R4X2NsZWFyICh0cCk7CgogICAgICAg
IHBjaV9mcmVlX2NvbnNpc3RlbnQodHAtPnBjaV9kZXYsICgoODE5MiA8PCAyKSArIDE2ICsgMjA0
OCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+cnhfcmluZywgdHAtPnJ4X3Jpbmdf
ZG1hKTsKICAgICAgICBwY2lfZnJlZV9jb25zaXN0ZW50KHRwLT5wY2lfZGV2LCAoMTUzNiAqIDQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnR4X2J1ZnMsIHRwLT50eF9idWZzX2Rt
YSk7CiAgICAgICAgdHAtPnJ4X3JpbmcgPSAoKHZvaWQgKikwKTsKICAgICAgICB0cC0+dHhfYnVm
cyA9ICgodm9pZCAqKTApOwoKCiAgICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZfVW5sb2NrKSkpOwoKICAg
ICAgICBpZiAocnRsX2NoaXBfaW5mb1t0cC0+Y2hpcHNldF0uZmxhZ3MgJiBIYXNIbHRDbGspCiAg
ICAgICAgICAgICAgICAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9pZCAqKShpb2Fk
ZHIgKyAoSGx0Q2xrKSkpID0gKCgnSCcpKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgIDsK
ICAgICAgICByZXR1cm4gMDsKfQoKCgoKCnN0YXRpYyB2b2lkIG5ldGRldl9nZXRfZXNldCAoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfY21kICplc2V0KQp7CiAgICAgICAg
c3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnAgPSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9h
ZGRyID0gbnAtPm1taW9fYWRkcjsKICAgICAgICB1MTYgYWR2ZXJ0OwoKICAgICAgICBlc2V0LT5z
dXBwb3J0ZWQgPSAoMSA8PCAwKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDEpCiAg
ICAgICAgICAgICAgICAgICAgICAgIHwgKDEgPDwgMikKICAgICAgICAgICAgICAgICAgICAgICAg
fCAoMSA8PCAzKQogICAgICAgICAgICAgICAgICAgICAgICB8ICgxIDw8IDYpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKDEgPDwgNyk7CgogICAgICAgIGVzZXQtPmFkdmVydGlzaW5nID0gKDEg
PDwgNykgfCAoMSA8PCA2KTsKICAgICAgICBhZHZlcnQgPSBtZGlvX3JlYWQgKGRldiwgbnAtPnBo
eXNbMF0sIDQpOwogICAgICAgIGlmIChhZHZlcnQgJiAweDAwMjApCiAgICAgICAgICAgICAgICBl
c2V0LT5hZHZlcnRpc2luZyB8PSAoMSA8PCAwKTsKICAgICAgICBpZiAoYWR2ZXJ0ICYgMHgwMDQw
KQogICAgICAgICAgICAgICAgZXNldC0+YWR2ZXJ0aXNpbmcgfD0gKDEgPDwgMSk7CiAgICAgICAg
aWYgKGFkdmVydCAmIDB4MDA4MCkKICAgICAgICAgICAgICAgIGVzZXQtPmFkdmVydGlzaW5nIHw9
ICgxIDw8IDIpOwogICAgICAgIGlmIChhZHZlcnQgJiAweDAxMDApCiAgICAgICAgICAgICAgICBl
c2V0LT5hZHZlcnRpc2luZyB8PSAoMSA8PCAzKTsKCiAgICAgICAgZXNldC0+c3BlZWQgPSAoKCoo
dm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1lZGlhU3RhdHVz
KSkpKSAmIDB4MDgpID8gMTAgOiAxMDA7CgoKCiAgICAgICAgZXNldC0+ZHVwbGV4ID0gbnAtPmZ1
bGxfZHVwbGV4ID8gMHgwMSA6IDB4MDA7CiAgICAgICAgZXNldC0+cG9ydCA9IDB4MDA7CgogICAg
ICAgIGVzZXQtPnBoeV9hZGRyZXNzID0gbnAtPnBoeXNbMF07CiAgICAgICAgZXNldC0+dHJhbnNj
ZWl2ZXIgPSAweDAwOwogICAgICAgIGVzZXQtPmF1dG9uZWcgPSAobWRpb19yZWFkIChkZXYsIG5w
LT5waHlzWzBdLCAwKSAmIDB4MTAwMCkgIT0gMDsKICAgICAgICBlc2V0LT5tYXh0eHBrdCA9IDE7
CiAgICAgICAgZXNldC0+bWF4cnhwa3QgPSAxOwp9CgoKCgoKc3RhdGljIHZvaWQgbmV0ZGV2X2dl
dF93b2wgKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndv
bCkKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKm5wID0gZGV2LT5wcml2OwogICAg
ICAgIHZvaWQgKmlvYWRkciA9IG5wLT5tbWlvX2FkZHI7CgogICAgICAgIGlmIChydGxfY2hpcF9p
bmZvW25wLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKSB7CiAgICAgICAgICAgICAgICB1OCBj
ZmczID0gKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENv
bmZpZzMpKSkpOwogICAgICAgICAgICAgICAgdTggY2ZnNSA9ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDb25maWc1KSkpKTsKCiAgICAgICAgICAgICAg
ICB3b2wtPnN1cHBvcnRlZCA9ICgxIDw8IDApIHwgKDEgPDwgNSkKICAgICAgICAgICAgICAgICAg
ICAgICAgfCAoMSA8PCAxKSB8ICgxIDw8IDIpIHwgKDEgPDwgMyk7CgogICAgICAgICAgICAgICAg
d29sLT53b2xvcHRzID0gMDsKICAgICAgICAgICAgICAgIGlmIChjZmczICYgQ2ZnM19MaW5rVXAp
CiAgICAgICAgICAgICAgICAgICAgICAgIHdvbC0+d29sb3B0cyB8PSAoMSA8PCAwKTsKICAgICAg
ICAgICAgICAgIGlmIChjZmczICYgQ2ZnM19NYWdpYykKICAgICAgICAgICAgICAgICAgICAgICAg
d29sLT53b2xvcHRzIHw9ICgxIDw8IDUpOwoKCiAgICAgICAgICAgICAgICBpZiAoY2ZnNSAmIENm
ZzVfVVdGKQogICAgICAgICAgICAgICAgICAgICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwgMSk7
CiAgICAgICAgICAgICAgICBpZiAoY2ZnNSAmIENmZzVfTVdGKQogICAgICAgICAgICAgICAgICAg
ICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwgMik7CiAgICAgICAgICAgICAgICBpZiAoY2ZnNSAm
IENmZzVfQldGKQogICAgICAgICAgICAgICAgICAgICAgICB3b2wtPndvbG9wdHMgfD0gKDEgPDwg
Myk7CiAgICAgICAgfQp9CgoKCgoKc3RhdGljIGludCBuZXRkZXZfc2V0X3dvbCAoc3RydWN0IG5l
dF9kZXZpY2UgKmRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGV0
aHRvb2xfd29saW5mbyAqd29sKQp7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqbnAg
PSBkZXYtPnByaXY7CiAgICAgICAgdm9pZCAqaW9hZGRyID0gbnAtPm1taW9fYWRkcjsKICAgICAg
ICB1MzIgc3VwcG9ydDsKICAgICAgICB1OCBjZmczLCBjZmc1OwoKICAgICAgICBzdXBwb3J0ID0g
KChydGxfY2hpcF9pbmZvW25wLT5jaGlwc2V0XS5mbGFncyAmIEhhc0xXYWtlKQogICAgICAgICAg
ICAgICAgICAgPyAoKDEgPDwgMCkgfCAoMSA8PCA1KQogICAgICAgICAgICAgICAgICAgICAgfCAo
MSA8PCAxKSB8ICgxIDw8IDIpIHwgKDEgPDwgMykpCiAgICAgICAgICAgICAgICAgICA6IDApOwog
ICAgICAgIGlmICh3b2wtPndvbG9wdHMgJiB+c3VwcG9ydCkKICAgICAgICAgICAgICAgIHJldHVy
biAtMjI7CgogICAgICAgIGNmZzMgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgodm9p
ZCAqKShpb2FkZHIgKyAoQ29uZmlnMykpKSkgJiB+KENmZzNfTGlua1VwIHwgQ2ZnM19NYWdpYyk7
CiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmICgxIDw8IDApKQogICAgICAgICAgICAgICAgY2Zn
MyB8PSBDZmczX0xpbmtVcDsKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEgPDwgNSkpCiAg
ICAgICAgICAgICAgICBjZmczIHw9IENmZzNfTWFnaWM7CiAgICAgICAgKCoodm9sYXRpbGUgdW5z
aWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENmZzkzNDYpKSkgPSAoKENmZzkzNDZf
VW5sb2NrKSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2b2lkICop
KGlvYWRkciArIChDb25maWczKSkpID0gKChjZmczKSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVu
c2lnbmVkIGNoYXIgKikgKCh2b2lkICopKGlvYWRkciArIChDZmc5MzQ2KSkpID0gKChDZmc5MzQ2
X0xvY2spKSk7CgogICAgICAgIGNmZzUgPSAoKih2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICopICgo
dm9pZCAqKShpb2FkZHIgKyAoQ29uZmlnNSkpKSkgJiB+KENmZzVfVVdGIHwgQ2ZnNV9NV0YgfCBD
Zmc1X0JXRik7CgoKCiAgICAgICAgaWYgKHdvbC0+d29sb3B0cyAmICgxIDw8IDEpKQogICAgICAg
ICAgICAgICAgY2ZnNSB8PSBDZmc1X1VXRjsKICAgICAgICBpZiAod29sLT53b2xvcHRzICYgKDEg
PDwgMikpCiAgICAgICAgICAgICAgICBjZmc1IHw9IENmZzVfTVdGOwogICAgICAgIGlmICh3b2wt
PndvbG9wdHMgJiAoMSA8PCAzKSkKICAgICAgICAgICAgICAgIGNmZzUgfD0gQ2ZnNV9CV0Y7CiAg
ICAgICAgKCoodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqKSAoKHZvaWQgKikoaW9hZGRyICsgKENv
bmZpZzUpKSkgPSAoKGNmZzUpKSk7CgogICAgICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGludCBu
ZXRkZXZfZXRodG9vbF9pb2N0bCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqdXNlcmFk
ZHIpCnsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRlICpucCA9IGRldi0+cHJpdjsKICAg
ICAgICB1MzIgZXRoY21kOwoKCgoKICAgICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKHNp
emVvZiAoZXRoY21kKSkgPyBfX2NvbnN0YW50X2NvcHlfZnJvbV91c2VyKCgmZXRoY21kKSwodXNl
cmFkZHIpLChzaXplb2YgKGV0aGNtZCkpKSA6IF9fZ2VuZXJpY19jb3B5X2Zyb21fdXNlcigoJmV0
aGNtZCksKHVzZXJhZGRyKSwoc2l6ZW9mIChldGhjbWQpKSkpKQogICAgICAgICAgICAgICAgcmV0
dXJuIC0xNDsKCiAgICAgICAgc3dpdGNoIChldGhjbWQpIHsKICAgICAgICBjYXNlIDB4MDAwMDAw
MDE6CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0
b29sX2NtZCBlc2V0ID0geyAweDAwMDAwMDAxIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGRv
IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZucC0+
bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZ2V0X2Vz
ZXQgKGRldiwgJmVzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7IGRvIHsgfSB3aGls
ZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAo
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6
ZW9mIChlc2V0KSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigodXNlcmFkZHIpLCgmZXNldCks
KHNpemVvZiAoZXNldCkpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKHVzZXJhZGRyKSwoJmVz
ZXQpLChzaXplb2YgKGVzZXQpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAtMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
ICAgfQoKCgogICAgICAgIGNhc2UgMHgwMDAwMDAwMzoKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBpbmZvID0geyAweDAwMDAw
MDAzIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby5kcml2ZXIsICI4MTM5
dG9vIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby52ZXJzaW9uLCAiMC45
LjE5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweSAoaW5mby5idXNfaW5mbywgbnAt
PnBjaV9kZXYtPnNsb3RfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19idWls
dGluX2NvbnN0YW50X3Aoc2l6ZW9mIChpbmZvKSkgPyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigo
dXNlcmFkZHIpLCgmaW5mbyksKHNpemVvZiAoaW5mbykpKSA6IF9fZ2VuZXJpY19jb3B5X3RvX3Vz
ZXIoKHVzZXJhZGRyKSwoJmluZm8pLChzaXplb2YgKGluZm8pKSkpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAtMTQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBjYXNlIDB4MDAwMDAwMDU6CiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0b29sX3dvbGluZm8g
d29sID0geyAweDAwMDAwMDA1IH07CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsgX19hc21f
XyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgKHZvaWQpKCZucC0+bG9jayk7IH0g
d2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBuZXRkZXZfZ2V0X3dvbCAoZGV2LCAm
d29sKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNt
X18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemVvZiAod29sKSkg
PyBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigodXNlcmFkZHIpLCgmd29sKSwoc2l6ZW9mICh3b2wp
KSkgOiBfX2dlbmVyaWNfY29weV90b191c2VyKCh1c2VyYWRkciksKCZ3b2wpLChzaXplb2YgKHdv
bCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xNDsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGNh
c2UgMHgwMDAwMDAwNjoKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IGV0aHRvb2xfd29saW5mbyB3b2w7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBy
YzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChzaXpl
b2YgKHdvbCkpID8gX19jb25zdGFudF9jb3B5X2Zyb21fdXNlcigoJndvbCksKHVzZXJhZGRyKSwo
c2l6ZW9mICh3b2wpKSkgOiBfX2dlbmVyaWNfY29weV9mcm9tX3VzZXIoKCZ3b2wpLCh1c2VyYWRk
ciksKHNpemVvZiAod29sKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLTE0OwogICAgICAgICAgICAgICAgICAgICAgICBkbyB7IF9fYXNtX18gX192b2xhdGlsZV9f
KCJjbGkiOiA6IDoibWVtb3J5Iik7ICh2b2lkKSgmbnAtPmxvY2spOyB9IHdoaWxlICgwKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmMgPSBuZXRkZXZfc2V0X3dvbCAoZGV2LCAmd29sKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IF9fYXNtX18gX192b2xh
dGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHJldHVybiAtOTU7Cn0KCgpz
dGF0aWMgaW50IG5ldGRldl9pb2N0bCAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlm
cmVxICpycSwgaW50IGNtZCkKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0g
ZGV2LT5wcml2OwogICAgICAgIHN0cnVjdCBtaWlfaW9jdGxfZGF0YSAqZGF0YSA9IChzdHJ1Y3Qg
bWlpX2lvY3RsX2RhdGEgKikmcnEtPmlmcl9pZnJ1LmlmcnVfZGF0YTsKICAgICAgICBpbnQgcmMg
PSAwOwogICAgICAgIGludCBwaHkgPSB0cC0+cGh5c1swXSAmIDB4M2Y7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CgogICAgICAgIGlmIChjbWQgIT0gMHg4OTQ2KSB7CgogICAgICAgICAg
ICAgICAgZGF0YS0+cGh5X2lkICY9IDB4MWY7CiAgICAgICAgICAgICAgICBkYXRhLT5yZWdfbnVt
ICY9IDB4MWY7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKGNtZCkgewogICAgICAgIGNhc2Ug
MHg4OTQ2OgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldGRldl9ldGh0b29sX2lvY3RsKGRldiwg
KHZvaWQgKikgcnEtPmlmcl9pZnJ1LmlmcnVfZGF0YSk7CgogICAgICAgIGNhc2UgMHg4OTQ3Ogog
ICAgICAgIGNhc2UgMHg4OUYwOgogICAgICAgICAgICAgICAgZGF0YS0+cGh5X2lkID0gcGh5OwoK
CiAgICAgICAgY2FzZSAweDg5NDg6CiAgICAgICAgY2FzZSAweDg5RjAgKzE6CiAgICAgICAgICAg
ICAgICBkYXRhLT52YWxfb3V0ID0gbWRpb19yZWFkIChkZXYsIGRhdGEtPnBoeV9pZCwgZGF0YS0+
cmVnX251bSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDg5NDk6CiAg
ICAgICAgY2FzZSAweDg5RjAgKzI6CiAgICAgICAgICAgICAgICBpZiAoIWNhcGFibGUgKDEyKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICByYyA9IC0xOwogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZGF0YS0+cGh5
X2lkID09IHBoeSkgewogICAgICAgICAgICAgICAgICAgICAgICB1MTYgdmFsdWUgPSBkYXRhLT52
YWxfaW47CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGF0YS0+cmVnX251bSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRwLT5tZWRpYWxvY2sgPSAodmFsdWUgJiAweDkwMDApID8gMCA6IDE7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwLT5tZWRpYWxvY2spCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+ZnVsbF9kdXBsZXggPSAodmFsdWUgJiAweDAx
MDApID8gMSA6IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgNDogYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG1kaW9fd3JpdGUoZGV2LCBkYXRh
LT5waHlfaWQsIGRhdGEtPnJlZ19udW0sIGRhdGEtPnZhbF9pbik7CiAgICAgICAgICAgICAgICBi
cmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJjID0gLTk1OwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA7CiAgICAgICAgcmV0dXJuIHJjOwp9CgoKc3RhdGljIHN0cnVjdCBuZXRf
ZGV2aWNlX3N0YXRzICpydGw4MTM5X2dldF9zdGF0cyAoc3RydWN0IG5ldF9kZXZpY2UgKmRldikK
ewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRwID0gZGV2LT5wcml2OwogICAgICAg
IHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn
czsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgICAgaWYgKG5ldGlmX3J1bm5p
bmcoZGV2KSkgewogICAgICAgICAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRw
LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB0cC0+c3RhdHMucnhfbWlzc2Vk
X2Vycm9ycyArPSAoKHVuc2lnbmVkIGxvbmcpICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAo
KHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpKSk7CiAgICAgICAgICAgICAgICAoKih2b2xh
dGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSA9ICgo
MCkpKTsKICAgICAgICAgICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9s
YXRpbGVfXygicHVzaGwgJTAgOyBwb3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7
IH0gd2hpbGUgKDApOwogICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg
ICAgIHJldHVybiAmdHAtPnN0YXRzOwp9CgoKCgpzdGF0aWMgdW5zaWduZWQgY29uc3QgZXRoZXJu
ZXRfcG9seW5vbWlhbCA9IDB4MDRjMTFkYjdVOwpzdGF0aWMgaW5saW5lIHUzMiBldGhlcl9jcmMg
KGludCBsZW5ndGgsIHVuc2lnbmVkIGNoYXIgKmRhdGEpCnsKICAgICAgICBpbnQgY3JjID0gLTE7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAgIHdoaWxlICgtLWxlbmd0aCA+
PSAwKSB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN1cnJlbnRfb2N0ZXQgPSAqZGF0
YSsrOwogICAgICAgICAgICAgICAgaW50IGJpdDsKICAgICAgICAgICAgICAgIGZvciAoYml0ID0g
MDsgYml0IDwgODsgYml0KyssIGN1cnJlbnRfb2N0ZXQgPj49IDEpCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNyYyA9IChjcmMgPDwgMSkgXiAoKGNyYyA8IDApIF4gKGN1cnJlbnRfb2N0ZXQgJiAx
KSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJuZXRfcG9seW5vbWlhbCA6IDAp
OwogICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDsKICAgICAgICByZXR1cm4gY3JjOwp9CgoKc3RhdGljIHZvaWQgX19zZXRfcnhfbW9kZSAoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKewogICAgICAgIHN0cnVjdCBydGw4MTM5X3ByaXZhdGUgKnRw
ID0gZGV2LT5wcml2OwogICAgICAgIHZvaWQgKmlvYWRkciA9IHRwLT5tbWlvX2FkZHI7CiAgICAg
ICAgdTMyIG1jX2ZpbHRlclsyXTsKICAgICAgICBpbnQgaSwgcnhfbW9kZTsKICAgICAgICB1MzIg
dG1wOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgogICAgICAg
IGlmIChkZXYtPmZsYWdzICYgMHgxMDApIHsKCiAgICAgICAgICAgICAgICBwcmludGsgKCI8NT4i
ICIlczogUHJvbWlzY3VvdXMgbW9kZSBlbmFibGVkLlxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2LT5uYW1lKTsKICAgICAgICAgICAgICAgIHJ4X21vZGUgPQogICAgICAgICAgICAgICAg
ICAgIEFjY2VwdEJyb2FkY2FzdCB8IEFjY2VwdE11bHRpY2FzdCB8IEFjY2VwdE15UGh5cyB8CiAg
ICAgICAgICAgICAgICAgICAgQWNjZXB0QWxsUGh5czsKICAgICAgICAgICAgICAgIG1jX2ZpbHRl
clsxXSA9IG1jX2ZpbHRlclswXSA9IDB4ZmZmZmZmZmY7CiAgICAgICAgfSBlbHNlIGlmICgoZGV2
LT5tY19jb3VudCA+IG11bHRpY2FzdF9maWx0ZXJfbGltaXQpCiAgICAgICAgICAgICAgICAgICB8
fCAoZGV2LT5mbGFncyAmIDB4MjAwKSkgewoKICAgICAgICAgICAgICAgIHJ4X21vZGUgPSBBY2Nl
cHRCcm9hZGNhc3QgfCBBY2NlcHRNdWx0aWNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAgICAgICAg
ICAgICBtY19maWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAweGZmZmZmZmZmOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2X21jX2xpc3QgKm1jbGlzdDsKICAgICAg
ICAgICAgICAgIHJ4X21vZGUgPSBBY2NlcHRCcm9hZGNhc3QgfCBBY2NlcHRNeVBoeXM7CiAgICAg
ICAgICAgICAgICBtY19maWx0ZXJbMV0gPSBtY19maWx0ZXJbMF0gPSAwOwogICAgICAgICAgICAg
ICAgZm9yIChpID0gMCwgbWNsaXN0ID0gZGV2LT5tY19saXN0OyBtY2xpc3QgJiYgaSA8IGRldi0+
bWNfY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIGkrKywgbWNsaXN0ID0gbWNsaXN0LT5uZXh0
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBiaXRfbnIgPSBldGhlcl9jcmMoNiwgbWNs
aXN0LT5kbWlfYWRkcikgPj4gMjY7CgogICAgICAgICAgICAgICAgICAgICAgICBtY19maWx0ZXJb
Yml0X25yID4+IDVdIHw9ICgoX191MzIpKDEgPDwgKGJpdF9uciAmIDMxKSkpOwogICAgICAgICAg
ICAgICAgICAgICAgICByeF9tb2RlIHw9IEFjY2VwdE11bHRpY2FzdDsKICAgICAgICAgICAgICAg
IH0KICAgICAgICB9CgoKICAgICAgICB0bXAgPSBydGw4MTM5X3J4X2NvbmZpZyB8IHJ4X21vZGU7
CiAgICAgICAgaWYgKHRwLT5yeF9jb25maWcgIT0gdG1wKSB7CiAgICAgICAgICAgICAgICBkbyB7
ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4Q29uZmln
KSkpID0gKCh0bXApKSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9h
ZGRyICsgKFJ4Q29uZmlnKSkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICB0cC0+cnhf
Y29uZmlnID0gdG1wOwogICAgICAgIH0KICAgICAgICBkbyB7ICgqKHZvbGF0aWxlIHVuc2lnbmVk
IGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BUjAgKyAwKSkpID0gKChtY19maWx0ZXJbMF0p
KSk7ICgqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKE1BUjAg
KyAwKSkpKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgZG8geyAoKih2b2xhdGlsZSB1bnNpZ25lZCBp
bnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsgNCkpKSA9ICgobWNfZmlsdGVyWzFdKSkp
OyAoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChNQVIwICsg
NCkpKSk7IH0gd2hpbGUgKDApOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgpzdGF0
aWMgdm9pZCBydGw4MTM5X3NldF9yeF9tb2RlIChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQp7CiAg
ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcnRsODEzOV9wcml2YXRl
ICp0cCA9IGRldi0+cHJpdjsKCiAgICAgICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVz
aGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRw
LT5sb2NrKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgX19zZXRfcnhfbW9kZShkZXYpOwogICAgICAg
IGRvIHsgZG8geyB9IHdoaWxlKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGwgJTAgOyBw
b3BmbCI6IDoiZyIgKGZsYWdzKToibWVtb3J5IiwgImNjIik7IH0gd2hpbGUgKDApOwp9CgoKCnN0
YXRpYyBpbnQgcnRsODEzOV9zdXNwZW5kIChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdTMyIHN0YXRl
KQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBjaV9nZXRfZHJ2ZGF0YSAocGRl
dik7CiAgICAgICAgc3RydWN0IHJ0bDgxMzlfcHJpdmF0ZSAqdHAgPSBkZXYtPnByaXY7CiAgICAg
ICAgdm9pZCAqaW9hZGRyID0gdHAtPm1taW9fYWRkcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGZs
YWdzOwoKICAgICAgICBpZiAoIW5ldGlmX3J1bm5pbmcgKGRldikpCiAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKCiAgICAgICAgbmV0aWZfZGV2aWNlX2RldGFjaCAoZGV2KTsKCiAgICAgICAgZG8g
eyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1nIiAoZmxh
Z3MpOiA6Im1lbW9yeSIpOyAodm9pZCkoJnRwLT5sb2NrKTsgfSB3aGlsZSAoMCk7CgoKICAgICAg
ICAoKih2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKEludHJN
YXNrKSkpID0gKCgwKSkpOwogICAgICAgICgqKHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgKikgKCh2
b2lkICopKGlvYWRkciArIChDaGlwQ21kKSkpID0gKCgwKSkpOwoKCiAgICAgICAgdHAtPnN0YXRz
LnJ4X21pc3NlZF9lcnJvcnMgKz0gKCh1bnNpZ25lZCBsb25nKSAoKih2b2xhdGlsZSB1bnNpZ25l
ZCBpbnQgKikgKCh2b2lkICopKGlvYWRkciArIChSeE1pc3NlZCkpKSkpOwogICAgICAgICgqKHZv
bGF0aWxlIHVuc2lnbmVkIGludCAqKSAoKHZvaWQgKikoaW9hZGRyICsgKFJ4TWlzc2VkKSkpID0g
KCgwKSkpOwoKICAgICAgICBkbyB7IGRvIHsgfSB3aGlsZSgwKTsgX19hc21fXyBfX3ZvbGF0aWxl
X18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1lbW9yeSIsICJjYyIpOyB9IHdo
aWxlICgwKTsKICAgICAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyBpbnQgcnRsODEzOV9yZXN1bWUg
KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQp7CiAgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9
IHBjaV9nZXRfZHJ2ZGF0YSAocGRldik7CgogICAgICAgIGlmICghbmV0aWZfcnVubmluZyAoZGV2
KSkKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIG5ldGlmX2RldmljZV9hdHRhY2gg
KGRldik7CiAgICAgICAgcnRsODEzOV9od19zdGFydCAoZGV2KTsKICAgICAgICByZXR1cm4gMDsK
fQoKCgoKc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHJ0bDgxMzlfcGNpX2RyaXZlciA9IHsKICAg
ICAgICBuYW1lOiAiODEzOXRvbyIsCiAgICAgICAgaWRfdGFibGU6IHJ0bDgxMzlfcGNpX3RibCwK
ICAgICAgICBwcm9iZTogcnRsODEzOV9pbml0X29uZSwKICAgICAgICByZW1vdmU6IHJ0bDgxMzlf
cmVtb3ZlX29uZSwKCiAgICAgICAgc3VzcGVuZDogcnRsODEzOV9zdXNwZW5kLAogICAgICAgIHJl
c3VtZTogcnRsODEzOV9yZXN1bWUsCgp9OwoKCnN0YXRpYyBpbnQgX19hdHRyaWJ1dGVfXyAoKF9f
c2VjdGlvbl9fICgiLnRleHQuaW5pdCIpKSkgcnRsODEzOV9pbml0X21vZHVsZSAodm9pZCkKewoK
CgoKCgoKICAgICAgICByZXR1cm4gcGNpX21vZHVsZV9pbml0ICgmcnRsODEzOV9wY2lfZHJpdmVy
KTsKfQoKCnN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQsIF9fc2VjdGlvbl9fKCIu
dGV4dC5leGl0IikpKSBydGw4MTM5X2NsZWFudXBfbW9kdWxlICh2b2lkKQp7CiAgICAgICAgcGNp
X3VucmVnaXN0ZXJfZHJpdmVyICgmcnRsODEzOV9wY2lfZHJpdmVyKTsKfQoKCnN0YXRpYyBpbml0
Y2FsbF90IF9faW5pdGNhbGxfcnRsODEzOV9pbml0X21vZHVsZSBfX2F0dHJpYnV0ZV9fICgodW51
c2VkLF9fc2VjdGlvbl9fICgiLmluaXRjYWxsLmluaXQiKSkpID0gcnRsODEzOV9pbml0X21vZHVs
ZTs7CnN0YXRpYyBleGl0Y2FsbF90IF9fZXhpdGNhbGxfcnRsODEzOV9jbGVhbnVwX21vZHVsZSBf
X2F0dHJpYnV0ZV9fICgodW51c2VkLF9fc2VjdGlvbl9fICgiLmV4aXRjYWxsLmV4aXQiKSkpID0g
cnRsODEzOV9jbGVhbnVwX21vZHVsZTs7Cg==


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