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


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

c/2420: Internal compiler error received compiling mkreiserfs.c



>Number:         2420
>Category:       c
>Synopsis:       Internal compiler error received compiling mkreiserfs.c
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 28 13:46:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Mark Post
>Release:        gcc version 2.95.2 19991024 (release)
>Organization:
>Environment:
Slackware-like Linux/390 on IBM mainframe.
>Description:
Was attempting to compile reiserfs_utils-3.6.25-fsck-3.x.0b,
and the compile died on the first module, mkreiserfs.c.

The generated command to perform the compilation was:
cc -Wall -c -O2 -g -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/include -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/../../../include/linux -I- mkreiserfs.c

The output from the command was:
mkreiserfs.c: In function `make_root_block':
mkreiserfs.c:261: invalid lvalue in assignment
mkreiserfs.c:261: invalid lvalue in assignment
mkreiserfs.c:277: Internal compiler error in `emit_no_conflict_block', at optabs.c:2798
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
make[2]: *** [mkreiserfs.o] Error 1
make[2]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/mkreiserfs'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils'
make: *** [all] Error 2

It fails consistently.
>How-To-Repeat:
Unpack the source code to /tmp
cd reiserfs_utils-3.6.25-fsck-3.x.0b/
make

That should do it (if you have an S/390).
>Fix:

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

IyAxICJta3JlaXNlcmZzLmMiCiAKCgoKIAoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxMzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NiAi
L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoK
IyA3MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAi
L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI1MCAiL3Vzci9pbmNs
dWRlL2ZlYXR1cmVzLmgiIDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
Mjc4ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKIAoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs
YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS92
YS1zMzkwLmgiIDEgMwogCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3ZhX2xpc3RfdGFnIHsKICBpbnQg
Z3ByOyAgICAgICAgICAgICAgICAgICAgICAgCgoKICBpbnQgZnByOyAgICAgICAgICAgICAgICAg
ICAgICAgCgoKICBjaGFyICppbmNvbWluZ19hcmdzX2FyZWE7ICAgICAgCgogIGNoYXIgKnJlZ19z
YXZlX2FyZWE7ICAgICAgICAgICAKCn0gX19nbnVjX3ZhX2xpc3RbMV0sKl9fZ251Y192YV9saXN0
cDsKCgogCgojIDE2NiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1
LjIvaW5jbHVkZS92YS1zMzkwLmgiIDMKCgojIDY2ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xh
Y2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI3ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAz
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyAzOCAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr
d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj
a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj
a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2Mt
bGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK
IAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyOSAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2No
YXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9f
IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OCAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMwoKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9f
aW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90
ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsJCSAKdHlwZWRlZiBfX3Vf
aW50IF9fdWlkX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2dpZF90OwkJIAp0eXBlZGVmIF9fdV9s
b25nIF9faW5vX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsJCSAKdHlwZWRlZiBfX3Vf
aW50IF9fbmxpbmtfdDsgCQkgCnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsJCSAKdHlwZWRlZiBf
X3F1YWRfdCBfX2xvZmZfdDsJCSAKdHlwZWRlZiBpbnQgX19waWRfdDsJCQkgCnR5cGVkZWYgaW50
IF9fc3NpemVfdDsJCQkgCnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CQkgCnR5cGVkZWYgX191
X3F1YWRfdCBfX3JsaW02NF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwkJCSAKCnR5cGVk
ZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CQkJCSAKCiAKdHlw
ZWRlZiBpbnQgX19kYWRkcl90OwkJCSAKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwkJIAoMCnR5cGVk
ZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZmRf
bWFzazsKCiAKCgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgIAoKCgoKCiAgICBfX2Zk
X21hc2sgX19mZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOwoKCiAg
fSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IGludCBfX2lwY19waWRfdDsKCgogCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsK
dHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19mc2Js
a2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191
X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7Cgog
CnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRf
dDsKCiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBpbnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgogCgoKCgoK
IyA0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBf
SU9fRklMRSBGSUxFOwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MSAzCiAKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGli
L2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsKCgoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25m
aWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS92YS1zMzkwLmgiIDEgMwogCgojIDE4ICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3ZhLXMzOTAuaCIgMwoKCiAKCiMgMTY2
ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3Zh
LXMzOTAuaCIgMwoKCiMgNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDIgMwoKIyAxMjcgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKCgoK
CgoKCgoKCiMgMjEzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz
CgoKCgoKCgojIDY3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoK
CgojIDk4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1
Y3QgX0lPX0ZJTEU7CgogCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3Ry
dWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lP
X0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCgoKICAgCiAg
IAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIqIF9JT19yZWFkX2VuZDsJIAogIGNoYXIq
IF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIAogIGNoYXIqIF9JT193
cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgCiAgY2hhciogX0lPX2J1Zl9iYXNl
OwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsgIAog
IGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3Ry
dWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg
aW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgICBfb2xkX29mZnNldDsgIAoK
CiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVf
b2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoK
CgoKCgoKCiAgX19vZmY2NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07
CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3Bs
dXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0
cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVmIF9fc3NpemVf
dCBfX2lvX3JlYWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwKCQkJCSAgICAg
ICBzaXplX3QgX19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0
ZV9mbiAgKHZvaWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgICAgICBz
aXplX3QgX19uKSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAgKHZvaWQgKiAg
X19jb29raWUsIF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRlZiBpbnQgX19p
b19jbG9zZV9mbiAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKIyAzMTEgIi91c3IvaW5jbHVkZS9s
aWJpby5oIiAzCgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikgICAg
OwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBpbnQgX19vdmVy
ZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBf
SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1dGMgIChpbnQg
X19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUg
Kl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICAgIDsK
CmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAgICA7CgogCgoK
CmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiB2b2lk
IF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxv
Y2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNj
YW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJ
ICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRlcm4gaW50IF9J
T192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0
LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVfdCAgIF9JT19w
YWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4gc2l6ZV90ICAg
X0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoKZXh0ZXJuIF9f
b2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAsIGludCwgaW50
KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxFICosIF9fb2Zm
NjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lP
X0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIAoK
dHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoK
CgoKCgoKIAoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTEwICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiAKZXh0ZXJuIEZJTEUgKnN0ZGluOwkJIApleHRlcm4gRklM
RSAqc3Rkb3V0OwkJIApleHRlcm4gRklMRSAqc3RkZXJyOwkJIAogCgoKCgoKIApleHRlcm4gaW50
IHJlbW92ZSAgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgICAgOwogCmV4dGVybiBpbnQgcmVu
YW1lICAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgICAgOwoKCiAK
CmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gY2hh
ciAqdG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAo
Y2hhciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25z
dCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQg
ZmNsb3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUg
Kl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9f
c3RyZWFtKSAgICA7CgoKCgoKCgoKCiAKZXh0ZXJuIEZJTEUgKmZvcGVuICAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcykgICAgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZmlsZW5hbWUsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAoJ
CQkgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiMgMjAxICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9fZmQsIF9f
Y29uc3QgY2hhciAqX19tb2RlcykgICAgOwoKCiMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgogCgpleHRlcm4gdm9pZCBzZXRidWYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBj
aGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CiAKCgpleHRlcm4gaW50IHNldHZidWYgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgaW50IF9f
bW9kZXMsIHNpemVfdCBfX24pICAgIDsKCgogCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6
ZV90IF9fc2l6ZSkgICAgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmICAoRklMRSAqX19zdHJl
YW0pICAgIDsKCgoKIApleHRlcm4gaW50IGZwcmludGYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl
eHRlcm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSAgICA7CiAKZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwoKIApleHRlcm4gaW50
IHZmcHJpbnRmICAoRklMRSAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVy
biBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJIF9f
Z251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJ
CSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CgoKIApleHRlcm4gaW50IHNucHJpbnRmICAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0
ZXJuIGludCB2c25wcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVu
LAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgIF9fZ251Y192
YV9saXN0ICBfX2FyZykgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDApKSk7CgoKIyAzMDYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKZXh0
ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQlfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQgc2NhbmYgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg
c3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCiMgMzM0ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4g
aW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gaW50IGdldGNoYXIgICh2
b2lkKSAgICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3Ry
ZWFtKSAgICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAgKHZvaWQpICAgIDsKCgoKIApl
eHRlcm4gaW50IGZnZXRjX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRl
cm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKZXh0ZXJuIGludCBw
dXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCiAKZXh0ZXJuIGludCBwdXRjaGFy
ICAoaW50IF9fYykgICAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkICAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQg
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr
ZWQgIChpbnQgX19jKSAgICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFt
KSAgICA7CgogCmV4dGVybiBpbnQgcHV0dyAgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgICA7
CgoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRzICAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s
CgkJCSBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCgpleHRlcm4gY2hh
ciAqZ2V0cyAgKGNoYXIgKl9fcykgICAgOwoKCiMgNDI0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgogCmV4dGVybiBpbnQgZnB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJ
CSAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCmV4dGVybiBp
bnQgcHV0cyAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIApleHRlcm4gaW50IHVuZ2V0YyAg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkICAo
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICBzaXplX3QgX19uLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIHNpemVfdCBmd3JpdGUgIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFk
X3VubG9ja2VkICAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAg
IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICAgIDsKZXh0ZXJuIHNpemVf
dCBmd3JpdGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsCgkJCQkg
ICAgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmc2VlayAgKEZJTEUgKl9fc3RyZWFtLCBsb25n
IGludCBfX29mZiwgaW50IF9fd2hlbmNlKSAgICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAo
RklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVh
bSkgICAgOwoKIAoKCgoKIAoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJ
CSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICAgIDsKIApleHRlcm4gaW50IGZzZXRwb3MgIChG
SUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgICA7CiMgNTIzICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCiMgNTMzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0
ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgICAgOwogCmV4dGVybiBpbnQgZmVv
ZiAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIGludCBmZXJyb3IgIChGSUxFICpfX3N0
cmVhbSkgICAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgIChGSUxFICpfX3N0
cmVhbSkgICAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAg
OwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK
ZXh0ZXJuIHZvaWQgcGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCiAKCgpleHRlcm4g
aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107
CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK
ZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKCgoKCiAK
ZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hh
ciAqX19tb2RlcykgICAgOwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAg
ICA7CgoKCgogCmV4dGVybiBjaGFyICpjdGVybWlkICAoY2hhciAqX19zKSAgICA7CgoKCgoKCgoK
CiMgNjA3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9j
a2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUg
IChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUg
Kl9fc3RyZWFtKSAgICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp
by5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIF9faW5saW5l
ICBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFf
bGlzdCAgX19hcmcpICAKewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0ICwgX19mbXQsIF9fYXJn
KTsKfQoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjaGFyICh2b2lkKSAgCnsKICByZXR1cm4g
X0lPX2dldGMgKHN0ZGluICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjX3VubG9j
a2VkIChGSUxFICpfX2ZwKSAgCnsKICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0g
KCBfX2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNo
YXIgKikgKCBfX2ZwICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCiAKZXh0ZXJuIF9faW5saW5lICBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgIAp7CiAgcmV0dXJuICgoIHN0ZGluICApLT5fSU9f
cmVhZF9wdHIgPj0gKCBzdGRpbiAgKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICAp
IDogKih1bnNpZ25lZCBjaGFyICopICggc3RkaW4gICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoK
IApleHRlcm4gX19pbmxpbmUgIGludApwdXRjaGFyIChpbnQgX19jKSAgCnsKICByZXR1cm4gX0lP
X3B1dGMgKF9fYywgc3Rkb3V0ICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggIF9fc3Ry
ZWFtICktPl9JT193cml0ZV9wdHIgPj0gKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93ICggIF9fc3RyZWFtICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2ln
bmVkIGNoYXIpICgqKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsK
fQoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+
PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0g
LCAodW5zaWduZWQgY2hhcikgKCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVh
bSApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgogCmV4dGVybiBfX2lubGluZSAg
aW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpICAKewogIHJldHVybiAoKCggIHN0ZG91dCAg
KS0+X0lPX3dyaXRlX3B0ciA+PSAoICBzdGRvdXQgICktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoICBzdGRvdXQgICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNo
YXIpICgqKCAgc3Rkb3V0ICApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgoKCgoK
CgoKCgoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgIAp7CiAgcmV0dXJuICgoKCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDEwICkgIT0gMCkg
Owp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pICAKewogIHJldHVybiAoKCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsK
fQoKCgoKCgogCgojIDE0OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiMgMTY1ICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCgoKIAoKIyA2MzUgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKIAoKCgoKIyAxMSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAoKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vz
ci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKIApleHRl
cm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAgX19j
b25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKIAoKZXh0ZXJu
IHZvaWQgKiAgbWVtbW92ZSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19zcmMs
CgkJCSAgICAgc2l6ZV90IF9fbikgICAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAo
dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBz
aXplX3QgX19uKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3Ms
IGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBtZW1jbXAgIChfX2NvbnN0
IHZvaWQgKiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsCgkJCXNpemVfdCBfX24pICAgIDsK
CiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9fYywg
c2l6ZV90IF9fbikgICAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgICAg
OwogCmV4dGVybiBjaGFyICpzdHJuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRl
cm4gY2hhciAqc3RyY2F0ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRlcm4gaW50IHN0cm5jbXAgIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl
eHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z
MikgICAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0
LAoJCQkgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7
CgojIDEwNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIGNoYXIgKl9fc3Ry
ZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAgKF9fY29u
c3QgY2hhciAqX19zKSAgICA7CgoKIAoKCgoKCgojIDE0MyAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAzCgoKIApleHRlcm4gY2hhciAqc3RyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
ICAgIDsKIApleHRlcm4gY2hhciAqc3RycmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSAgICA7CgoKCgoKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAg
KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJu
IGNoYXIgKnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2Vw
dCkgICAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ss
IF9fY29uc3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3Ry
dG9rICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0
cmljdCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3Ry
dG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoK
CiMgMjAzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApleHRlcm4gc2l6ZV90IHN0cmxl
biAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RyZXJy
b3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChp
bnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJuIGNo
YXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs
ZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBf
X24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2
b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAgKHZv
aWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29uc3Qg
dm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl
eHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoKIApl
eHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsKCiAK
CmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7
CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
IAoKCgoKCgoKCgogCmV4dGVybiBpbnQgX19zdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKZXh0ZXJuIGludCBzdHJjYXNlY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGludCBzdHJu
Y2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAg
IHNpemVfdCBfX24pICAgIDsKCgojIDI3NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAK
CmV4dGVybiBjaGFyICpzdHJzZXAgIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCgkJCSAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pICAgIDsKCgojIDMxOSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCiMg
MTQyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMwoKIyAzNDMgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiMgMSAi
L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwogCgoKCgoKCiMgMzUg
Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKIyA1MiAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCgoKCgoKCgoKCgojIDg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgojIDE4MCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCgoKCgoKCgogCgoKCgoKCgoKCiAKCiMgMzY3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDMKCgoKIAoKZXh0ZXJuIHZvaWQgKiAgX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKiAg
X19zLCBpbnQgX19jKTsKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBj
aGFyICpfX3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAoJCQkJ
ICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lICBj
aGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKCQlfX3VpbnQxNl90IF9fc3JjMF8y
LCBfX3VpbnQxNl90IF9fc3JjNF8yLAoJCV9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3Qg
X19zcmM0XzQsCgkJc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBf
X3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpf
X3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikK
ICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAg
ICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19z
cmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAg
ICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNh
c2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAg
YnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDUzMSAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKCgogCiMgNjk3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKIAoKIyA3MTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgoKCgoKCgoKCiAK
CiMgNzMzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgogCgoKIyA3
NjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgNzkzICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgojIDgxNSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz
CgoKIyA4NDAgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgogCgoKCgoKCgoKCgoK
IAoKCgojIDg3MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxp
bmUgIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0
KTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f
cywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQog
ICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSAgc2l6
ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAoJCQkJ
ICAgICBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSAgc2l6ZV90Cl9fc3RyY3Nwbl9j
MiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewog
IHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0g
J1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0g
X19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBf
X2lubGluZSAgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19y
ZWplY3QxLAoJCQkJICAgICBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpOwpleHRlcm4g
X19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9f
cmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCgkgICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWpl
Y3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1
cm4gX19yZXN1bHQ7Cn0KCgoKIAoKCgojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAzCgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBf
X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAoJCQkJICAgIGNo
YXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICByZWdpc3Rl
ciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl
dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzMgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Miwg
Y2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2Fj
Y2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKCSB8
fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgoKCiAKCgojIDk4MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpl
eHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19hY2NlcHQxLAoJCQkJICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSAg
Y2hhciAqCl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBj
aGFyIF9fYWNjZXB0MikKewogICAKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19h
Y2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0g
J1wwJyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj
ZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2Fj
Y2VwdDEsIGNoYXIgX19hY2NlcHQyLAoJICAgICAgY2hhciBfX2FjY2VwdDMpCnsKICAgCiAgd2hp
bGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0
MgoJICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1ww
JyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKCgogCgoKIyAxMDIw
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIyAxMDMyICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0
cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJu
IF9faW5saW5lICBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBj
aGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICop
MCkgKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19f
czsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKSA7CiAgZWxz
ZQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAm
JiAqX19zICE9IF9fc2VwKQoJKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCgkqX19uZXh0
cCA9IF9fczsKICAgICAgZWxzZQoJewoJICAqX19zID0gJ1wwJzsKCSAgKl9fbmV4dHAgPSBfX3Mg
KyAxOwoJfQogICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKCgojIDEwOTMgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNl
cF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgY2hhciAq
Cl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICBy
ZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQog
ICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgX19yZWplY3QgKSAmJiAoICBfX3JlamVjdCApID09
ICdcMCcJPyAoY2hhciAqKSBfX3Jhd21lbWNociAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApCTog
c3RyY2hyICggX19yZXR2YWwgLCAgIF9fcmVqZWN0ICkpKSApICE9ICgodm9pZCAqKTApICkKICAg
ICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApIDsK
ICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfMmMg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lu
bGluZSAgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh
ciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9f
cmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwog
IGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAg
ICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19j
cCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3Jl
amVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyKQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0g
J1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7CgkgICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVs
c2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRl
cm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIsCgkJCQkgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGlu
ZSAgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf
X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq
X19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICByZXR1cm4gKl9fcyA9ICgo
dm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0g
X19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysg
PSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFs
OwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9f
Y3AgIT0gX19yZWplY3QyCgkgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKCSsrX19jcDsKICAg
ICAgaWYgKCpfX2NwICE9ICdcMCcpCgl7CgkgICpfX3MgPSBfX2NwOwoJICAqKCpfX3MpKysgPSAn
XDAnOwoJfQogICAgICBlbHNlCgkqX19zID0gKCh2b2lkICopMCkgOwogICAgfQogIHJldHVybiBf
X3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19z
LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJz
ZXBfZyAoY2hhciAqKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNo
YXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAg
cmV0dXJuICgodm9pZCAqKTApIDsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fCSh7IGNoYXIg
X19hMCwgX19hMSwgX19hMjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fcmVqZWN0ICkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgIF9fcmVqZWN0ICApICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCAgIF9fcmVqZWN0ICApID09IDEpIAk/ICgoX19hMCA9ICgoX19jb25zdCBj
aGFyICAqKSAoICBfX3JlamVjdCApKVswXSwgX19hMCA9PSAnXDAnKQk/ICgodm9pZCAqKTApIAk6
ICgoX19hMSA9ICgoX19jb25zdCBjaGFyICopICggIF9fcmVqZWN0ICkpWzFdLCBfX2ExID09ICdc
MCcpCT8gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fYTAgKSAmJiAo
ICBfX2EwICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggIF9fcmV0dmFsICAsICAg
X19hMCApCTogc3RyY2hyICggIF9fcmV0dmFsICAsICAgX19hMCApKSkgCTogKChfX2EyID0gKChf
X2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlbMl0sIF9fYTIgPT0gJ1wwJykJPyBfX3N0cnBi
cmtfYzIgKCBfX3JldHZhbCAsIF9fYTAsIF9fYTEpCTogKCgoX19jb25zdCBjaGFyICopICggIF9f
cmVqZWN0ICkpWzNdID09ICdcMCcJPyBfX3N0cnBicmtfYzMgKCBfX3JldHZhbCAsIF9fYTAsIF9f
YTEsIF9fYTIpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKSkpKQk6IHN0cnBi
cmsgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSk7IH0pICkgIT0gKCh2b2lkICopMCkgKQogICAg
KigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCgoKCgogCgoKCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAK
CgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu
Y2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoK
CiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
IyAyNzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKIAoKIyA0NjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAq
ICBtYWxsb2MgIChzaXplX3QgX19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAo
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCgoKCiAKCgojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoK
CgoKCgojIDM0NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiAKCgojIDEyICJta3Jl
aXNlcmZzLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgogCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKCiAKCgoKIAoKCgog
CgoKCiAKCgoKCgoKIAoKCiAKCgoKCiAKCgogCgoKIAoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK
IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCiAKCiAK
CgogCgogCgoKIAoKCiAKCgoKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgog
CgoKCgogCgoKCgoKIAoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv
dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxp
bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3Iv
bGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiMgMjMxICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgoKCgoKIAoKCgoKCgogCmV4dGVybiBpbnQgYWNj
ZXNzICAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpICAgIDsKCgoKCgoKCgogCgoK
CgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBfX29mZl90IF9fbHNlZWsgIChpbnQgX19mZCwgX19v
ZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSAgICA7CgpleHRlcm4gX19vZmZfdCBsc2VlayAg
KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICAgIDsKIyAyODkgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgoKCiAKZXh0ZXJuIGludCBfX2Nsb3NlICAoaW50IF9f
ZmQpICAgIDsKZXh0ZXJuIGludCBjbG9zZSAgKGludCBfX2ZkKSAgICA7CgogCgpleHRlcm4gc3Np
emVfdCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykg
ICAgOwpleHRlcm4gc3NpemVfdCAgcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXpl
X3QgX19uYnl0ZXMpICAgIDsKCiAKZXh0ZXJuIHNzaXplX3QgIF9fd3JpdGUgIChpbnQgX19mZCwg
X19jb25zdCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBzc2l6ZV90ICB3
cml0ZSAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICAgIDsK
CiMgMzQzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgogCgoKCmV4dGVybiBpbnQgcGlwZSAg
KGludCBfX3BpcGVkZXNbMl0pICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFy
bSAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVk
IGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCgogCgoKCmV4dGVybiB1
bnNpZ25lZCBpbnQgdWFsYXJtICAodW5zaWduZWQgaW50IF9fdmFsdWUsCgkJCQkgdW5zaWduZWQg
aW50IF9faW50ZXJ2YWwpICAgIDsKCiAKCmV4dGVybiB2b2lkIHVzbGVlcCAgKHVuc2lnbmVkIGlu
dCBfX3VzZWNvbmRzKSAgICA7CgoKCiAKCmV4dGVybiBpbnQgcGF1c2UgICh2b2lkKSAgICA7CgoK
IApleHRlcm4gaW50IGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l
ciwKCQkgICAgICAgX19naWRfdCBfX2dyb3VwKSAgICA7CgoKIApleHRlcm4gaW50IGZjaG93biAg
KGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgICAgOwoKCiAKCmV4
dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwK
CQkJX19naWRfdCBfX2dyb3VwKSAgICA7CgoKCiAKZXh0ZXJuIGludCBjaGRpciAgKF9fY29uc3Qg
Y2hhciAqX19wYXRoKSAgICA7CgoKIApleHRlcm4gaW50IGZjaGRpciAgKGludCBfX2ZkKSAgICA7
CgoKIAoKCgoKCgpleHRlcm4gY2hhciAqZ2V0Y3dkICAoY2hhciAqX19idWYsIHNpemVfdCBfX3Np
emUpICAgIDsKCgoKCgoKCgoKIAoKCmV4dGVybiBjaGFyICpnZXR3ZCAgKGNoYXIgKl9fYnVmKSAg
ICA7CgoKCiAKZXh0ZXJuIGludCBkdXAgIChpbnQgX19mZCkgICAgOwoKIApleHRlcm4gaW50IGR1
cDIgIChpbnQgX19mZCwgaW50IF9fZmQyKSAgICA7CgogCmV4dGVybiBjaGFyICoqX19lbnZpcm9u
OwoKCgoKCiAKCmV4dGVybiBpbnQgZXhlY3ZlICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIg
Kl9fY29uc3QgX19hcmd2W10sCgkJCWNoYXIgKl9fY29uc3QgX19lbnZwW10pICAgIDsKCgoKCgoK
CgoKCiAKZXh0ZXJuIGludCBleGVjdiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdKSAgICA7CgogCgpleHRlcm4gaW50IGV4ZWNsZSAgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICAgIDsKCiAKCmV4dGVybiBpbnQgZXhl
Y2wgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7
CgogCgpleHRlcm4gaW50IGV4ZWN2cCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdKSAgICA7CgogCgoKZXh0ZXJuIGludCBleGVjbHAgIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7CgoKCiAKZXh0ZXJuIGludCBu
aWNlICAoaW50IF9faW5jKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgX2V4aXQgIChpbnQgX19zdGF0
dXMpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmVudW0K
ICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lO
UFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVf
QlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBf
UENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9Q
Q19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTCgog
IH07CgogCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAg
IF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgog
ICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05U
Uk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAg
X1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNI
Uk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVE
X0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1M
T0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwK
CiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19T
SEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19B
SU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJf
TUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1ND
X1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9T
Q19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVV
RV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgogICAgIAoKICAgIF9TQ19CQ19CQVNFX01BWCwK
CiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFYLAoKICAgIF9TQ19CQ19T
VFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAgIF9TQ19FUVVJVl9DTEFT
U19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAgIF9T
Q19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZF
UlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18yX0ZP
UlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBfU0Nf
Ml9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1NDX1BJ
SV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAgICBf
U0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q
SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND
X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s
CgogICAgX1NDX1RfSU9WX01BWCwKCgogICAgIAogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RI
UkVBRF9TQUZFX0ZVTkNUSU9OUywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0Nf
R0VUUFdfUl9TSVpFX01BWCwKCiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9O
QU1FX01BWCwKCiAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0Nf
VEhSRUFEX0tFWVNfTUFYLAoKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJF
QURfVEhSRUFEU19NQVgsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0Nf
VEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElO
RywKCiAgICBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJP
VEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NP
UlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywK
CiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNT
X01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9O
LAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9Q
RU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoK
ICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcy
LAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hB
Ul9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5U
X01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRf
QklULAoKICAgIF9TQ19NQl9MRU5fTUFYLAoKICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVf
TUFYLAoKICAgIF9TQ19TQ0hBUl9NQVgsCgogICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hS
VF9NQVgsCgogICAgX1NDX1NIUlRfTUlOLAoKICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJ
TlRfTUFYLAoKICAgIF9TQ19VTE9OR19NQVgsCgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1ND
X05MX0FSR01BWCwKCiAgICBfU0NfTkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAg
IF9TQ19OTF9OTUFYLAoKICAgIF9TQ19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoK
ICAgIF9TQ19YQlM1X0lMUDMyX09GRjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAg
ICBfU0NfWEJTNV9MUDY0X09GRjY0LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAg
X1NDX1hPUEVOX0xFR0FDWSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVO
X1JFQUxUSU1FX1RIUkVBRFMKCiAgfTsKCgoKCiAKZW51bQogIHsKICAgIF9DU19QQVRICQkJIAoK
CiMgMzcwICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgoKIyA0MDYgIi91c3IvaW5j
bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDMKCiAgfTsKCiMgNDk3ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDIgMwoKCiAKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mICAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIGludCBfX25hbWUpICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAgKGludCBf
X2ZkLCBpbnQgX19uYW1lKSAgICA7CgogCmV4dGVybiBsb25nIGludCBzeXNjb25mICAoaW50IF9f
bmFtZSkgICAgOwoKCiAKZXh0ZXJuIHNpemVfdCBjb25mc3RyICAoaW50IF9fbmFtZSwgY2hhciAq
X19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAo
dm9pZCkgICAgOwpleHRlcm4gX19waWRfdCBnZXRwaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBf
X3BpZF90IGdldHBwaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAg
KHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAgKF9fcGlkX3Qg
X19waWQpICAgIDsKCgoKCgogCgoKZXh0ZXJuIGludCBfX3NldHBnaWQgIChfX3BpZF90IF9fcGlk
LCBfX3BpZF90IF9fcGdpZCkgICAgOwpleHRlcm4gaW50IHNldHBnaWQgIChfX3BpZF90IF9fcGlk
LCBfX3BpZF90IF9fcGdpZCkgICAgOwoKCiAKCgoKCgoKCgoKCgogCgpleHRlcm4gaW50IHNldHBn
cnAgICh2b2lkKSAgICA7CgojIDU3MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCiAKCgpl
eHRlcm4gX19waWRfdCBzZXRzaWQgICh2b2lkKSAgICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3Qg
Z2V0dWlkICAodm9pZCkgICAgOwoKIApleHRlcm4gX191aWRfdCBnZXRldWlkICAodm9pZCkgICAg
OwoKIApleHRlcm4gX19naWRfdCBnZXRnaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBfX2dpZF90
IGdldGVnaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIGludCBnZXRncm91cHMgIChpbnQgX19z
aXplLCBfX2dpZF90IF9fbGlzdFtdKSAgICA7CgoKCgoKCiAKCgoKZXh0ZXJuIGludCBzZXR1aWQg
IChfX3VpZF90IF9fdWlkKSAgICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3Qg
X19ydWlkLCBfX3VpZF90IF9fZXVpZCkgICAgOwoKCgogCmV4dGVybiBpbnQgc2V0ZXVpZCAgKF9f
dWlkX3QgX191aWQpICAgIDsKCgogCgoKCmV4dGVybiBpbnQgc2V0Z2lkICAoX19naWRfdCBfX2dp
ZCkgICAgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwgX19naWRf
dCBfX2VnaWQpICAgIDsKCgoKIApleHRlcm4gaW50IHNldGVnaWQgIChfX2dpZF90IF9fZ2lkKSAg
ICA7CgoKCiAKCgpleHRlcm4gX19waWRfdCBfX2ZvcmsgICh2b2lkKSAgICA7CmV4dGVybiBfX3Bp
ZF90IGZvcmsgICh2b2lkKSAgICA7CgoKIAoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAgKHZvaWQp
ICAgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgIChpbnQgX19mZCkgICAgOwoKIAoKZXh0
ZXJuIGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl
bikgICAgOwoKIAoKZXh0ZXJuIGludCBpc2F0dHkgIChpbnQgX19mZCkgICAgOwoKCiAKCmV4dGVy
biBpbnQgdHR5c2xvdCAgKHZvaWQpICAgIDsKCgoKIApleHRlcm4gaW50IGxpbmsgIChfX2NvbnN0
IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7CgoKIApleHRlcm4gaW50IHN5
bWxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7Cgog
CgoKZXh0ZXJuIGludCByZWFkbGluayAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1
Ziwgc2l6ZV90IF9fbGVuKSAgICA7CgoKIApleHRlcm4gaW50IHVubGluayAgKF9fY29uc3QgY2hh
ciAqX19uYW1lKSAgICA7CgogCmV4dGVybiBpbnQgcm1kaXIgIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCkgICAgOwoKCiAKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwICAoaW50IF9fZmQpICAgIDsKCiAK
ZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpICAgIDsK
CgogCmV4dGVybiBjaGFyICpnZXRsb2dpbiAgKHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBp
bnQgc2V0bG9naW4gIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgoKIAoKCgojIDEgIi91
c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgpleHRlcm4gY2hhciAqb3B0YXJnOwoKIAoKCgoKCgoKCgoKCmV4dGVybiBpbnQgb3B0aW5k
OwoKIAoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKIAoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDEwMiAi
L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29u
c3QgY2hhciAqX19zaG9ydG9wdHMpOwoKCgoKIyAxNTEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg
MwoKIyAxNjAgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKCgoKCgogCgoKCiMgNzI0ICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgogCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAg
KGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CgogCgpleHRlcm4gaW50IHNldGhvc3Ru
YW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgICAgOwoKIAoKZXh0ZXJu
IGludCBzZXRob3N0aWQgIChsb25nIGludCBfX2lkKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgZ2V0
ZG9tYWlubmFtZSAgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg
c2V0ZG9tYWlubmFtZSAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pICAgIDsK
CgogCmV4dGVybiBpbnQgZnN5bmMgIChpbnQgX19mZCkgICAgOwoKCiAKCgpleHRlcm4gaW50IHZo
YW5ndXAgICh2b2lkKSAgICA7CgogCmV4dGVybiBpbnQgcmV2b2tlICAoX19jb25zdCBjaGFyICpf
X2ZpbGUpICAgIDsKCgogCgoKCgpleHRlcm4gaW50IHByb2ZpbCAgKHVuc2lnbmVkIHNob3J0IGlu
dCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAoJCQlzaXplX3QgX19vZmZzZXQsIHVu
c2lnbmVkIGludCBfX3NjYWxlKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgYWNjdCAgKF9fY29uc3Qg
Y2hhciAqX19uYW1lKSAgICA7CgogCgpleHRlcm4gaW50IGNocm9vdCAgKF9fY29uc3QgY2hhciAq
X19wYXRoKSAgICA7CgoKIApleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICAodm9pZCkgICAgOwpl
eHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgICh2b2lkKSAgICA7ICAKZXh0ZXJuIHZvaWQgc2V0dXNl
cnNoZWxsICAodm9pZCkgICAgOyAgCgoKIAoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgIChfX2NvbnN0
IGNoYXIgKl9fcHJvbXB0KSAgICA7CgogCgoKZXh0ZXJuIGludCBkYWVtb24gIChpbnQgX19ub2No
ZGlyLCBpbnQgX19ub2Nsb3NlKSAgICA7CgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3Rp
ZCAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIGludCBzeW5jICAodm9pZCkgICAgOwoKCiAKCmV4dGVy
biBpbnQgX19nZXRwYWdlc2l6ZSAgKHZvaWQpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCiAKCmV4dGVybiBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmZfdCBfX2xlbmd0aCkgICAgOwojIDgyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CgoKCgoKIApleHRlcm4gaW50IF9fZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n
dGgpICAgIDsKCmV4dGVybiBpbnQgZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n
dGgpICAgIDsKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAgKHZvaWQp
ICAgIDsKCgoKCgoKIAoKZXh0ZXJuIGludCBicmsgICh2b2lkICogIF9fYWRkcikgICAgOwoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3
YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMg
NjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CgoKCgoKCgoKCiAKCgoKCiAK
CiAKCiMgMTkwICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL3Mz
OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91
c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDg2MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCgoKCmV4dGVybiB2b2lkICogIF9f
c2JyayAgKHB0cmRpZmZfdCBfX2RlbHRhKSAgICA7CmV4dGVybiB2b2lkICogIHNicmsgIChwdHJk
aWZmX3QgX19kZWx0YSkgICAgOwoKCgoKIAoKCgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgc3lzY2Fs
bCAgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgICAgOwoKCgoKCiAKCgoKIAoKCgoKCgoKCgpleHRl
cm4gaW50IGxvY2tmICAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmZfdCBfX2xlbikgICAgOwoK
CgoKCgoKCgoKCgoKCiMgOTQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKZXh0ZXJu
IGludCBmZGF0YXN5bmMgIChpbnQgX19maWxkZXMpICAgIDsKCgoKIAoKIyA5NjggIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwoKCgogCgojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK
CgogCgogCgoKCgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgICh2b2lkICgqX19wcmVw
YXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCXZvaWQgKCpfX2No
aWxkKSAodm9pZCkpICAgIDsKCgogCgoKIyAxMyAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoK
CgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5
cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19x
dWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lk
X3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg
aW5vX3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dp
ZF90IGdpZF90OwoKCgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxp
bmtfdCBubGlua190OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgoKCgoK
dHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoK
dHlwZWRlZiBfX2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiAKdHlwZWRl
ZiBfX3RpbWVfdCB0aW1lX3Q7CgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoK
IyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMjIgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51
eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj
Yy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK
CgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt
c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg
Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlw
ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
OwoKCiAKCiMgMTU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBl
ZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0
eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkp
IDsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9f
ICkpKSA7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9f
RElfXyApKSkgOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
ICBfX0RJX18gKSkpIDsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX3dvcmRfXykpKTsKCgogCgoKCgoKCiAKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNp
Z25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKSBdOwogIH0gX19zaWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc2lnc2V0LmgiIDMKCiMgMzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAK
CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCgpz
dHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25nIGludCB0
dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz
OCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZh
bDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0
OwoKIAoKCgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19u
ZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2Zk
X3NldCAqX19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpl
eHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9f
ZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1l
dmFsICpfX3RpbWVvdXQpICAgIDsKCiMgOTEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK
CgogCgoKIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk3ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2Nu
dF90OwkgIAp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2Zp
bGNudF90IGZzZmlsY250X3Q7ICAKCgoKCgoKCgoKCgoKIAoKCiMgMTQgIm1rcmVpc2VyZnMuYyIg
MgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgojIDc4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoKCgoKCgoKCgogCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgogCgoKCgoKc3RydWN0IHN0YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsJCQkgCiAg
ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3RfaW5vOwkJCSAKCgoK
ICAgIF9fbW9kZV90IHN0X21vZGU7CQkJIAogICAgX19ubGlua190IHN0X25saW5rOwkJCSAKICAg
IF9fdWlkX3Qgc3RfdWlkOwkJCSAKICAgIF9fZ2lkX3Qgc3RfZ2lkOwkJCSAKICAgIF9fZGV2X3Qg
c3RfcmRldjsJCQkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qg
c3Rfc2l6ZTsJCQkgCgoKCiAgICB1bnNpZ25lZCBsb25nIGludCBzdF9ibGtzaXplOwkgCgoKICAg
IF9fYmxrY250X3Qgc3RfYmxvY2tzOwkJIAoKCgogICAgX190aW1lX3Qgc3RfYXRpbWU7CQkJIAog
ICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CQkJ
IAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7
CQkJIAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgdW5zaWduZWQgbG9uZyBp
bnQgX191bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwogIH07CgojIDk5
ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKCiAK
CgoKCgoKCiMgODkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgogCmV4dGVybiBpbnQgc3RhdCAgKF9fY29uc3QgY2hh
ciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICAgIDsKCiAKCmV4dGVybiBpbnQgZnN0YXQg
IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CiMgMTk1ICIvdXNyL2luY2x1ZGUv
c3lzL3N0YXQuaCIgMwoKCgoKCgoKCiAKCmV4dGVybiBpbnQgbHN0YXQgIChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CgoKCgoKCgoKCgoKCgogCgoKZXh0ZXJu
IGludCBjaG1vZCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpICAgIDsK
CiAKCmV4dGVybiBpbnQgZmNobW9kICAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgICAgOwoK
CgogCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgIChfX21vZGVfdCBfX21hc2spICAgIDsKCgoKCgoK
CiAKZXh0ZXJuIGludCBta2RpciAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21v
ZGUpICAgIDsKCiAKCgoKZXh0ZXJuIGludCBta25vZCAgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ
CSAgICAgICBfX21vZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpICAgIDsKCgoKIApleHRlcm4g
aW50IG1rZmlmbyAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpICAgIDsK
DAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgX19meHN0YXQgIChpbnQgX192
ZXIsIGludCBfX2ZpbGRlcywKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgICAgOwpleHRl
cm4gaW50IF9feHN0YXQgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJ
IHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSAgICA7CmV4dGVybiBpbnQgX19seHN0YXQgIChpbnQg
X192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0
X2J1ZikgICAgOwojIDI5OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCgoKCgoKCmV4
dGVybiBpbnQgX194bWtub2QgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLAoJCQkg
IF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCAqX19kZXYpICAgIDsKCgogCgpleHRlcm4gX19pbmxp
bmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCgkJCSAgICBzdHJ1Y3Qgc3RhdCAq
X19zdGF0YnVmKSAgCnsKICByZXR1cm4gX194c3RhdCAoMyAgLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ
CQkgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpICAKewogIHJldHVybiBfX2x4c3RhdCAoMyAg
LCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSAgCnsKICByZXR1cm4gX19meHN0YXQgKDMg
ICwgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBta25vZCAoX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKCQkJICAgICBfX2Rldl90IF9fZGV2
KSAgCnsKICByZXR1cm4gX194bWtub2QgKDEgICwgX19wYXRoLCBfX21vZGUsICZfX2Rldik7Cn0K
CgojIDM2MSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCiAKCgoKIyAxNSAibWtyZWlz
ZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCiAKCgoKCgoKCgogCiAKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKIAoKCgoKIAoKCgoK
CgoKc3RydWN0IGZsb2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsJIAogICAgc2hvcnQgaW50
IGxfd2hlbmNlOwkgCgogICAgX19vZmZfdCBsX3N0YXJ0OwkgCiAgICBfX29mZl90IGxfbGVuOwkg
CgoKCgogICAgX19waWRfdCBsX3BpZDsJIAogIH07CgojIDEzMSAiL3Vzci9pbmNsdWRlL2JpdHMv
ZmNudGwuaCIgMwoKCiAKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCgoK
IAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCmV4dGVybiBpbnQgX19mY250bCAgKGludCBfX2Zk
LCBpbnQgX19jbWQsIC4uLikgICAgOwpleHRlcm4gaW50IGZjbnRsICAoaW50IF9fZmQsIGludCBf
X2NtZCwgLi4uKSAgICA7CgogCgoKZXh0ZXJuIGludCBfX29wZW4gIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgICAgOwoKZXh0ZXJuIGludCBvcGVuICAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pICAgIDsKCgoKCgoKCgoKCgoKIAoKCgpleHRl
cm4gaW50IGNyZWF0ICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgICAg
OwoKCgoKCgoKCgoKCgojIDEyNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKCgogCgoKIyAxNiAi
bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoj
IDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAx
ODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs
YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzOCAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1l
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgogCgoKCgoKIAoKCgoKCgoK
IyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiAKIyA0MiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsK
CgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKCgogCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsJCQkgCiAgaW50IHRtX21p
bjsJCQkgCiAgaW50IHRtX2hvdXI7CQkJIAogIGludCB0bV9tZGF5OwkJCSAKICBpbnQgdG1fbW9u
OwkJCSAKICBpbnQgdG1feWVhcjsJCQkgCiAgaW50IHRtX3dkYXk7CQkJIAogIGludCB0bV95ZGF5
OwkJCSAKICBpbnQgdG1faXNkc3Q7CQkJIAoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwkJIAogIF9f
Y29uc3QgY2hhciAqdG1fem9uZTsJIAoKCgoKfTsKCgogCgpleHRlcm4gY2xvY2tfdCBjbG9jayAg
KHZvaWQpICAgIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lICAodGltZV90ICpfX3RpbWVyKSAgICA7
CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGlt
ZTApICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuIHRpbWVf
dCBta3RpbWUgIChzdHJ1Y3QgdG0gKl9fdHApICAgIDsKCgogCgoKZXh0ZXJuIHNpemVfdCBzdHJm
dGltZSAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAoJCQkgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0
bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdt
dGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRt
ICpsb2NhbHRpbWUgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgICAgOwoKCiAKCmV4dGVybiBz
dHJ1Y3QgdG0gKl9fZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVy
LAoJCQkJICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKZXh0ZXJuIHN0cnVjdCB0
bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJIHN0
cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh
bHRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCQkgICAgc3Ry
dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKCgogCgpleHRlcm4gY2hhciAqYXNjdGltZSAg
KF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9f
Y29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgoKIAoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVf
ciAgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCgkJCSAgICAgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZikgICAgOwoKIApleHRlcm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGlt
ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCSAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICAg
IDsKCgoKIApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0
OwkJIApleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoKCgogCmV4dGVybiBjaGFyICp0em5h
bWVbMl07CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICAgIDsKCgoKZXh0ZXJuIGludCBk
YXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgogCgpleHRlcm4gaW50IHN0aW1l
ICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgICAgOwoKCgogCgoKCgoKCiAKCgogCmV4dGVybiB0
aW1lX3QgdGltZWdtICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiB0aW1lX3QgdGlt
ZWxvY2FsICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50
IF9feWVhcikgICAgOwoKCgoKIApleHRlcm4gaW50IG5hbm9zbGVlcCAgKF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAoJCQkgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVt
YWluaW5nKSAgICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKIyAyNzQgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIAoKCgoKIyAxNyAibWtyZWlzZXJmcy5jIiAyCgojIDEg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgog
CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5
MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoK
CgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog
CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw
LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK
CgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dh
cmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDIgMwoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsJCQkgCiAgICBp
bnQgcmVtOwkJCSAKICB9IGRpdl90OwoKIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGlu
dCBxdW90OwkJIAogICAgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGRpdl90OwoKCgojIDY1ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBfX2N0
eXBlX2dldF9tYl9jdXJfbWF4ICAodm9pZCkgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAo
X19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gaW50IGF0b2kgIChfX2NvbnN0IGNo
YXIgKl9fbnB0cikgICAgOwogCmV4dGVybiBsb25nIGludCBhdG9sICAoX19jb25zdCBjaGFyICpf
X25wdHIpICAgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwg
IChfX2NvbnN0IGNoYXIgKl9fbnB0cikgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0cikgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9sICAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3Vs
ICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQgX19iYXNlKSAgICA7CgoKIApfX2V4dGVu
c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KSAgICA7CiAKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0
b3VxICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgIGludCBfX2Jhc2UpICAgIDsKCgoKIAoKIApfX2V4
dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpICAgIDsKIApfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50
IHN0cnRvdWxsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSkgICAgOwoKCgoj
IDE5MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry
dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw
KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK
CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl
cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo
YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ
CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0
b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg
IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp
bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCWlu
dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19z
dHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4
dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJIGlu
dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIs
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJICBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4g
X19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4
dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJl
dHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApICk7Cn0KZXh0ZXJuIF9f
aW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIChpbnQp
IHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgLCAxMCk7Cn0KZXh0ZXJuIF9f
aW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4g
c3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCkgLCAxMCk7Cn0KCgoKCgogCgoKZXh0ZXJuIGNoYXIgKmw2NGEgIChsb25nIGludCBfX24pICAg
IDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0IGNoYXIgKl9fcykgICAgOwoKCgoK
IAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIHZvaWQg
c3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKiAg
aW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRlYnVmLAoJCQkg
ICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIHNldHN0YXRl
ICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAg
ewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90
ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAg
ICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4g
aW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkg
IGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9y
ICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgICAgOwoK
ZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9p
ZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCgkJ
CSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CgpleHRlcm4g
aW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgIHN0
cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAgOwoKCgoKIApleHRlcm4gaW50
IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQgICh1bnNpZ25lZCBpbnQgX19z
ZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2lnbmVkIGludCAqX19zZWVkKSAg
ICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZvaWQpICAgIDsKZXh0ZXJuIGRv
dWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4
ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50
IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcg
aW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4dGVybiB2b2lkIGxjb25nNDgg
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9k
YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0
IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hv
cnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQg
ZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJ
ICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9y
ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
cmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAg
ICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxv
bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4dGVybiBpbnQgbXJhbmQ0OF9y
ICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBp
bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAg
IDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICAodW5zaWdu
ZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1
ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19w
YXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICAgIDsKCgoKCgoK
CgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90
IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lkICogIF9fcHRyKSAgICA7CgoK
IApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAgIDsKCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xp
Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv
Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9s
aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9n
Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
IyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr
d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiAKCiAKCgogCmV4dGVy
biB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICAgIDsKCgoKCgogCgoKIyA0OTIgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVybiB2b2lkICogIHZhbGxvYyAgKHNp
emVfdCBfX3NpemUpICAgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQpICAgICBfX2F0
dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0ZXhpdCAgKHZvaWQg
KCpfX2Z1bmMpICh2b2lkKSkgICAgOwoKCiAKCmV4dGVybiBpbnQgX19vbl9leGl0ICAodm9pZCAo
Kl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSAgIHZvaWQgKiAgX19h
cmcpICAgIDsKZXh0ZXJuIGludCBvbl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1
cywgdm9pZCAqICBfX2FyZyksCgkJCSB2b2lkICogIF9fYXJnKSAgICA7CgoKIAoKCmV4dGVybiB2
b2lkIGV4aXQgIChpbnQgX19zdGF0dXMpICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUp
ICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgICAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChjaGFyICpfX3N0cmluZykgICAg
OwoKCgogCgpleHRlcm4gaW50IHNldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0
IGNoYXIgKl9fdmFsdWUsCgkJCWludCBfX3JlcGxhY2UpICAgIDsKCiAKZXh0ZXJuIHZvaWQgdW5z
ZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBjbGVh
cmVudiAgKHZvaWQpICAgIDsKCgoKCiAKCgoKZXh0ZXJuIGNoYXIgKm1rdGVtcCAgKGNoYXIgKl9f
dGVtcGxhdGUpICAgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxh
dGUpICAgIDsKCgoKIApleHRlcm4gaW50IHN5c3RlbSAgKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSAgICA7CgoKCgoKCgoKCgogCgoKCgoKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoICAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZl
ZCkgICAgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9p
ZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNo
ICAoX19jb25zdCB2b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAg
ICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90
IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6
ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikg
IDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJuIGRpdl90IGRpdiAgKGludCBf
X251bWVyLCBpbnQgX19kZW5vbSkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkgICAg
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCiAKCgogCgoKZXh0ZXJu
IGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJp
Y3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBj
aGFyICpmY3Z0ICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hh
ciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7
CgogCmV4dGVybiBjaGFyICpxZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
ICAgOwpleHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LAoJCQkgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24p
ICAgIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25k
aWdpdCwgY2hhciAqX19idWYpICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpf
X3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVu
KSAgICA7CmV4dGVybiBpbnQgZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYsCgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2
dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91
YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf
dCBfX2xlbikgICAgOwoKCgoKIAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19z
LCBzaXplX3QgX19uKSAgICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0
cmljdCBfX3B3YywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg
ICAgOwogCgpleHRlcm4gaW50IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAg
ICA7CgoKIApleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19w
d2NzLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAg
IDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAg
ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoK
CgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAg
OwoKCgojIDczMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiMgNzU2ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKCgojIDc2NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCgoKIAoK
CiMgMTggIm1rcmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgogCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA0ICIvdXNyL2luY2x1ZGUvbGludXgvZXJy
bm8uaCIgMiAzCgoKIyAyNCAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDMKCgoKIyAyNSAi
L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCgoKIAoKCiAKCgoKCiAKZXh0ZXJuIGludCBl
cnJubzsKCiAKZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAgKHZvaWQpICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDM2ICIvdXNyL2lu
Y2x1ZGUvZXJybm8uaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoK
CgoKIyAxOSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9p
b2N0bHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9h
c20vaW9jdGxzLmgiIDEgMwogCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vaW9jdGwu
aCIgMSAzCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgojIDEyICIvdXNyL2luY2x1ZGUvYXNt
L2lvY3Rscy5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9i
aXRzL2lvY3Rscy5oIiAyIDMKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCQkgICAgIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKIAoKCgoKCgog
CgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCiAKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgpzdHJ1Y3Qgd2luc2l6ZQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7CiAgICB1
bnNpZ25lZCBzaG9ydCBpbnQgd3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX3hwaXhl
bDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3QgdGVybWlv
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfaWZsYWc7CQkgCiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgY19vZmxhZzsJCSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwkJIAogICAg
dW5zaWduZWQgc2hvcnQgaW50IGNfbGZsYWc7CQkgCiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsJ
CSAKICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4IF07CQkgCn07CgogCgoKCgoKCgoKCgoKCiAKCiAK
CgoKCgoKCgoKCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgogCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHR5ZGVmYXVsdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCiAKCgoKCgoKCgoKCiMgMzcgIi91c3IvaW5jbHVk
ZS9zeXMvaW9jdGwuaCIgMiAzCgoKIAoKCmV4dGVybiBpbnQgaW9jdGwgIChpbnQgX19mZCwgdW5z
aWduZWQgbG9uZyBpbnQgX19yZXF1ZXN0LCAuLi4pICAgIDsKCiAKCgojIDIwICJta3JlaXNlcmZz
LmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tb3VudC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAgTVNfUkRPTkxZID0gMSwJCSAKCiAgTVNfTk9T
VUlEID0gMiwJCSAKCiAgTVNfTk9ERVYgPSA0LAkJCSAKCiAgTVNfTk9FWEVDID0gOCwJCSAKCiAg
TVNfU1lOQ0hST05PVVMgPSAxNiwJCSAKCiAgTVNfUkVNT1VOVCA9IDMyLAkJIAoKICBNU19NQU5E
TE9DSyA9IDY0LAkJIAoKICBTX1dSSVRFID0gMTI4LAkJIAoKICBTX0FQUEVORCA9IDI1NiwJCSAK
CiAgU19JTU1VVEFCTEUgPSA1MTIsCQkgCgogIE1TX05PQVRJTUUgPSAxMDI0LAkJIAoKICBNU19O
T0RJUkFUSU1FID0gMjA0OAkJIAoKfTsKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKIAplbnVt
CnsKICBNTlRfRk9SQ0UgPSAxCQkJIAoKfTsKCgogCgogCmV4dGVybiBpbnQgbW91bnQgIChfX2Nv
bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlLCBfX2NvbnN0IGNoYXIgKl9fZGlyLAoJCSAgICAgICBf
X2NvbnN0IGNoYXIgKl9fZnN0eXBlLCB1bnNpZ25lZCBsb25nIGludCBfX3J3ZmxhZywKCQkgICAg
ICAgX19jb25zdCB2b2lkICpfX2RhdGEpICAgIDsKCiAKZXh0ZXJuIGludCB1bW91bnQgIChfX2Nv
bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlKSAgICA7CgogCmV4dGVybiBpbnQgdW1vdW50MiAgKF9f
Y29uc3QgY2hhciAqX19zcGVjaWFsX2ZpbGUsIGludCBfX2ZsYWdzKSAgICA7CgogCgoKIyAyMSAi
bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMSAzCiAKCgoK
CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCiAKCgoKCnR5cGVkZWYgX19z
aWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBf
X3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlw
ZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoK
dHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgX191NjQ7CgogCgoKdHlwZWRlZiBfX3UzMiAgYWRkcl90OyAKdHlwZWRlZiBfX3MzMiAg
c2FkZHJfdDsKIAoKCiMgNjUgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMwoKCiMgMjIgIm1r
cmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Zmcy5oIiAxIDMKIAoKCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdGZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKc3RydWN0IHN0YXRmcwogIHsKICAgIGludCBmX3R5cGU7CiAgICBpbnQgZl9ic2l6ZTsK
CiAgICBfX2ZzYmxrY250X3QgZl9ibG9ja3M7CiAgICBfX2ZzYmxrY250X3QgZl9iZnJlZTsKICAg
IF9fZnNibGtjbnRfdCBmX2JhdmFpbDsKICAgIF9fZnNmaWxjbnRfdCBmX2ZpbGVzOwogICAgX19m
c2ZpbGNudF90IGZfZmZyZWU7CgoKCgoKCgogICAgX19mc2lkX3QgZl9mc2lkOwogICAgaW50IGZf
bmFtZWxlbjsKICAgIGludCBmX3NwYXJlWzZdOwogIH07CgojIDYxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGF0ZnMuaCIgMwoKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMiAzCgoKIAoK
IAoKZXh0ZXJuIGludCBzdGF0ZnMgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgc3RydWN0IHN0YXRm
cyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCmV4dGVybiBpbnQgZnN0YXRmcyAgKGludCBf
X2ZpbGRlcywgc3RydWN0IHN0YXRmcyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCiMgNCAi
L3Vzci9pbmNsdWRlL3N5cy92ZnMuaCIgMiAzCgojIDIzICJta3JlaXNlcmZzLmMiIDIKCgojIDEg
Ii90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUt
ZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9taXNjLmgiIDEKIAoKCgoKdm9pZCBkaWUgKGNoYXIg
KiBmbXQsIC4uLik7CnZvaWQgKiBnZXRtZW0gKGludCBzaXplKTsKdm9pZCBmcmVlbWVtIChjb25z
dCB2b2lkICogcCk7CnZvaWQgKiBleHBhbmRtZW0gKHZvaWQgKiBwLCBpbnQgc2l6ZSwgaW50IGJ5
KTsKaW50IGlzX21vdW50ZWQgKGNoYXIgKiBkZXZpY2VfbmFtZSk7CnZvaWQgY2hlY2tfYW5kX2Zy
ZWVfbWVtICh2b2lkKTsKdm9pZCBwcmludF9ob3dfZmFyIChfX3UzMiAqIHBhc3NlZCwgX191MzIg
dG90YWwpOwppbnQgYmxvY2tfd3JpdGUgKGludCBkZXYsIGludCBibG9jaywgaW50IGJsb2Nrc2l6
ZSwgY2hhciAqIGRhdGEpOwppbnQgYmxvY2tfcmVhZCAoaW50IGRldiwgaW50IGJsb2NrLCBpbnQg
YmxvY2tzaXplLCBjaGFyICogZGF0YSk7Cgpsb2ZmX3QgcmVpc2VyZnNfbGxzZWVrICh1bnNpZ25l
ZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCBvcmlnaW4pOwppbnQgcmVpc2Vy
ZnNfcHJvZ3Nfc2V0X2xlX2JpdChpbnQsIHZvaWQgKikgOwppbnQgcmVpc2VyZnNfcHJvZ3NfdGVz
dF9sZV9iaXQoaW50LCBjb25zdCB2b2lkICopIDsKCgoKCgoKIyAyNSAibWtyZWlzZXJmcy5jIiAy
CgojIDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0z
LjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMQogCgoKIAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdmZzLmgiIDEgMwogCgoKCiMgNSAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYu
MjUtczM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRl
L3Zmcy5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMSAzCiAKCgoKCgoKCgoK
CiAKCgoKCiMgMTEyICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMwoKCgojIDcgIi90bXAvYnVp
bGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLngu
MGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2F0
b21pYy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xh
dGlsZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoNCkp
KTsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfcmVhZChhdG9taWNfdCAqdikKewog
ICAgICAgIGludCByZXR2YWw7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImJjciAgICAg
IDE1LDBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsICAgICAgICAlMCwlMSIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9ZCIgKHJldHZhbCkgOiAibSIgKCp2KSAp
OwogICAgICAgIHJldHVybiByZXR2YWw7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWlj
X3NldChhdG9taWNfdCAqdiwgaW50IGkpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi
c3QgICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmNyIDE1LDAiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqdikgOiAiZCIgKGkpICk7Cn0KCnN0
YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAg
ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICBsICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIjA6IGxyICAgIDEsMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBh
ciAgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsMSww
KDIpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAgIDBiIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpIDogImQiIChpKSA6ICIwIiwgIjEiLCAi
MiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBh
dG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUw
XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgIHNyICAgIDEsJTFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
amwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20iICgqdikgOiAiZCIg
KGkpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0
b21pY19pbmModm9sYXRpbGUgYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBs
ICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjA6IGxyICAgIDEsMFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAxLDFcbiIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5l
X18gaW50IGF0b21pY19pbmNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2KQp7CiAgICAgICAg
aW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDEsJTBcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgIGFoaSAgICUxLDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
Y3MgICAgMCwlMSwwKDEpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAg
IDBiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpLCAiPSZkIiAoaSkg
OiA6ICIwIiwgIjEiLCAiY2MiICk7CiAgICAgICAgcmV0dXJuIGk7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgYXRvbWljX2RlYyh2b2xhdGlsZSBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNt
X18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDog
bHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgIDEsLTFc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3Rh
dGljIF9faW5saW5lX18gaW50IGF0b21pY19kZWNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2
KQp7CiAgICAgICAgaW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAg
IDEsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgICUxLC0xXG4iCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2
KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJldHVybiBpOwp9Cgpz
dGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdCh2b2xhdGlsZSBhdG9taWNf
dCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBs
YSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxuIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwtMVxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICBjcyAgICAwLCUxLDAoMSlcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i
ICgqdiksICI9JmQiIChpKSA6IDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVybiBpID09
IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2NsZWFyX21hc2sodW5zaWduZWQg
bG9uZyBtYXNrLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIg
ICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAs
JTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgIG5yICAgIDEsJTFcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i
ICgqdikgOiAiZCIgKH4obWFzaykpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMg
X19pbmxpbmVfXyB2b2lkIGF0b21pY19zZXRfbWFzayh1bnNpZ25lZCBsb25nIG1hc2ssIGF0b21p
Y190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDIsJTBcbiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAxLDBcbiIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgb3IgICAgMSwlMVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICBjcyAgICAwLDEsMCgyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBqbCAg
ICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2KSA6ICJkIiAobWFz
aykgOiAiMCIsICIxIiwgIjIiLCAiY2MiICk7Cn0KCiAKCgoKc3RhdGljIF9faW5saW5lX18gaW50
CmF0b21pY19jb21wYXJlX2FuZF9zd2FwKGludCBleHBlY3RlZF9vbGR2YWwsaW50IG5ld192YWws
YXRvbWljX3QgKnYpCnsKICAgICAgICBpbnQgcmV0dmFsOwoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICAgICIgIGxhICAgMSwlMVxuIgogICAgICAgICAgICAgICAg
IiAgbHIgICAwLCUyXG4iCiAgICAgICAgICAgICAgICAiICBjcyAgIDAsJTMsMCgxKVxuIgogICAg
ICAgICAgICAgICAgIiAgaXBtICAlMFxuIgogICAgICAgICAgICAgICAgIiAgc3JsICAlMCwyOFxu
IgogICAgICAgICAgICAgICAgIjA6IgogICAgICAgICAgICAgICAgOiAiPSZyIiAocmV0dmFsKSwg
IittIiAoKnYpCiAgICAgICAgICAgICAgICA6ICJkIiAoZXhwZWN0ZWRfb2xkdmFsKSAsICJkIiAo
bmV3X3ZhbCkKICAgICAgICAgICAgICAgIDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVy
biByZXR2YWw7Cn0KCiAKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmF0b21pY19jb21wYXJlX2Fu
ZF9zd2FwX3NwaW4oaW50IGV4cGVjdGVkX29sZHZhbCxpbnQgbmV3X3ZhbCxhdG9taWNfdCAqdikK
ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiAgIGxhICAy
LCUwXG4iCiAgICAgICAgICAgICAgICAiMDogbHIgIDEsJTFcbiIKICAgICAgICAgICAgICAgICIg
ICBjcyAgMSwlMiwwKDIpXG4iCiAgICAgICAgICAgICAgICAiICAgamwgIDBiXG4iCiAgICAgICAg
ICAgICAgICA6ICIrbSIgKCp2KQogICAgICAgICAgICAgICAgOiAiZCIgKGV4cGVjdGVkX29sZHZh
bCkgLCAiZCIgKG5ld192YWwpCiAgICAgICAgICAgICAgICA6ICJjYyIsICIxIiwgIjIiKTsKfQoK
IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0X2dyZWF0ZXJfemVy
byhhdG9taWNfdCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKCIgICBsYSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwg
ICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxu
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwxXG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICIrbSIgKCp2KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJl
dHVybiBpID4gMDsKfQoKCgoKCgoKCgoKIyAxNCAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUt
czM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3Zm
cy5oIiAyCgoKIAogCiAKCgogCiAKIAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIg
MSAzCgoKIyAxMDQgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMwoKCiAKCgoKCgoKCgoj
IDI0ICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42
LjI1LWZzY2stMy54LjBiL3V0aWxzL2luY2x1ZGUvdmZzLmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBrZGV2X3Q7CnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2
KQp7CiAgICByZXR1cm4gKCggKCggZGV2ICk+PjgpICApPDw4IHwgKCAgKCggZGV2ICkgJiAweGZm
KSAgKSkgOwp9CgoKIAogCiAKc3RydWN0IGxpc3RfaGVhZCB7CiAgICBzdHJ1Y3QgbGlzdF9oZWFk
ICpuZXh0LCAqcHJldjsKfTsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRk
KHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCgkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAoJ
CQkJICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewogICAgbmV4dC0+cHJldiA9IG5ldzsKICAg
IG5ldy0+bmV4dCA9IG5leHQ7CiAgICBuZXctPnByZXYgPSBwcmV2OwogICAgcHJldi0+bmV4dCA9
IG5ldzsKfQoKIAoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3Rf
aGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICBfX2xpc3RfYWRkKG5ldywg
aGVhZCwgaGVhZC0+bmV4dCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2RlbChz
dHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKCQkJCSAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsK
CW5leHQtPnByZXYgPSBwcmV2OwoJcHJldi0+bmV4dCA9IG5leHQ7Cn0KCnN0YXRpYyBfX2lubGlu
ZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKCV9fbGlzdF9kZWwo
ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKfQoKCgoKCgogCiAKIApzdHJ1Y3Qgd2FpdF9xdWV1
ZSB7Cn07Cgp0eXBlZGVmIHN0cnVjdCB3YWl0X3F1ZXVlIHdhaXRfcXVldWVfaGVhZF90OwoKCgoK
c3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3Qg
KnEpCnsKfQoKCgoKIAogCiAKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgIGF0b21pY190IGNvdW50
OwogICAgaW50IHVtYXNrOwogICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkOwp9OwoKc3Ry
dWN0IHRhc2sgewogICAgaW50IHBpZDsKICAgIGludCBjb3VudGVyOwogICAgaW50IGZzdWlkOwog
ICAgaW50IGZzZ2lkOwogICAgaW50IG5lZWRfcmVzY2hlZDsKICAgIHN0cnVjdCBmc19zdHJ1Y3Qg
KiBmczsKICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgaW50IGxvY2tfZGVwdGg7Cn07CgoK
ZXh0ZXJuIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgIHJldHVybiAwOwp9CgoKCmV4dGVy
biB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUp
OwoKdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSk7CmV4dGVybiBsb25nIGludGVy
cnVwdGlibGVfc2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwKICBzaWduZWQg
bG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCBpbl9ncm91cF9wKGdpZF90ICk7CmV4dGVybiBpbmxp
bmUgaW50IGNhcGFibGUoaW50IGNhcCkKewogICAgcmV0dXJuIDA7Cn0KCgogCiAKIAoKCgogCiAK
IApleHRlcm4gc3RydWN0IHRhc2sgY3VyX3Rhc2s7CgoKCiAKIAogCnN0cnVjdCBxc3RyIHsKICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAgdW5zaWduZWQgaW50IGxlbjsKICAgIHVu
c2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeSB7CiAgICBzdHJ1Y3QgaW5vZGUgKiBk
X2lub2RlOwogICAgc3RydWN0IHFzdHIgZF9uYW1lOwogICAgdW5zaWduZWQgY2hhciBkX2luYW1l
WzQwOTZdOwp9OwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICog
ZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICBlbnRyeS0+ZF9pbm9kZSA9IGlub2Rl
Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVudHJ5ICpkZW50
cnkpCnsKICByZXR1cm4gMDsKfQoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRl
bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50
cnkgKik7CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkg
Kik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsK
ZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoKCgogCiAKIApzdHJ1Y3Qg
ZGVudHJ5ICogbG9va3VwX2RlbnRyeShjb25zdCBjaGFyICogbmFtZSwgc3RydWN0IGRlbnRyeSAq
IGJhc2UsIAoJCQkgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzKTsKCgogCiAKIApzdHJ1
Y3Qgdm1fYXJlYV9zdHJ1Y3Qgewp9OwoKdHlwZWRlZiBzdHJ1Y3QgcGFnZSB7CiAgICBzdHJ1Y3Qg
YWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CiAgICBhdG9t
aWNfdCBjb3VudDsKICAgIGludCBmbGFnczsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgc3RydWN0
IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKfSBtZW1fbWFwX3Q7CgoKCgoKCgoKCgoKZXh0ZXJuIG1l
bV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKZXh0ZXJuIHZvaWQgdm10cnVuY2F0ZShzdHJ1Y3QgaW5v
ZGUgKiBpbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKIAogCiAKCgoKCgoKCgoKCgoKCgoK
CiAKIAogCgoKCiAKIAogCnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewp9OwoKCiAKIAogCnN0cnVj
dCBzZW1hcGhvcmUgewp9OwoKZXh0ZXJuIGlubGluZSB2b2lkIGRvd24oc3RydWN0IHNlbWFwaG9y
ZSAqIHNlbSkKewp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNl
bSkKewp9CgoKIAogCiAKCgoKCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5v
ZGUgKik7CgoKIAoKCgoKCgoKCgoKCgoKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKICAgIHVuc2lnbmVk
IGxvbmcgYl9ibG9ja25yOwogICAgdW5zaWduZWQgc2hvcnQgYl9zaXplOwogICAgdW5zaWduZWQg
c2hvcnQgYl9saXN0OwogICAga2Rldl90IGJfZGV2OwogICAgYXRvbWljX3QgYl9jb3VudDsKICAg
IHVuc2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7Cgog
ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9uZXh0OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICog
Yl9wcmV2OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9oYXNoX25leHQ7CiAgICBzdHJ1Y3Qg
YnVmZmVyX2hlYWQgKiBiX2hhc2hfcHJldjsKICAgIGNoYXIgKiBiX2RhdGE7CiAgICBzdHJ1Y3Qg
cGFnZSAqIGJfcGFnZTsKICAgIHZvaWQgKCpiX2VuZF9pbykoc3RydWN0IGJ1ZmZlcl9oZWFkICpi
aCwgaW50IHVwdG9kYXRlKTsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJfdGhpc19wYWdlOwp9
OwoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKZXh0ZXJuIGNvbnN0IGNoYXIgX29pX2JpdG1hcFtdOwpl
eHRlcm4gY29uc3QgY2hhciBfbmlfYml0bWFwW107CmV4dGVybiBjb25zdCBjaGFyIF96Yl9maW5k
bWFwW107CgogCgoKZXh0ZXJuIHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpOwpleHRlcm4gdm9pZCBfX2NvbnN0YW50X3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2
b2lkICogYWRkcik7CmV4dGVybiBpbnQgX190ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg
KiBhZGRyKTsKZXh0ZXJuIGludCBfX2NvbnN0YW50X3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUg
dm9pZCAqIGFkZHIpOwpleHRlcm4gdm9pZCBfX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jbGVhcl9iaXQoaW50IG5yLCB2b2xh
dGlsZSB2b2lkICogYWRkcik7CmV4dGVybiB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jaGFuZ2VfYml0KGludCBu
ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50
IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRfY2xlYXJfYml0
KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX2NoYW5n
ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRf
c2V0X2JpdF9zaW1wbGUoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQg
dGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKTsK
ZXh0ZXJuIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZv
aWQgKiBhZGRyKTsKZXh0ZXJuIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1
bnNpZ25lZCBzaXplKTsKZXh0ZXJuIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRy
LCBpbnQgc2l6ZSwgaW50IG9mZnNldCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25l
ZCBsb25nIHdvcmQpOwoKIyAyNDkgIi91c3IvaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKCgogCgoK
ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICog
YWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxo
aSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIg
ICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAg
ICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgog
ICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIG9jICAg
IDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEi
ICgmX29pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7
Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfc2V0X2JpdChjb25zdCBpbnQg
bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgc3dpdGNoIChuciY3KSB7CiAgY2FzZSAwOgog
ICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAib2kgMCgxKSwweDAxIgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAo
Kigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKSAKICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5Iik7CiAgICBicmVhazsKICBjYXNlIDE6
CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAg
ICAgICAgICAgICJvaSAwKDEpLDB4MDIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0i
ICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2Ug
MjoKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm9pIDAoMSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9
bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2Fz
ZSAzOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAib2kgMCgxKSwweDA4IgogICAgICAgICAgICAgICAgICAgICAgICAgIDog
Ij1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBj
YXNlIDQ6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAg
ICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4MTAiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwog
IGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm9pIDAoMSksMHgyMCIKICAgICAgICAgICAgICAgICAgICAgICAg
ICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7
CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAib2kgMCgxKSwweDQwIgogICAgICAgICAgICAgICAgICAgICAg
ICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVh
azsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAg
ICAgICAgICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4ODAiCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJy
ZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCAKX19jbGVhcl9iaXQo
aW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls
ZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkg
ICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAg
bnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAg
IiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxu
IgogICAgICAgICAgICAgIiAgIG5jICAgIDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAi
ciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX25pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNj
IiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29u
c3RhbnRfY2xlYXJfYml0KGNvbnN0IGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICBz
d2l0Y2ggKG5yJjcpIHsKICBjYXNlIDA6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEs
JTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RkUiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5y
Pj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9y
eSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEg
MSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhGRCIKICAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgo
bnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVt
b3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSAyOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJs
YSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEZCIgogICAg
ICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsg
KChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJt
ZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDM6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo
ImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RjciCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIg
KyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwg
Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGlsZV9f
ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhFRiIK
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk
ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwgIm1l
bW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgi
bGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhERiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciAr
ICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAi
bWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEJGIgog
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRy
ICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIs
ICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4N0Yi
CiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFk
ZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNj
IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5l
X18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK
ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUw
XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAg
IDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAg
IiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIHhjICAgIDAoMSwyKSwwKDEp
IgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX29pX2JpdG1h
cCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBf
X2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfY2hhbmdlX2JpdChjb25zdCBpbnQgbnIsIHZvbGF0
aWxlIHZvaWQgKiBhZGRyKSAKewogIHN3aXRjaCAobnImNykgewogIGNhc2UgMDoKICAgIF9fYXNt
X18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAg
InhpIDAoMSksMHgwMSIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0
aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICA6IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18g
X192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhp
IDAoMSksMHgwMiIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxl
IGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMjoKICAgIF9fYXNtX18gX192
b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAo
MSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNo
YXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDog
ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMzoKICAgIF9fYXNtX18gX192b2xh
dGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSks
MHgwOCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIg
KikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNj
IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGls
ZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgx
MCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikg
YWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwg
Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9f
ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgyMCIK
ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk
ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2Mi
LCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxl
X18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAieGkgMCgxKSwweDQw
IgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBh
ZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJj
YyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRp
bGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJ4aSAwKDEpLDB4
ODAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICop
IGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwg
ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5s
aW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXRfc2ltcGxlKGludCBuciwgdm9sYXRpbGUgdm9pZCAq
IGFkZHIpCnsKICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBv
bGRiaXQ7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAiICAgbGhp
ICAgMSwyNFxuIgogICAgICAgICAgICAgIiAgIGxoaSAgIDIsN1xuIgogICAgICAgICAgICAgIiAg
IHhyICAgIDEsJTFcbiIKICAgICAgICAgICAgICIgICBuciAgICAyLDFcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAxLDNcbiIKICAgICAgICAgICAgICIgICBsYSAgICAxLDAoMSwlMilcbiIKICAg
ICAgICAgICAgICIgICBpYyAgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgc3JsICAgJTAs
MCgyKVxuIgogICAgICAgICAgICAgIiAgIG4gICAgICUwLCU0XG4iCiAgICAgICAgICAgICAiICAg
bGEgICAgMiwwKDIsJTMpXG4iCiAgICAgICAgICAgICAiICAgb2MgICAgMCgxLDEpLDAoMikiCiAg
ICAgICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAg
ICAgICAgICAgICJhIiAoJl9vaV9iaXRtYXApLCAibSIgKG1hc2spCiAgICAgICAgICAgICA6ICJj
YyIsICJtZW1vcnkiLCAiMSIsICIyIiApOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCiAKCgpl
eHRlcm4gX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZv
bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMTsK
ICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg
ICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAgbGhpICAgMiw3XG4iCiAg
ICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIG5yICAgIDIsMVxu
IgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEs
MCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTRcbiIKICAg
ICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAgICAgICIgICBuYyAgICAw
KDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkgOiAiciIgKG5yKSwgImEi
IChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX25pX2JpdG1hcCksICJtIiAobWFzaykKICAg
ICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAgICAgICAgcmV0dXJuIG9s
ZGJpdDsKfQoKIAoKCmV4dGVybiBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3Np
bXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0
IGludCBtYXNrID0gMTsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9s
YXRpbGVfXygKICAgICAgICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAg
bGhpICAgMiw3XG4iCiAgICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAg
IiAgIG5yICAgIDIsMVxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAg
ICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlc
biIKICAgICAgICAgICAgICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAg
ICAgJTAsJTRcbiIKICAgICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAg
ICAgICIgICB4YyAgICAwKDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkg
OiAiciIgKG5yKSwgImEiIChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX29pX2JpdG1hcCks
ICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAg
ICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCmV4dGVybiBfX2lu
bGluZV9fIGludCBfX3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAg
ICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBvbGRiaXQ7CgogICAg
ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK
ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUx
XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIHNybCAg
IDIsM1xuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMiwlMilcbiIKICAgICAgICAgICAg
ICIgICBzcmwgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTMiCiAgICAg
ICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAgICAg
ICAgICAgICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIjEiLCAiMiIgKTsKICAgICAg
ICByZXR1cm4gb2xkYml0Owp9CgpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19jb25zdGFudF90ZXN0
X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKSB7CiAgICByZXR1cm4gKCgodm9sYXRp
bGUgY2hhciAqKSBhZGRyKVsobnI+PjMpXjNdICYgKDE8PChuciY3KSkpICE9IDA7Cn0KCgoKCgoK
IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRy
LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMHhmZkw7
CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgX19hc21fXygiICAgbGhpICAwLC0xXG4iCiAgICAgICAgICAgICAgICAi
ICAgbHIgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAiICAgYWhpICAxLDMxXG4iCiAgICAgICAg
ICAgICAgICAiICAgc3JsICAxLDVcbiIKICAgICAgICAgICAgICAgICIgICBzciAgIDIsMlxuIgog
ICAgICAgICAgICAgICAgIjA6IGMgICAgMCwwKDIsJTIpXG4iCiAgICAgICAgICAgICAgICAiICAg
am5lICAxZlxuIgogICAgICAgICAgICAgICAgIiAgIGFoaSAgMiw0XG4iCiAgICAgICAgICAgICAg
ICAiICAgYnJjdCAxLDBiXG4iCiAgICAgICAgICAgICAgICAiICAgbHIgICAyLCUxXG4iCiAgICAg
ICAgICAgICAgICAiICAgaiAgICA0ZlxuIgogICAgICAgICAgICAgICAgIjE6IGwgICAgMSwwKDIs
JTIpXG4iCiAgICAgICAgICAgICAgICAiICAgc2xsICAyLDNcbiIKICAgICAgICAgICAgICAgICIg
ICB0bWwgIDEsMHhGRkZGXG4iCiAgIC