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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/6618: ICE in delete_insn, at cfgrtl.c:141 using shle-netbsdelf target



>Number:         6618
>Category:       optimization
>Synopsis:       ICE in delete_insn, at cfgrtl.c:141 using shle-netbsdelf target
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu May 09 17:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Jason R Thorpe
>Release:        gcc version 3.2 20020509 (experimental)
>Organization:
>Environment:
i386-netbsdelf host shle-netbsdelf target
>Description:
/usr/local/gnu/bin/shle-unknown-netbsdelf-gcc -O1 -c bug.i 
bug.c: In function `dophn_exec':
bug.c:312: Internal compiler error in delete_insn, at cfgrtl.c:141
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:
Build the attached file using shle-netbsdelf-gcc -O1.
A sh-linux compiler should also show the bug, since the
sh-netbsdelf configuration is very similar.  sh-elf may also
show the bug, if the -m3 flag is used.
>Fix:
The file can be compiled with either -O0 or -O2.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="bug.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bug.i"

IyAxICJidWcuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgImJ1
Zy5jIgoKCiMgMSAiZmlsZS5oIiAxCiMgMzQgImZpbGUuaCIKIyAxICIvdTEvZGlza2xlc3MvZHJl
YW1jYXN0L3Vzci9pbmNsdWRlL2ludHR5cGVzLmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9k
cmVhbWNhc3QvdXNyL2luY2x1ZGUvaW50dHlwZXMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2Ry
ZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzIDQKIyA2MyAiL3UxL2Rpc2tsZXNz
L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz
L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2NkZWZzLmgiIDEgMyA0CgoKCgojIDEgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2NkZWZzLmgiIDEgMyA0CiMgNiAi
L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2NkZWZzLmgiIDIgMyA0
CiMgNjQgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDIg
MyA0CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzX2Vs
Zi5oIiAxIDMgNAojIDY2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9j
ZGVmcy5oIiAyIDMgNAojIDQzICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL2lu
dHR5cGVzLmgiIDIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9z
eXMvaW50dHlwZXMuaCIgMSAzIDQKIyA0NiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zeXMvaW50dHlwZXMuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv
aW5jbHVkZS9zeXMvc3RkaW50LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3Qv
dXNyL2luY2x1ZGUvc3lzL3N0ZGludC5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0
L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVzLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlza2xl
c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3NoMy9pbnRfdHlwZXMuaCIgMSAzIDQKIyA0NyAiL3Ux
L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X3R5cGVzLmgiIDMgNAp0eXBl
ZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90
Owp0eXBlZGVmIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50
IF9fdWludDE2X3Q7CnR5cGVkZWYgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191aW50MzJfdDsKCgoKCgp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYgaW50IF9f
aW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludHB0cl90OwojIDQgIi91MS9kaXNr
bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9pbnRfdHlwZXMuaCIgMiAzIDQKIyA0
MyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0
CgoKdHlwZWRlZiBfX2ludDhfdCBpbnQ4X3Q7CgoKCgp0eXBlZGVmIF9fdWludDhfdCB1aW50OF90
OwoKCgoKdHlwZWRlZiBfX2ludDE2X3QgaW50MTZfdDsKCgoKCnR5cGVkZWYgX191aW50MTZfdCB1
aW50MTZfdDsKCgoKCnR5cGVkZWYgX19pbnQzMl90IGludDMyX3Q7CgoKCgp0eXBlZGVmIF9fdWlu
dDMyX3QgdWludDMyX3Q7CgoKCgp0eXBlZGVmIF9faW50NjRfdCBpbnQ2NF90OwoKCgoKdHlwZWRl
ZiBfX3VpbnQ2NF90IHVpbnQ2NF90OwoKCgoKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoK
CgoKdHlwZWRlZiBfX3VpbnRwdHJfdCB1aW50cHRyX3Q7CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2Ry
ZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9td2d3dHlwZXMuaCIgMSAzIDQKCgojIDEg
Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2ludF9td2d3dHlwZXMuaCIg
MSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X213
Z3d0eXBlcy5oIiAzIDQKdHlwZWRlZiBzaWduZWQgY2hhciBpbnRfbGVhc3Q4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHNob3J0IGludCBpbnRfbGVhc3Qx
Nl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBp
bnQgaW50X2xlYXN0MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7CgoK
CgoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGludF9sZWFzdDY0X3Q7Cgp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQgdWludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgaW50IGludF9mYXN0OF90
Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3Q4X3Q7CnR5cGVkZWYgaW50IGludF9mYXN0
MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9mYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50
X2Zhc3QzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2Zhc3QzMl90OwoKCgoKCnR5cGVk
ZWYgbG9uZyBsb25nIGludCBpbnRfZmFzdDY0X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgdWludF9mYXN0NjRfdDsKIyA4OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zaDMvaW50X213Z3d0eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgaW50IGludG1h
eF90OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVpbnRtYXhfdDsKIyA0ICIvdTEv
ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X213Z3d0eXBlcy5oIiAy
IDMgNAojIDk1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9zdGRpbnQu
aCIgMiAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGlu
ZS9pbnRfbGltaXRzLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p
bmNsdWRlL3NoMy9pbnRfbGltaXRzLmgiIDEgMyA0CiMgNCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz
dC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9saW1pdHMuaCIgMiAzIDQKIyA5OCAiL3UxL2Rpc2ts
ZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0CgoKCiMgMSAiL3Ux
L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2ludF9jb25zdC5oIiAxIDMg
NAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvaW50X2NvbnN0
LmgiIDEgMyA0CiMgNCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5l
L2ludF9jb25zdC5oIiAyIDMgNAojIDEwMiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zeXMvc3RkaW50LmgiIDIgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy
L2luY2x1ZGUvc3lzL2ludHR5cGVzLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X2ZtdGlvLmgiIDEgMyA0CgoKIyAxICIvdTEvZGlz
a2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3NoMy9pbnRfZm10aW8uaCIgMSAzIDQKIyA0ICIv
dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X2ZtdGlvLmgiIDIg
MyA0CiMgNTAgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ludHR5cGVz
LmgiIDIgMyA0CiMgNDQgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvaW50dHlw
ZXMuaCIgMiAzIDQKCgppbnRtYXhfdCBzdHJ0b2ltYXggKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0
LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cgp1aW50bWF4X3Qgc3RydG91bWF4IChjb25zdCBj
aGFyICogX19yZXN0cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKCiMgMzUgImZpbGUu
aCIgMgoKCiMgMSAiL3UxL25ldGJzZC9zcmMvdXNyLmJpbi9maWxlL2NvbmZpZy5oIiAxCiMgMzgg
ImZpbGUuaCIgMgoKCnR5cGVkZWYgaW50IGludDMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50
MzI7CnR5cGVkZWYgc2hvcnQgaW50MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2Owp0
eXBlZGVmIGNoYXIgaW50ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4OwojIDYwICJmaWxl
LmgiCnN0cnVjdCBtYWdpYyB7CiAgICAgICAgdWludDE2IGNvbnRfbGV2ZWw7CiAgICAgICAgdWlu
dDggbm9zcGZsYWc7CiAgICAgICAgdWludDggZmxhZzsKCgoKICAgICAgICB1aW50OCByZWxuOwog
ICAgICAgIHVpbnQ4IHZhbGxlbjsKICAgICAgICB1aW50OCB0eXBlOwogICAgICAgIHVpbnQ4IGlu
X3R5cGU7CiMgODYgImZpbGUuaCIKICAgICAgICB1aW50OCBpbl9vcDsKICAgICAgICB1aW50OCBt
YXNrX29wOwojIDk3ICJmaWxlLmgiCiAgICAgICAgaW50MzIgb2Zmc2V0OwogICAgICAgIGludDMy
IGluX29mZnNldDsKICAgICAgICB1bmlvbiBWQUxVRVRZUEUgewogICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBiOwogICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaDsKICAgICAgICAg
ICAgICAgIHVpbnQzMiBsOwogICAgICAgICAgICAgICAgY2hhciBzWzMyXTsKICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgaHNbMl07CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGhs
WzRdOwogICAgICAgIH0gdmFsdWU7CiAgICAgICAgdWludDMyIG1hc2s7CiAgICAgICAgY2hhciBk
ZXNjWzUwXTsKfTsKIyAxMjEgImZpbGUuaCIKc3RydWN0IG1saXN0IHsKICAgICAgICBzdHJ1Y3Qg
bWFnaWMgKm1hZ2ljOwogICAgICAgIHVpbnQzMiBubWFnaWM7CiAgICAgICAgc3RydWN0IG1saXN0
ICpuZXh0LCAqcHJldjsKfTsKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVk
ZS9zdGRpby5oIiAxIDMgNAojIDQ0ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lz
L2Fuc2kuaCIgMSAzIDQKIyA0MiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9z
eXMvYW5zaS5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21h
Y2hpbmUvaW50X3R5cGVzLmgiIDEgMyA0CiMgNDMgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy
L2luY2x1ZGUvc3lzL2Fuc2kuaCIgMiAzIDQKCnR5cGVkZWYgY2hhciAqIF9fY2FkZHJfdDsKdHlw
ZWRlZiBfX3VpbnQzMl90IF9fZ2lkX3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX21vZGVfdDsKdHlw
ZWRlZiBfX2ludDY0X3QgX19vZmZfdDsKdHlwZWRlZiBfX2ludDMyX3QgX19waWRfdDsKdHlwZWRl
ZiBfX3VpbnQ4X3QgX19zYV9mYW1pbHlfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVu
X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3VpZF90OwojIDQ1ICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDQ4ICIvdTEvZGlza2xl
c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgojIDEgIi91MS9kaXNrbGVz
cy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9hbnNpLmgiIDEgMyA0CgoKCgojIDEgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2Fuc2kuaCIgMSAzIDQKIyA0MSAi
L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYW5zaS5oIiAzIDQKIyAxICIv
dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvaW50X3R5cGVzLmgiIDEg
MyA0CiMgNDIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL2Fuc2kuaCIg
MiAzIDQKIyA4OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYW5zaS5o
IiAzIDQKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgY2hhciBfX21ic3RhdGU4WzEyOF07CiAgICAg
ICAgX19pbnQ2NF90IF9fbWJzdGF0ZUw7Cn0gX19tYnN0YXRlX3Q7CiMgNiAiL3UxL2Rpc2tsZXNz
L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2Fuc2kuaCIgMiAzIDQKIyA1MCAiL3UxL2Rp
c2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgc2l6ZV90OwoKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1
ZGUvc3lzL251bGwuaCIgMSAzIDQKIyA1NiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCgoKdHlwZWRlZiBfX29mZl90IGZwb3NfdDsKIyA3OSAi
L3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKc3RydWN0IF9f
c2J1ZiB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgaW50IF9zaXplOwp9
OwojIDExMCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK
dHlwZWRlZiBzdHJ1Y3QgX19zRklMRSB7CiAgICAgICAgdW5zaWduZWQgY2hhciAqX3A7CiAgICAg
ICAgaW50IF9yOwogICAgICAgIGludCBfdzsKICAgICAgICBzaG9ydCBfZmxhZ3M7CiAgICAgICAg
c2hvcnQgX2ZpbGU7CiAgICAgICAgc3RydWN0IF9fc2J1ZiBfYmY7CiAgICAgICAgaW50IF9sYmZz
aXplOwoKCiAgICAgICAgdm9pZCAqX2Nvb2tpZTsKICAgICAgICBpbnQgKCpfY2xvc2UpICh2b2lk
ICopOwogICAgICAgIGludCAoKl9yZWFkKSAodm9pZCAqLCBjaGFyICosIGludCk7CiAgICAgICAg
ZnBvc190ICgqX3NlZWspICh2b2lkICosIGZwb3NfdCwgaW50KTsKICAgICAgICBpbnQgKCpfd3Jp
dGUpICh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50KTsKCgogICAgICAgIHN0cnVjdCBfX3NidWYg
X2V4dDsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKl91cDsKICAgICAgICBpbnQgX3VyOwoKCiAg
ICAgICAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9uYnVm
WzFdOwoKCiAgICAgICAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICAgICAgICBpbnQgX2Jsa3NpemU7
CiAgICAgICAgZnBvc190IF9vZmZzZXQ7Cn0gRklMRTsKCgpleHRlcm4gRklMRSBfX3NGW107Cgoj
IDIxNiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCnZv
aWQgY2xlYXJlcnIgKEZJTEUgKik7CmludCBmY2xvc2UgKEZJTEUgKik7CmludCBmZW9mIChGSUxF
ICopOwppbnQgZmVycm9yIChGSUxFICopOwppbnQgZmZsdXNoIChGSUxFICopOwppbnQgZmdldGMg
KEZJTEUgKik7CmludCBmZ2V0cG9zIChGSUxFICogX19yZXN0cmljdCwgZnBvc190ICogX19yZXN0
cmljdCk7CmNoYXIgKmZnZXRzIChjaGFyICogX19yZXN0cmljdCwgaW50LCBGSUxFICogX19yZXN0
cmljdCk7CkZJTEUgKmZvcGVuIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmludCBmcHJp
bnRmIChGSUxFICogX19yZXN0cmljdCAsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwpp
bnQgZnB1dGMgKGludCwgRklMRSAqKTsKaW50IGZwdXRzIChjb25zdCBjaGFyICogX19yZXN0cmlj
dCwgRklMRSAqIF9fcmVzdHJpY3QpOwpzaXplX3QgZnJlYWQgKHZvaWQgKiBfX3Jlc3RyaWN0LCBz
aXplX3QsIHNpemVfdCwgRklMRSAqIF9fcmVzdHJpY3QpOwpGSUxFICpmcmVvcGVuIChjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqIF9fcmVzdHJpY3QpOwppbnQgZnNjYW5mIChGSUxF
ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CmludCBmc2VlayAo
RklMRSAqLCBsb25nLCBpbnQpOwppbnQgZnNldHBvcyAoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7
CmxvbmcgZnRlbGwgKEZJTEUgKik7CnNpemVfdCBmd3JpdGUgKGNvbnN0IHZvaWQgKiBfX3Jlc3Ry
aWN0LCBzaXplX3QsIHNpemVfdCwgRklMRSAqIF9fcmVzdHJpY3QpOwoKaW50IGdldGMgKEZJTEUg
Kik7CmludCBnZXRjaGFyICh2b2lkKTsKdm9pZCBwZXJyb3IgKGNvbnN0IGNoYXIgKik7CmludCBw
cmludGYgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwppbnQgcHV0YyAoaW50LCBGSUxF
ICopOwppbnQgcHV0Y2hhciAoaW50KTsKaW50IHB1dHMgKGNvbnN0IGNoYXIgKik7CmludCByZW1v
dmUgKGNvbnN0IGNoYXIgKik7CnZvaWQgcmV3aW5kIChGSUxFICopOwppbnQgc2NhbmYgKGNvbnN0
IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pOwp2b2lkIHNldGJ1ZiAoRklMRSAqIF9fcmVzdHJpY3Qs
IGNoYXIgKiBfX3Jlc3RyaWN0KTsKaW50IHNldHZidWYgKEZJTEUgKiBfX3Jlc3RyaWN0LCBjaGFy
ICogX19yZXN0cmljdCwgaW50LCBzaXplX3QpOwppbnQgc3NjYW5mIChjb25zdCBjaGFyICogX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLik7CkZJTEUgKnRtcGZpbGUgKHZv
aWQpOwppbnQgdW5nZXRjIChpbnQsIEZJTEUgKik7CmludCB2ZnByaW50ZiAoRklMRSAqIF9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKaW50IHZwcmludGYgKGNv
bnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKCmNoYXIgKmdldHMgKGNoYXIgKik7Cmlu
dCBzcHJpbnRmIChjaGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4u
Lik7CmNoYXIgKnRtcG5hbSAoY2hhciAqKTsKaW50IHZzcHJpbnRmIChjaGFyICogX19yZXNpdHJj
dCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKik7CgoKCgoKCmludCByZW5hbWUgKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgojIDI3OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz
dC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKCmNoYXIgKmN0ZXJtaWQgKGNoYXIgKik7CgoKCmNo
YXIgKmN1c2VyaWQgKGNoYXIgKik7CgpGSUxFICpmZG9wZW4gKGludCwgY29uc3QgY2hhciAqKTsK
aW50IGZpbGVubyAoRklMRSAqKTsKCiMgMjk2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgppbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqKTsKaW50
IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwppbnQgcHV0Y191bmxvY2tlZCAoaW50LCBGSUxFICop
OwppbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50KTsKCiMgMzE1ICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKaW50IHBjbG9zZSAoRklMRSAqKTsKRklMRSAq
cG9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgoKCgoKCgoKaW50IGdldHcgKEZJ
TEUgKik7CmludCBwdXR3IChpbnQsIEZJTEUgKik7CmludCBzbnByaW50ZiAoY2hhciAqIF9fcmVz
dHJpY3QsIHNpemVfdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIC4uLikKICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAzLCA0KSkpOwppbnQgdnNucHJp
bnRmIChjaGFyICogX19yZXN0cmljdCwgc2l6ZV90LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwg
dm9pZCAqKQoKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9f
LCAzLCAwKSkpOwoKCmNoYXIgKnRlbXBuYW0gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
CgojIDM0NyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK
dHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKaW50IGZzZWVrbyAoRklMRSAqLCBfX29mZl90LCBp
bnQpOwpfX29mZl90IGZ0ZWxsbyAoRklMRSAqKTsKCgoKCgoKCgoKaW50IGFzcHJpbnRmIChjaGFy
ICoqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCAuLi4pCiAgICAgICAgICAg
IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMiwgMykpKTsKY2hhciAqZmdl
dGxuIChGSUxFICogX19yZXN0cmljdCwgc2l6ZV90ICogX19yZXN0cmljdCk7CmludCBmcHVyZ2Ug
KEZJTEUgKik7CnZvaWQgc2V0YnVmZmVyIChGSUxFICosIGNoYXIgKiwgaW50KTsKaW50IHNldGxp
bmVidWYgKEZJTEUgKik7CmludCB2YXNwcmludGYgKGNoYXIgKiogX19yZXN0cmljdCwgY29uc3Qg
Y2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKikKCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9f
Zm9ybWF0X18oX19wcmludGZfXywgMiwgMCkpKTsKaW50IHZzY2FuZiAoY29uc3QgY2hhciAqIF9f
cmVzdHJpY3QsIHZvaWQgKikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhf
X3NjYW5mX18sIDEsIDApKSk7CmludCB2c3NjYW5mIChjb25zdCBjaGFyICogX19yZXN0cmljdCwg
Y29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHZvaWQgKikKCiAgICAgICAgICAgIF9fYXR0cmlidXRl
X18oKF9fZm9ybWF0X18oX19zY2FuZl9fLCAyLCAwKSkpOwpjb25zdCBjaGFyICpmbXRjaGVjayAo
Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopCiAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKF9f
Zm9ybWF0X2FyZ19fKDIpKSk7CgojIDM5MSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zdGRpby5oIiAzIDQKCkZJTEUgKmZ1bm9wZW4gKGNvbnN0IHZvaWQgKiwgaW50ICgqKSh2
b2lkICosIGNoYXIgKiwgaW50KSwgaW50ICgqKSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50KSwg
ZnBvc190ICgqKSh2b2lkICosIGZwb3NfdCwgaW50KSwgaW50ICgqKSh2b2lkICopKTsKCgoKCgoK
CgoKCgoKCmludCBfX3NyZ2V0IChGSUxFICopOwppbnQgX19zdmZzY2FuZiAoRklMRSAqIF9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCB2b2lkICopOwoKaW50IF9fc3didWYgKGlu
dCwgRklMRSAqKTsKCgoKCgoKCgpzdGF0aWMgX19pbmxpbmUgaW50IF9fc3B1dGMoaW50IF9jLCBG
SUxFICpfcCkgewogICAgICAgIGlmICgtLV9wLT5fdyA+PSAwIHx8IChfcC0+X3cgPj0gX3AtPl9s
YmZzaXplICYmIChjaGFyKV9jICE9ICdcbicpKQogICAgICAgICAgICAgICAgcmV0dXJuICgqX3At
Pl9wKysgPSBfYyk7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIChfX3N3YnVm
KF9jLCBfcCkpOwp9CiMgMTI4ICJmaWxlLmgiIDIKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0
L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3Qv
dXNyL2luY2x1ZGUvZXJybm8uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv
aW5jbHVkZS9zeXMvZXJybm8uaCIgMSAzIDQKIyA0OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91
c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy
L2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDkgIi91MS9kaXNrbGVzcy9kcmVh
bWNhc3QvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzIDQKCgoKaW50ICpfX2Vycm5vICh2b2lkKTsK
CgoKCgpleHRlcm4gY29uc3QgaW50IHN5c19uZXJyIF9fYXNtX18oIl9fc3lzX25lcnIxNCIpOwpl
eHRlcm4gY29uc3QgY2hhciAqY29uc3QgKnN5c19lcnJsaXN0IF9fYXNtX18oIl9fc3lzX2Vycmxp
c3QxNCIpOwoKCiMgMTI5ICJmaWxlLmgiIDIKIyAxMzkgImZpbGUuaCIKZXh0ZXJuIGludCBhcHBy
ZW50aWNlIChjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYXNjbWFnaWMgKHVuc2lnbmVk
IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZXJyb3IgKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0
ZXJuIHZvaWQgY2tmcHV0cyAoY29uc3QgY2hhciAqLCBGSUxFICopOwpzdHJ1Y3Qgc3RhdDsKZXh0
ZXJuIGludCBmc21hZ2ljIChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOwpleHRlcm4gY2hh
ciAqZm10dGltZSAobG9uZywgaW50KTsKZXh0ZXJuIGludCBpc19jb21wcmVzcyAoY29uc3QgdW5z
aWduZWQgY2hhciAqLCBpbnQgKik7CmV4dGVybiBpbnQgaXNfdGFyICh1bnNpZ25lZCBjaGFyICos
IGludCk7CmV4dGVybiB2b2lkIG1hZ3dhcm4gKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIHZv
aWQgbWR1bXAgKHN0cnVjdCBtYWdpYyAqKTsKZXh0ZXJuIHZvaWQgcHJvY2VzcyAoY29uc3QgY2hh
ciAqLCBpbnQpOwpleHRlcm4gdm9pZCBzaG93c3RyIChGSUxFICosIGNvbnN0IGNoYXIgKiwgaW50
KTsKZXh0ZXJuIGludCBzb2Z0bWFnaWMgKHVuc2lnbmVkIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGlu
dCB0cnlpdCAodW5zaWduZWQgY2hhciAqLCBpbnQsIGludCk7CmV4dGVybiBpbnQgem1hZ2ljICh1
bnNpZ25lZCBjaGFyICosIGludCk7CmV4dGVybiB2b2lkIGNrZnByaW50ZiAoRklMRSAqLCBjb25z
dCBjaGFyICosIC4uLik7CmV4dGVybiB1aW50MzIgc2lnbmV4dGVuZCAoc3RydWN0IG1hZ2ljICos
IHVuc2lnbmVkIGludDMyKTsKZXh0ZXJuIHZvaWQgdHJ5ZWxmIChpbnQsIHVuc2lnbmVkIGNoYXIg
KiwgaW50KTsKCmV4dGVybiBjaGFyICpwcm9nbmFtZTsKZXh0ZXJuIGNvbnN0IGNoYXIgKm1hZ2lj
ZmlsZTsKZXh0ZXJuIGludCBsaW5lbm87CgpleHRlcm4gc3RydWN0IG1saXN0IG1saXN0OwoKZXh0
ZXJuIGludCBkZWJ1ZzsKZXh0ZXJuIGludCB6ZmxhZzsKZXh0ZXJuIGludCBsZmxhZzsKZXh0ZXJu
IGludCBzZmxhZzsKZXh0ZXJuIGludCBpZmxhZzsKIyA0ICJidWcuYyIgMgoKCiMgMSAiL3UxL2Rp
c2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyA0NyAiL3Ux
L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Ux
L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDEgMyA0CgoK
CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL3R5cGVzLmgiIDEg
MyA0CiMgNTIgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc2gzL3R5cGVzLmgi
IDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdm1fb2Zmc2V0X3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyB2bV9zaXplX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGFkZHJfdDsKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHBzaXplX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB2YWRkcl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgdnNpemVfdDsKCgp0eXBlZGVmIGludCByZWdpc3Rlcl90OwojIDYg
Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAyIDMg
NAojIDQ4ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMgNAoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2lu
dF90eXBlcy5oIiAxIDMgNAojIDUxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMgNAojIDk1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBfX3VpbnQ4X3QgdV9pbnQ4X3Q7CnR5cGVkZWYg
X191aW50MTZfdCB1X2ludDE2X3Q7CnR5cGVkZWYgX191aW50MzJfdCB1X2ludDMyX3Q7CnR5cGVk
ZWYgX191aW50NjRfdCB1X2ludDY0X3Q7CgojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNy
L2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMSAzIDQKCgojIDEgIi91MS9kaXNrbGVzcy9kcmVh
bWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAxIDMgNAojIDQ5ICIvdTEvZGlza2xlc3Mv
ZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNz
L2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5lL2VuZGlhbl9tYWNoZGVwLmgiIDEgMyA0CgoK
CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvZW5kaWFuX21hY2hk
ZXAuaCIgMSAzIDQKIyA1ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hp
bmUvZW5kaWFuX21hY2hkZXAuaCIgMiAzIDQKIyA1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91
c3IvaW5jbHVkZS9zeXMvZW5kaWFuLmgiIDIgMyA0CiMgODAgIi91MS9kaXNrbGVzcy9kcmVhbWNh
c3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAzIDQKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvZHJl
YW1jYXN0L3Vzci9pbmNsdWRlL3N5cy9lbmRpYW4uaCIgMiAzIDQKCnR5cGVkZWYgdV9pbnQzMl90
IGluX2FkZHJfdDsKdHlwZWRlZiB1X2ludDE2X3QgaW5fcG9ydF90OwoKCl9fdWludDMyX3QgaHRv
bmwgKF9fdWludDMyX3QpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwpfX3VpbnQxNl90IGh0
b25zIChfX3VpbnQxNl90KSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKTsKX191aW50MzJfdCBu
dG9obCAoX191aW50MzJfdCkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSk7Cl9fdWludDE2X3Qg
bnRvaHMgKF9fdWludDE2X3QpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwoKIyAxMTggIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAzIDQKIyAxICIv
dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvYnN3YXAuaCIgMSAzIDQK
CgoKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYnN3YXAuaCIg
MSAzIDQKIyAxMiAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zaDMvYnN3YXAu
aCIgMyA0Cgp1X2ludDE2X3QgYnN3YXAxNih1X2ludDE2X3QpOwp1X2ludDMyX3QgYnN3YXAzMih1
X2ludDMyX3QpOwp1X2ludDY0X3QgYnN3YXA2NCh1X2ludDY0X3QpOwoKIyA2ICIvdTEvZGlza2xl
c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL21hY2hpbmUvYnN3YXAuaCIgMiAzIDQKIyAxMTkgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2VuZGlhbi5oIiAyIDMgNAojIDQg
Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvbWFjaGluZS9lbmRpYW4uaCIgMiAz
IDQKIyAxMDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHVfbG9uZzsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgdWxvbmc7Cgp0eXBlZGVmIHVfbG9uZyBjcHVpZF90OwoKCnR5cGVkZWYgdV9p
bnQ2NF90IHVfcXVhZF90Owp0eXBlZGVmIF9faW50NjRfdCBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90
ICogcWFkZHJfdDsKIyAxMzAgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHF1YWRfdCBsb25nbG9uZ190Owp0eXBlZGVmIHVfcXVhZF90
IHVfbG9uZ2xvbmdfdDsKCnR5cGVkZWYgX19pbnQ2NF90IGJsa2NudF90Owp0eXBlZGVmIHVfaW50
MzJfdCBibGtzaXplX3Q7CgoKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBf
X2ludDMyX3QgZGFkZHJfdDsKdHlwZWRlZiB1X2ludDMyX3QgZGV2X3Q7CnR5cGVkZWYgdV9pbnQz
Ml90IGZpeHB0X3Q7CgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgp0eXBlZGVmIHVfaW50MzJf
dCBpZF90Owp0eXBlZGVmIHVfaW50MzJfdCBpbm9fdDsKdHlwZWRlZiBsb25nIGtleV90OwoKCnR5
cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgp0eXBlZGVmIHVfaW50MzJfdCBubGlua190OwoKCgoK
CgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgp0eXBlZGVmIHF1YWRfdCBybGltX3Q7CnR5cGVk
ZWYgX19pbnQzMl90IHNlZ3N6X3Q7CnR5cGVkZWYgX19pbnQzMl90IHN3YmxrX3Q7CgoKdHlwZWRl
ZiBfX3VpZF90IHVpZF90OwoKCgp0eXBlZGVmIF9faW50MzJfdCBkdGltZV90OwojIDIwNSAiL3Ux
L2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CgpfX29mZl90
IGxzZWVrIChpbnQsIF9fb2ZmX3QsIGludCk7CmludCBmdHJ1bmNhdGUgKGludCwgX19vZmZfdCk7
CmludCB0cnVuY2F0ZSAoY29uc3QgY2hhciAqLCBfX29mZl90KTsKCiMgMjI1ICIvdTEvZGlza2xl
c3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGNsb2NrX3Q7CiMgMjM2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgc3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyB0
aW1lX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCgp0eXBlZGVmIGludCB0aW1lcl90
OwoKCgoKdHlwZWRlZiBpbnQgc3VzZWNvbmRzX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1
c2Vjb25kc190OwojIDI3NCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMyA0CnR5cGVkZWYgX19pbnQzMl90IF9fZmRfbWFzazsKIyAyOTMgIi91MS9kaXNr
bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHN0cnVj
dCBmZF9zZXQgewogICAgICAgIF9fZmRfbWFzayBmZHNfYml0c1soKCgyNTYpICsgKCgoc2l6ZW9m
KF9fZmRfbWFzaykgKiA4KSkgLSAxKSkgLyAoKHNpemVvZihfX2ZkX21hc2spICogOCkpKV07Cn0g
ZmRfc2V0OwojIDcgImJ1Zy5jIiAyCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMSAzIDQKIyA1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVk
ZS9zeXMvZmVhdHVyZXRlc3QuaCIgMSAzIDQKIyA1MSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgp2b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKiwg
aW50LCBzaXplX3QpOwppbnQgbWVtY21wIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6
ZV90KTsKdm9pZCAqbWVtY3B5ICh2b2lkICogX19yZXN0cmljdCwgY29uc3Qgdm9pZCAqIF9fcmVz
dHJpY3QsIHNpemVfdCk7CnZvaWQgKm1lbW1vdmUgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXpl
X3QpOwp2b2lkICptZW1zZXQgKHZvaWQgKiwgaW50LCBzaXplX3QpOwpjaGFyICpzdHJjYXQgKGNo
YXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCk7CmNoYXIgKnN0cmNociAo
Y29uc3QgY2hhciAqLCBpbnQpOwppbnQgc3RyY21wIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7CmludCBzdHJjb2xsIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cmNw
eSAoY2hhciAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0KTsKc2l6ZV90IHN0
cmNzcG4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGNoYXIgKnN0cmVycm9yIChpbnQp
OwpzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICopOwpjaGFyICpzdHJuY2F0IChjaGFyICogX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVfdCk7CmludCBzdHJuY21wIChj
b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3RybmNweSAoY2hhciAq
IF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBzaXplX3QpOwpjaGFyICpzdHJw
YnJrIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmNoYXIgKnN0cnJjaHIgKGNvbnN0IGNo
YXIgKiwgaW50KTsKc2l6ZV90IHN0cnNwbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpj
aGFyICpzdHJzdHIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKY2hhciAqc3RydG9rIChj
aGFyICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QpOwoKCgpjaGFyICpzdHJ0
b2tfciAoY2hhciAqLCBjb25zdCBjaGFyICosIGNoYXIgKiopOwoKc2l6ZV90IHN0cnhmcm0gKGNo
YXIgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwgc2l6ZV90KTsKCgoKdm9p
ZCAqbWVtY2NweSAodm9pZCAqLCBjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKY2hhciAqc3Ry
ZHVwIChjb25zdCBjaGFyICopOwoKCgoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9p
bmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyA0MyAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv
aW5jbHVkZS9zdHJpbmdzLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu
Y2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDQgIi91MS9kaXNrbGVzcy9kcmVhbWNh
c3QvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAyIDMgNAojIDU2ICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMyA0CgppbnQgYmNtcCAoY29uc3Qgdm9pZCAqLCBj
b25zdCB2b2lkICosIHNpemVfdCk7CnZvaWQgYmNvcHkgKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBz
aXplX3QpOwp2b2lkIGJ6ZXJvICh2b2lkICosIHNpemVfdCk7CmludCBmZnMgKGludCk7CmNoYXIg
KmluZGV4IChjb25zdCBjaGFyICosIGludCk7CmNoYXIgKnJpbmRleCAoY29uc3QgY2hhciAqLCBp
bnQpOwppbnQgc3RyY2FzZWNtcCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwppbnQgc3Ry
bmNhc2VjbXAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCgojIDEgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiMgNjkgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAyIDMgNAojIDkwICIv
dTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNApzaXplX3Qg
c3RybGNhdCAoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CnNpemVfdCBzdHJsY3B5IChj
aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKY2hhciAqc3Ryc2VwIChjaGFyICoqLCBjb25z
dCBjaGFyICopOwoKCiMgOCAiYnVnLmMiIDIKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91
c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMgNAojIDQ2ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vz
ci9pbmNsdWRlL2N0eXBlLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu
Y2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDcgIi91MS9kaXNrbGVzcy9kcmVhbWNh
c3QvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzIDQKIyA1OSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2Fz
dC91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9j
dHlwZV87CmV4dGVybiBjb25zdCBzaG9ydCAqX3RvbG93ZXJfdGFiXzsKZXh0ZXJuIGNvbnN0IHNo
b3J0ICpfdG91cHBlcl90YWJfOwoKCgppbnQgaXNhbG51bSAoaW50KTsKaW50IGlzYWxwaGEgKGlu
dCk7CmludCBpc2NudHJsIChpbnQpOwppbnQgaXNkaWdpdCAoaW50KTsKaW50IGlzZ3JhcGggKGlu
dCk7CmludCBpc2xvd2VyIChpbnQpOwppbnQgaXNwcmludCAoaW50KTsKaW50IGlzcHVuY3QgKGlu
dCk7CmludCBpc3NwYWNlIChpbnQpOwppbnQgaXN1cHBlciAoaW50KTsKaW50IGlzeGRpZ2l0IChp
bnQpOwppbnQgdG9sb3dlciAoaW50KTsKaW50IHRvdXBwZXIgKGludCk7CgoKCmludCBpc2FzY2lp
IChpbnQpOwppbnQgdG9hc2NpaSAoaW50KTsKaW50IF90b2xvd2VyIChpbnQpOwppbnQgX3RvdXBw
ZXIgKGludCk7CgoKCgppbnQgaXNibGFuayAoaW50KTsKCgojIDEwICJidWcuYyIgMgojIDEgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgNDIgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEgIi91MS9k
aXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMg
NDMgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMg
NTcgIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp0eXBl
ZGVmIGludCB3Y2hhcl90OwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAg
ICAgICAgaW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1
b3Q7CiAgICAgICAgbG9uZyByZW07Cn0gbGRpdl90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAg
ICAgICBsb25nIGxvbmcgaW50IHF1b3Q7CgogICAgICAgIGxvbmcgbG9uZyBpbnQgcmVtOwp9IGxs
ZGl2X3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgcXVhZF90IHF1b3Q7CiAgICAgICAg
cXVhZF90IHJlbTsKfSBxZGl2X3Q7CiMgOTggIi91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gc2l6ZV90IF9fbWJfY3VyX21heDsKCgoKIHZvaWQg
YWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwogaW50IGFicyAoaW50
KTsKaW50IGF0ZXhpdCAodm9pZCAoKikodm9pZCkpOwpkb3VibGUgYXRvZiAoY29uc3QgY2hhciAq
KTsKaW50IGF0b2kgKGNvbnN0IGNoYXIgKik7CmxvbmcgYXRvbCAoY29uc3QgY2hhciAqKTsKCgoK
dm9pZCAqYnNlYXJjaCAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90
LCBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CgoKdm9pZCAqY2FsbG9jIChz
aXplX3QsIHNpemVfdCk7CmRpdl90IGRpdiAoaW50LCBpbnQpOwogdm9pZCBleGl0IChpbnQpIF9f
YXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwp2b2lkIGZyZWUgKHZvaWQgKik7CiBjaGFyICpn
ZXRlbnYgKGNvbnN0IGNoYXIgKik7CiBsb25nCiAgICAgICAgIGxhYnMgKGxvbmcpOwpsZGl2X3Qg
bGRpdiAobG9uZywgbG9uZyk7CnZvaWQgKm1hbGxvYyAoc2l6ZV90KTsKdm9pZCBxc29ydCAodm9p
ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp
OwoKaW50IHJhbmQgKHZvaWQpOwp2b2lkICpyZWFsbG9jICh2b2lkICosIHNpemVfdCk7CnZvaWQg
c3JhbmQgKHVuc2lnbmVkKTsKZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3Qs
IGNoYXIgKiogX19yZXN0cmljdCk7Cmxvbmcgc3RydG9sIChjb25zdCBjaGFyICogX19yZXN0cmlj
dCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwp1bnNpZ25lZCBsb25nCiAgICAgICAgIHN0cnRv
dWwgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7Cmlu
dCBzeXN0ZW0gKGNvbnN0IGNoYXIgKik7CgoKaW50IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVf
dCk7CnNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBf
X3Jlc3RyaWN0LCBzaXplX3QpOwppbnQgd2N0b21iIChjaGFyICosIHdjaGFyX3QpOwppbnQgbWJ0
b3djICh3Y2hhcl90ICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsIHNpemVf
dCk7CnNpemVfdCB3Y3N0b21icyAoY2hhciAqIF9fcmVzdHJpY3QsIGNvbnN0IHdjaGFyX3QgKiBf
X3Jlc3RyaWN0LCBzaXplX3QpOwojIDE1MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMyA0CmludCByYW5kX3IgKHVuc2lnbmVkIGludCAqKTsKIyAxNTkgIi91
MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApkb3VibGUgZHJh
bmQ0OCAodm9pZCk7CmRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydFszXSk7CmxvbmcganJh
bmQ0OCAodW5zaWduZWQgc2hvcnRbM10pOwp2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0Wzdd
KTsKbG9uZyBscmFuZDQ4ICh2b2lkKTsKbG9uZyBtcmFuZDQ4ICh2b2lkKTsKbG9uZyBucmFuZDQ4
ICh1bnNpZ25lZCBzaG9ydFszXSk7CnVuc2lnbmVkIHNob3J0ICoKICAgICAgICAgc2VlZDQ4ICh1
bnNpZ25lZCBzaG9ydFszXSk7CnZvaWQgc3JhbmQ0OCAobG9uZyk7CgppbnQgcHV0ZW52IChjb25z
dCBjaGFyICopOwojIDE4MCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMyA0CmxvbmcgYTY0bCAoY29uc3QgY2hhciAqKTsKY2hhciAqbDY0YSAobG9uZyk7Cgpj
aGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGxvbmcsIGNoYXIgKiwgc2l6ZV90KTsKbG9uZyByYW5k
b20gKHZvaWQpOwpjaGFyICpzZXRzdGF0ZSAoY2hhciAqKTsKdm9pZCBzcmFuZG9tICh1bnNpZ25l
ZCBsb25nKTsKCmNoYXIgKm1rZHRlbXAgKGNoYXIgKik7CmludCBta3N0ZW1wIChjaGFyICopOwoK
Y2hhciAqbWt0ZW1wIChjaGFyICopOwoKCmludCBzZXRrZXkgKGNvbnN0IGNoYXIgKik7CgpjaGFy
ICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwoKaW50IHR0eXNsb3QgKHZvaWQpOwoK
dm9pZCAqdmFsbG9jIChzaXplX3QpOwojIDIwOSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMyA0CmxvbmcgbG9uZyBpbnQgYXRvbGwgKGNvbnN0IGNoYXIgKik7
Cgpsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50KTsKCmxsZGl2X3QgbGxkaXYgKGxv
bmcgbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQpOwoKbG9uZyBsb25nIGludCBzdHJ0b2xsIChjb25z
dCBjaGFyICogX19yZXN0cmljdCwgY2hhciAqKiBfX3Jlc3RyaWN0LCBpbnQpOwoKdW5zaWduZWQg
bG9uZyBsb25nIGludAogICAgICAgICAgICAgICAgc3RydG91bGwgKGNvbnN0IGNoYXIgKiBfX3Jl
c3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGludCk7CiMgMjI5ICIvdTEvZGlza2xlc3MvZHJl
YW1jYXN0L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdm9pZCAqYWxsb2NhIChzaXplX3QpOwoK
CmNoYXIgKmdldGJzaXplIChpbnQgKiwgbG9uZyAqKTsKY2hhciAqY2dldGNhcCAoY2hhciAqLCBj
b25zdCBjaGFyICosIGludCk7CmludCBjZ2V0Y2xvc2UgKHZvaWQpOwppbnQgY2dldGVudCAoY2hh
ciAqKiwgY2hhciAqKiwgY29uc3QgY2hhciAqKTsKaW50IGNnZXRmaXJzdCAoY2hhciAqKiwgY2hh
ciAqKik7CmludCBjZ2V0bWF0Y2ggKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50IGNn
ZXRuZXh0IChjaGFyICoqLCBjaGFyICoqKTsKaW50IGNnZXRudW0gKGNoYXIgKiwgY29uc3QgY2hh
ciAqLCBsb25nICopOwppbnQgY2dldHNldCAoY29uc3QgY2hhciAqKTsKaW50IGNnZXRzdHIgKGNo
YXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKaW50IGNnZXR1c3RyIChjaGFyICosIGNvbnN0
IGNoYXIgKiwgY2hhciAqKik7CgppbnQgZGFlbW9uIChpbnQsIGludCk7CiBjaGFyICpkZXZuYW1l
IChkZXZfdCwgX19tb2RlX3QpOwppbnQgZ2V0bG9hZGF2ZyAoZG91YmxlIFtdLCBpbnQpOwoKdm9p
ZCBjZnJlZSAodm9pZCAqKTsKCmludCBoZWFwc29ydCAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwg
aW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwoKaW50IG1lcmdlc29ydCAodm9p
ZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp
OwoKaW50IHJhZGl4c29ydCAoY29uc3QgdW5zaWduZWQgY2hhciAqKiwgaW50LCBjb25zdCB1bnNp
Z25lZCBjaGFyICosIHVuc2lnbmVkKTsKCmludCBzcmFkaXhzb3J0IChjb25zdCB1bnNpZ25lZCBj
aGFyICoqLCBpbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQpOwoKCmludCBzZXRl
bnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwp2b2lkIHVuc2V0ZW52IChjb25z
dCBjaGFyICopOwp2b2lkIHNldHByb2N0aXRsZSAoY29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oX19wcmludGZfXywgMSwgMikpKTsKY29uc3Qg
Y2hhciAqZ2V0cHJvZ25hbWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fY29uc3RfXykpOwp2b2lk
IHNldHByb2duYW1lIChjb25zdCBjaGFyICopOwoKcXVhZF90IHFhYnMgKHF1YWRfdCk7CnF1YWRf
dCBzdHJ0b3EgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9fcmVzdHJpY3QsIGlu
dCk7CnVfcXVhZF90IHN0cnRvdXEgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBjaGFyICoqIF9f
cmVzdHJpY3QsIGludCk7CgppbnQgbDY0YV9yIChsb25nLCBjaGFyICosIGludCk7CgpzaXplX3Qg
c2hxdW90ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKc2l6
ZV90IHNocXVvdGV2IChpbnQgYXJnYywgY2hhciAqIGNvbnN0ICogYXJndiwgY2hhciAqYnVmLCBz
aXplX3QgYnVmc2l6ZSk7CgoKCgoKCnFkaXZfdCBxZGl2IChxdWFkX3QsIHF1YWRfdCk7CgoKIyAx
MSAiYnVnLmMiIDIKCiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMSAzIDQKIyA3OCAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMyA0CiMgMSAiL3UxL2Rpc2tsZXNzL2RyZWFtY2FzdC91c3IvaW5jbHVkZS9tYWNoaW5l
L2ludF90eXBlcy5oIiAxIDMgNAojIDc5ICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNs
dWRlL3N5cy9mZWF0dXJldGVzdC5oIiAxIDMgNAojIDgxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKIyAxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0
L3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIgMSAzIDQKIyA0MSAiL3UxL2Rpc2tsZXNzL2RyZWFt
Y2FzdC91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMgNAojIDEgIi91MS9kaXNrbGVzcy9kcmVh
bWNhc3QvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmV0ZXN0LmgiIDEgMyA0CiMgNDIgIi91MS9kaXNr
bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAyIDMgNAojIDgzICIvdTEv
ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAojIDk0ICIvdTEv
ZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKCiB2b2lkIF9leGl0
IChpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpOwppbnQgYWNjZXNzIChjb25zdCBj
aGFyICosIGludCk7CnVuc2lnbmVkIGludCBhbGFybSAodW5zaWduZWQgaW50KTsKaW50IGNoZGly
IChjb25zdCBjaGFyICopOwoKCgppbnQgY2hvd24gKGNvbnN0IGNoYXIgKiwgX191aWRfdCwgX19n
aWRfdCk7CgppbnQgY2xvc2UgKGludCk7CnNpemVfdCBjb25mc3RyIChpbnQsIGNoYXIgKiwgc2l6
ZV90KTsKCgoKCgppbnQgZHVwIChpbnQpOwppbnQgZHVwMiAoaW50LCBpbnQpOwppbnQgZXhlY2wg
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwppbnQgZXhlY2xlIChjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKaW50IGV4ZWNscCAoY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICosIC4uLik7CmludCBleGVjdiAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3QgKik7Cmlu
dCBleGVjdmUgKGNvbnN0IGNoYXIgKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiBjb25zdCAqKTsK
aW50IGV4ZWN2cCAoY29uc3QgY2hhciAqLCBjaGFyICogY29uc3QgKik7Cl9fcGlkX3QgZm9yayAo
dm9pZCk7CmxvbmcgZnBhdGhjb25mIChpbnQsIGludCk7CmNoYXIgKmdldGN3ZCAoY2hhciAqLCBz
aXplX3QpOwpfX2dpZF90IGdldGVnaWQgKHZvaWQpOwpfX3VpZF90IGdldGV1aWQgKHZvaWQpOwpf
X2dpZF90IGdldGdpZCAodm9pZCk7CmludCBnZXRncm91cHMgKGludCwgX19naWRfdCBbXSk7CiBj
aGFyICpnZXRsb2dpbiAodm9pZCk7Cl9fcGlkX3QgZ2V0cGdycCAodm9pZCk7Cl9fcGlkX3QgZ2V0
cGlkICh2b2lkKTsKX19waWRfdCBnZXRwcGlkICh2b2lkKTsKX191aWRfdCBnZXR1aWQgKHZvaWQp
OwppbnQgaXNhdHR5IChpbnQpOwppbnQgbGluayAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop
Owpsb25nIHBhdGhjb25mIChjb25zdCBjaGFyICosIGludCk7CmludCBwYXVzZSAodm9pZCk7Cmlu
dCBwaXBlIChpbnQgKik7CnNzaXplX3QgcmVhZCAoaW50LCB2b2lkICosIHNpemVfdCk7CmludCBy
bWRpciAoY29uc3QgY2hhciAqKTsKaW50IHNldGdpZCAoX19naWRfdCk7CmludCBzZXRwZ2lkIChf
X3BpZF90LCBfX3BpZF90KTsKX19waWRfdCBzZXRzaWQgKHZvaWQpOwppbnQgc2V0dWlkIChfX3Vp
ZF90KTsKdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQpOwpsb25nIHN5c2NvbmYgKGlu
dCk7Cl9fcGlkX3QgdGNnZXRwZ3JwIChpbnQpOwppbnQgdGNzZXRwZ3JwIChpbnQsIF9fcGlkX3Qp
OwogY2hhciAqdHR5bmFtZSAoaW50KTsKaW50IHVubGluayAoY29uc3QgY2hhciAqKTsKc3NpemVf
dCB3cml0ZSAoaW50LCBjb25zdCB2b2lkICosIHNpemVfdCk7CgoKCgoKCgppbnQgZ2V0b3B0IChp
bnQsIGNoYXIgKiBjb25zdCBbXSwgY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpvcHRhcmc7
CmV4dGVybiBpbnQgb3B0ZXJyOwpleHRlcm4gaW50IG9wdGluZDsKZXh0ZXJuIGludCBvcHRvcHQ7
CiMgMTkxICIvdTEvZGlza2xlc3MvZHJlYW1jYXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK
aW50IGZkYXRhc3luYyAoaW50KTsKaW50IGZzeW5jIChpbnQpOwoKCgoKCgoKaW50IGNocm9vdCAo
Y29uc3QgY2hhciAqKTsKaW50IG5pY2UgKGludCk7CiMgMjE4ICIvdTEvZGlza2xlc3MvZHJlYW1j
YXN0L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIGNoYXIgKmNyeXB0IChjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKik7CmludCBlbmNyeXB0IChjaGFyICosIGludCk7CmNoYXIgKmdldHBhc3Mg
KGNvbnN0IGNoYXIgKik7Cl9fcGlkX3QgZ2V0c2lkIChfX3BpZF90KTsKIyAyNDEgIi91MS9kaXNr
bGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAppbnQgYnJrICh2b2lkICop
OwppbnQgZmNoZGlyIChpbnQpOwoKCgppbnQgZmNob3duIChpbnQsIF9fdWlkX3QsIF9fZ2lkX3Qp
OwoKaW50IGdldGR0YWJsZXNpemUgKHZvaWQpOwpsb25nIGdldGhvc3RpZCAodm9pZCk7CmludCBn
ZXRob3N0bmFtZSAoY2hhciAqLCBzaXplX3QpOwogaW50CiAgICAgICAgIGdldHBhZ2VzaXplICh2
b2lkKTsKX19waWRfdCBnZXRwZ2lkIChfX3BpZF90KTsKCgoKaW50IGxjaG93biAoY29uc3QgY2hh
ciAqLCBfX3VpZF90LCBfX2dpZF90KTsKCmludCBsb2NrZiAoaW50LCBpbnQsIF9fb2ZmX3QpOwpp
bnQgcmVhZGxpbmsgKGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzaXplX3QpOwp2b2lkICpzYnJrIChf
X2ludHB0cl90KTsKCmludCBzZXRwZ3JwIChfX3BpZF90IHBpZCwgX19waWRfdCBwZ3JwKTsKaW50
IHNldHJlZ2lkIChfX2dpZF90LCBfX2dpZF90KTsKaW50IHNldHJldWlkIChfX3VpZF90LCBfX3Vp
ZF90KTsKdm9pZCBzd2FiIChjb25zdCB2b2lkICosIHZvaWQgKiwgc2l6ZV90KTsKaW50IHN5bWxp
bmsgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKdm9pZCBzeW5jICh2b2lkKTsKdXNlY29u
ZHNfdCB1YWxhcm0gKHVzZWNvbmRzX3QsIHVzZWNvbmRzX3QpOwppbnQgdXNsZWVwICh1c2Vjb25k
c190KTsKCgoKCl9fcGlkX3QgdmZvcmsgKHZvaWQpIF9fYXNtX18oIl9fdmZvcmsxNCIpOwoKCgpj
aGFyICpnZXR3ZCAoY2hhciAqKTsKCgoKCnN0cnVjdCB0aW1ldmFsOwoKaW50IHNlbGVjdCAoaW50
LCBmZF9zZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyAyOTUg
Ii91MS9kaXNrbGVzcy9kcmVhbWNhc3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApzc2l6ZV90
IHByZWFkIChpbnQsIHZvaWQgKiwgc2l6ZV90LCBfX29mZl90KTsKc3NpemVfdCBwd3JpdGUgKGlu
dCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIF9fb2ZmX3QpOwoKCgoKCgoKaW50IGFjY3QgKGNvbnN0
IGNoYXIgKik7CmludCBkZXNfY2lwaGVyIChjb25zdCBjaGFyICosIGNoYXIgKiwgbG9uZywgaW50
KTsKaW50IGRlc19zZXRrZXkgKGNvbnN0IGNoYXIgKik7CnZvaWQgZW5kdXNlcnNoZWxsICh2b2lk
KTsKaW50IGV4ZWN0IChjb25zdCBjaGFyICosIGNoYXIgKiBjb25zdCAqLCBjaGFyICogY29uc3Qg
Kik7CmludCBmY2hyb290IChpbnQpOwppbnQgZ2V0ZG9tYWlubmFtZSAoY2hhciAqLCBzaXplX3Qp
OwppbnQgZ2V0Z3JvdXBsaXN0IChjb25zdCBjaGFyICosIF9fZ2lkX3QsIF9fZ2lkX3QgKiwgaW50
ICopOwpfX21vZGVfdCBnZXRtb2RlIChjb25zdCB2b2lkICosIF9fbW9kZV90KTsKaW50IGdldHN1
Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwogY2hhciAqZ2V0dXNlcnNo
ZWxsICh2b2lkKTsKaW50IGluaXRncm91cHMgKGNvbnN0IGNoYXIgKiwgX19naWRfdCk7CmludCBp
cnVzZXJvayAodV9pbnQzMl90LCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKaW50
IGlzc2V0dWdpZCAodm9pZCk7CmludCBuZnNzdmMgKGludCwgdm9pZCAqKTsKaW50IHByb2ZpbCAo
Y2hhciAqLCBzaXplX3QsIHVfbG9uZywgdV9pbnQpOwoKCgp2b2lkIHBzaWduYWwgKHVuc2lnbmVk
IGludCwgY29uc3QgY2hhciAqKTsKCmludCByY21kIChjaGFyICoqLCBpbnQsIGNvbnN0IGNoYXIg
KiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCAqKTsKCmludCByZWJvb3QgKGludCwg
Y2hhciAqKTsKaW50IHJldm9rZSAoY29uc3QgY2hhciAqKTsKaW50IHJyZXN2cG9ydCAoaW50ICop
OwppbnQgcnVzZXJvayAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsKaW50IHNldGRvbWFpbm5hbWUgKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKaW50IHNldGVn
aWQgKF9fZ2lkX3QpOwppbnQgc2V0ZXVpZCAoX191aWRfdCk7CmludCBzZXRncm91cHMgKGludCwg
Y29uc3QgX19naWRfdCAqKTsKaW50IHNldGhvc3RpZCAobG9uZyk7CmludCBzZXRob3N0bmFtZSAo
Y29uc3QgY2hhciAqLCBzaXplX3QpOwppbnQgc2V0bG9naW4gKGNvbnN0IGNoYXIgKik7CnZvaWQg
KnNldG1vZGUgKGNvbnN0IGNoYXIgKik7CmludCBzZXRyZ2lkIChfX2dpZF90KTsKaW50IHNldHJ1
aWQgKF9fdWlkX3QpOwp2b2lkIHNldHVzZXJzaGVsbCAodm9pZCk7CnZvaWQgc3RybW9kZSAoX19t
b2RlX3QsIGNoYXIgKik7CiBjaGFyICpzdHJzaWduYWwgKGludCk7CmludCBzd2FwY3RsIChpbnQs
IGNvbnN0IHZvaWQgKiwgaW50KTsKaW50IHN3YXBvbiAoY29uc3QgY2hhciAqKTsKaW50IHN5c2Nh
bGwgKGludCwgLi4uKTsKcXVhZF90IF9fc3lzY2FsbCAocXVhZF90LCAuLi4pOwppbnQgdW5kZWxl
dGUgKGNvbnN0IGNoYXIgKik7CgoKaW50IHJjbWRfYWYgKGNoYXIgKiosIGludCwgY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50ICosIGludCk7CgppbnQgcnJlc3Zw
b3J0X2FmIChpbnQgKiwgaW50KTsKaW50IGlydXNlcm9rX3NhIChjb25zdCB2b2lkICosIGludCwg
aW50LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIg
KmNvbnN0ICpzeXNfc2lnbGlzdCBfX2FzbV9fKCJfX3N5c19zaWdsaXN0MTQiKTsKCmV4dGVybiBp
bnQgb3B0cmVzZXQ7CmV4dGVybiBjaGFyICpzdWJvcHRhcmc7CgoKCiMgMTMgImJ1Zy5jIiAyCgoK
CiMgMSAicmVhZGVsZi5oIiAxCiMgMTQgInJlYWRlbGYuaCIKdHlwZWRlZiBfX3VpbnQzMl90IEVs
ZjMyX0FkZHI7CnR5cGVkZWYgX191aW50MzJfdCBFbGYzMl9PZmY7CnR5cGVkZWYgX191aW50MTZf
dCBFbGYzMl9IYWxmOwp0eXBlZGVmIF9fdWludDMyX3QgRWxmMzJfV29yZDsKdHlwZWRlZiBfX3Vp
bnQ4X3QgRWxmMzJfQ2hhcjsKCgoKCgoKCnR5cGVkZWYgX191aW50NjRfdCBFbGY2NF9BZGRyOwp0
eXBlZGVmIF9fdWludDY0X3QgRWxmNjRfT2ZmOwp0eXBlZGVmIF9fdWludDY0X3QgRWxmNjRfWHdv
cmQ7Cgp0eXBlZGVmIF9fdWludDE2X3QgRWxmNjRfSGFsZjsKdHlwZWRlZiBfX3VpbnQzMl90IEVs
ZjY0X1dvcmQ7CnR5cGVkZWYgX191aW50OF90IEVsZjY0X0NoYXI7CgoKCnR5cGVkZWYgc3RydWN0
IHsKICAgIEVsZjMyX0NoYXIgZV9pZGVudFsxNl07CiAgICBFbGYzMl9IYWxmIGVfdHlwZTsKICAg
IEVsZjMyX0hhbGYgZV9tYWNoaW5lOwogICAgRWxmMzJfV29yZCBlX3ZlcnNpb247CiAgICBFbGYz
Ml9BZGRyIGVfZW50cnk7CiAgICBFbGYzMl9PZmYgZV9waG9mZjsKICAgIEVsZjMyX09mZiBlX3No
b2ZmOwogICAgRWxmMzJfV29yZCBlX2ZsYWdzOwogICAgRWxmMzJfSGFsZiBlX2Voc2l6ZTsKICAg
IEVsZjMyX0hhbGYgZV9waGVudHNpemU7CiAgICBFbGYzMl9IYWxmIGVfcGhudW07CiAgICBFbGYz
Ml9IYWxmIGVfc2hlbnRzaXplOwogICAgRWxmMzJfSGFsZiBlX3NobnVtOwogICAgRWxmMzJfSGFs
ZiBlX3Noc3RybmR4Owp9IEVsZjMyX0VoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBFbGY2NF9D
aGFyIGVfaWRlbnRbMTZdOwogICAgRWxmNjRfSGFsZiBlX3R5cGU7CiAgICBFbGY2NF9IYWxmIGVf
bWFjaGluZTsKICAgIEVsZjY0X1dvcmQgZV92ZXJzaW9uOwogICAgRWxmNjRfQWRkciBlX2VudHJ5
OwogICAgRWxmNjRfT2ZmIGVfcGhvZmY7CiAgICBFbGY2NF9PZmYgZV9zaG9mZjsKICAgIEVsZjY0
X1dvcmQgZV9mbGFnczsKICAgIEVsZjY0X0hhbGYgZV9laHNpemU7CiAgICBFbGY2NF9IYWxmIGVf
cGhlbnRzaXplOwogICAgRWxmNjRfSGFsZiBlX3BobnVtOwogICAgRWxmNjRfSGFsZiBlX3NoZW50
c2l6ZTsKICAgIEVsZjY0X0hhbGYgZV9zaG51bTsKICAgIEVsZjY0X0hhbGYgZV9zaHN0cm5keDsK
fSBFbGY2NF9FaGRyOwojIDEwOCAicmVhZGVsZi5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICBFbGYz
Ml9Xb3JkIHBfdHlwZTsKICAgIEVsZjMyX09mZiBwX29mZnNldDsKICAgIEVsZjMyX0FkZHIgcF92
YWRkcjsKICAgIEVsZjMyX0FkZHIgcF9wYWRkcjsKICAgIEVsZjMyX1dvcmQgcF9maWxlc3o7CiAg
ICBFbGYzMl9Xb3JkIHBfbWVtc3o7CiAgICBFbGYzMl9Xb3JkIHBfZmxhZ3M7CiAgICBFbGYzMl9X
b3JkIHBfYWxpZ247Cn0gRWxmMzJfUGhkcjsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEVsZjY0X1dv
cmQgcF90eXBlOwogICAgRWxmNjRfV29yZCBwX2ZsYWdzOwogICAgRWxmNjRfT2ZmIHBfb2Zmc2V0
OwogICAgRWxmNjRfQWRkciBwX3ZhZGRyOwogICAgRWxmNjRfQWRkciBwX3BhZGRyOwogICAgRWxm
NjRfWHdvcmQgcF9maWxlc3o7CiAgICBFbGY2NF9Yd29yZCBwX21lbXN6OwogICAgRWxmNjRfWHdv
cmQgcF9hbGlnbjsKfSBFbGY2NF9QaGRyOwojIDEzOSAicmVhZGVsZi5oIgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBFbGYzMl9Xb3JkIHNoX25hbWU7CiAgICBFbGYzMl9Xb3JkIHNoX3R5cGU7CiAgICBF
bGYzMl9Xb3JkIHNoX2ZsYWdzOwogICAgRWxmMzJfQWRkciBzaF9hZGRyOwogICAgRWxmMzJfT2Zm
IHNoX29mZnNldDsKICAgIEVsZjMyX1dvcmQgc2hfc2l6ZTsKICAgIEVsZjMyX1dvcmQgc2hfbGlu
azsKICAgIEVsZjMyX1dvcmQgc2hfaW5mbzsKICAgIEVsZjMyX1dvcmQgc2hfYWRkcmFsaWduOwog
ICAgRWxmMzJfV29yZCBzaF9lbnRzaXplOwp9IEVsZjMyX1NoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBFbGY2NF9Xb3JkIHNoX25hbWU7CiAgICBFbGY2NF9Xb3JkIHNoX3R5cGU7CiAgICBFbGY2
NF9PZmYgc2hfZmxhZ3M7CiAgICBFbGY2NF9BZGRyIHNoX2FkZHI7CiAgICBFbGY2NF9PZmYgc2hf
b2Zmc2V0OwogICAgRWxmNjRfT2ZmIHNoX3NpemU7CiAgICBFbGY2NF9Xb3JkIHNoX2xpbms7CiAg
ICBFbGY2NF9Xb3JkIHNoX2luZm87CiAgICBFbGY2NF9PZmYgc2hfYWRkcmFsaWduOwogICAgRWxm
NjRfT2ZmIHNoX2VudHNpemU7Cn0gRWxmNjRfU2hkcjsKIyAxNzQgInJlYWRlbGYuaCIKdHlwZWRl
ZiBzdHJ1Y3QgZWxmX25vdGUgewogICAgRWxmMzJfV29yZCBuX25hbWVzejsKICAgIEVsZjMyX1dv
cmQgbl9kZXNjc3o7CiAgICBFbGYzMl9Xb3JkIG5fdHlwZTsKfSBFbGYzMl9OaGRyOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgRWxmNjRfV29yZCBuX25hbWVzejsKICAgIEVsZjY0X1dvcmQgbl9kZXNj
c3o7CiAgICBFbGY2NF9Xb3JkIG5fdHlwZTsKfSBFbGY2NF9OaGRyOwojIDE3ICJidWcuYyIgMgoK
CgoKCgpfX2FzbV9fKCIuc2VjdGlvbiAiICIuaWRlbnQiICIgOyAuYXNjaXogXCIiICIkTmV0QlNE
OiByZWFkZWxmLmMsdiAxLjEyIDIwMDIvMDQvMDkgMTU6MTA6MTcgYmpoMjEgRXhwICQiICJcIiA7
IC50ZXh0Iik7CgoKCgpzdGF0aWMgdm9pZCBkb3Bobl9jb3JlIChpbnQsIGludCwgaW50LCBfX29m
Zl90LCBpbnQsIHNpemVfdCk7CgpzdGF0aWMgdm9pZCBkb3Bobl9leGVjIChpbnQsIGludCwgaW50
LCBfX29mZl90LCBpbnQsIHNpemVfdCk7CnN0YXRpYyB2b2lkIGRvc2huIChpbnQsIGludCwgaW50
LCBfX29mZl90LCBpbnQsIHNpemVfdCk7CgpzdGF0aWMgX191aW50MTZfdCBnZXR1MTYgKGludCwg
aW50KTsKc3RhdGljIF9fdWludDMyX3QgZ2V0dTMyIChpbnQsIF9fdWludDMyX3QpOwpzdGF0aWMg
X191aW50NjRfdCBnZXR1NjQgKGludCwgX191aW50NjRfdCk7CgpzdGF0aWMgX191aW50MTZfdApn
ZXR1MTYoc3dhcCwgdmFsdWUpCiAgICAgICAgaW50IHN3YXA7CiAgICAgICAgX191aW50MTZfdCB2
YWx1ZTsKewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgdWk7CiAg
ICAgICAgICAgICAgICBjaGFyIGNbMl07CiAgICAgICAgfSByZXR2YWwsIHRtcHZhbDsKCiAgICAg
ICAgaWYgKHN3YXApIHsKICAgICAgICAgICAgICAgIHRtcHZhbC51aSA9IHZhbHVlOwoKICAgICAg
ICAgICAgICAgIHJldHZhbC5jWzBdID0gdG1wdmFsLmNbMV07CiAgICAgICAgICAgICAgICByZXR2
YWwuY1sxXSA9IHRtcHZhbC5jWzBdOwoKICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWwudWk7
CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7Cn0KCnN0YXRpYyBf
X3VpbnQzMl90CmdldHUzMihzd2FwLCB2YWx1ZSkKICAgICAgICBpbnQgc3dhcDsKICAgICAgICBf
X3VpbnQzMl90IHZhbHVlOwp7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191aW50
MzJfdCB1aTsKICAgICAgICAgICAgICAgIGNoYXIgY1s0XTsKICAgICAgICB9IHJldHZhbCwgdG1w
dmFsOwoKICAgICAgICBpZiAoc3dhcCkgewogICAgICAgICAgICAgICAgdG1wdmFsLnVpID0gdmFs
dWU7CgogICAgICAgICAgICAgICAgcmV0dmFsLmNbMF0gPSB0bXB2YWwuY1szXTsKICAgICAgICAg
ICAgICAgIHJldHZhbC5jWzFdID0gdG1wdmFsLmNbMl07CiAgICAgICAgICAgICAgICByZXR2YWwu
Y1syXSA9IHRtcHZhbC5jWzFdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNbM10gPSB0bXB2YWwu
Y1swXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsLnVpOwogICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwp9CgpzdGF0aWMgX191aW50NjRfdApnZXR1NjQo
c3dhcCwgdmFsdWUpCiAgICAgICAgaW50IHN3YXA7CiAgICAgICAgX191aW50NjRfdCB2YWx1ZTsK
ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdWludDY0X3QgdWk7CiAgICAgICAg
ICAgICAgICBjaGFyIGNbOF07CiAgICAgICAgfSByZXR2YWwsIHRtcHZhbDsKCiAgICAgICAgaWYg
KHN3YXApIHsKICAgICAgICAgICAgICAgIHRtcHZhbC51aSA9IHZhbHVlOwoKICAgICAgICAgICAg
ICAgIHJldHZhbC5jWzBdID0gdG1wdmFsLmNbN107CiAgICAgICAgICAgICAgICByZXR2YWwuY1sx
XSA9IHRtcHZhbC5jWzZdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNbMl0gPSB0bXB2YWwuY1s1
XTsKICAgICAgICAgICAgICAgIHJldHZhbC5jWzNdID0gdG1wdmFsLmNbNF07CiAgICAgICAgICAg
ICAgICByZXR2YWwuY1s0XSA9IHRtcHZhbC5jWzNdOwogICAgICAgICAgICAgICAgcmV0dmFsLmNb
NV0gPSB0bXB2YWwuY1syXTsKICAgICAgICAgICAgICAgIHJldHZhbC5jWzZdID0gdG1wdmFsLmNb
MV07CiAgICAgICAgICAgICAgICByZXR2YWwuY1s3XSA9IHRtcHZhbC5jWzBdOwoKICAgICAgICAg
ICAgICAgIHJldHVybiByZXR2YWwudWk7CiAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWU7Cn0KIyAxMzkgImJ1Zy5jIgpzdGF0aWMgdm9pZApkb3NobihjbGFzcywgc3dh
cCwgZmQsIG9mZiwgbnVtLCBzaXplKQogICAgICAgIGludCBjbGFzczsKICAgICAgICBpbnQgc3dh
cDsKICAgICAgICBpbnQgZmQ7CiAgICAgICAgX19vZmZfdCBvZmY7CiAgICAgICAgaW50IG51bTsK
ICAgICAgICBzaXplX3Qgc2l6ZTsKewogICAgICAgIEVsZjMyX1NoZHIgc2gzMjsKICAgICAgICBF
bGY2NF9TaGRyIHNoNjQ7CgogICAgICAgIGlmIChsc2VlayhmZCwgb2ZmLCAwKSA9PSAtMSkKICAg
ICAgICAgICAgICAgIGVycm9yKCJsc2VlayBmYWlsZWQgKCVzKS5cbiIsIHN0cmVycm9yKCgqX19l
cnJubygpKSkpOwoKICAgICAgICBmb3IgKCA7IG51bTsgbnVtLS0pIHsKICAgICAgICAgICAgICAg
IGlmIChyZWFkKGZkLCAoY2xhc3MgPT0gMSA/ICh2b2lkICopICZzaDMyIDogKHZvaWQgKikgJnNo
NjQpLCBzaXplKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoInJlYWQgZmFp
bGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIGlm
ICgoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBzaDMyLnNoX3R5cGUpIDogZ2V0dTMyKHN3YXAs
IHNoNjQuc2hfdHlwZSkpID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBw
cmludGYgKCIsIG5vdCBzdHJpcHBlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICh2b2lkKSBwcmludGYgKCIsIHN0
cmlwcGVkIik7Cn0KCgoKCgoKc3RhdGljIHZvaWQKZG9waG5fZXhlYyhjbGFzcywgc3dhcCwgZmQs
IG9mZiwgbnVtLCBzaXplKQogICAgICAgIGludCBjbGFzczsKICAgICAgICBpbnQgc3dhcDsKICAg
ICAgICBpbnQgZmQ7CiAgICAgICAgX19vZmZfdCBvZmY7CiAgICAgICAgaW50IG51bTsKICAgICAg
ICBzaXplX3Qgc2l6ZTsKewogICAgICAgIEVsZjMyX1BoZHIgcGgzMjsKICAgICAgICBFbGYzMl9O
aGRyICpuaDMyOwogICAgICAgIEVsZjY0X1BoZHIgcGg2NDsKICAgICAgICBFbGY2NF9OaGRyICpu
aDY0OwogICAgICAgIGNoYXIgKmxpbmtpbmdfc3R5bGUgPSAic3RhdGljYWxseSI7CiAgICAgICAg
Y2hhciAqc2hhcmVkX2xpYnJhcmllcyA9ICIiOwogICAgICAgIGNoYXIgbmJ1ZlsxMDI0XTsKICAg
ICAgICBpbnQgYnVmc2l6ZTsKICAgICAgICBzaXplX3Qgb2Zmc2V0LCBuYW1lb2Zmc2V0OwoKICAg
ICAgICBpZiAobHNlZWsoZmQsIG9mZiwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICBlcnJvcigi
bHNlZWsgZmFpbGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKCiAgICAgICAg
Zm9yICggOyBudW07IG51bS0tKSB7CiAgICAgICAgICAgICAgICBpZiAocmVhZChmZCwgKGNsYXNz
ID09IDEgPyAodm9pZCAqKSAmcGgzMiA6ICh2b2lkICopICZwaDY0KSwgc2l6ZSkgPT0gLTEpCiAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJyZWFkIGZhaWxlZCAoJXMpLlxuIiwgc3RyZXJy
b3IoKCpfX2Vycm5vKCkpKSk7CgogICAgICAgICAgICAgICAgc3dpdGNoICgoY2xhc3MgPT0gMSA/
IGdldHUzMihzd2FwLCBwaDMyLnBfdHlwZSkgOiBnZXR1MzIoc3dhcCwgcGg2NC5wX3R5cGUpKSkg
ewogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICBsaW5raW5n
X3N0eWxlID0gImR5bmFtaWNhbGx5IjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJy
YXJpZXMgPSAiICh1c2VzIHNoYXJlZCBsaWJzKSI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGxzZWVrKGZkLCAoX19vZmZfdCkgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgcGgzMi5w
X29mZnNldCkgOiBnZXR1NjQoc3dhcCwgcGg2NC5wX29mZnNldCkpLCAwKSA9PSAtMSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigibHNlZWsgZmFpbGVkICglcykuXG4iLCBz
dHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSA9
IHJlYWQoZmQsIG5idWYsIDEwMjQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmc2l6
ZSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiOiAiICJyZWFk
IGZhaWxlZCAoJXMpLlxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
ZXJyb3IoKCpfX2Vycm5vKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAob2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY2xhc3MgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5o
MzIgPSAoRWxmMzJfTmhkciAqKSZuYnVmW29mZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmg2
NCA9IChFbGY2NF9OaGRyICopJm5idWZbb2Zmc2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvZmZzZXQgKz0gKGNsYXNzID09IDEgPyBzaXplb2YgKm5oMzIgOiBzaXplb2YgKm5o
NjQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgKGNsYXNz
ID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQt
Pm5fbmFtZXN6KSkgPj0gYnVmc2l6ZSkgewoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lb2Zmc2V0ID0gb2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAoY2xhc3MgPT0gMSA/IGdldHUzMihz
d2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9uYW1lc3opKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAoKG9mZnNldCArIDMpLzQpKjQ7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgKyAoY2xhc3MgPT0g
MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9k
ZXNjc3opKSA+PSBidWZzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY2xhc3MgPT0g
MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9u
YW1lc3opKSA9PSA0ICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNt
cCgmbmJ1ZltuYW1lb2Zmc2V0XSwgIkdOVSIpID09IDAgJiYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl90eXBlKSA6
IGdldHUzMihzd2FwLCBuaDY0LT5uX3R5cGUpKSA9PSAxICYmCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fZGVzY3N6
KSA6IGdldHUzMihzd2FwLCBuaDY0LT5uX2Rlc2NzeikpID09IDE2KSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90ICpkZXNjID0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX191aW50MzJfdCAqKSZuYnVmW29mZnNl
dF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIsIGZv
ciBHTlUvIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGdldHUzMihzd2FwLCBkZXNjWzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYoIkxpbnV4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYoIkh1cmQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiU29sYXJpcyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiPHVua25vd24+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAl
ZC4lZC4lZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
dTMyKHN3YXAsIGRlc2NbMV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldHUzMihzd2FwLCBkZXNjWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXR1MzIoc3dhcCwgZGVzY1szXSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChj
bGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fbmFtZXN6KSA6IGdldHUzMihzd2FwLCBu
aDY0LT5uX25hbWVzeikpID09IDcgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyY21wKCZuYnVmW25hbWVvZmZzZXRdLCAiTmV0QlNEIikgPT0gMCAmJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMy
LT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fdHlwZSkpID09IDEgJiYKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgz
Mi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fZGVzY3N6KSkgPT0gNCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIsIGZvciBOZXRCU0Qi
KTsKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9u
YW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sICJGcmVl
QlNEIikgPT0gMCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3Mg
PT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5f
dHlwZSkpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNz
ID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQt
Pm5fZGVzY3N6KSkgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX191aW50MzJfdCBkZXNjID0gZ2V0dTMyKHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKihfX3VpbnQzMl90ICopJm5idWZbb2Zmc2V0XSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiwgZm9yIEZyZWVCU0Qi
KTsKIyAyOTMgImJ1Zy5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCIgJWQuJWQiLCBkZXNjIC8gMTAwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc2MgLyAxMDAwMCAlIDEwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjIC8gMTAwMCAlIDEwID4gMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIuJWQiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyAvIDEw
MDAgJSAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+
bl9uYW1lc3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sICJP
cGVuQlNEIikgPT0gMCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xh
c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQt
Pm5fdHlwZSkpID09IDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNs
YXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9kZXNjc3opIDogZ2V0dTMyKHN3YXAsIG5o
NjQtPm5fZGVzY3N6KSkgPT0gNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmKCIsIGZvciBPcGVuQlNEIik7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIsICVz
IGxpbmtlZCVzIiwgbGlua2luZ19zdHlsZSwgc2hhcmVkX2xpYnJhcmllcyk7Cn0KCgpzaXplX3Qg
cHJwc29mZnNldHMzMltdID0gewogICAgICAgIDgsCiAgICAgICAgMjgsCiAgICAgICAgMzIsCiAg
ICAgICAgODQsCn07CgpzaXplX3QgcHJwc29mZnNldHM2NFtdID0gewogICAgICAgMTIwLAp9Owoj
IDM1NiAiYnVnLmMiCnN0YXRpYyBjb25zdCBjaGFyICpvc19zdHlsZV9uYW1lc1tdID0gewogICAg
ICAgICJTVlI0IiwKICAgICAgICAiRnJlZUJTRCIsCiAgICAgICAgIk5ldEJTRCIsCn07CgpzdGF0
aWMgdm9pZApkb3Bobl9jb3JlKGNsYXNzLCBzd2FwLCBmZCwgb2ZmLCBudW0sIHNpemUpCiAgICAg
ICAgaW50IGNsYXNzOwogICAgICAgIGludCBzd2FwOwogICAgICAgIGludCBmZDsKICAgICAgICBf
X29mZl90IG9mZjsKICAgICAgICBpbnQgbnVtOwogICAgICAgIHNpemVfdCBzaXplOwp7CiAgICAg
ICAgRWxmMzJfUGhkciBwaDMyOwogICAgICAgIEVsZjMyX05oZHIgKm5oMzI7CiAgICAgICAgRWxm
NjRfUGhkciBwaDY0OwogICAgICAgIEVsZjY0X05oZHIgKm5oNjQ7CiAgICAgICAgc2l6ZV90IG9m
ZnNldCwgbmFtZW9mZnNldCwgbm9mZnNldCwgcmVsb2Zmc2V0OwogICAgICAgIHVuc2lnbmVkIGNo
YXIgYzsKICAgICAgICBpbnQgaSwgajsKICAgICAgICBjaGFyIG5idWZbMTAyNF07CiAgICAgICAg
aW50IGJ1ZnNpemU7CiAgICAgICAgaW50IG9zX3N0eWxlID0gLTE7CgoKCgogICAgICAgIGZvciAo
IDsgbnVtOyBudW0tLSkgewogICAgICAgICAgICAgICAgaWYgKGxzZWVrKGZkLCBvZmYsIDApID09
IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigibHNlZWsgZmFpbGVkICglcykuXG4i
LCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIGlmIChyZWFkKGZkLCAo
Y2xhc3MgPT0gMSA/ICh2b2lkICopICZwaDMyIDogKHZvaWQgKikgJnBoNjQpLCBzaXplKSA9PSAt
MSkKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoInJlYWQgZmFpbGVkICglcykuXG4iLCBz
dHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAgICAgICAgIG9mZiArPSBzaXplOwogICAg
ICAgICAgICAgICAgaWYgKChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIHBoMzIucF90eXBlKSA6
IGdldHUzMihzd2FwLCBwaDY0LnBfdHlwZSkpICE9IDQpCiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAobHNlZWsoZmQsIChfX29mZl90KSAo
Y2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBwaDMyLnBfb2Zmc2V0KSA6IGdldHU2NChzd2FwLCBw
aDY0LnBfb2Zmc2V0KSksIDApID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigi
bHNlZWsgZmFpbGVkICglcykuXG4iLCBzdHJlcnJvcigoKl9fZXJybm8oKSkpKTsKICAgICAgICAg
ICAgICAgIGJ1ZnNpemUgPSByZWFkKGZkLCBuYnVmLCAxMDI0KTsKICAgICAgICAgICAgICAgIGlm
IChidWZzaXplID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiOiAiICJyZWFk
IGZhaWxlZCAoJXMpLlxuIiwgc3RyZXJyb3IoKCpfX2Vycm5vKCkpKSk7CiAgICAgICAgICAgICAg
ICBvZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGFzcyA9PSAxKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5oMzIgPSAoRWxmMzJfTmhkciAqKSZuYnVmW29m
ZnNldF07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuaDY0ID0gKEVsZjY0X05oZHIgKikmbmJ1ZltvZmZzZXRdOwogICAgICAgICAg
ICAgICAgICAgICAgICBvZmZzZXQgKz0gKGNsYXNzID09IDEgPyBzaXplb2YgKm5oMzIgOiBzaXpl
b2YgKm5oNjQpOwoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgKyAoY2xh
c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2
NC0+bl9uYW1lc3opKSA+PSBidWZzaXplKSB7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWVvZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNl
dCArPSAoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX25hbWVzeikgOiBnZXR1MzIo
c3dhcCwgbmg2NC0+bl9uYW1lc3opKTsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
KChvZmZzZXQgKyAzKS80KSo0OwojIDQ0MiAiYnVnLmMiCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChvc19zdHlsZSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1lc3opIDogZ2V0dTMyKHN3
YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gNCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RybmNtcCgmbmJ1ZltuYW1lb2Zmc2V0XSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ09SRSIsIDQpID09IDApIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgoY2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5u
X25hbWVzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9uYW1lc3opKSA9PSA1ICYmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjbXAoJm5idWZbbmFtZW9mZnNldF0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNPUkUiKSA9PSAwKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Nfc3R5bGUgPSAwOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgoKGNsYXNzID09IDEgPyBnZXR1MzIoc3dhcCwgbmgzMi0+bl9uYW1l
c3opIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fbmFtZXN6KSkgPT0gOCAmJgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RyY21wKCZuYnVmW25hbWVvZmZzZXRdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGcmVlQlNEIikgPT0gMCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zX3N0eWxlID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoKChjbGFzcyA9PSAxID8gZ2V0dTMyKHN3YXAsIG5oMzItPm5fbmFtZXN6
KSA6IGdldHUzMihzd2FwLCBuaDY0LT5uX25hbWVzeikpID49IDExICYmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJuY21wKCZuYnVmW25hbWVvZmZzZXRdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV0QlNELUNPUkUiLCAxMSkg
PT0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zX3N0eWxl
ID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZigiLCAlcy1zdHlsZSIsIG9zX3N0eWxlX25hbWVzW29zX3N0eWxl
XSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChvc19zdHlsZSA9PSAyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3MgPT0g
MSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5oNjQtPm5fdHlw
ZSkpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IHNp
Z25vOwoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLCBmcm9t
ICclLjMxcyciLCAmbmJ1ZltvZmZzZXQgKyAweDdjXSk7CgoKCgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtZW1jcHkoJnNpZ25vLCAmbmJ1ZltvZmZzZXQgKyAweDA4XSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNpZ25vKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgKHNpZ25hbCAldSkiLCBnZXR1MzIoc3dhcCwg
c2lnbm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChvc19zdHlsZSAhPSAyICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y2xhc3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX3R5cGUpIDogZ2V0dTMyKHN3YXAsIG5o
NjQtPm5fdHlwZSkpID09IDMpIHsKIyA0OTYgImJ1Zy5jIgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoY2xhc3MgPT0gMSA/IChzaXplb2YgcHJwc29mZnNl
dHMzMiAvIHNpemVvZiBwcnBzb2Zmc2V0czMyWzBdKSA6IChzaXplb2YgcHJwc29mZnNldHM2NCAv
IHNpemVvZiBwcnBzb2Zmc2V0czY0WzBdKSk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVsb2Zmc2V0ID0gKGNsYXNzID09IDEgPyBwcnBzb2Zmc2V0czMy
W2ldIDogcHJwc29mZnNldHM2NFtpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2Zmc2V0ID0gb2Zmc2V0ICsgcmVsb2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDE2OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGorKywgbm9mZnNldCsrLCByZWxvZmZzZXQrKykg
ewoKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChub2Zmc2V0ID49IGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ290byB0cnlhbm90aGVyOwoKCgoKCgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbG9mZnNldCA+PSAoY2xh
c3MgPT0gMSA/IGdldHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2
NC0+bl9kZXNjc3opKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHRyeWFub3RoZXI7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjID0gbmJ1Zltub2Zmc2V0XTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wwJykgewoKCgoKCgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaiA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ290byB0cnlhbm90aGVyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewoKCgoK
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghKChpbnQpKChfY3R5cGVfICsgMSlbKGludCkoYyldICYgKDB4MTB8MHgwMXwweDAyfDB4
MDR8MHg4MCkpKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0cmNocigiJ1wiYCIsIChjKSkgIT0gMCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv
IHRyeWFub3RoZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgoKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiwgZnJvbSAnJS4xNnMn
IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJ1ZltvZmZz
ZXQgKyAoY2xhc3MgPT0gMSA/IHBycHNvZmZzZXRzMzJbaV0gOiBwcnBzb2Zmc2V0czY0W2ldKV0p
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRyeWFub3RoZXI6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAoY2xhc3MgPT0gMSA/IGdl
dHUzMihzd2FwLCBuaDMyLT5uX2Rlc2NzeikgOiBnZXR1MzIoc3dhcCwgbmg2NC0+bl9kZXNjc3op
KTsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gKChvZmZzZXQgKyAzKS80KSo0Owog
ICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKCnZvaWQKdHJ5ZWxmKGZkLCBidWYsIG5ieXRl
cykKICAgICAgICBpbnQgZmQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgIGlu
dCBuYnl0ZXM7CnsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQzMiBsOwogICAg
ICAgICAgICAgICAgY2hhciBjW3NpemVvZiAoaW50MzIpXTsKICAgICAgICB9IHU7CiAgICAgICAg
aW50IGNsYXNzOwogICAgICAgIGludCBzd2FwOwoKCgoKCgoKICAgICAgICBpZiAoYnVmWzBdICE9
IDB4N2YKICAgICAgICAgICAgfHwgKGJ1ZlsxXSAhPSAnRScgJiYgYnVmWzFdICE9ICdPJykKICAg
ICAgICAgICAgfHwgYnVmWzJdICE9ICdMJyB8fCBidWZbM10gIT0gJ0YnKQogICAgICAgICAgICBy
ZXR1cm47CgoKICAgICAgICBjbGFzcyA9IGJ1Zls0XTsKCiAgICAgICAgaWYgKGNsYXNzID09IDEp
IHsKICAgICAgICAgICAgICAgIEVsZjMyX0VoZHIgZWxmaGRyOwogICAgICAgICAgICAgICAgaWYg
KG5ieXRlcyA8PSBzaXplb2YgKEVsZjMyX0VoZHIpKQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CgoKICAgICAgICAgICAgICAgIHUubCA9IDE7CiAgICAgICAgICAgICAgICAodm9pZCkg
bWVtY3B5KCZlbGZoZHIsIGJ1Ziwgc2l6ZW9mIGVsZmhkcik7CiAgICAgICAgICAgICAgICBzd2Fw
ID0gKHUuY1tzaXplb2YoaW50MzIpIC0gMV0gKyAxKSAhPSBlbGZoZHIuZV9pZGVudFs1XTsKCiAg
ICAgICAgICAgICAgICBpZiAoZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3R5cGUpID09IDQpCgogICAg
ICAgICAgICAgICAgICAgICAgICBkb3Bobl9jb3JlKGNsYXNzLCBzd2FwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldHUzMihzd2FwLCBlbGZoZHIuZV9waG9mZiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRyLmVfcGhlbnRzaXplKSk7CgoK
CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldHUx
Nihzd2FwLCBlbGZoZHIuZV90eXBlKSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9waG5fZXhlYyhjbGFzcywgc3dhcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0dTMyKHN3YXAsIGVsZmhkci5lX3Bob2ZmKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldHUxNihzd2FwLCBlbGZoZHIuZV9waG51bSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRy
LmVfcGhlbnRzaXplKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgZG9zaG4oY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MzIoc3dhcCwgZWxmaGRyLmVf
c2hvZmYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxmaGRy
LmVfc2hudW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dhcCwgZWxm
aGRyLmVfc2hlbnRzaXplKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoY2xhc3MgPT0gMikgewogICAgICAgICAgICAgICAg
RWxmNjRfRWhkciBlbGZoZHI7CiAgICAgICAgICAgICAgICBpZiAobmJ5dGVzIDw9IHNpemVvZiAo
RWxmNjRfRWhkcikpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKCgogICAgICAgICAg
ICAgICAgdS5sID0gMTsKICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkoJmVsZmhkciwgYnVm
LCBzaXplb2YgZWxmaGRyKTsKICAgICAgICAgICAgICAgIHN3YXAgPSAodS5jW3NpemVvZihpbnQz
MikgLSAxXSArIDEpICE9IGVsZmhkci5lX2lkZW50WzVdOwoKICAgICAgICAgICAgICAgIGlmIChn
ZXR1MTYoc3dhcCwgZWxmaGRyLmVfdHlwZSkgPT0gNCkKCiAgICAgICAgICAgICAgICAgICAgICAg
IGRvcGhuX2NvcmUoY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmQsCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dTY0KHN3YXAs
IGVsZmhkci5lX3Bob2ZmKSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXR1MTYoc3dhcCwgZWxmaGRyLmVfcGhlbnRzaXplKSk7CgoKCiAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXR1
MTYoc3dhcCwgZWxmaGRyLmVfdHlwZSkgPT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvcGhuX2V4ZWMoY2xhc3MsIHN3YXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmZCwKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldHU2NChzd2FwLCBlbGZoZHIuZV9waG9mZiksCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dTE2KHN3YXAsIGVsZmhkci5lX3BobnVtKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHUxNihzd2FwLCBl
bGZoZHIuZV9waGVudHNpemUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICBkb3NobihjbGFzcywgc3dhcCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmQsCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHU2NChzd2FwLCBl
bGZoZHIuZV9zaG9mZiksCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYoc3dh
cCwgZWxmaGRyLmVfc2hudW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR1MTYo
c3dhcCwgZWxmaGRyLmVfc2hlbnRzaXplKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgfQp9Cg==


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