optimization/7520: internal compiler error in verify_local_live_at_start

chr-breitkopf@magrathea.de chr-breitkopf@magrathea.de
Wed Aug 7 03:16:00 GMT 2002


>Number:         7520
>Category:       optimization
>Synopsis:       internal compiler error in verify_local_live_at_start
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Aug 07 03:16:03 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Christoph Breitkopf
>Release:        3.1.1
>Organization:
>Environment:
Linux 2.4.19 on Intel Pentium II
>Description:
rv2.c:418: Internal compiler error in verify_local_live_at_start, at flow.c:583
>How-To-Repeat:
Run gcc on attached proprocessed file. Here is
a log of gcc -v, contains the flags used:
Reading specs from /usr/local/gcc-3.1.1/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/specs
Configured with: ../gcc-3.1.1/configure --prefix=/usr/local/gcc-3.1.1 --enable-languages=c
Thread model: single
gcc version 3.1.1
 /usr/local/gcc-3.1.1/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/cpp0 -lang-c -v -I../common -I/usr/include/X11 -iprefix /usr/local/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.1.1/ -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=1 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__MMX__ -DSPEED=200 -DBSD -Dlinux -Dtracktime=0 -DDCL_ATOF -DNOSTEREO -DBIGMEM rv2.c rv2.i
GNU CPP version 3.1.1 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/../../../../i686-pc-linux-gnu/include"
ignoring nonexistent directory "/usr/local/gcc-3.1.1/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 ../common
 /usr/include/X11
 /usr/local/include
 /usr/local/gcc-3.1.1/include
 /usr/local/gcc-3.1.1/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/include
 /usr/include
End of search list.
 /usr/local/gcc-3.1.1/lib/gcc-lib/i686-pc-linux-gnu/3.1.1/cc1 -fpreprocessed rv2.i -quiet -dumpbase rv2.c -march=pentium2 -malign-double -mno-ieee-fp -O3 -version -ffast-math -fomit-frame-pointer -fstrict-aliasing -o rv2.s
GNU CPP version 3.1.1 (cpplib) (i386 Linux/ELF)
GNU C version 3.1.1 (i686-pc-linux-gnu)
	compiled by GNU C version 3.1.1.
rv2.c: In function `getexposure':
rv2.c:418: Internal compiler error in verify_local_live_at_start, at flow.c:583
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>Fix:

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

IyAxICJydjIuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgInJ2
Mi5jIgoKCgpzdGF0aWMgY2hhciBTQ0NTaWRbXSA9ICJAKCMpcnYyLmMgMi4zNyAzLzE4Lzk3IExC
TCI7CiMgMTMgInJ2Mi5jIgojIDEgInJheS5oIiAxCiMgMTEgInJheS5oIgojIDEgIi4uL2NvbW1v
bi9zdGFuZGFyZC5oIiAxCiMgOSAiLi4vY29tbW9uL3N0YW5kYXJkLmgiCiMgMSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNTAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyNTEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAyIDMKIyAyNzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAyNzkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAyIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9sb2Nh
bC9nY2MtMy4xLjEvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCiMgMjAxICIvdXNyL2xvY2FsL2djYy0zLjEuMS9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjEuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQg
aW50IHNpemVfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKIyAxICIvdXNy
L2xvY2FsL2djYy0zLjEuMS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEuMS9pbmNs
dWRlL3N0ZGFyZy5oIiAxIDMKIyA0MyAiL3Vzci9sb2NhbC9nY2MtMy4xLjEvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVp
bHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDM5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4xLjEvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hh
cjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18g
dHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy90
eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu
dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAq
X19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2ludCBf
X3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190
Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRl
ZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIGxvbmcgaW50IF9f
cmxpbV90Owp0eXBlZGVmIF9fcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lk
X3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoK
CnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYg
bG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBs
b25nIGludCBfX2Nsb2NrX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21hc2s7
CiMgMTAwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc3RydWN0CiAgewoK
CgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21h
c2spKV07CgoKICB9IF9fZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Js
a2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25n
IF9fZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0
X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29m
ZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwojIDQxICIv
dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBG
SUxFOwojIDU3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
X0dfY29uZmlnLmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIv
dXNyL2xvY2FsL2djYy0zLjEuMS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEuMS9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyOTQgIi91c3IvbG9jYWwvZ2NjLTMuMS4xL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMS4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBs
b25nIGludCB3Y2hhcl90OwojIDMyMSAiL3Vzci9sb2NhbC9nY2MtMy4xLjEvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2ln
bmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMzUg
Ii91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
R191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA0OCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYy0zLjEuMS9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjEuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDIgMwojIDE1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1w
X3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNjQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVk
ZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lP
X21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsK
IyAxODcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGlu
dCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7
CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBf
SU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNl
OwogIGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9J
T19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2Vy
ICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwog
IGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0
IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0
YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDIzMyAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKdHlw
ZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4
dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBf
SU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz
IF9JT18yXzFfc3RkZXJyXzsKIyAyNjIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYg
X19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqIF9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fbmJ5dGVzKTsKIyAyNzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19z
c2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKiBfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1
Ziwgc2l6ZV90IF9fbik7CiMgMjgwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIGlu
dCBfX2lvX3NlZWtfZm4gKHZvaWQgKiBfX2Nvb2tpZSwgX19vZmZfdCBfX3BvcywgaW50IF9fdyk7
CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqIF9fY29va2llKTsKIyAzMTggIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICop
IDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxv
dyAoX0lPX0ZJTEUgKiwgaW50KSA7CiMgMzM3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRl
cm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRjIChp
bnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAq
X19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRlcm4g
aW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQg
X0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUg
KF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7
CiMgMzYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChf
SU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LCBfX2dudWNfdmFf
bGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CgpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJ
TEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsIF9fZ251Y192YV9saXN0KSA7
CgpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkg
OwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsK
CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50
LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2
NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAq
KSA7CiMgNTggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKdHlwZWRlZiBfX29mZl90IGZw
b3NfdDsKIyAxMTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RkaW9fbGltLmgiIDEgMwojIDExMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpl
eHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRl
cnI7CgoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7
CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpf
X25ldykgOwoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsKIyAxNDMgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0
ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxNjAgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0
IGNoYXIgKl9fcGZ4KSA7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsK
CmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZmbHVz
aF91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKIyAxODIgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5h
bWUsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgoKZXh0ZXJuIEZJTEUgKmZy
ZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIxMiAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50IF9fZmQsIF9f
Y29uc3QgY2hhciAqX19tb2RlcykgOwojIDIzMiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIDsK
CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNo
YXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX3NpemUpIDsKCgoKZXh0ZXJuIHZvaWQgc2V0
bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCgpleHRlcm4gaW50IHByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKCmV4dGVybiBpbnQgdmZw
cmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCmV4dGVybiBpbnQgdnByaW50ZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoK
CmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSA7CgoKCgoKZXh0ZXJu
IGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCgogICAgIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCBfX3ZzbnByaW50
ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKCgogICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnBy
aW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKCgogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwojIDMxMCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJu
IGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4
dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwojIDMzOCAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRj
IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoK
ZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdl
dGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0
ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9j
a2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9j
a2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr
ZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
ZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGNo
YXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkgOwojIDQwNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KmdldHMgKGNoYXIgKl9fcykgOwojIDQyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJu
IGludCBmcHV0cyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSkgOwojIDQzOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBw
dXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmlj
dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwoKCmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3Qg
X19wdHIsIHNpemVfdCBfX3NpemUsIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7
CgoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRy
LCBzaXplX3QgX19zaXplLCBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7
CgpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLCBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CgoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBf
X29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDc3ICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CiMgNDk5ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykgOwoKCmV4dGVybiBpbnQgZnNldHBvcyAo
RklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDUzNiAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSA7Cgpl
eHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlcnJvciAoRklM
RSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUgKl9f
c3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0
ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gdm9p
ZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpl
eHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTY3ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRl
cm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9f
bW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRl
cm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgNjE0ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBp
bnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tm
aWxlIChGSUxFICpfX3N0cmVhbSkgOwojIDYzNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYg
KHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAo
dm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUg
aW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3Jl
YWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2ln
bmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUg
aW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFk
X3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2ln
bmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxp
bmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0
KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChf
X3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25l
ZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVf
cHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjX3VubG9ja2Vk
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193
cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0
cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVh
bSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CnB1
dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRl
X3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChzdGRvdXQsICh1
bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooc3Rkb3V0KS0+X0lPX3dy
aXRlX3B0cisrID0gKF9fYykpKTsKfQojIDExMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIg
MwpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAg
cmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19p
bmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgo
X19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDYzNiAiL3Vzci9pbmNsdWRlL3N0
ZGlvLmgiIDIgMwoKCgojIDEwICIuLi9jb21tb24vc3RhbmRhcmQuaCIgMgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
CgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsK
dHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBf
X3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2Zz
aWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9f
dCBpbm9fdDsKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kZXZf
dCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3Qg
bW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRf
dCB1aWRfdDsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRf
dCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNz
aXplX3Q7CgoKCgp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBj
YWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiMgNzEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVf
dCB0aW1lX3Q7CiMgMTIzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vz
ci9sb2NhbC9nY2MtMy4xLjEvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMTI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK
Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0
IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CiMgMTY5ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2
X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9f
KSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9f
d29yZF9fKSkpOwojIDE5MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvZW5kaWFu
LmgiIDIgMwojIDE5MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1
ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAx
IDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19zaWdf
YXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2ln
c2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCgojIDEgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDEgMwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0
aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAg
fTsKIyAzOSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCgoKCgpzdHJ1Y3QgdGlt
ZXZhbDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgoKdHlwZWRlZiBfX2ZkX3NldCBmZF9z
ZXQ7CiMgNzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBfX3NlbGVj
dCAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywgX19mZF9zZXQgKl9fd3JpdGVmZHMs
IF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgOwoKCmV4
dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLCBfX2ZkX3Nl
dCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLCBzdHJ1Y3QgdGltZXZhbCAqX190
aW1lb3V0KSA7CiMgOTMgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKCiMgMTk1ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNy
b3MuaCIgMSAzCiMgMTk4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKCnR5cGVk
ZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsK
dHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyMTggIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwoKIyAxMiAiLi4vY29tbW9uL3N0YW5kYXJkLmgiIDIKCiMgMSAiL3Vzci9pbmNs
dWRlL2ZjbnRsLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAxIDMKIyAxMDggIi91c3IvaW5jbHVkZS9iaXRzL2Zj
bnRsLmgiIDMKc3RydWN0IGZsb2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsKICAgIHNob3J0
IGludCBsX3doZW5jZTsKCiAgICBfX29mZl90IGxfc3RhcnQ7CiAgICBfX29mZl90IGxfbGVuOwoK
CgoKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKIyAzNCAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIg
MwojIDYwICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IF9fZmNudGwgKGludCBf
X2ZkLCBpbnQgX19jbWQsIC4uLikgOwpleHRlcm4gaW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9f
Y21kLCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgX19vcGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
aW50IF9fb2ZsYWcsIC4uLikgOwoKZXh0ZXJuIGludCBvcGVuIChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgaW50IF9fb2ZsYWcsIC4uLikgOwojIDg1ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRl
cm4gaW50IGNyZWF0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CiMg
MTE0ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwg
aW50IF9fY21kLCBfX29mZl90IF9fbGVuKSA7CiMgMTI4ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIg
MwoKIyAxNCAiLi4vY29tbW9uL3N0YW5kYXJkLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvaHVnZV92YWwuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs
bHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9f
YWNvcyAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGFzaW4gKGRvdWJsZSBfX3gpOyBleHRl
cm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGF0YW4gKGRvdWJs
ZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91Ymxl
IGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4yIChk
b3VibGUgX195LCBkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCk7
IGV4dGVybiBkb3VibGUgX19jb3MgKGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGRvdWJsZSBzaW4gKGRv
dWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi
bGUgdGFuIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX3RhbiAoZG91YmxlIF9feCk7CiMg
NzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgY29zaCAo
ZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KTsKCmV4dGVybiBk
b3VibGUgc2luaCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194
KTsKCmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX190YW5o
IChkb3VibGUgX194KTsKCgoKZXh0ZXJuIGRvdWJsZSBhY29zaCAoZG91YmxlIF9feCk7IGV4dGVy
biBkb3VibGUgX19hY29zaCAoZG91YmxlIF9feCk7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3Vi
bGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KTsKCmV4dGVybiBkb3Vi
bGUgYXRhbmggKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fYXRhbmggKGRvdWJsZSBfX3gp
OwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2V4
cCAoZG91YmxlIF9feCk7CiMgMTA2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpl
eHRlcm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpOyBleHRlcm4g
ZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCk7CgoKZXh0ZXJuIGRv
dWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpOyBleHRlcm4gZG91YmxlIF9f
bGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KTsKCgpleHRlcm4gZG91YmxlIGxvZyAo
ZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpOwoKCmV4dGVybiBk
b3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBf
X3gpOwoKCmV4dGVybiBkb3VibGUgbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpOyBl
eHRlcm4gZG91YmxlIF9fbW9kZiAoZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpOwoKCgpleHRl
cm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3Vi
bGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJs
ZSBfX2xvZzFwIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gp
OyBleHRlcm4gZG91YmxlIF9fbG9nYiAoZG91YmxlIF9feCk7CiMgMTQzICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSk7IGV4dGVybiBkb3VibGUgX19wb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOwoKCmV4
dGVybiBkb3VibGUgc3FydCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3Vi
bGUgX194KTsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7
IGV4dGVybiBkb3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpleHRl
cm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91Ymxl
IF9feCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCk7IGV4dGVybiBkb3Vi
bGUgX19jZWlsIChkb3VibGUgX194KTsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJs
ZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29y
IChkb3VibGUgX194KTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KTsKCgpleHRl
cm4gZG91YmxlIGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9f
Zm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmYgKGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBf
X2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
CmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGluZm5hbiAoaW50IF9fZXJyb3Ip
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2luZm5hbiAoaW50
IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGRy
ZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpOyBleHRlcm4gZG91YmxlIF9fZHJlbSAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSk7CgoKCmV4dGVybiBkb3VibGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBf
X3gpOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpOwoKCgoKZXh0ZXJu
IGRvdWJsZSBjb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAyMTcgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBpbnQgX19pc25hbiAoZG91YmxlIF9fdmFsdWUpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGowIChk
b3VibGUpOyBleHRlcm4gZG91YmxlIF9fajAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgajEgKGRv
dWJsZSk7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50
LCBkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fam4gKGludCwgZG91YmxlKTsKZXh0ZXJuIGRvdWJs
ZSB5MCAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpOwpleHRlcm4gZG91Ymxl
IHkxIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9feTEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUg
eW4gKGludCwgZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJsZSk7CgoKCgoK
ZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSk7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBfX2VyZmMgKGRvdWJs
ZSk7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpOyBleHRlcm4gZG91YmxlIF9fbGdhbW1h
IChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRnYW1tYSAoZG91YmxlKTsgZXh0ZXJuIGRvdWJsZSBf
X3RnYW1tYSAoZG91YmxlKTsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJsZSk7IGV4dGVy
biBkb3VibGUgX19nYW1tYSAoZG91YmxlKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFfciAo
ZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4gZG91YmxlIF9fbGdhbW1hX3IgKGRvdWJs
ZSwgaW50ICpfX3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUgX194
KTsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gpOwoKCmV4dGVybiBkb3VibGUgbmV4
dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZG91YmxlIHJlbWFpbmRlciAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSk7IGV4dGVybiBkb3VibGUgX19yZW1haW5kZXIgKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3kpOwoKCgpleHRlcm4gZG91YmxlIHNjYWxiIChkb3VibGUgX194LCBk
b3VibGUgX19uKTsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxiIChkb3VibGUgX194LCBkb3VibGUgX19u
KTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gsIGludCBfX24pOyBleHRlcm4g
ZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194LCBpbnQgX19uKTsKCgpleHRlcm4gaW50IGlsb2di
IChkb3VibGUgX194KTsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KTsKIyA2NCAiL3Vz
ci9pbmNsdWRlL21hdGguaCIgMiAzCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBhY29zZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZs
b2F0IF9fYWNvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgYXNpbmYgKGZsb2F0IF9feCk7
IGV4dGVybiBmbG9hdCBfX2FzaW5mIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChm
bG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9h
dCBhdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChm
bG9hdCBfX3ksIGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGNvc2YgKGZsb2F0IF9feCk7IGV4
dGVybiBmbG9hdCBfX2Nvc2YgKGZsb2F0IF9feCk7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQg
X194KTsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCB0YW5m
IChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gpOwojIDc4ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0IF9f
eCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpOwoKZXh0ZXJuIGZsb2F0IHNpbmhm
IChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19zaW5oZiAoZmxvYXQgX194KTsKCmV4dGVybiBm
bG9hdCB0YW5oZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fdGFuaGYgKGZsb2F0IF9feCk7
CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBfX2Fjb3No
ZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCk7IGV4dGVybiBm
bG9hdCBfX2FzaW5oZiAoZmxvYXQgX194KTsKCmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9f
eCk7IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KTsKCgoKCgpleHRlcm4gZmxvYXQg
ZXhwZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KTsKIyAxMDYg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZs
b2F0IF9feCwgaW50ICpfX2V4cG9uZW50KTsgZXh0ZXJuIGZsb2F0IF9fZnJleHBmIChmbG9hdCBf
X3gsIGludCAqX19leHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBp
bnQgX19leHBvbmVudCk7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19l
eHBvbmVudCk7CgoKZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf
X2xvZ2YgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KTsgZXh0
ZXJuIGZsb2F0IF9fbG9nMTBmIChmbG9hdCBfX3gpOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxv
YXQgX194LCBmbG9hdCAqX19pcHRyKTsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwg
ZmxvYXQgKl9faXB0cik7CgoKCmV4dGVybiBmbG9hdCBleHBtMWYgKGZsb2F0IF9feCk7IGV4dGVy
biBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9h
dCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2cxcGYgKGZsb2F0IF9feCk7CgoKZXh0ZXJuIGZsb2F0
IGxvZ2JmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KTsKIyAx
NDMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBmbG9hdCBwb3dmIChm
bG9hdCBfX3gsIGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9feCwgZmxv
YXQgX195KTsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCk7IGV4dGVybiBmbG9hdCBf
X3NxcnRmIChmbG9hdCBfX3gpOwoKCgpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9hdCBfX3gsIGZs
b2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOwoK
CgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAo
ZmxvYXQgX194KTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpOyBleHRlcm4g
ZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KTsKCgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxv
YXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29y
ZiAoZmxvYXQgX194KTsgZXh0ZXJuIGZsb2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpOwoKCmV4dGVy
biBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19mbW9k
ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mZiAoZmxvYXQg
X192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5p
dGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl
cm4gaW50IGlzaW5mZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCmV4dGVybiBpbnQgZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGZsb2F0IGluZm5hbmYgKGludCBfX2Vycm9yKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2luZm5hbmYgKGludCBfX2Vy
cm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChm
bG9hdCBfX3gsIGZsb2F0IF9feSk7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZs
b2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCk7IGV4dGVy
biBmbG9hdCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KTsKCgoKCmV4dGVybiBmbG9hdCBjb3B5
c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBmbG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKIyAyMTcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9hdCk7IGV4dGVybiBm
bG9hdCBfX2owZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgajFmIChmbG9hdCk7IGV4dGVybiBmbG9h
dCBfX2oxZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KTsgZXh0ZXJuIGZs
b2F0IF9fam5mIChpbnQsIGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpOyBleHRlcm4g
ZmxvYXQgX195MGYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHkxZiAoZmxvYXQpOyBleHRlcm4gZmxv
YXQgX195MWYgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBmbG9hdCk7IGV4dGVybiBm
bG9hdCBfX3luZiAoaW50LCBmbG9hdCk7CgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0KTsg
ZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgZXJmY2YgKGZsb2F0KTsg
ZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KTsKZXh0ZXJuIGZsb2F0IGxnYW1tYWYgKGZsb2F0
KTsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZiAoZmxvYXQpOwpleHRlcm4gZmxvYXQgdGdhbW1hZiAo
ZmxvYXQpOyBleHRlcm4gZmxvYXQgX190Z2FtbWFmIChmbG9hdCk7CgoKCgpleHRlcm4gZmxvYXQg
Z2FtbWFmIChmbG9hdCk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpOwoKCgoKCgpleHRl
cm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKTsgZXh0ZXJuIGZsb2F0
IF9fbGdhbW1hZl9yIChmbG9hdCwgaW50ICpfX3NpZ25nYW1wKTsKCgoKCgoKZXh0ZXJuIGZsb2F0
IHJpbnRmIChmbG9hdCBfX3gpOyBleHRlcm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KTsKCgpl
eHRlcm4gZmxvYXQgbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBm
bG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gZmxvYXQg
cmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpOyBleHRlcm4gZmxvYXQgX19yZW1haW5k
ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSk7CgoKCmV4dGVybiBmbG9hdCBzY2FsYmYgKGZsb2F0
IF9feCwgZmxvYXQgX19uKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0
IF9fbik7CgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pOyBleHRl
cm4gZmxvYXQgX19zY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pOwoKCmV4dGVybiBpbnQgaWxv
Z2JmIChmbG9hdCBfX3gpOyBleHRlcm4gaW50IF9faWxvZ2JmIChmbG9hdCBfX3gpOwojIDgzICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBf
X3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zbCAobG9uZyBkb3VibGUgX194KTsKCmV4dGVy
biBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgYXRhbmwgKGxv
bmcgZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBf
X3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRv
dWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9feSwg
bG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUg
X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194KTsKCmV4dGVy
biBsb25nIGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUg
X19zaW5sIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHRhbmwgKGxvbmcg
ZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmwgKGxvbmcgZG91YmxlIF9feCk7
CiMgNzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJs
ZSBjb3NobCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwgKGxv
bmcgZG91YmxlIF9feCk7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9f
eCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJu
IGxvbmcgZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUg
X190YW5obCAobG9uZyBkb3VibGUgX194KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAo
bG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRvdWJs
ZSBfX3gpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRh
bmhsIChsb25nIGRvdWJsZSBfX3gpOwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBsIChsb25n
IGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBfX3gp
OwojIDEwNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91
YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4
cG9uZW50KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cx
MGwgKGxvbmcgZG91YmxlIF9feCk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG1vZGZsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpOyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2Rm
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKTsKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhw
bTFsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcg
ZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAobG9uZyBkb3VibGUgX194
KTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBfX3gpOwojIDE0MyAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93bCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBzcXJ0bCAo
bG9uZyBkb3VibGUgX194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91Ymxl
IF9feCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faHlwb3RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSk7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2JydGwgKGxvbmcg
ZG91YmxlIF9feCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gp
OwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2NlaWxsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJs
ZSBfX3gpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCk7CgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9f
eSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSk7CgoKCgpleHRlcm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcg
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBp
bnQgaXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50
IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9faW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3VibGUg
X194KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gp
OwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxz
LmgiIDMKZXh0ZXJuIGludCBfX2lzbmFubCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192
YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBq
MGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSk7
CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fajFsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBk
b3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qbmwgKGludCwgbG9uZyBkb3VibGUpOwpleHRl
cm4gbG9uZyBkb3VibGUgeTBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kw
bCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSk7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3kxbCAobG9uZyBkb3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUg
eW5sIChpbnQsIGxvbmcgZG91YmxlKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxv
bmcgZG91YmxlKTsKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJs
ZSBlcmZjbCAobG9uZyBkb3VibGUpOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9uZyBk
b3VibGUpOwpleHRlcm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpOyBleHRlcm4g
bG9uZyBkb3VibGUgX19sZ2FtbWFsIChsb25nIGRvdWJsZSk7CmV4dGVybiBsb25nIGRvdWJsZSB0
Z2FtbWFsIChsb25nIGRvdWJsZSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RnYW1tYWwgKGxvbmcg
ZG91YmxlKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKTsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSk7CgoKCgoKCmV4dGVybiBsb25n
IGRvdWJsZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOyBleHRlcm4g
bG9uZyBkb3VibGUgX19sZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApOwoK
CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3JpbnRsIChsb25nIGRvdWJsZSBfX3gpOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBuZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChsb25n
IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JlbWFpbmRlcmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX24pOyBleHRlcm4gbG9uZyBkb3VibGUgX19z
Y2FsYmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKTsKCgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbik7IGV4dGVybiBsb25nIGRv
dWJsZSBfX3NjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbik7CgoKZXh0ZXJuIGludCBp
bG9nYmwgKGxvbmcgZG91YmxlIF9feCk7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91Ymxl
IF9feCk7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVk
ZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwojIDIzNiAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9QRU5fLAog
IF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgpleHRlcm4gX0xJQl9W
RVJTSU9OX1RZUEUgX0xJQl9WRVJTSU9OOwojIDI2MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwpz
dHJ1Y3QgZXhjZXB0aW9uCgogIHsKICAgIGludCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRv
dWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKCgpl
eHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSA7CiMgMjg5ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MtMy4xLjEvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4xLjEvaW5jbHVkZS9mbG9hdC5oIiAxIDMKIyAyOTAgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwojIDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMSAzCiMgMjM0ICIvdXNyL2luY2x1ZGUvYml0
cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09
IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgX19zZ25mIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0
IF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4w
KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChsb25nIGRvdWJsZSk7IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1
cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfQoKCmV4dGVy
biBfX2lubGluZSBkb3VibGUgX19wb3cyIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91Ymxl
IF9fcG93MiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2V4dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQg
X19wID0gKGxvbmcgbG9uZyBpbnQpIF9feDsgaWYgKF9feCA9PSAobG9uZyBkb3VibGUpIF9fcCkg
eyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKDEu
MCksICJ1IiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZs
ZAklJXN0KDApXG5cdCIgImZybmRpbnQJCQkjIGludCh4KVxuXHQiICJmeGNoXG5cdCIgImZzdWIJ
JSVzdCgxKQkJIyBmcmFjdCh4KVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCkpIC0gMVxuXHQi
IDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1
ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRl
cm4gX19pbmxpbmUgZmxvYXQgX19wb3cyZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQg
X19wb3cyZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBf
X3AgPSAobG9uZyBsb25nIGludCkgX194OyBpZiAoX194ID09IChsb25nIGRvdWJsZSkgX19wKSB7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoMS4w
KSwgInUiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gX19hc20gX192b2xhdGlsZV9fICgiZmxk
CSUlc3QoMClcblx0IiAiZnJuZGludAkJCSMgaW50KHgpXG5cdCIgImZ4Y2hcblx0IiAiZnN1Ygkl
JXN0KDEpCQkjIGZyYWN0KHgpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4KSkgLSAxXG5cdCIg
OiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVl
ICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDog
IjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBfX3BvdzJsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19leHRl
bnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50KSBfX3g7IGlmIChfX3gg
PT0gKGxvbmcgZG91YmxlKSBfX3ApIHsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiICgxLjApLCAidSIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQJJSVzdCgwKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeClc
blx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeClcblx0IiAiZjJ4bTEJCQkj
IDJeKGZyYWN0KHgpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50
KSA6ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2Nh
bGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsg
cmV0dXJuIF9fdmFsdWU7IH0KIyAyODMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwpleHRlcm4gX19pbmxpbmUgdm9pZCBfX3NpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3Np
bngsIGRvdWJsZSAqX19jb3N4KTsKZXh0ZXJuIF9faW5saW5lIHZvaWQKX19zaW5jb3MgKGRvdWJs
ZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkKewogIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fY29zcjsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19zaW5yOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc2luY29zXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVl
YXhcblx0IiAianoJMWZcblx0IiAiZmxkcGlcblx0IiAiZmFkZAklJXN0KDApXG5cdCIgImZ4Y2gJ
JSVzdCgxKVxuXHQiICIyOiBmcHJlbTFcblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVzdGwJJDB4
NDAwLCAlJWVheFxuXHQiICJqbnoJMmJcblx0IiAiZnN0cAklJXN0KDEpXG5cdCIgImZzaW5jb3Nc
blx0IiAiMToiIDogIj10IiAoX19jb3NyKSwgIj11IiAoX19zaW5yKSA6ICIwIiAoX194KSk7ICpf
X3NpbnggPSBfX3NpbnI7ICpfX2Nvc3ggPSBfX2Nvc3I7Cn0KCmV4dGVybiBfX2lubGluZSB2b2lk
IF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KTsKZXh0
ZXJuIF9faW5saW5lIHZvaWQKX19zaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0ICpfX3NpbngsIGZs
b2F0ICpfX2Nvc3gpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX2Nvc3I7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fc2lucjsgX19hc20gX192b2xhdGlsZV9fICgiZnNpbmNvc1xuXHQiICJmbnN0
c3cJJSVheFxuXHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImp6CTFmXG5cdCIgImZsZHBp
XG5cdCIgImZhZGQJJSVzdCgwKVxuXHQiICJmeGNoCSUlc3QoMSlcblx0IiAiMjogZnByZW0xXG5c
dCIgImZuc3RzdwklJWF4XG5cdCIgInRlc3RsCSQweDQwMCwgJSVlYXhcblx0IiAiam56CTJiXG5c
dCIgImZzdHAJJSVzdCgxKVxuXHQiICJmc2luY29zXG5cdCIgIjE6IiA6ICI9dCIgKF9fY29zciks
ICI9dSIgKF9fc2lucikgOiAiMCIgKF9feCkpOyAqX19zaW54ID0gX19zaW5yOyAqX19jb3N4ID0g
X19jb3NyOwp9CgpleHRlcm4gX19pbmxpbmUgdm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgKl9fc2lueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBkb3VibGUgKl9fY29zeCk7CmV4dGVybiBfX2lubGluZSB2b2lkCl9fc2luY29zbCAobG9uZyBk
b3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KQp7CiAg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19jb3NyOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3NpbnI7
IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW5jb3Ncblx0IiAiZm5zdHN3CSUlYXhcblx0IiAidGVz
dGwJJDB4NDAwLCAlJWVheFxuXHQiICJqegkxZlxuXHQiICJmbGRwaVxuXHQiICJmYWRkCSUlc3Qo
MClcblx0IiAiZnhjaAklJXN0KDEpXG5cdCIgIjI6IGZwcmVtMVxuXHQiICJmbnN0c3cJJSVheFxu
XHQiICJ0ZXN0bAkkMHg0MDAsICUlZWF4XG5cdCIgImpuegkyYlxuXHQiICJmc3RwCSUlc3QoMSlc
blx0IiAiZnNpbmNvc1xuXHQiICIxOiIgOiAiPXQiIChfX2Nvc3IpLCAiPXUiIChfX3NpbnIpIDog
IjAiIChfX3gpKTsgKl9fc2lueCA9IF9fc2lucjsgKl9fY29zeCA9IF9fY29zcjsKfQojIDMyOCAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
X19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0gMSA9IDJeKHggKiBs
b2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAkl
JXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQi
ICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihm
cmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHggKiBsb2cyKGUpKSAt
IDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBv
bmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUJCQkjIDJeaW50
KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4wKSwgInUiIChfX2V4
cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3RlbXAgKyBfX3ZhbHVlOyB9CiMgMzQ4
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBleHAgKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgZXhwIChkb3VibGUgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhw
b25lbnQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54ID0gMl4oeCAqIGxvZzIo
ZSkpXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVzdCgxKVxu
XHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAiZnN1Ygkl
JXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJhY3QoeCAq
IGxvZzIoZSkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4cG9uZW50KSA6
ICIwIiAoX194KSk7IF9fdmFsdWUgKz0gMS4wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUpLCAidSIgKF9fZXhwb25lbnQpKTsgcmV0
dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGV4cGYgKGZsb2F0KTsgZXh0ZXJu
IF9faW5saW5lIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBfX3ZvbGF0aWxl
X18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVsCSUlc3QoMSkJ
CSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHgg
KiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9n
MihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgOiAi
PXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3ZhbHVlICs9
IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAi
IChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZSBleHBsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
X192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgX19hc20gX192b2xhdGls
ZV9fICgiZmxkbDJlCQkJIyBlXnggPSAyXih4ICogbG9nMihlKSlcblx0IiAiZm11bAklJXN0KDEp
CQkjIHggKiBsb2cyKGUpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4
ICogbG9nMihlKSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxv
ZzIoZSkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiIDog
Ij10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAiIChfX3gpKTsgX192YWx1ZSAr
PSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX192YWx1ZSksICJ1IiAoX19leHBvbmVudCkpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX2V4cGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCA9IDJeKHggKiBsb2cyKGUpKVxuXHQiICJmbXVsCSUl
c3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMg
aW50KHggKiBsb2cyKGUpKVxuXHQiICJmeGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4
ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJCQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5c
dCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX3Zh
bHVlICs9IDEuMDsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3ZhbHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9CgoK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSB0YW4gKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3Vi
bGUgdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9fdmFsdWUyIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZwdGFuIiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192YWx1
ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
dGFuZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgdGFuZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUy
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFu
IiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4g
X192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUp
OyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWUy
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwdGFu
IiA6ICI9dCIgKF9fdmFsdWUyKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4g
X192YWx1ZTsgfQojIDM2NyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVy
biBfX2lubGluZSBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBl
eHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCwgZmxvYXQpOyBleHRlcm4gX19pbmxp
bmUgZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSwgbG9uZyBkb3Vi
bGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ks
IGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBf
X3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAo
X195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBh
dGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsg
cmV0dXJuIF9fdmFsdWU7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZtb2QgKGRvdWJsZSwg
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUg
X195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
IjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4g
X192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZm1vZGYgKGZsb2F0LCBmbG9hdCk7IGV4
dGVybiBfX2lubGluZSBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0
IiAiZm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUsIGxvbmcgZG91Ymxl
KTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpw
CTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0KIyAzODIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUu
aCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOyBleHRlcm4g
X19pbmxpbmUgZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyBfX2V4
dGVuc2lvbl9fIGxvbmcgbG9uZyBpbnQgX19wID0gKGxvbmcgbG9uZyBpbnQpIF9feTsgaWYgKF9f
eCA9PSAwLjAgJiYgX195ID4gMC4wKSByZXR1cm4gMC4wOyBpZiAoX195ID09IChkb3VibGUpIF9f
cCkgeyBsb25nIGRvdWJsZSBfX3IgPSAxLjA7IGlmIChfX3AgPT0gMCkgcmV0dXJuIDEuMDsgaWYg
KF9fcCA8IDApIHsgX19wID0gLV9fcDsgX194ID0gMS4wIC8gX194OyB9IHdoaWxlICgxKSB7IGlm
IChfX3AgJiAxKSBfX3IgKj0gX194OyBfX3AgPj49IDE7IGlmIChfX3AgPT0gMCkgcmV0dXJuIF9f
cjsgX194ICo9IF9feDsgfSB9IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ5bDJ4IiA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3gpLCAidSIgKDEuMCkgOiAic3QoMSkiKTsgX19hc20gX192b2xhdGls
ZV9fICgiZm11bAklJXN0KDEpCQkjIHkgKiBsb2cyKHgpXG5cdCIgImZzdAklJXN0KDEpXG5cdCIg
ImZybmRpbnQJCQkjIGludCh5ICogbG9nMih4KSlcblx0IiAiZnhjaFxuXHQiICJmc3ViCSUlc3Qo
MSkJCSMgZnJhY3QoeSAqIGxvZzIoeCkpXG5cdCIgImYyeG0xCQkJIyAyXihmcmFjdCh5ICogbG9n
Mih4KSkpIC0gMVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25lbnQpIDogIjAi
IChfX3kpLCAiMSIgKF9fdmFsdWUpKTsgX192YWx1ZSArPSAxLjA7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX192YWx1ZSksICJ1IiAoX19leHBv
bmVudCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgcG93ZiAoZmxv
YXQsIGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IHBvd2YgKGZsb2F0IF9feCwgZmxvYXQg
X195KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fZXhwb25lbnQ7IF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX3AgPSAobG9uZyBsb25n
IGludCkgX195OyBpZiAoX194ID09IDAuMCAmJiBfX3kgPiAwLjApIHJldHVybiAwLjA7IGlmIChf
X3kgPT0gKGRvdWJsZSkgX19wKSB7IGxvbmcgZG91YmxlIF9fciA9IDEuMDsgaWYgKF9fcCA9PSAw
KSByZXR1cm4gMS4wOyBpZiAoX19wIDwgMCkgeyBfX3AgPSAtX19wOyBfX3ggPSAxLjAgLyBfX3g7
IH0gd2hpbGUgKDEpIHsgaWYgKF9fcCAmIDEpIF9fciAqPSBfX3g7IF9fcCA+Pj0gMTsgaWYgKF9f
cCA9PSAwKSByZXR1cm4gX19yOyBfX3ggKj0gX194OyB9IH0gX19hc20gX192b2xhdGlsZV9fICgi
ZnlsMngiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoMS4wKSA6ICJzdCgxKSIp
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbXVsCSUlc3QoMSkJCSMgeSAqIGxvZzIoeClcblx0IiAi
ZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHkgKiBsb2cyKHgpKVxuXHQiICJmeGNo
XG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh5ICogbG9nMih4KSlcblx0IiAiZjJ4bTEJCQkj
IDJeKGZyYWN0KHkgKiBsb2cyKHgpKSkgLSAxXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwgIj11IiAo
X19leHBvbmVudCkgOiAiMCIgKF9feSksICIxIiAoX192YWx1ZSkpOyBfX3ZhbHVlICs9IDEuMDsg
X19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3Zh
bHVlKSwgInUiIChfX2V4cG9uZW50KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBwb3dsIChsb25nIGRvdWJsZSwgbG9uZyBkb3VibGUpOyBleHRlcm4gX19p
bmxpbmUgbG9uZyBkb3VibGUgcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19l
eHBvbmVudDsgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fcCA9IChsb25nIGxvbmcgaW50
KSBfX3k7IGlmIChfX3ggPT0gMC4wICYmIF9feSA+IDAuMCkgcmV0dXJuIDAuMDsgaWYgKF9feSA9
PSAoZG91YmxlKSBfX3ApIHsgbG9uZyBkb3VibGUgX19yID0gMS4wOyBpZiAoX19wID09IDApIHJl
dHVybiAxLjA7IGlmIChfX3AgPCAwKSB7IF9fcCA9IC1fX3A7IF9feCA9IDEuMCAvIF9feDsgfSB3
aGlsZSAoMSkgeyBpZiAoX19wICYgMSkgX19yICo9IF9feDsgX19wID4+PSAxOyBpZiAoX19wID09
IDApIHJldHVybiBfX3I7IF9feCAqPSBfX3g7IH0gfSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeWwy
eCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgxLjApIDogInN0KDEpIik7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZtdWwJJSVzdCgxKQkJIyB5ICogbG9nMih4KVxuXHQiICJmc3QJ
JSVzdCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeSAqIGxvZzIoeCkpXG5cdCIgImZ4Y2hcblx0
IiAiZnN1YgklJXN0KDEpCQkjIGZyYWN0KHkgKiBsb2cyKHgpKVxuXHQiICJmMnhtMQkJCSMgMl4o
ZnJhY3QoeSAqIGxvZzIoeCkpKSAtIDFcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUiIChfX2V4
cG9uZW50KSA6ICIwIiAoX195KSwgIjEiIChfX3ZhbHVlKSk7IF9fdmFsdWUgKz0gMS4wOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9fdmFsdWUp
LCAidSIgKF9fZXhwb25lbnQpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0MjYgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIHNxcnQgKGRvdWJs
ZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBk
b3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgc3FydGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gp
IHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6
ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0
KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUg
X19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZhYnMgKGRv
dWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgeyByZXR1cm4g
X19idWlsdGluX2ZhYnMgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZhYnNmIChmbG9h
dCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1
aWx0aW5fZmFic2YgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChs
b25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3Vi
bGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNs
IChfX3gpOyB9CgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgc2luIChkb3VibGUpOyBleHRl
cm4gX19pbmxpbmUgZG91YmxlIHNpbiAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19y
ZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzaW5mIChm
bG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIg
ZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1
bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBzaW5sIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBz
aW5sIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzaW4iIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsg
cmV0dXJuIF9fcmVzdWx0OyB9CgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNvcyAoZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBjb3MgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91Ymxl
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29z
ZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgY29zZiAoZmxvYXQgX194KSB7IHJlZ2lz
dGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9f
cmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgY29zbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmY29zIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194
KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3Vi
bGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIg
ZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10
IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBl
eHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0
IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBh
dGFubCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxv
bmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192
b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6
ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cg
KGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yOyBmeGNoOyBm
eWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
cmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2dmIChmbG9hdCk7IGV4dGVybiBfX2lu
bGluZSBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQp
IDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgbG9uZyBk
b3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVz
dWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9f
cmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBsb2cxMCAoZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBs
b2cxMCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoImZsZGxnMjsgZnhjaDsgZnlsMngiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChf
X3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
bG9nMTBmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkg
eyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbGcyOyBm
eGNoOyBmeWwyeCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0
dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcg
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18g
KCJmbGRsZzI7IGZ4Y2g7IGZ5bDJ4IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJz
dCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXNpbiAo
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luIChkb3VibGUgX194KSB7IHJldHVy
biBfX2F0YW4ybCAoX194LCBfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gpKTsgfSBleHRlcm4gX19p
bmxpbmUgZmxvYXQgYXNpbmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5mIChm
bG9hdCBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3gsIF9fc3FydGwgKDEuMCAtIF9feCAqIF9f
eCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUpOyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1
cm4gX19hdGFuMmwgKF9feCwgX19zcXJ0bCAoMS4wIC0gX194ICogX194KSk7IH0KZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBhY29zIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIGFjb3Mg
KGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYXRhbjJsIChfX3NxcnRsICgxLjAgLSBfX3ggKiBfX3gp
LCBfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhY29zZiAoZmxvYXQpOyBleHRlcm4gX19p
bmxpbmUgZmxvYXQgYWNvc2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19hdGFuMmwgKF9fc3FydGwg
KDEuMCAtIF9feCAqIF9feCksIF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFj
b3NsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhY29zbCAobG9u
ZyBkb3VibGUgX194KSB7IHJldHVybiBfX2F0YW4ybCAoX19zcXJ0bCAoMS4wIC0gX194ICogX194
KSwgX194KTsgfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91
YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZXR1cm4gX194ID49IDAuMCA/IDEuMCA6IC0xLjA7IH0KCgoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBzaW5oIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIHNpbmggKGRvdWJs
ZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9fZmFic2wg
KF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApICsgX19leG0xKSAq
IF9fc2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNpbmhmIChmbG9hdCk7IGV4
dGVybiBfX2lubGluZSBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAuNSAqIChfX2V4
bTEgLyAoX19leG0xICsgMS4wKSArIF9fZXhtMSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194KSk7IHJldHVybiAwLjUgKiAoX19leG0x
IC8gKF9fZXhtMSArIDEuMCkgKyBfX2V4bTEpICogX19zZ24xbCAoX194KTsgfQoKCgpleHRlcm4g
X19pbmxpbmUgZG91YmxlIGNvc2ggKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgY29z
aCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4ID0gX19leHBsIChfX3gp
OyByZXR1cm4gMC41ICogKF9fZXggKyAxLjAgLyBfX2V4KTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgY29zaGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGNvc2hmIChmbG9hdCBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leCA9IF9fZXhwbCAoX194KTsgcmV0dXJuIDAuNSAq
IChfX2V4ICsgMS4wIC8gX19leCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGNvc2hs
IChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXggPSBfX2V4cGwgKF9feCk7IHJl
dHVybiAwLjUgKiAoX19leCArIDEuMCAvIF9fZXgpOyB9CgoKCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgdGFuaCAoZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSB0YW5oIChkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsICgtX19mYWJzbCAoX194
ICsgX194KSk7IHJldHVybiBfX2V4bTEgLyAoX19leG0xICsgMi4wKSAqIF9fc2duMWwgKC1fX3gp
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCB0YW5oZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBf
X2V4cG0xbCAoLV9fZmFic2wgKF9feCArIF9feCkpOyByZXR1cm4gX19leG0xIC8gKF9fZXhtMSAr
IDIuMCkgKiBfX3NnbjFsICgtX194KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgdGFu
aGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIHRhbmhsIChsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKC1f
X2ZhYnNsIChfX3ggKyBfX3gpKTsgcmV0dXJuIF9fZXhtMSAvIChfX2V4bTEgKyAyLjApICogX19z
Z24xbCAoLV9feCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSk7
IGV4dGVybiBfX2lubGluZSBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9u
ZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192
b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZu
c3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA0
MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1
ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgZmxvb3JmIChmbG9hdCk7IGV4dGVybiBfX2lubGlu
ZSBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVk
IHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIg
KF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xh
dGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJm
cm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAo
ImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAi
IDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xh
dGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA0
NzkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGNlaWwgKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgY2VpbCAoZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3
ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0i
IChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3
KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBjZWlsZiAoZmxvYXQp
OyBleHRlcm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5z
dGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgw
MDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVl
OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUpOyBleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3
OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8
IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7
IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
KTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBf
X3ZhbHVlOyB9CiMgNDk3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9feSk7CmV4dGVybiBfX2lu
bGluZSBkb3VibGUKbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192
YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFs
dWU7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUpOyBleHRlcm4g
X19pbmxpbmUgZG91YmxlIGV4cG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fZXhwb25lbnQ7IHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIF9fdGVtcDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkbDJlCQkJIyBlXnggLSAxID0g
Ml4oeCAqIGxvZzIoZSkpIC0gMVxuXHQiICJmbXVsCSUlc3QoMSkJCSMgeCAqIGxvZzIoZSlcblx0
IiAiZnN0CSUlc3QoMSlcblx0IiAiZnJuZGludAkJCSMgaW50KHggKiBsb2cyKGUpKVxuXHQiICJm
eGNoXG5cdCIgImZzdWIJJSVzdCgxKQkJIyBmcmFjdCh4ICogbG9nMihlKSlcblx0IiAiZjJ4bTEJ
CQkjIDJeKGZyYWN0KHggKiBsb2cyKGUpKSkgLSAxXG5cdCIgImZzY2FsZQkJCSMgMl4oeCAqIGxv
ZzIoZSkpIC0gMl4oaW50KHggKiBsb2cyKGUpKSlcblx0IiA6ICI9dCIgKF9fdmFsdWUpLCAiPXUi
IChfX2V4cG9uZW50KSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZQkJ
CSMgMl5pbnQoeCAqIGxvZzIoZSkpXG5cdCIgOiAiPXQiIChfX3RlbXApIDogIjAiICgxLjApLCAi
dSIgKF9fZXhwb25lbnQpKTsgX190ZW1wIC09IDEuMDsgcmV0dXJuIF9fdGVtcCArIF9fdmFsdWU7
IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGV4cG0xZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leHBvbmVudDsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX190
ZW1wOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsMmUJCQkjIGVeeCAtIDEgPSAyXih4ICogbG9n
MihlKSkgLSAxXG5cdCIgImZtdWwJJSVzdCgxKQkJIyB4ICogbG9nMihlKVxuXHQiICJmc3QJJSVz
dCgxKVxuXHQiICJmcm5kaW50CQkJIyBpbnQoeCAqIGxvZzIoZSkpXG5cdCIgImZ4Y2hcblx0IiAi
ZnN1YgklJXN0KDEpCQkjIGZyYWN0KHggKiBsb2cyKGUpKVxuXHQiICJmMnhtMQkJCSMgMl4oZnJh
Y3QoeCAqIGxvZzIoZSkpKSAtIDFcblx0IiAiZnNjYWxlCQkJIyAyXih4ICogbG9nMihlKSkgLSAy
XihpbnQoeCAqIGxvZzIoZSkpKVxuXHQiIDogIj10IiAoX192YWx1ZSksICI9dSIgKF9fZXhwb25l
bnQpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlCQkJIyAyXmludCh4
ICogbG9nMihlKSlcblx0IiA6ICI9dCIgKF9fdGVtcCkgOiAiMCIgKDEuMCksICJ1IiAoX19leHBv
bmVudCkpOyBfX3RlbXAgLT0gMS4wOyByZXR1cm4gX190ZW1wICsgX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSk7IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4cG9uZW50OyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3RlbXA7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGwyZQkJCSMgZV54IC0g
MSA9IDJeKHggKiBsb2cyKGUpKSAtIDFcblx0IiAiZm11bAklJXN0KDEpCQkjIHggKiBsb2cyKGUp
XG5cdCIgImZzdAklJXN0KDEpXG5cdCIgImZybmRpbnQJCQkjIGludCh4ICogbG9nMihlKSlcblx0
IiAiZnhjaFxuXHQiICJmc3ViCSUlc3QoMSkJCSMgZnJhY3QoeCAqIGxvZzIoZSkpXG5cdCIgImYy
eG0xCQkJIyAyXihmcmFjdCh4ICogbG9nMihlKSkpIC0gMVxuXHQiICJmc2NhbGUJCQkjIDJeKHgg
KiBsb2cyKGUpKSAtIDJeKGludCh4ICogbG9nMihlKSkpXG5cdCIgOiAiPXQiIChfX3ZhbHVlKSwg
Ij11IiAoX19leHBvbmVudCkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2Nh
bGUJCQkjIDJeaW50KHggKiBsb2cyKGUpKVxuXHQiIDogIj10IiAoX190ZW1wKSA6ICIwIiAoMS4w
KSwgInUiIChfX2V4cG9uZW50KSk7IF9fdGVtcCAtPSAxLjA7IHJldHVybiBfX3RlbXAgKyBfX3Zh
bHVlOyB9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsgZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3
MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xh
dGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgbG9nMXBmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxcGYgKGZs
b2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194
KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wg
KDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hc
blx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyBy
ZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChsb25n
IGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+
PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEu
MCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0
IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1
cm4gX192YWx1ZTsgfQojIDUyOCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4
dGVybiBfX2lubGluZSBkb3VibGUgYXNpbmggKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYXNpbmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJz
bCAoX194KTsgcmV0dXJuIChsb2cxcGwgKF9feSAqIF9feSAvIChfX3NxcnRsIChfX3kgKiBfX3kg
KyAxLjApICsgMS4wKSArIF9feSkgKiBfX3NnbjFsIChfX3gpKTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgYXNpbmhmIChmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2luaGYgKGZsb2F0
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4g
KGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsg
X195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2lu
aGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5obCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSAr
IDEuMCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgYWNvc2ggKGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgYWNvc2ggKGRvdWJsZSBf
X3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBfX3NxcnRsIChf
X3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2hmIChmbG9hdCk7IGV4dGVy
biBfX2lubGluZSBmbG9hdCBhY29zaGYgKGZsb2F0IF9feCkgeyByZXR1cm4gbG9nbCAoX194ICsg
X19zcXJ0bCAoX194IC0gMS4wKSAqIF9fc3FydGwgKF9feCArIDEuMCkpOyB9IGV4dGVybiBfX2lu
bGluZSBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBf
X3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0KCgpleHRlcm4gX19p
bmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUpOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW5o
IChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7
IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3Nn
bjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0KTsgZXh0ZXJu
IF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkg
LyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGF0
YW5obCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGh5cG90IChk
b3VibGUsIGRvdWJsZSk7IGV4dGVybiBfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQsIGZsb2F0KTsgZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fc3FydGwg
KF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGh5
cG90bCAobG9uZyBkb3VibGUsIGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9f
c3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUg
bG9nYiAoZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fanVu
azsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwgIj11
IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxp
bmUgZmxvYXQgbG9nYmYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9h
dCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1
bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUpOyBleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUgbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRp
bGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAi
IChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA2MjUgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGRyZW0gKGRvdWJsZSwgZG91YmxlKTsg
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9f
dm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAi
anAJMWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgZHJlbWYgKGZsb2F0LCBmbG9hdCk7IGV4dGVybiBfX2lubGluZSBmbG9hdCBkcmVtZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0ZXIgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGlu
dCBfX2Nsb2JiZXJlZDsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW0xXG5cdCIgImZzdHN3
CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSwgIj0mYSIgKF9f
Y2xvYmJlcmVkKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogImNjIik7IHJldHVybiBfX3ZhbHVl
OyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUsIGxvbmcg
ZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
aW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0
c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAo
X19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFs
dWU7IH0KIyA2MzggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19p
bmxpbmUgaW50IF9fZmluaXRlIChkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CmV4dGVybiBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpCnsKICByZXR1cm4g
KF9fZXh0ZW5zaW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19p
WzJdOyB9KSB7X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsg
MSkgPj4gMzEpKTsKfQoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChkb3VibGUp
OyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fY29zaG0xIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fZXhtMSA9IF9fZXhwbTFsIChfX2ZhYnNsIChfX3gpKTsgcmV0dXJuIDAu
NSAqIChfX2V4bTEgLyAoX19leG0xICsgMS4wKSkgKiBfX2V4bTE7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IF9fY29zaG0xZiAoZmxvYXQpOyBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19jb3NobTFm
IChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19leG0xID0gX19leHBtMWwgKF9f
ZmFic2wgKF9feCkpOyByZXR1cm4gMC41ICogKF9fZXhtMSAvIChfX2V4bTEgKyAxLjApKSAqIF9f
ZXhtMTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19jb3NobTFsIChsb25nIGRvdWJs
ZSk7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX2Nvc2htMWwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2V4bTEgPSBfX2V4cG0xbCAoX19mYWJzbCAoX194
KSk7IHJldHVybiAwLjUgKiAoX19leG0xIC8gKF9fZXhtMSArIDEuMCkpICogX19leG0xOyB9CgoK
CmV4dGVybiBfX2lubGluZSBkb3VibGUgX19hY29zaDFwIChkb3VibGUpOyBleHRlcm4gX19pbmxp
bmUgZG91YmxlIF9fYWNvc2gxcCAoZG91YmxlIF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBf
X3NxcnRsIChfX3gpICogX19zcXJ0bCAoX194ICsgMi4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGZs
b2F0IF9fYWNvc2gxcGYgKGZsb2F0KTsgZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fYWNvc2gxcGYg
KGZsb2F0IF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19zcXJ0
bCAoX194ICsgMi4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwg
KGxvbmcgZG91YmxlKTsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYWNvc2gxcGwgKGxv
bmcgZG91YmxlIF9feCkgeyByZXR1cm4gbG9nMXBsIChfX3ggKyBfX3NxcnRsIChfX3gpICogX19z
cXJ0bCAoX194ICsgMi4wKSk7IH0KIyAzNDkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDQw
OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKIyAxNiAiLi4vY29tbW9uL3N0YW5kYXJkLmgiIDIK
CiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZXJybm8u
aCIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9p
bmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAx
IDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVk
ZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAz
CiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpl
eHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyA1OSAiL3Vzci9pbmNsdWRl
L2Vycm5vLmgiIDMKCiMgMTggIi4uL2NvbW1vbi9zdGFuZGFyZC5oIiAyCgojIDEgIi4uL2NvbW1v
bi9tYXQ0LmgiIDEKIyA5ICIuLi9jb21tb24vbWF0NC5oIgojIDEgIi4uL2NvbW1vbi9mdmVjdC5o
IiAxCiMgMTQgIi4uL2NvbW1vbi9mdmVjdC5oIgp0eXBlZGVmIGRvdWJsZSBGVkVDVFszXTsKIyAz
MyAiLi4vY29tbW9uL2Z2ZWN0LmgiCmV4dGVybiBkb3VibGUgZmRvdCgpLCBkaXN0MigpLCBkaXN0
MmxzZWcoKSwgZGlzdDJsaW5lKCksIG5vcm1hbGl6ZSgpOwojIDEwICIuLi9jb21tb24vbWF0NC5o
IiAyCgp0eXBlZGVmIGRvdWJsZSBNQVQ0WzRdWzRdOwojIDIyICIuLi9jb21tb24vbWF0NC5oIgpl
eHRlcm4gTUFUNCBtNGlkZW50OwojIDIwICIuLi9jb21tb24vc3RhbmRhcmQuaCIgMgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgICAgIE1BVDQgeGZtOwogICAgICAgIGRvdWJsZSBzY2E7Cn0gWEY7Cgp0
eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgWEYgZjsKICAgICAgICBYRiBiOwp9IEZVTExYRjsKIyA1
MyAiLi4vY29tbW9uL3N0YW5kYXJkLmgiCmV4dGVybiBpbnQgZXB1dHMoKSwgd3B1dHMoKTsKIyA2
NCAiLi4vY29tbW9uL3N0YW5kYXJkLmgiCmV4dGVybiBzdHJ1Y3QgZXJyYWN0IHsKICAgICAgICBj
aGFyIHByZVsxNl07CiAgICAgICAgaW50ICgqcGYpKCk7CiAgICAgICAgaW50IGVjOwp9IGVycmFj
dFs2XTsKIyA3NyAiLi4vY29tbW9uL3N0YW5kYXJkLmgiCmV4dGVybiBjaGFyIGVycm1zZ1tdOwoK
CgoKCgpleHRlcm4gZG91YmxlIHRjb3MoKTsKIyAxMDkgIi4uL2NvbW1vbi9zdGFuZGFyZC5oIgpl
eHRlcm4gb2ZmX3QgbHNlZWsoKTsKZXh0ZXJuIGxvbmcgZnRlbGwoKTsKCmV4dGVybiBjaGFyICpu
ZXh0d29yZCgpLCAqc3NraXAoKSwgKnNza2lwMigpOwpleHRlcm4gY2hhciAqZ2V0cGF0aCgpLCAq
Z2V0ZW52KCk7CgpleHRlcm4gY2hhciAqbWFsbG9jKCksICpjYWxsb2MoKSwgKnJlYWxsb2MoKTsK
CmV4dGVybiBjaGFyICpibWFsbG9jKCksICpzYXZlc3RyKCksICpzYXZxc3RyKCk7CgoKZXh0ZXJu
IGRvdWJsZSBhdG9mKCk7CiMgMTIgInJheS5oIiAyCgojIDEgIi4uL2NvbW1vbi9vYmplY3QuaCIg
MQojIDE4ICIuLi9jb21tb24vb2JqZWN0LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaG9y
dCBuc2FyZ3M7CiAgICAgICAgc2hvcnQgbmZhcmdzOwogICAgICAgIGNoYXIgKipzYXJnOwogICAg
ICAgIGRvdWJsZSAqZmFyZzsKCgoKCn0gRlVOQVJHUzsKIyA0NSAiLi4vY29tbW9uL29iamVjdC5o
Igp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IG9tb2Q7CiAgICAgICAgc2hvcnQgb3R5cGU7
CiAgICAgICAgY2hhciAqb25hbWU7CiAgICAgICAgRlVOQVJHUyBvYXJnczsKICAgICAgICBjaGFy
ICpvczsKfSBPQkpSRUM7CiMgNjEgIi4uL2NvbW1vbi9vYmplY3QuaCIKZXh0ZXJuIE9CSlJFQyAq
b2JqYmxvY2tbNjU1MzVdOwpleHRlcm4gaW50IG5vYmplY3RzOwojIDc4ICIuLi9jb21tb24vb2Jq
ZWN0LmgiCmludCAqc2V0c2F2ZSgpOwojIDE0ICJyYXkuaCIgMgoKIyAxICIuLi9jb21tb24vY29s
b3IuaCIgMQojIDI5ICIuLi9jb21tb24vY29sb3IuaCIKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIENP
TFJbNF07Cgp0eXBlZGVmIGZsb2F0IENPTE9SWzNdOwoKdHlwZWRlZiBmbG9hdCBSR0JQUklNU1s0
XVsyXTsKdHlwZWRlZiBmbG9hdCAoKlJHQlBSSU1QKVsyXTsKCnR5cGVkZWYgZmxvYXQgQ09MT1JN
QVRbM11bM107CiMgMTc5ICIuLi9jb21tb24vY29sb3IuaCIKZXh0ZXJuIGRvdWJsZSBhdG9mKCks
IGxkZXhwKCksIGZyZXhwKCk7CiMgMTg4ICIuLi9jb21tb24vY29sb3IuaCIKZXh0ZXJuIFJHQlBS
SU1TIHN0ZHByaW1zOwpleHRlcm4gQ09MT1JNQVQgcmdiMnh5em1hdDsKZXh0ZXJuIENPTE9STUFU
IHh5ejJyZ2JtYXQ7CmV4dGVybiBDT0xPUiBjYmxhY2ssIGN3aGl0ZTsKIyAxNiAicmF5LmgiIDIK
IyAzMSAicmF5LmgiCnR5cGVkZWYgc3RydWN0IHJheSB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBy
bm87CiAgICAgICAgaW50IHJsdmw7CiAgICAgICAgZmxvYXQgcndlaWdodDsKICAgICAgICBzaG9y
dCBydHlwZTsKICAgICAgICBzaG9ydCBjcnR5cGU7CiAgICAgICAgc3RydWN0IHJheSAqcGFyZW50
OwogICAgICAgIEZWRUNUIHJvcmc7CiAgICAgICAgRlZFQ1QgcmRpcjsKICAgICAgICBkb3VibGUg
cm1heDsKICAgICAgICBpbnQgcnNyYzsKICAgICAgICBpbnQgKmNsaXBzZXQ7CiAgICAgICAgaW50
ICpuZXdjc2V0OwogICAgICAgIGludCAoKnJldmYpKCk7CiAgICAgICAgaW50IHJvYmo7CiAgICAg
ICAgT0JKUkVDICpybzsKICAgICAgICBkb3VibGUgcm90OwogICAgICAgIEZWRUNUIHJvcDsKICAg
ICAgICBGVkVDVCByb247CiAgICAgICAgZG91YmxlIHJvZDsKICAgICAgICBGVUxMWEYgKnJveDsK
ICAgICAgICBGVkVDVCBwZXJ0OwogICAgICAgIENPTE9SIHBjb2w7CiAgICAgICAgQ09MT1IgcmNv
bDsKICAgICAgICBkb3VibGUgcnQ7CiAgICAgICAgQ09MT1IgY2V4dDsKICAgICAgICBDT0xPUiBh
bGJlZG87CiAgICAgICAgZmxvYXQgZ2VjYzsKICAgICAgICBpbnQgKnNsaWdodHM7Cn0gUkFZOwoK
ZXh0ZXJuIGludCByYXl0cmFjZSgpOwoKZXh0ZXJuIGRvdWJsZSByYXlub3JtYWwoKTsKCmV4dGVy
biBkb3VibGUgcmF5ZGlzdCgpOwoKZXh0ZXJuIGludCBkaW1saXN0W107CmV4dGVybiBpbnQgbmRp
bXM7CmV4dGVybiBpbnQgc2FtcGxlbmR4OwojIDE0ICJydjIuYyIgMgoKIyAxICIuLi9jb21tb24v
b2N0cmVlLmgiIDEKIyA0NiAiLi4vY29tbW9uL29jdHJlZS5oIgpleHRlcm4gaW50ICpvY3RibG9j
a1szMjc2N107CgoKCmV4dGVybiBpbnQgb2N0YWxsb2MoKSwgY29tYmluZSgpLCBmdWxsbm9kZSgp
OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IGN1dHJlZTsKICAgICAgICBGVkVD
VCBjdW9yZzsKICAgICAgICBkb3VibGUgY3VzaXplOwp9IENVQkU7CgpleHRlcm4gQ1VCRSB0aGVz
Y2VuZTsKIyAxNiAicnYyLmMiIDIKCiMgMSAiLi4vY29tbW9uL290eXBlcy5oIiAxCiMgMTEgIi4u
L2NvbW1vbi9vdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGNoYXIgKmZ1bmFtZTsK
ICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgaW50ICgqZnVucCkoKTsKfSBGVU47CiMgODUgIi4u
L2NvbW1vbi9vdHlwZXMuaCIKZXh0ZXJuIEZVTiBvZnVuW107CiMgOTggIi4uL2NvbW1vbi9vdHlw
ZXMuaCIKZXh0ZXJuIGludCBvX2RlZmF1bHQoKTsKIyAxOCAicnYyLmMiIDIKCiMgMSAicnBhaW50
LmgiIDEKIyAxMSAicnBhaW50LmgiCiMgMSAiZHJpdmVyLmgiIDEKIyAxMSAiZHJpdmVyLmgiCnN0
cnVjdCBkcml2ZXIgewogICAgICAgIGludCAoKmNsb3NlKSgpOwogICAgICAgIGludCAoKmNsZWFy
KSgpOwogICAgICAgIGludCAoKnBhaW50cikoKTsKICAgICAgICBpbnQgKCpnZXRjdXIpKCk7CiAg
ICAgICAgaW50ICgqY29tb3V0KSgpOwogICAgICAgIGludCAoKmNvbWluKSgpOwogICAgICAgIGlu
dCAoKmZsdXNoKSgpOwogICAgICAgIGRvdWJsZSBwaXhhc3BlY3Q7CiAgICAgICAgaW50IHhzaXos
IHlzaXo7CiAgICAgICAgaW50IGlucHJlYWR5Owp9OwoKZXh0ZXJuIHN0cnVjdCBkcml2ZXIgKmNv
bW1faW5pdCgpLCAqc2xhdmVfaW5pdCgpOwojIDM3ICJkcml2ZXIuaCIKZXh0ZXJuIHN0cnVjdCBk
ZXZpY2UgewogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgY2hhciAqZGVzY3JpcDsKICAgICAg
ICBzdHJ1Y3QgZHJpdmVyICooKmluaXQpKCk7Cn0gZGV2dGFibGVbXTsKCmV4dGVybiBjaGFyIGRl
dl9kZWZhdWx0W107CiMgMTIgInJwYWludC5oIiAyCgojIDEgIi4uL2NvbW1vbi92aWV3LmgiIDEK
IyAxOCAiLi4vY29tbW9uL3ZpZXcuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGludCB0eXBl
OwogICAgICAgIEZWRUNUIHZwOwogICAgICAgIEZWRUNUIHZkaXI7CiAgICAgICAgRlZFQ1QgdnVw
OwogICAgICAgIGRvdWJsZSBob3JpejsKICAgICAgICBkb3VibGUgdmVydDsKICAgICAgICBkb3Vi
bGUgaG9mZjsKICAgICAgICBkb3VibGUgdm9mZjsKICAgICAgICBkb3VibGUgdmZvcmU7CiAgICAg
ICAgZG91YmxlIHZhZnQ7CiAgICAgICAgRlZFQ1QgaHZlYzsKICAgICAgICBGVkVDVCB2dmVjOwog
ICAgICAgIGRvdWJsZSBobjI7CiAgICAgICAgZG91YmxlIHZuMjsKfSBWSUVXOwoKZXh0ZXJuIFZJ
RVcgc3RkdmlldzsKCmV4dGVybiBjaGFyICpzZXR2aWV3KCk7CgpleHRlcm4gZG91YmxlIHZpZXdy
YXkoKTsKCmV4dGVybiBjaGFyICp2aWV3b3B0KCk7CiMgMTQgInJwYWludC5oIiAyCgp0eXBlZGVm
IHNob3J0IENPT1JEOwoKdHlwZWRlZiBzdHJ1Y3QgcG5vZGUgewogICAgICAgIHN0cnVjdCBwbm9k
ZSAqa2lkOwogICAgICAgIENPT1JEIHgsIHk7CiAgICAgICAgQ09MT1IgdjsKfSBQTk9ERTsKIyAz
MSAicnBhaW50LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBDT09SRCBsLCBkLCByLCB1Owp9
IFJFQ1Q7CgpleHRlcm4gUE5PREUgcHRydW5rOwoKZXh0ZXJuIFZJRVcgb3VydmlldzsKZXh0ZXJu
IFZJRVcgb2xkdmlldzsKZXh0ZXJuIGludCBocmVzb2x1LCB2cmVzb2x1OwoKZXh0ZXJuIGludCBn
cmV5c2NhbGU7CgpleHRlcm4gaW50IHBkZXB0aDsKZXh0ZXJuIFJFQ1QgcGZyYW1lOwoKZXh0ZXJu
IGRvdWJsZSBleHBvc3VyZTsKCmV4dGVybiBzdHJ1Y3QgZHJpdmVyICpkZXY7CgpleHRlcm4gUE5P
REUgKmZpbmRyZWN0KCk7CiMgMjAgInJ2Mi5jIiAyCgojIDEgIi4uL2NvbW1vbi9yZXNvbHUuaCIg
MQojIDI4ICIuLi9jb21tb24vcmVzb2x1LmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQg
b3I7CiAgICAgICAgaW50IHhyLCB5cjsKfSBSRVNPTFU7CgoKCgoKCgpleHRlcm4gY2hhciByZXNv
bHVfYnVmWzMyXTsKIyA1MCAiLi4vY29tbW9uL3Jlc29sdS5oIgpleHRlcm4gY2hhciAqcmVzb2x1
MnN0cigpOwojIDIyICJydjIuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiMg
MjkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgojIDQ3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIg
MwplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkgOiAoKDEg
PDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgoMSA8PCAoMSkpIDw8IDgp
IDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8IDggPyAoKDEgPDwgKDIp
KSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9ICgoMykgPCA4ID8gKCgx
IDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lTeGRpZ2l0ID0gKCg0KSA8
IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgpKSwKICBfSVNzcGFjZSA9
ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksCiAgX0lT
cHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkp
LAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykp
ID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEg
PDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgp
IDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgx
MCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/
ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkKfTsKIyA3NSAiL3Vzci9p
bmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0
eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2VyOwpleHRlcm4g
X19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBlcjsKIyA5MSAiL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDMKZXh0ZXJuIGludCBpc2FsbnVtIChpbnQpIDsKZXh0ZXJuIGludCBpc2FscGhhIChp
bnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIDsKZXh0ZXJuIGludCBpc2RpZ2l0IChpbnQp
IDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQpIDsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIDsK
ZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIDsKZXh0
ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJuIGludCBpc3VwcGVyIChpbnQpIDsKZXh0ZXJu
IGludCBpc3hkaWdpdCAoaW50KSA7CgoKCgoKCgpleHRlcm4gaW50IHRvbG93ZXIgKGludCBfX2Mp
IDsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIDsKCgoKCgoKZXh0ZXJuIGludCBpc2Fz
Y2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgdG9hc2NpaSAoaW50IF9fYykgOwoKCgoKCgpl
eHRlcm4gaW50IF90b3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBfdG9sb3dlciAoaW50KSA7CiMg
MTUzICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnRvbG93ZXIg
KGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90
b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9f
YykKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvdXBwZXJb
X19jXSA6IF9fYzsKfQojIDI3NSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKCiMgMjQgInJ2Mi5j
IiAyCiMgMzMgInJ2Mi5jIgpleHRlcm4gY2hhciAqYXRvcygpOwoKZXh0ZXJuIEZJTEUgKnBvcGVu
KCk7CgpleHRlcm4gY2hhciByaWZuYW1lWzEyOF07CgpleHRlcm4gY2hhciBWZXJzaW9uSURbXTsK
ZXh0ZXJuIGNoYXIgKnByb2duYW1lOwpleHRlcm4gY2hhciAqb2N0bmFtZTsKCgpnZXRmcmFtZShz
KQpjaGFyICpzOwp7CiAgICAgICAgaWYgKGdldHJlY3QocywgJnBmcmFtZSkgPCAwKQogICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIHBkZXB0aCA9IDA7Cn0KCgpnZXRyZXBhaW50KHMpCmNo
YXIgKnM7CnsKICAgICAgICBSRUNUIGJveDsKCiAgICAgICAgaWYgKGdldHJlY3QocywgJmJveCkg
PCAwKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIHBhaW50cmVjdCgmcHRydW5rLCAw
LCAwLCBocmVzb2x1LCB2cmVzb2x1LCAmYm94KTsKfQoKCmdldHZpZXcocykKY2hhciAqczsKewog
ICAgICAgIEZJTEUgKmZwOwogICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgY2hhciAqZm5h
bWU7CiAgICAgICAgaW50IGNoYW5nZSA9IDA7CiAgICAgICAgVklFVyBudjsKCiAgICAgICAgd2hp
bGUgKChfX2N0eXBlX2JbKGludCkgKCgqcykpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU3Nw
YWNlKSkKICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICBpZiAoKnMgPT0gJy0nKSB7CiAgICAg
ICAgICAgICAgICAoKigmbnYpID0gKigmb3VydmlldykpOwogICAgICAgICAgICAgICAgaWYgKHNz
Y2FudmlldygmbnYsIHMpKQogICAgICAgICAgICAgICAgICAgICAgICBuZXd2aWV3KCZudik7CiAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKDUsICJiYWQg
dmlldyBvcHRpb24ocykiKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg
ICAgaWYgKHNzY2FuZihzLCAiJXMiLCBidWYpID09IDEpIHsKICAgICAgICAgICAgICAgIGlmICgo
Zm5hbWUgPSBnZXRwYXRoKGJ1ZiwgKCh2b2lkICopMCksIDApKSA9PSAoKHZvaWQgKikwKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcCA9IGZvcGVuKGZuYW1lLCAiYSIpKSA9
PSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGVycm1zZywg
ImNhbm5vdCBvcGVuIFwiJXNcIiIsIGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y
KDUsIGVycm1zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGZwdXRzKHByb2duYW1lLCBmcCk7CiAgICAgICAgICAgICAg
ICBmcHJpbnR2aWV3KCZvdXJ2aWV3LCBmcCk7CiAgICAgICAgICAgICAgICBmcHV0cyhzc2tpcChz
KSwgZnApOwogICAgICAgICAgICAgICAgX0lPX3B1dGMgKCdcbicsIGZwKTsKICAgICAgICAgICAg
ICAgIGZjbG9zZShmcCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAg
IHNwcmludGYoYnVmLCAidmlldyB0eXBlICglYyk6ICIsIG91cnZpZXcudHlwZSk7CiAgICAgICAg
KCpkZXYtPmNvbW91dCkoYnVmKTsKICAgICAgICAoKmRldi0+Y29taW4pKGJ1ZiwgKCh2b2lkICop
MCkpOwogICAgICAgIGlmIChidWZbMF0gPT0gKCgnQycpLSdAJykpIHJldHVybjsKICAgICAgICBp
ZiAoYnVmWzBdICYmIGJ1ZlswXSAhPSBvdXJ2aWV3LnR5cGUpIHsKICAgICAgICAgICAgICAgIG52
LnR5cGUgPSBidWZbMF07CiAgICAgICAgICAgICAgICBjaGFuZ2UrKzsKICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgIG52LnR5cGUgPSBvdXJ2aWV3LnR5cGU7CiAgICAgICAgc3ByaW50Zihi
dWYsICJ2aWV3IHBvaW50ICglLjZnICUuNmcgJS42Zyk6ICIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIG91cnZpZXcudnBbMF0sIG91cnZpZXcudnBbMV0sIG91cnZpZXcudnBbMl0pOwogICAgICAg
ICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAq
KTApKTsKICAgICAgICBpZiAoYnVmWzBdID09ICgoJ0MnKS0nQCcpKSByZXR1cm47CiAgICAgICAg
aWYgKChzc2NhbmYoYnVmLCIlbGYgJWxmICVsZiIsbnYudnAsbnYudnArMSxudi52cCsyKT09Mykp
CiAgICAgICAgICAgICAgICBjaGFuZ2UrKzsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAo
KG52LnZwKVswXT0ob3Vydmlldy52cClbMF0sKG52LnZwKVsxXT0ob3Vydmlldy52cClbMV0sKG52
LnZwKVsyXT0ob3Vydmlldy52cClbMl0pOwogICAgICAgIHNwcmludGYoYnVmLCAidmlldyBkaXJl
Y3Rpb24gKCUuNmcgJS42ZyAlLjZnKTogIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3Vydmll
dy52ZGlyWzBdLCBvdXJ2aWV3LnZkaXJbMV0sIG91cnZpZXcudmRpclsyXSk7CiAgICAgICAgKCpk
ZXYtPmNvbW91dCkoYnVmKTsKICAgICAgICAoKmRldi0+Y29taW4pKGJ1ZiwgKCh2b2lkICopMCkp
OwogICAgICAgIGlmIChidWZbMF0gPT0gKCgnQycpLSdAJykpIHJldHVybjsKICAgICAgICBpZiAo
KHNzY2FuZihidWYsIiVsZiAlbGYgJWxmIixudi52ZGlyLG52LnZkaXIrMSxudi52ZGlyKzIpPT0z
KSkKICAgICAgICAgICAgICAgIGNoYW5nZSsrOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICgobnYudmRpcilbMF09KG91cnZpZXcudmRpcilbMF0sKG52LnZkaXIpWzFdPShvdXJ2aWV3LnZk
aXIpWzFdLChudi52ZGlyKVsyXT0ob3Vydmlldy52ZGlyKVsyXSk7CiAgICAgICAgc3ByaW50Zihi
dWYsICJ2aWV3IHVwICglLjZnICUuNmcgJS42Zyk6ICIsCiAgICAgICAgICAgICAgICAgICAgICAg
IG91cnZpZXcudnVwWzBdLCBvdXJ2aWV3LnZ1cFsxXSwgb3Vydmlldy52dXBbMl0pOwogICAgICAg
ICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAq
KTApKTsKICAgICAgICBpZiAoYnVmWzBdID09ICgoJ0MnKS0nQCcpKSByZXR1cm47CiAgICAgICAg
aWYgKChzc2NhbmYoYnVmLCIlbGYgJWxmICVsZiIsbnYudnVwLG52LnZ1cCsxLG52LnZ1cCsyKT09
MykpCiAgICAgICAgICAgICAgICBjaGFuZ2UrKzsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAoKG52LnZ1cClbMF09KG91cnZpZXcudnVwKVswXSwobnYudnVwKVsxXT0ob3Vydmlldy52dXAp
WzFdLChudi52dXApWzJdPShvdXJ2aWV3LnZ1cClbMl0pOwogICAgICAgIHNwcmludGYoYnVmLCAi
dmlldyBob3JpeiBhbmQgdmVydCBzaXplICglLjZnICUuNmcpOiAiLAogICAgICAgICAgICAgICAg
ICAgICAgICBvdXJ2aWV3Lmhvcml6LCBvdXJ2aWV3LnZlcnQpOwogICAgICAgICgqZGV2LT5jb21v
dXQpKGJ1Zik7CiAgICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAqKTApKTsKICAgICAg
ICBpZiAoYnVmWzBdID09ICgoJ0MnKS0nQCcpKSByZXR1cm47CiAgICAgICAgaWYgKHNzY2FuZihi
dWYsICIlbGYgJWxmIiwgJm52Lmhvcml6LCAmbnYudmVydCkgPT0gMikKICAgICAgICAgICAgICAg
IGNoYW5nZSsrOwogICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbnYuaG9yaXogPSBvdXJ2
aWV3Lmhvcml6OyBudi52ZXJ0ID0gb3Vydmlldy52ZXJ0OwogICAgICAgIH0KICAgICAgICBzcHJp
bnRmKGJ1ZiwgImZvcmUgYW5kIGFmdCBjbGlwcGluZyBwbGFuZSAoJS42ZyAlLjZnKTogIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgb3Vydmlldy52Zm9yZSwgb3Vydmlldy52YWZ0KTsKICAgICAg
ICAoKmRldi0+Y29tb3V0KShidWYpOwogICAgICAgICgqZGV2LT5jb21pbikoYnVmLCAoKHZvaWQg
KikwKSk7CiAgICAgICAgaWYgKGJ1ZlswXSA9PSAoKCdDJyktJ0AnKSkgcmV0dXJuOwogICAgICAg
IGlmIChzc2NhbmYoYnVmLCAiJWxmICVsZiIsICZudi52Zm9yZSwgJm52LnZhZnQpID09IDIpCiAg
ICAgICAgICAgICAgICBjaGFuZ2UrKzsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG52
LnZmb3JlID0gb3Vydmlldy52Zm9yZTsgbnYudmFmdCA9IG91cnZpZXcudmFmdDsKICAgICAgICB9
CiAgICAgICAgc3ByaW50ZihidWYsICJ2aWV3IHNoaWZ0IGFuZCBsaWZ0ICglLjZnICUuNmcpOiAi
LAogICAgICAgICAgICAgICAgICAgICAgICBvdXJ2aWV3LmhvZmYsIG91cnZpZXcudm9mZik7CiAg
ICAgICAgKCpkZXYtPmNvbW91dCkoYnVmKTsKICAgICAgICAoKmRldi0+Y29taW4pKGJ1ZiwgKCh2
b2lkICopMCkpOwogICAgICAgIGlmIChidWZbMF0gPT0gKCgnQycpLSdAJykpIHJldHVybjsKICAg
ICAgICBpZiAoc3NjYW5mKGJ1ZiwgIiVsZiAlbGYiLCAmbnYuaG9mZiwgJm52LnZvZmYpID09IDIp
CiAgICAgICAgICAgICAgICBjaGFuZ2UrKzsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
IG52LmhvZmYgPSBvdXJ2aWV3LmhvZmY7IG52LnZvZmYgPSBvdXJ2aWV3LnZvZmY7CiAgICAgICAg
fQogICAgICAgIGlmIChjaGFuZ2UpCiAgICAgICAgICAgICAgICBuZXd2aWV3KCZudik7Cn0KCgps
YXN0dmlldyhzKQpjaGFyICpzOwp7CiAgICAgICAgY2hhciBidWZbMTI4XTsKICAgICAgICBjaGFy
ICpmbmFtZTsKICAgICAgICBpbnQgc3VjY2VzczsKICAgICAgICBWSUVXIG52OwoKICAgICAgICBp
ZiAoc3NjYW5mKHMsICIlcyIsIGJ1ZikgPT0gMSkgewogICAgICAgICAgICAgICAgKCooJm52KSA9
ICooJnN0ZHZpZXcpKTsKICAgICAgICAgICAgICAgIGlmICgoZm5hbWUgPSBnZXRwYXRoKGJ1Ziwg
IiIsIDQpKSA9PSAoKHZvaWQgKikwKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzdWNjZXNzID0gdmlld2ZpbGUoZm5hbWUsICZudiwgKCh2b2lkICopMCkpKSA9PSAtMSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGVycm1zZywgImNhbm5vdCBvcGVuIFwiJXNc
IiIsIGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKDUsIGVycm1zZyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoNSwgIndyb25n
IGZpbGUgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld3ZpZXcoJm52KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAg
ICAgaWYgKG9sZHZpZXcudHlwZSA9PSAwKSB7CiAgICAgICAgICAgICAgICBlcnJvcig1LCAibm8g
cHJldmlvdXMgdmlldyIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg
ICAoKigmbnYpID0gKigmb3VydmlldykpOwogICAgICAgICgqKCZvdXJ2aWV3KSA9ICooJm9sZHZp
ZXcpKTsKICAgICAgICAoKigmb2xkdmlldykgPSAqKCZudikpOwogICAgICAgIG5ld2ltYWdlKCk7
Cn0KCgpzYXZldmlldyhzKQpjaGFyICpzOwp7CiAgICAgICAgY2hhciB2aWV3WzY0XTsKICAgICAg
ICBjaGFyICpmbmFtZTsKICAgICAgICBGSUxFICpmcDsKCiAgICAgICAgaWYgKCphdG9zKHZpZXcs
IHNpemVvZih2aWV3KSwgcykpIHsKICAgICAgICAgICAgICAgIGlmIChpc2ludCh2aWV3KSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcig1LCAiY2Fubm90IHdyaXRlIHZpZXcgYnkgbnVt
YmVyIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIHMgPSBzc2tpcChzKTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKChf
X2N0eXBlX2JbKGludCkgKCgqcykpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU3NwYWNlKSkK
ICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICBpZiAoKnMpCiAgICAgICAgICAgICAgICBhdG9z
KHJpZm5hbWUsIHNpemVvZihyaWZuYW1lKSwgcyk7CiAgICAgICAgZWxzZSBpZiAocmlmbmFtZVsw
XSA9PSAnXDAnKSB7CiAgICAgICAgICAgICAgICBlcnJvcig1LCAibm8gcHJldmlvdXMgcmFkIGZp
bGUiKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKChmbmFt
ZSA9IGdldHBhdGgocmlmbmFtZSwgKCh2b2lkICopMCksIDApKSA9PSAoKHZvaWQgKikwKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICAoZnAgPSBmb3BlbihmbmFtZSwgImEiKSkgPT0gKCh2b2lk
ICopMCkpIHsKICAgICAgICAgICAgICAgIHNwcmludGYoZXJybXNnLCAiY2Fubm90IG9wZW4gXCIl
c1wiIiwgcmlmbmFtZSk7CiAgICAgICAgICAgICAgICBlcnJvcig1LCBlcnJtc2cpOwogICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBmcHV0cygidmlldz0gIiwgZnApOwog
ICAgICAgIGZwdXRzKHZpZXcsIGZwKTsKICAgICAgICBmcHJpbnR2aWV3KCZvdXJ2aWV3LCBmcCk7
CiAgICAgICAgX0lPX3B1dGMgKCdcbicsIGZwKTsKICAgICAgICBmY2xvc2UoZnApOwp9CgoKbG9h
ZHZpZXcocykKY2hhciAqczsKewogICAgICAgIGNoYXIgYnVmWzUxMl07CiAgICAgICAgY2hhciAq
Zm5hbWU7CiAgICAgICAgRklMRSAqZnA7CiAgICAgICAgVklFVyBudjsKCiAgICAgICAgc3RyY3B5
KGJ1ZiwgInJhZCAtbiAtcyAtViAtdiAiKTsKICAgICAgICBpZiAoc3NjYW5mKHMsICIlcyIsIGJ1
ZitzdHJsZW4oYnVmKSkgPT0gMSkKICAgICAgICAgICAgICAgIHMgPSBzc2tpcChzKTsKICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICBzdHJjYXQoYnVmLCAiMSIpOwogICAgICAgIGlmICgqcykK
ICAgICAgICAgICAgICAgIGF0b3MocmlmbmFtZSwgc2l6ZW9mKHJpZm5hbWUpLCBzKTsKICAgICAg
ICBlbHNlIGlmIChyaWZuYW1lWzBdID09ICdcMCcpIHsKICAgICAgICAgICAgICAgIGVycm9yKDUs
ICJubyBwcmV2aW91cyByYWQgZmlsZSIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IH0KICAgICAgICBpZiAoKGZuYW1lID0gZ2V0cGF0aChyaWZuYW1lLCAiIiwgNCkpID09ICgodm9p
ZCAqKTApKSB7CiAgICAgICAgICAgICAgICBzcHJpbnRmKGVycm1zZywgImNhbm5vdCBhY2Nlc3Mg
XCIlc1wiIiwgcmlmbmFtZSk7CiAgICAgICAgICAgICAgICBlcnJvcig1LCBlcnJtc2cpOwogICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBzcHJpbnRmKGJ1ZitzdHJsZW4o
YnVmKSwgIiAlcyIsIGZuYW1lKTsKICAgICAgICBpZiAoKGZwID0gcG9wZW4oYnVmLCAiciIpKSA9
PSAoKHZvaWQgKikwKSkgewogICAgICAgICAgICAgICAgZXJyb3IoNSwgImNhbm5vdCBydW4gcmFk
Iik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGJ1ZlswXSA9ICdc
MCc7CiAgICAgICAgZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZnApOwogICAgICAgIHBjbG9zZShm
cCk7CiAgICAgICAgKCooJm52KSA9ICooJnN0ZHZpZXcpKTsKICAgICAgICBpZiAoIXNzY2Fudmll
dygmbnYsIGJ1ZikpIHsKICAgICAgICAgICAgICAgIGVycm9yKDUsICJyYWQgZXJyb3IgLS0gbm8g
c3VjaCB2aWV3PyIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBu
ZXd2aWV3KCZudik7Cn0KCgpnZXRhaW0ocykKY2hhciAqczsKewogICAgICAgIGRvdWJsZSB6ZmFj
dDsKICAgICAgICBWSUVXIG52OwoKICAgICAgICBpZiAoZ2V0aW50ZXJlc3QocywgMSwgbnYudmRp
ciwgJnpmYWN0KSA8IDApCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgbnYudHlwZSA9
IG91cnZpZXcudHlwZTsKICAgICAgICAoKG52LnZwKVswXT0ob3Vydmlldy52cClbMF0sKG52LnZw
KVsxXT0ob3Vydmlldy52cClbMV0sKG52LnZwKVsyXT0ob3Vydmlldy52cClbMl0pOwogICAgICAg
ICgobnYudnVwKVswXT0ob3Vydmlldy52dXApWzBdLChudi52dXApWzFdPShvdXJ2aWV3LnZ1cClb
MV0sKG52LnZ1cClbMl09KG91cnZpZXcudnVwKVsyXSk7CiAgICAgICAgbnYuaG9yaXogPSBvdXJ2
aWV3Lmhvcml6OyBudi52ZXJ0ID0gb3Vydmlldy52ZXJ0OwogICAgICAgIG52LnZmb3JlID0gb3Vy
dmlldy52Zm9yZTsgbnYudmFmdCA9IG91cnZpZXcudmFmdDsKICAgICAgICBudi5ob2ZmID0gb3Vy
dmlldy5ob2ZmOyBudi52b2ZmID0gb3Vydmlldy52b2ZmOwogICAgICAgIHpvb212aWV3KCZudiwg
emZhY3QpOwogICAgICAgIG5ld3ZpZXcoJm52KTsKfQoKCmdldG1vdmUocykKY2hhciAqczsKewog
ICAgICAgIEZWRUNUIHZjOwogICAgICAgIGRvdWJsZSBtYWc7CgogICAgICAgIGlmIChnZXRpbnRl
cmVzdChzLCAwLCB2YywgJm1hZykgPCAwKQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
IG1vdmV2aWV3KDAuMCwgMC4wLCBtYWcsIHZjKTsKfQoKCmdldHJvdGF0ZShzKQpjaGFyICpzOwp7
CiAgICAgICAgVklFVyBudjsKICAgICAgICBGVkVDVCB2MTsKICAgICAgICBkb3VibGUgYW5nbGUs
IGVsZXYsIHpmYWN0OwoKICAgICAgICBlbGV2ID0gMC4wOyB6ZmFjdCA9IDEuMDsKICAgICAgICBp
ZiAoc3NjYW5mKHMsICIlbGYgJWxmICVsZiIsICZhbmdsZSwgJmVsZXYsICZ6ZmFjdCkgPCAxKSB7
CiAgICAgICAgICAgICAgICBlcnJvcig1LCAibWlzc2luZyBhbmdsZSIpOwogICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBudi50eXBlID0gb3Vydmlldy50eXBlOwogICAg
ICAgICgobnYudnApWzBdPShvdXJ2aWV3LnZwKVswXSwobnYudnApWzFdPShvdXJ2aWV3LnZwKVsx
XSwobnYudnApWzJdPShvdXJ2aWV3LnZwKVsyXSk7CiAgICAgICAgKChudi52dXApWzBdPShvdXJ2
aWV3LnZ1cClbMF0sKG52LnZ1cClbMV09KG91cnZpZXcudnVwKVsxXSwobnYudnVwKVsyXT0ob3Vy
dmlldy52dXApWzJdKTsKICAgICAgICBudi5ob2ZmID0gb3Vydmlldy5ob2ZmOyBudi52b2ZmID0g
b3Vydmlldy52b2ZmOwogICAgICAgIG52LnZmb3JlID0gb3Vydmlldy52Zm9yZTsgbnYudmFmdCA9
IG91cnZpZXcudmFmdDsKICAgICAgICBzcGludmVjdG9yKG52LnZkaXIsIG91cnZpZXcudmRpciwg
b3Vydmlldy52dXAsIGFuZ2xlKigoKGRvdWJsZSkzLjE0MTU5MjY1MzU4OTc5MzIzODQ2KS8xODAu
KSk7CiAgICAgICAgaWYgKGVsZXYgIT0gMC4wKSB7CiAgICAgICAgICAgICAgICBmY3Jvc3ModjEs
IG52LnZkaXIsIG91cnZpZXcudnVwKTsKICAgICAgICAgICAgICAgIG5vcm1hbGl6ZSh2MSk7CiAg
ICAgICAgICAgICAgICBzcGludmVjdG9yKG52LnZkaXIsIG52LnZkaXIsIHYxLCBlbGV2KigoKGRv
dWJsZSkzLjE0MTU5MjY1MzU4OTc5MzIzODQ2KS8xODAuKSk7CiAgICAgICAgfQogICAgICAgIG52
Lmhvcml6ID0gb3Vydmlldy5ob3JpejsgbnYudmVydCA9IG91cnZpZXcudmVydDsKICAgICAgICB6
b29tdmlldygmbnYsIHpmYWN0KTsKICAgICAgICBuZXd2aWV3KCZudik7Cn0KCgpnZXRwaXZvdChz
KQpyZWdpc3RlciBjaGFyICpzOwp7CiAgICAgICAgRlZFQ1QgdmM7CiAgICAgICAgZG91YmxlIGFu
Z2xlLCBlbGV2LCBtYWc7CgogICAgICAgIGVsZXYgPSAwLjA7CiAgICAgICAgaWYgKHNzY2FuZihz
LCAiJWxmICVsZiIsICZhbmdsZSwgJmVsZXYpIDwgMSkgewogICAgICAgICAgICAgICAgZXJyb3Io
NSwgIm1pc3NpbmcgYW5nbGUiKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAg
ICAgICAgaWYgKGdldGludGVyZXN0KHNza2lwMihzLDIpLCAwLCB2YywgJm1hZykgPCAwKQogICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIG1vdmV2aWV3KGFuZ2xlLCBlbGV2LCBtYWcsIHZj
KTsKfQoKCmdldGV4cG9zdXJlKHMpCmNoYXIgKnM7CnsKICAgICAgICBjaGFyIGJ1ZlsxMjhdOwog
ICAgICAgIHJlZ2lzdGVyIGNoYXIgKmNwOwogICAgICAgIFJFQ1QgcjsKICAgICAgICBpbnQgeCwg
eTsKICAgICAgICByZWdpc3RlciBQTk9ERSAqcCA9ICZwdHJ1bms7CiAgICAgICAgaW50IGFkYXB0
ID0gMDsKICAgICAgICBkb3VibGUgZSA9IDEuMDsKCiAgICAgICAgZm9yIChjcCA9IHM7IChfX2N0
eXBlX2JbKGludCkgKCgqY3ApKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNzcGFjZSk7IGNw
KyspCiAgICAgICAgICAgICAgICA7CiAgICAgICAgaWYgKCpjcCA9PSAnQCcpIHsKICAgICAgICAg
ICAgICAgIGFkYXB0Kys7CiAgICAgICAgICAgICAgICB3aGlsZSAoKF9fY3R5cGVfYlsoaW50KSAo
KCorK2NwKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTc3BhY2UpKQogICAgICAgICAgICAg
ICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIGlmICgqY3AgPT0gJ1wwJykgewogICAgICAg
ICAgICAgICAgaWYgKGRldi0+Z2V0Y3VyID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAoKmRldi0+Y29tb3V0KSgiUGljayBwb2lu
dCBmb3IgZXhwb3N1cmVcbiIpOwogICAgICAgICAgICAgICAgaWYgKCgqZGV2LT5nZXRjdXIpKCZ4
LCAmeSkgPT0gKCdDJy0nQCcpKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICByLmwgPSByLmQgPSAwOwogICAgICAgICAgICAgICAgci5yID0gaHJlc29sdTsg
ci51ID0gdnJlc29sdTsKICAgICAgICAgICAgICAgIHAgPSBmaW5kcmVjdCh4LCB5LCAmcHRydW5r
LCAmciwgLTEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoKmNwID09ICc9
JykgewogICAgICAgICAgICAgICAgICAgICAgICBwID0gKCh2b2lkICopMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGUgPSAxLjAvZXhwb3N1cmU7CiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoY3ArKzsgKF9fY3R5cGVfYlsoaW50KSAoKCpjcCkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQp
IF9JU3NwYWNlKTsgY3ArKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgqY3AgPT0gJ1wwJykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNwcmludGYoYnVmLCAiZXhwb3N1cmUgKCVmKTogIiwgZXhwb3N1cmUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAqKTAp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNwID0gYnVmOyAoX19jdHlw
ZV9iWyhpbnQpICgoKmNwKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTc3BhY2UpOyBjcCsr
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgqY3AgPT0gJ1wwJykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCpjcCA9PSAnKycgfHwgKmNwID09ICct
JykKICAgICAgICAgICAgICAgICAgICAgICAgZSAqPSBwb3coMi4wLCBhdG9mKGNwKSk7CiAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGUgKj0gYXRvZihjcCk7CiAg
ICAgICAgfQogICAgICAgIGlmIChwICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICBp
ZiAoKCgwLjMzMCooICgxLi8wLjMzMzMpICogKCAwLjMzMzMqKDAuNjAwIC0gMC4wNjApIC0gMC4z
MzMzKigwLjI5MCAtIDAuMTUwKSArIDAuMjkwKjAuMDYwIC0gMC4xNTAqMC42MDAgKSApLyggMC42
NDAqKDAuNjAwIC0gMC4wNjApICsgMC4yOTAqKDAuMDYwIC0gMC4zMzApICsgMC4xNTAqKDAuMzMw
IC0gMC42MDApICkpKihwLT52KVswXSsoMC42MDAqKCAoMS4vMC4zMzMzKSAqICggMC4zMzMzKigw
LjA2MCAtIDAuMzMwKSAtIDAuMzMzMyooMC4xNTAgLSAwLjY0MCkgLSAwLjY0MCowLjA2MCArIDAu
MTUwKjAuMzMwICkgKS8oIDAuNjQwKigwLjYwMCAtIDAuMDYwKSArIDAuMjkwKigwLjA2MCAtIDAu
MzMwKSArIDAuMTUwKigwLjMzMCAtIDAuNjAwKSApKSoocC0+dilbMV0rKDAuMDYwKiggKDEuLzAu
MzMzMykgKiAoIDAuMzMzMyooMC4zMzAgLSAwLjYwMCkgLSAwLjMzMzMqKDAuNjQwIC0gMC4yOTAp
ICsgMC42NDAqMC42MDAgLSAwLjI5MCowLjMzMCApICkvKCAwLjY0MCooMC42MDAgLSAwLjA2MCkg
KyAwLjI5MCooMC4wNjAgLSAwLjMzMCkgKyAwLjE1MCooMC4zMzAgLSAwLjYwMCkgKSkqKHAtPnYp
WzJdKSA8IDFlLTE1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKDUsICJjYW5ub3Qg
bm9ybWFsaXplIHRvIHplcm8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGFkYXB0KQogICAgICAgICAgICAgICAg
ICAgICAgICBlICo9IDEwNi4vcG93KDEuMjE5K3BvdygoMTc5LiAqICgoMC4zMzAqKCAoMS4vMC4z
MzMzKSAqICggMC4zMzMzKigwLjYwMCAtIDAuMDYwKSAtIDAuMzMzMyooMC4yOTAgLSAwLjE1MCkg
KyAwLjI5MCowLjA2MCAtIDAuMTUwKjAuNjAwICkgKS8oIDAuNjQwKigwLjYwMCAtIDAuMDYwKSAr
IDAuMjkwKigwLjA2MCAtIDAuMzMwKSArIDAuMTUwKigwLjMzMCAtIDAuNjAwKSApKSoocC0+dilb
MF0rKDAuNjAwKiggKDEuLzAuMzMzMykgKiAoIDAuMzMzMyooMC4wNjAgLSAwLjMzMCkgLSAwLjMz
MzMqKDAuMTUwIC0gMC42NDApIC0gMC42NDAqMC4wNjAgKyAwLjE1MCowLjMzMCApICkvKCAwLjY0
MCooMC42MDAgLSAwLjA2MCkgKyAwLjI5MCooMC4wNjAgLSAwLjMzMCkgKyAwLjE1MCooMC4zMzAg
LSAwLjYwMCkgKSkqKHAtPnYpWzFdKygwLjA2MCooICgxLi8wLjMzMzMpICogKCAwLjMzMzMqKDAu
MzMwIC0gMC42MDApIC0gMC4zMzMzKigwLjY0MCAtIDAuMjkwKSArIDAuNjQwKjAuNjAwIC0gMC4y
OTAqMC4zMzAgKSApLyggMC42NDAqKDAuNjAwIC0gMC4wNjApICsgMC4yOTAqKDAuMDYwIC0gMC4z
MzApICsgMC4xNTAqKDAuMzMwIC0gMC42MDApICkpKihwLT52KVsyXSkpL2V4cG9zdXJlLC40KSwy
LjUpL2V4cG9zdXJlOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICBlICo9IDAuNSAvICgoMC4zMzAqKCAoMS4vMC4zMzMzKSAqICggMC4zMzMzKigwLjYwMCAtIDAu
MDYwKSAtIDAuMzMzMyooMC4yOTAgLSAwLjE1MCkgKyAwLjI5MCowLjA2MCAtIDAuMTUwKjAuNjAw
ICkgKS8oIDAuNjQwKigwLjYwMCAtIDAuMDYwKSArIDAuMjkwKigwLjA2MCAtIDAuMzMwKSArIDAu
MTUwKigwLjMzMCAtIDAuNjAwKSApKSoocC0+dilbMF0rKDAuNjAwKiggKDEuLzAuMzMzMykgKiAo
IDAuMzMzMyooMC4wNjAgLSAwLjMzMCkgLSAwLjMzMzMqKDAuMTUwIC0gMC42NDApIC0gMC42NDAq
MC4wNjAgKyAwLjE1MCowLjMzMCApICkvKCAwLjY0MCooMC42MDAgLSAwLjA2MCkgKyAwLjI5MCoo
MC4wNjAgLSAwLjMzMCkgKyAwLjE1MCooMC4zMzAgLSAwLjYwMCkgKSkqKHAtPnYpWzFdKygwLjA2
MCooICgxLi8wLjMzMzMpICogKCAwLjMzMzMqKDAuMzMwIC0gMC42MDApIC0gMC4zMzMzKigwLjY0
MCAtIDAuMjkwKSArIDAuNjQwKjAuNjAwIC0gMC4yOTAqMC4zMzAgKSApLyggMC42NDAqKDAuNjAw
IC0gMC4wNjApICsgMC4yOTAqKDAuMDYwIC0gMC4zMzApICsgMC4xNTAqKDAuMzMwIC0gMC42MDAp
ICkpKihwLT52KVsyXSk7CiAgICAgICAgfQogICAgICAgIGlmIChlIDw9ICgxZS02KSB8fCBmYWJz
KDEuMCAtIGUpIDw9ICgxZS02KSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICBzY2Fs
ZXBpY3QoJnB0cnVuaywgZSk7CiAgICAgICAgZXhwb3N1cmUgKj0gZTsKICAgICAgICByZWRyYXco
KTsKfQoKCmdldHBhcmFtKHN0ciwgZHNjLCB0eXAsIHB0cikKY2hhciAqc3RyLCAqZHNjOwppbnQg
dHlwOwpyZWdpc3RlciB1bmlvbiB7aW50IGk7IGRvdWJsZSBkOyBDT0xPUiBDO30gKnB0cjsKewog
ICAgICAgIGV4dGVybiBjaGFyICppbmRleCgpOwogICAgICAgIGludCBpMDsKICAgICAgICBkb3Vi
bGUgZDAsIGQxLCBkMjsKICAgICAgICBjaGFyIGJ1Zls0OF07CgogICAgICAgIHN3aXRjaCAodHlw
KSB7CiAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAgICBpZiAoc3NjYW5mKHN0ciwgIiVk
IiwgJmkwKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKGRz
Yyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmLCAiICglZCk6ICIsIHB0ci0+
aSk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICgqZGV2LT5jb21pbikoYnVmLCAoKHZvaWQgKikwKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzc2NhbmYoYnVmLCAiJWQiLCAmaTApICE9IDEpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcHRyLT5pID0gaTA7CiAgICAgICAgICAgICAgICByZXR1cm4oMSk7CiAgICAg
ICAgY2FzZSAncic6CiAgICAgICAgICAgICAgICBpZiAoc3NjYW5mKHN0ciwgIiVsZiIsICZkMCkg
IT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAoKmRldi0+Y29tb3V0KShkc2MpOwogICAg
ICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZiwgIiAoJS42Zyk6ICIsIHB0ci0+ZCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICgqZGV2LT5jb21pbikoYnVmLCAoKHZvaWQgKikwKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzc2NhbmYoYnVmLCAiJWxmIiwgJmQwKSAhPSAxKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybigwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIHB0ci0+ZCA9IGQwOwogICAgICAgICAgICAgICAgcmV0dXJuKDEpOwogICAgICAgIGNh
c2UgJ2InOgogICAgICAgICAgICAgICAgaWYgKHNzY2FuZihzdHIsICIlMXMiLCBidWYpICE9IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgKCpkZXYtPmNvbW91dCkoZHNjKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgc3ByaW50ZihidWYsICI/ICglYyk6ICIsIHB0ci0+aSA/ICd5JyA6ICdu
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKGJ1Zik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICgqZGV2LT5jb21pbikoYnVmLCAoKHZvaWQgKikwKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChidWZbMF0gPT0gJ1wwJyB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXgoInlZKzF0VG5OLTBmRiIsIGJ1ZlswXSkgPT0gKCh2
b2lkICopMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDApOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHRyLT5pID0gaW5kZXgoInlZKzF0VCIsIGJ1
ZlswXSkgIT0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgICByZXR1cm4oMSk7CiAgICAgICAg
Y2FzZSAnQyc6CiAgICAgICAgICAgICAgICBpZiAoc3NjYW5mKHN0ciwgIiVsZiAlbGYgJWxmIiwg
JmQwLCAmZDEsICZkMikgIT0gMykgewogICAgICAgICAgICAgICAgICAgICAgICAoKmRldi0+Y29t
b3V0KShkc2MpOwogICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZiwgIiAoJS42ZyAl
LjZnICUuNmcpOiAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChw
dHItPkMpWzBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocHRy
LT5DKVsxXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHB0ci0+
QylbMl0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgKCpkZXYtPmNvbW91dCkoYnVmKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAqKTApKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNzY2FuZihidWYsICIlbGYgJWxmICVsZiIsICZkMCwg
JmQxLCAmZDIpICE9IDMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKDAp
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKChwdHItPkMpWzBdPShkMCksKHB0
ci0+QylbMV09KGQxKSwocHRyLT5DKVsyXT0oZDIpKTsKICAgICAgICAgICAgICAgIHJldHVybigx
KTsKICAgICAgICB9Cn0KCgpzZXRwYXJhbShzKQpyZWdpc3RlciBjaGFyICpzOwp7CiAgICAgICAg
ZXh0ZXJuIGludCBwc2FtcGxlOwogICAgICAgIGV4dGVybiBkb3VibGUgbWF4ZGlmZjsKICAgICAg
ICBleHRlcm4gZG91YmxlIG1pbndlaWdodDsKICAgICAgICBleHRlcm4gaW50IG1heGRlcHRoOwog
ICAgICAgIGV4dGVybiBkb3VibGUgZHN0cnNyYzsKICAgICAgICBleHRlcm4gZG91YmxlIHNoYWR0
aHJlc2g7CiAgICAgICAgZXh0ZXJuIGRvdWJsZSBzaGFkY2VydDsKICAgICAgICBleHRlcm4gQ09M
T1IgYW1idmFsOwogICAgICAgIGV4dGVybiBpbnQgYW1idnd0OwogICAgICAgIGV4dGVybiBkb3Vi
bGUgYW1iYWNjOwogICAgICAgIGV4dGVybiBpbnQgYW1icmVzOwogICAgICAgIGV4dGVybiBpbnQg
YW1iZGl2OwogICAgICAgIGV4dGVybiBpbnQgYW1ic3NhbXA7CiAgICAgICAgZXh0ZXJuIGludCBh
bWJvdW5jZTsKICAgICAgICBleHRlcm4gQ09MT1IgY2V4dGluY3Rpb247CiAgICAgICAgZXh0ZXJu
IENPTE9SIHNhbGJlZG87CiAgICAgICAgZXh0ZXJuIGRvdWJsZSBzZWNjZzsKICAgICAgICBleHRl
cm4gZG91YmxlIHNzYW1wZGlzdDsKICAgICAgICBleHRlcm4gaW50IGRpcmVjdHZpczsKICAgICAg
ICBleHRlcm4gZG91YmxlIHNyY3NpemVyYXQ7CiAgICAgICAgZXh0ZXJuIGludCBkb19pcnJhZDsK
ICAgICAgICBleHRlcm4gZG91YmxlIHNwZWNqaXR0ZXI7CiAgICAgICAgZXh0ZXJuIGRvdWJsZSBz
cGVjdGhyZXNoOwogICAgICAgIGV4dGVybiBpbnQgYmFja3ZpczsKICAgICAgICBjaGFyIGJ1Zlsx
MjhdOwoKICAgICAgICBpZiAoc1swXSA9PSAnXDAnKSB7CiAgICAgICAgICAgICAgICAoKmRldi0+
Y29tb3V0KSgKICAgICAgICAgICAgICAgICJhYSBhYiBhZCBhciBhcyBhdiBhdyBiIGRjIGR2IGRq
IGRzIGR0IGkgbHIgbHcgbWUgbWEgbWcgbXMgcHMgcHQgc2ogc3QgYnY6ICIpOwogICAgICAgICAg
ICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAqKTApKTsKICAgICAgICAgICAgICAgIHMg
PSBidWY7CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAoc1swXSkgewogICAgICAgIGNhc2UgJ2wn
OgogICAgICAgICAgICAgICAgc3dpdGNoIChzWzFdKSB7CiAgICAgICAgICAgICAgICBjYXNlICd3
JzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysyLCAibGltaXQgd2VpZ2h0Iiwg
J3InLCAmbWlud2VpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysyLCAi
bGltaXQgcmVmbGVjdGlvbiIsICdpJywgJm1heGRlcHRoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAg
ICBnb3RvIGJhZHBhcmFtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNbMV0pIHsKICAgICAg
ICAgICAgICAgIGNhc2UgJ2onOgogICAgICAgICAgICAgICAgICAgICAgICBnZXRwYXJhbShzKzIs
ICJkaXJlY3Qgaml0dGVyIiwgJ3InLCAmZHN0cnNyYyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgICAgICAg
IGdldHBhcmFtKHMrMiwgImRpcmVjdCBjZXJ0YWludHkiLCAncicsICZzaGFkY2VydCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndCc6CiAgICAg
ICAgICAgICAgICAgICAgICAgIGdldHBhcmFtKHMrMiwgImRpcmVjdCB0aHJlc2hvbGQiLCAncics
ICZzaGFkdGhyZXNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysyLCAiZGly
ZWN0IHZpc2liaWxpdHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2InLCAmZGlyZWN0dmlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysyLCAi
ZGlyZWN0IHNhbXBsaW5nIiwgJ3InLCAmc3Jjc2l6ZXJhdCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBiYWRwYXJhbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICAgICAgc3dpdGNoIChzWzFdKSB7CiAgICAg
ICAgICAgICAgICBjYXNlICd2JzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysy
LCAiYmFjayBmYWNlIHZpc2liaWxpdHkiLCAnYicsICZiYWNrdmlzKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdcMCc6CiAgICAgICAgICAgICAg
ICBjYXNlICcgJzoKICAgICAgICAgICAgICAgIGNhc2UgJ3knOiBjYXNlICdZJzogY2FzZSAndCc6
IGNhc2UgJ1QnOiBjYXNlICcxJzogY2FzZSAnKyc6CiAgICAgICAgICAgICAgICBjYXNlICduJzog
Y2FzZSAnTic6IGNhc2UgJ2YnOiBjYXNlICdGJzogY2FzZSAnMCc6IGNhc2UgJy0nOgogICAgICAg
ICAgICAgICAgICAgICAgICBnZXRwYXJhbShzKzEsICJibGFjayBhbmQgd2hpdGUiLCAnYicsICZn
cmV5c2NhbGUpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkcGFyYW07CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdpJzoKICAgICAg
ICAgICAgICAgIGdldHBhcmFtKHMrMSwgImlycmFkaWFuY2UiLCAnYicsICZkb19pcnJhZCk7CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAgIHN3
aXRjaCAoc1sxXSkgewogICAgICAgICAgICAgICAgY2FzZSAndic6CiAgICAgICAgICAgICAgICAg
ICAgICAgIGdldHBhcmFtKHMrMiwgImFtYmllbnQgdmFsdWUiLCAnQycsIChDT0xPUiAqKWFtYnZh
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAn
dyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGdldHBhcmFtKHMrMiwgImFtYmllbnQgdmFsdWUg
d2VpZ2h0IiwgJ2knLCAmYW1idnd0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldHBh
cmFtKHMrMiwgImFtYmllbnQgYWNjdXJhY3kiLCAncicsICZhbWJhY2MpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldGFtYmFjYyhhbWJhY2MpOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgICAgICAg
ICAgICBnZXRwYXJhbShzKzIsICJhbWJpZW50IGRpdmlzaW9ucyIsICdpJywgJmFtYmRpdik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAncyc6CiAg
ICAgICAgICAgICAgICAgICAgICAgIGdldHBhcmFtKHMrMiwgImFtYmllbnQgc3VwZXItc2FtcGxl
cyIsICdpJywgJmFtYnNzYW1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0cGFyYW0ocysy
LCAiYW1iaWVudCBib3VuY2VzIiwgJ2knLCAmYW1ib3VuY2UpOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZ2V0cGFyYW0ocysyLCAiYW1iaWVudCByZXNvbHV0aW9uIiwgJ2knLCAmYW1icmVz
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRhbWJyZXMoYW1icmVzKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZHBhcmFtOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbSc6CiAgICAgICAgICAgICAgICBzd2l0
Y2ggKHNbMV0pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAg
ICAgICBnZXRwYXJhbShzKzIsICJleHRpbmN0aW9uIGNvZWZmaWNpZW50IiwgJ0MnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENPTE9SICopY2V4dGluY3Rpb24pOwog
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2EnOgog
ICAgICAgICAgICAgICAgICAgICAgICBnZXRwYXJhbShzKzIsICJzY2F0dGVyaW5nIGFsYmVkbyIs
ICdDJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDT0xPUiAqKXNh
bGJlZG8pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNh
c2UgJ2cnOgogICAgICAgICAgICAgICAgICAgICAgICBnZXRwYXJhbShzKzIsICJzY2F0dGVyaW5n
IGVjY2VudHJpY2l0eSIsICdyJywgJnNlY2NnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0
cGFyYW0ocysyLCAibWlzdCBzYW1wbGluZyBkaXN0YW5jZSIsICdyJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzc2FtcGRpc3QpOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAg
ICAgIGdvdG8gYmFkcGFyYW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgIHN3aXRjaCAoc1sxXSkgewogICAg
ICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRwYXJh
bShzKzIsICJwaXhlbCBzYW1wbGUiLCAnaScsICZwc2FtcGxlKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwZGVwdGggPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0
cGFyYW0ocysyLCAicGl4ZWwgdGhyZXNob2xkIiwgJ3InLCAmbWF4ZGlmZikpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGRlcHRoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGJhZHBhcmFtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHNbMV0pIHsKICAgICAgICAg
ICAgICAgIGNhc2UgJ2onOgogICAgICAgICAgICAgICAgICAgICAgICBnZXRwYXJhbShzKzIsICJz
cGVjdWxhciBqaXR0ZXIiLCAncicsICZzcGVjaml0dGVyKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0cGFyYW0ocysyLCAic3BlY3VsYXIgdGhyZXNob2xkIiwgJ3InLCAmc3BlY3RocmVzaCk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWRwYXJhbTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1wwJzoKICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIGRlZmF1bHQ6OwpiYWRwYXJhbToKICAgICAgICAgICAgICAgICpzc2tp
cChzKSA9ICdcMCc7CiAgICAgICAgICAgICAgICBzcHJpbnRmKGVycm1zZywgIiVzOiB1bmtub3du
IHZhcmlhYmxlIiwgcyk7CiAgICAgICAgICAgICAgICBlcnJvcig1LCBlcnJtc2cpOwogICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgfQp9CgoKdHJhY2VyYXkocykKY2hhciAqczsKewogICAg
ICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgaW50IHgsIHk7CiAgICAgICAgT0JKUkVDICppbm87
CiAgICAgICAgUkFZIHRoaXNyYXk7CgogICAgICAgIHRoaXNyYXkucm1heCA9IDAuMDsKCiAgICAg
ICAgaWYgKCEoc3NjYW5mKHMsIiVsZiAlbGYgJWxmIix0aGlzcmF5LnJvcmcsdGhpc3JheS5yb3Jn
KzEsdGhpc3JheS5yb3JnKzIpPT0zKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAhKHNzY2Fu
Zihzc2tpcDIocywzKSwiJWxmICVsZiAlbGYiLHRoaXNyYXkucmRpcix0aGlzcmF5LnJkaXIrMSx0
aGlzcmF5LnJkaXIrMik9PTMpKSB7CgogICAgICAgICAgICAgICAgaWYgKGRldi0+Z2V0Y3VyID09
ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAoKmRldi0+Y29tb3V0KSgiUGljayByYXlcbiIpOwogICAgICAgICAgICAgICAgaWYgKCgq
ZGV2LT5nZXRjdXIpKCZ4LCAmeSkgPT0gKCdDJy0nQCcpKQogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CgogICAgICAgICAgICAgICAgaWYgKCh0aGlzcmF5LnJtYXggPSB2aWV3cmF5KHRo
aXNyYXkucm9yZywgdGhpc3JheS5yZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAmb3Vydmll
dywgKHgrLjUpL2hyZXNvbHUsICh5Ky41KS92cmVzb2x1KSkgPCAtKDFlLTYpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yKDUsICJub3Qgb24gaW1hZ2UiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICB9IGVsc2UgaWYgKG5v
cm1hbGl6ZSh0aGlzcmF5LnJkaXIpID09IDAuMCkgewogICAgICAgICAgICAgICAgZXJyb3IoNSwg
Inplcm8gcmF5IGRpcmVjdGlvbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K
CiAgICAgICAgcmF5b3JpZ2luKCZ0aGlzcmF5LCAoKHZvaWQgKikwKSwgMDEsIDEuMCk7CgogICAg
ICAgICgqKCZ0aGlzcmF5KS0+cmV2ZikoJnRoaXNyYXkpOwoKICAgICAgICBpZiAodGhpc3JheS5y
byA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICgqZGV2LT5jb21vdXQpKCJyYXkgaGl0
IG5vdGhpbmciKTsKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHNwcmludGYoYnVmLCAi
cmF5IGhpdCAlcyVzICVzIFwiJXNcIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGhpc3JheS5yb2QgPCAwLjAgPyAiYmFjayBvZiAiIDogIiIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpc3JheS5yby0+b21vZCA9PSAoLTEpID8gInZvaWQiIDoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpibG9ja1sodGhpc3JheS5yby0+b21v
ZCk+PjldKygodGhpc3JheS5yby0+b21vZCkmKCgxPDw5KS0xKSkpLT5vbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvZnVuW3RoaXNyYXkucm8tPm90eXBlXS5mdW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc3JheS5yby0+b25hbWUpOwogICAgICAg
ICAgICAgICAgaWYgKChpbm8gPSAob2JqYmxvY2tbKHRoaXNyYXkucm9iaik+PjldKygodGhpc3Jh
eS5yb2JqKSYoKDE8PDkpLTEpKSkpICE9IHRoaXNyYXkucm8pCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNwcmludGYoYnVmK3N0cmxlbihidWYpLCAiIGluICVzIFwiJXNcIiIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZnVuW2luby0+b3R5cGVdLmZ1bmFtZSwgaW5v
LT5vbmFtZSk7CiAgICAgICAgICAgICAgICAoKmRldi0+Y29tb3V0KShidWYpOwogICAgICAgICAg
ICAgICAgKCpkZXYtPmNvbWluKShidWYsICgodm9pZCAqKTApKTsKICAgICAgICAgICAgICAgIGlm
ICh0aGlzcmF5LnJvdCA+PSAoMWUxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICgqZGV2LT5j
b21vdXQpKCJhdCBpbmZpbml0eSIpOwogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHNwcmludGYoYnVmLCAiYXQgKCUuNmcgJS42ZyAlLjZnKSAoJS42ZykiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc3JheS5yb3BbMF0sIHRo
aXNyYXkucm9wWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
c3JheS5yb3BbMl0sIHRoaXNyYXkucnQpOwogICAgICAgICAgICAgICAgICAgICAgICAoKmRldi0+
Y29tb3V0KShidWYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKCpkZXYtPmNv
bWluKShidWYsICgodm9pZCAqKTApKTsKICAgICAgICAgICAgICAgIHNwcmludGYoYnVmLCAidmFs
dWUgKCUuNWcgJS41ZyAlLjVnKSAoJS4xZkwpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoKHRoaXNyYXkucmNvbClbMF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgodGhpc3JheS5yY29sKVsxXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh0
aGlzcmF5LnJjb2wpWzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTc5LiAq
ICgoMC4zMzAqKCAoMS4vMC4zMzMzKSAqICggMC4zMzMzKigwLjYwMCAtIDAuMDYwKSAtIDAuMzMz
MyooMC4yOTAgLSAwLjE1MCkgKyAwLjI5MCowLjA2MCAtIDAuMTUwKjAuNjAwICkgKS8oIDAuNjQw
KigwLjYwMCAtIDAuMDYwKSArIDAuMjkwKigwLjA2MCAtIDAuMzMwKSArIDAuMTUwKigwLjMzMCAt
IDAuNjAwKSApKSoodGhpc3JheS5yY29sKVswXSsoMC42MDAqKCAoMS4vMC4zMzMzKSAqICggMC4z
MzMzKigwLjA2MCAtIDAuMzMwKSAtIDAuMzMzMyooMC4xNTAgLSAwLjY0MCkgLSAwLjY0MCowLjA2
MCArIDAuMTUwKjAuMzMwICkgKS8oIDAuNjQwKigwLjYwMCAtIDAuMDYwKSArIDAuMjkwKigwLjA2
MCAtIDAuMzMwKSArIDAuMTUwKigwLjMzMCAtIDAuNjAwKSApKSoodGhpc3JheS5yY29sKVsxXSso
MC4wNjAqKCAoMS4vMC4zMzMzKSAqICggMC4zMzMzKigwLjMzMCAtIDAuNjAwKSAtIDAuMzMzMyoo
MC42NDAgLSAwLjI5MCkgKyAwLjY0MCowLjYwMCAtIDAuMjkwKjAuMzMwICkgKS8oIDAuNjQwKigw
LjYwMCAtIDAuMDYwKSArIDAuMjkwKigwLjA2MCAtIDAuMzMwKSArIDAuMTUwKigwLjMzMCAtIDAu
NjAwKSApKSoodGhpc3JheS5yY29sKVsyXSkpKTsKICAgICAgICAgICAgICAgICgqZGV2LT5jb21v
dXQpKGJ1Zik7CiAgICAgICAgfQogICAgICAgICgqZGV2LT5jb21pbikoYnVmLCAoKHZvaWQgKikw
KSk7Cn0KCgp3cml0ZXBpY3QocykKY2hhciAqczsKewogICAgICAgIHN0YXRpYyBjaGFyIGJ1Zlsx
MjhdOwogICAgICAgIGNoYXIgKmZuYW1lOwogICAgICAgIEZJTEUgKmZwOwogICAgICAgIENPTFIg
KnNjYW5saW5lOwogICAgICAgIGludCB5OwoKICAgICAgICB3aGlsZSAoKF9fY3R5cGVfYlsoaW50
KSAoKCpzKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTc3BhY2UpKQogICAgICAgICAgICAg
ICAgcysrOwogICAgICAgIGlmICgqcykKICAgICAgICAgICAgICAgIGF0b3MoYnVmLCBzaXplb2Yo
YnVmKSwgcyk7CiAgICAgICAgZWxzZSBpZiAoYnVmWzBdID09ICdcMCcpIHsKICAgICAgICAgICAg
ICAgIGVycm9yKDUsICJubyBmaWxlIik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
fQogICAgICAgIGlmICgoZm5hbWUgPSBnZXRwYXRoKGJ1ZiwgKCh2b2lkICopMCksIDApKSA9PSAo
KHZvaWQgKikwKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoZnAgPSBmb3BlbihmbmFtZSwg
InciKSkgPT0gKCh2b2lkICopMCkpIHsKICAgICAgICAgICAgICAgIHNwcmludGYoZXJybXNnLCAi
Y2Fubm90IG9wZW4gXCIlc1wiIiwgYnVmKTsKICAgICAgICAgICAgICAgIGVycm9yKDUsIGVycm1z
Zyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCgogICAgICAgICgqZGV2LT5j
b21vdXQpKCJ3cml0aW5nIFwiIik7CiAgICAgICAgKCpkZXYtPmNvbW91dCkoZm5hbWUpOwogICAg
ICAgICgqZGV2LT5jb21vdXQpKCJcIi4uLlxuIik7CgogICAgICAgIG5ld2hlYWRlcigiUkFESUFO
Q0UiLCBmcCk7CiAgICAgICAgZnB1dHMocHJvZ25hbWUsIGZwKTsKICAgICAgICBmcHJpbnR2aWV3
KCZvdXJ2aWV3LCBmcCk7CiAgICAgICAgaWYgKG9jdG5hbWUgIT0gKCh2b2lkICopMCkpCiAgICAg
ICAgICAgICAgICBmcHJpbnRmKGZwLCAiICVzXG4iLCBvY3RuYW1lKTsKICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICBfSU9fcHV0YyAoJ1xuJywgZnApOwogICAgICAgIGZwcmludGYoZnAsICJT
T0ZUV0FSRT0gJXNcbiIsIFZlcnNpb25JRCk7CiAgICAgICAgZnB1dG5vdyhmcCk7CiAgICAgICAg
aWYgKGV4cG9zdXJlICE9IDEuMCkKICAgICAgICAgICAgICAgIGZwcmludGYoZnAsIiVzJWVcbiIs
IkVYUE9TVVJFPSIsZXhwb3N1cmUpOwogICAgICAgIGlmIChkZXYtPnBpeGFzcGVjdCAhPSAxLjAp
CiAgICAgICAgICAgICAgICBmcHJpbnRmKGZwLCIlcyVmXG4iLCJQSVhBU1BFQ1Q9IixkZXYtPnBp
eGFzcGVjdCk7CiAgICAgICAgZnB1dGZvcm1hdCgiMzItYml0X3JsZV9yZ2JlIiwgZnApOwogICAg
ICAgIF9JT19wdXRjICgnXG4nLCBmcCk7CiAgICAgICAgZnByaW50ZihmcCwiLVkgJWQgK1ggJWRc
biIsdnJlc29sdSxocmVzb2x1KTsKCiAgICAgICAgc2NhbmxpbmUgPSAoQ09MUiAqKW1hbGxvYyho
cmVzb2x1KnNpemVvZihDT0xSKSk7CiAgICAgICAgaWYgKHNjYW5saW5lID09ICgodm9pZCAqKTAp
KSB7CiAgICAgICAgICAgICAgICBlcnJvcig1LCAibm90IGVub3VnaCBtZW1vcnkhIik7CiAgICAg
ICAgICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICAgICAgICAgdW5saW5rKGZuYW1lKTsKICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZm9yICh5ID0gdnJlc29sdS0x
OyB5ID49IDA7IHktLSkgewogICAgICAgICAgICAgICAgZ2V0cGljdGNvbHJzKHksIHNjYW5saW5l
LCAmcHRydW5rLCBocmVzb2x1LCB2cmVzb2x1KTsKICAgICAgICAgICAgICAgIGlmIChmd3JpdGVj
b2xycyhzY2FubGluZSwgaHJlc29sdSwgZnApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgICAgIGZyZWUoKGNoYXIgKilzY2FubGluZSk7CiAgICAgICAg
aWYgKGZjbG9zZShmcCkgPCAwKQogICAgICAgICAgICAgICAgZXJyb3IoNSwgIndyaXRlIGVycm9y
Iik7Cn0K



More information about the Gcc-bugs mailing list