c++/891: Internal compiler error in `const_hash', at varasm.c:2372

mike_mccormack@looksmart.com.au mike_mccormack@looksmart.com.au
Sat Nov 25 15:56:00 GMT 2000


>Number:         891
>Category:       c++
>Synopsis:       Internal compiler error in `const_hash', at varasm.c:2372
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Nov 25 15:56:00 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     mike_mccormack@looksmart.com.au
>Release:        gcc version 2.95.2 19991024
>Organization:
>Environment:
Linux armageddon 2.2.17 #2 SMP Thu Nov 16 21:24:19 EST 2000 i686 unknown
Reading specs from /usr/lib/gcc-lib/i586-mandrake-linux/2.95.2/specs
gcc version 2.95.2 19991024 (release)
>Description:
compiling a table of method pointers gives the following error:

...
tables.C:605: taking the address of a bound member function
tables.C:605:   to form a pointer to member function, say `&instruction::rm8_2_reg'
tables.C:606: taking the address of a bound member function
tables.C:606:   to form a pointer to member function, say `&instruction::rm8_2_reg'
tables.C: In function `void __static_initialization_and_destruction_0(int, int)':
tables.C:154: Internal compiler error in `const_hash', at varasm.c:2372
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/faq.html#bugreport > for instructions.
make: *** [tables.o] Error 1

maybe you've seen this before?
i haven't compiled this code in a couple of years...
>How-To-Repeat:
g++  -g -save-temps  -c tables.C -o tables.o
>Fix:

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

IyAxICJ0YWJsZXMuQyIKIAogCiAKIAogCiAKIAogCgojIDEgImluc3RydWN0aW9uLmgiIDEKIAog
CiAKIAogCiAKIAogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0uaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0cmVhbWJ1Zi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEg
aW50ZXJmYWNlCgoKICAgCgoKCmV4dGVybiAiQyIgewojIDEgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDEgMwogCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKIAoKCgogCgoKCgoKCgogCiMgMTM3ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwoKCiAK
CgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxOTUgIi91c3Iv
aW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoKCiMgNzEg
Ii91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAKCgoKCgoKCiAKCgoKIyAxMDMgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIyAyNDkgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDI3NyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoKCgoKIyAyNiAiL3Vz
ci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMg
MTkgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1t
YW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI5ICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgogCnR5cGVkZWYgdW5zaWduZWQgY2hhciBf
X3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWdu
ZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5z
aW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ4ICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90
Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBp
bnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25f
XyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19x
dWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90OwkJIAp0eXBlZGVm
IF9fdV9pbnQgX191aWRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkgCnR5cGVkZWYg
X191X2xvbmcgX19pbm9fdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90OwkJIAp0eXBlZGVm
IF9fdV9pbnQgX19ubGlua190OyAJCSAKdHlwZWRlZiBsb25nIGludCBfX29mZl90OwkJIAp0eXBl
ZGVmIF9fcXVhZF90IF9fbG9mZl90OwkJIAp0eXBlZGVmIGludCBfX3BpZF90OwkJCSAKdHlwZWRl
ZiBpbnQgX19zc2l6ZV90OwkJCSAKdHlwZWRlZiBsb25nIGludCBfX3JsaW1fdDsJCSAKdHlwZWRl
ZiBfX3F1YWRfdCBfX3JsaW02NF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwkJCSAKCnR5
cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CQkJCSAKCiAK
dHlwZWRlZiBpbnQgX19kYWRkcl90OwkJCSAKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwkJIAoMCnR5
cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f
ZmRfbWFzazsKCiAKCgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgIAoKCgoKCiAgICBf
X2ZkX21hc2sgX19mZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOwoK
CiAgfSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVk
IHNob3J0IGludCBfX2lwY19waWRfdDsKCgogCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRf
dDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19m
c2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYg
X191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7
CgogCnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm
NjRfdDsKCiAKdHlwZWRlZiBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf
X3RfdXNjYWxhcl90OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCgoKCgojIDkgIi91
c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK
IyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVu
c2lnbmVkIGludCAgd2ludF90OwoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoKCgoK
CgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRlX18gKChf
X21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0df
dWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMwICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgogCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1t
YW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91c3IvbGliL2dj
Yy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMjA5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCiMgNDggIi91c3IvaW5jbHVkZS9saWJp
by5oIiAyIDMKCgoKCgoKCiMgNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCiMgOTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgX0lPX2p1bXBf
dDsgIHN0cnVjdCBfSU9fRklMRTsKCiAKCgoKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoK
CgogCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0
cnVjdCBfSU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAgaW50IF9wb3M7CiMgMTg2ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwoKfTsKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsJCSAK
CgogICAKICAgCiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lPX3JlYWRfZW5kOwkg
CiAgY2hhciogX0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9iYXNlOwkgCiAgY2hh
ciogX0lPX3dyaXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAKICBjaGFyKiBfSU9f
YnVmX2Jhc2U7CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFyICpfSU9fc2F2ZV9i
YXNlOyAgCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9JT19zYXZlX2VuZDsg
IAoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2No
YWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCAgIF9vbGRfb2Zm
c2V0OyAgCgoKICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIg
X3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCiAgX0lPX2xvY2tfdCAq
X2xvY2s7CgoKCgoKCgoKICBfX29mZjY0X3QgICBfb2Zmc2V0OwogICAKICBpbnQgX3VudXNlZDJb
MTZdOwoKfTsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM
RV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJf
MV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoK
CgoKCgoKCgoKCiAKCiAKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAgKHZvaWQgKiAg
X19jb29raWUsIGNoYXIgKl9fYnVmLAoJCQkJICAgICAgIHNpemVfdCBfX25ieXRlcykgIDsKCiAK
CgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwg
X19jb25zdCBjaGFyICpfX2J1ZiwKCQkJCSAgICAgIHNpemVfdCBfX24pICA7CgogCgoKCgoKdHlw
ZWRlZiBpbnQgX19pb19zZWVrX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgX19vZmZfdCAgIF9fcG9z
LCBpbnQgX193KSAgOwoKIAp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICAodm9pZCAqICBfX2Nv
b2tpZSkgIDsKCgojIDMxMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCmV4dGVybiAiQyIg
ewoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBfX3VmbG93ICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX19v
dmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgoKCgoKCgpl
eHRlcm4gaW50IF9JT19nZXRjICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4g
aW50IF9JT19wdXRjICAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRl
cm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwpleHRlcm4gaW50
IF9JT19mZXJyb3IgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7CgpleHRlcm4gaW50IF9J
T19wZWVrY19sb2NrZWQgIChfSU9fRklMRSAqX19mcCkgIHRocm93ICgpICA7CgogCgoKCmV4dGVy
biB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHZv
aWQgX0lPX2Z1bmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CmV4dGVybiBpbnQg
X0lPX2Z0cnlsb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKCgpl
eHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFy
ICogX19yZXN0cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKl9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkgIHRo
cm93ICgpICA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGludCwg
X19zc2l6ZV90ICApICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuICAoX0lP
X0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmY2NF90
ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBpbnQpICB0aHJv
dyAoKSAgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfX29m
ZjY0X3QgICwgaW50KSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9h
cmVhICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CgoKfQoKCgojIDM2ICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RyZWFtYnVmLmgiIDIgMwoKfQogCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFr
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCnZvaWQgdmFfZW5kIChfX2dudWNfdmFfbGlzdCk7CQkg
CgoKIAoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKCgoKCgoK
CgoKCgoKCiMgMTc1ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4y
L2luY2x1ZGUvc3RkYXJnLmgiIDMKCgogCgoKCgogCgogCgogCgp0eXBlZGVmIF9fZ251Y192YV9s
aXN0IHZhX2xpc3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDAgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dHJlYW1idWYuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMrKyIgewpj
bGFzcyBpc3RyZWFtOyAgCmNsYXNzIG9zdHJlYW07IGNsYXNzIHN0cmVhbWJ1ZjsKCiAKCgoKCnR5
cGVkZWYgX19vZmY2NF90ICAgc3RyZWFtb2ZmOwp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVhbXBv
czsKCgoKCnR5cGVkZWYgX19zc2l6ZV90ICAgc3RyZWFtc2l6ZTsKCnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBfX2ZtdGZsYWdzOwp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX19pb3N0YXRlOwoKc3RydWN0
IF9pb3NfZmllbGRzCnsgIAogICAgc3RyZWFtYnVmICpfc3RyYnVmOwogICAgb3N0cmVhbSogX3Rp
ZTsKICAgIGludCBfd2lkdGg7CiAgICBfX2ZtdGZsYWdzIF9mbGFnczsKICAgIHdjaGFyX3QgICBf
ZmlsbDsKICAgIF9faW9zdGF0ZSBfc3RhdGU7CiAgICBfX2lvc3RhdGUgX2V4Y2VwdGlvbnM7CiAg
ICBpbnQgX3ByZWNpc2lvbjsKCiAgICB2b2lkICpfYXJyYXlzOyAgCn07CgoKCgoKCgoKCgoKCgoK
CiMgMTI0ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDMKCgpjbGFzcyBpb3MgOiBwdWJsaWMg
X2lvc19maWVsZHMgewogIGlvcyYgb3BlcmF0b3I9KGlvcyYpOyAgIAogIGlvcyAoY29uc3QgaW9z
Jik7ICAKICBwdWJsaWM6CiAgICB0eXBlZGVmIF9fZm10ZmxhZ3MgZm10ZmxhZ3M7CiAgICB0eXBl
ZGVmIGludCBpb3N0YXRlOwogICAgdHlwZWRlZiBpbnQgb3Blbm1vZGU7CiAgICB0eXBlZGVmIF9f
c3NpemVfdCAgIHN0cmVhbXNpemU7CiAgICBlbnVtIGlvX3N0YXRlIHsKCWdvb2RiaXQgPSAwICwK
CWVvZmJpdCA9IDEgLAoJZmFpbGJpdCA9IDIgLAoJYmFkYml0ID0gNCAgfTsKICAgIGVudW0gb3Bl
bl9tb2RlIHsKCWluID0gMSAsCglvdXQgPSAyICwKCWF0ZSA9IDQgLAoJYXBwID0gOCAsCgl0cnVu
YyA9IDE2ICwKCW5vY3JlYXRlID0gMzIgLAoJbm9yZXBsYWNlID0gNjQgLAoJYmluID0gMTI4ICwg
IAoJYmluYXJ5ID0gMTI4ICB9OwogICAgZW51bSBzZWVrX2RpciB7IGJlZywgY3VyLCBlbmR9Owog
ICAgdHlwZWRlZiBlbnVtIHNlZWtfZGlyIHNlZWtkaXI7CiAgICAgCiAgICBlbnVtIHsgc2tpcHdz
PSAwMSAsCgkgICBsZWZ0PSAwMiAsIHJpZ2h0PSAwNCAsIGludGVybmFsPSAwMTAgLAoJICAgZGVj
PSAwMjAgLCBvY3Q9IDA0MCAsIGhleD0gMDEwMCAsCgkgICBzaG93YmFzZT0gMDIwMCAsIHNob3dw
b2ludD0gMDQwMCAsCgkgICB1cHBlcmNhc2U9IDAxMDAwICwgc2hvd3Bvcz0gMDIwMDAgLAoJICAg
c2NpZW50aWZpYz0gMDQwMDAgLCBmaXhlZD0gMDEwMDAwICwKCSAgIHVuaXRidWY9IDAyMDAwMCAs
IHN0ZGlvPSAwNDAwMDAgCgoKCgkgICB9OwogICAgZW51bSB7ICAKCWJhc2VmaWVsZD1kZWMrb2N0
K2hleCwKCWZsb2F0ZmllbGQgPSBzY2llbnRpZmljK2ZpeGVkLAoJYWRqdXN0ZmllbGQgPSBsZWZ0
K3JpZ2h0K2ludGVybmFsCiAgICB9OwoKIyAxNzcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5k
cmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIg
MwoKCiAgICBvc3RyZWFtKiB0aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFt
KiB0aWUob3N0cmVhbSogdmFsKSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVy
biBzYXZlOyB9CgogICAgIAogICAgd2NoYXJfdCAgIGZpbGwoKSBjb25zdCB7IHJldHVybiBfZmls
bDsgfQogICAgd2NoYXJfdCAgIGZpbGwod2NoYXJfdCAgIG5ld2YpCgl7d2NoYXJfdCAgIG9sZGYg
PSBfZmlsbDsgX2ZpbGwgPSBuZXdmOyByZXR1cm4gb2xkZjt9CiAgICBmbXRmbGFncyBmbGFncygp
IGNvbnN0IHsgcmV0dXJuIF9mbGFnczsgfQogICAgZm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3
X3ZhbCkgewoJZm10ZmxhZ3Mgb2xkX3ZhbCA9IF9mbGFnczsgX2ZsYWdzID0gbmV3X3ZhbDsgcmV0
dXJuIG9sZF92YWw7IH0KICAgIGludCBwcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBfcHJlY2lz
aW9uOyB9CiAgICBpbnQgcHJlY2lzaW9uKGludCBuZXdwKSB7Cgl1bnNpZ25lZCBzaG9ydCBvbGRw
ID0gX3ByZWNpc2lvbjsgX3ByZWNpc2lvbiA9ICh1bnNpZ25lZCBzaG9ydCluZXdwOwoJcmV0dXJu
IG9sZHA7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsKSB7CglmbXRmbGFncyBvbGRi
aXRzID0gX2ZsYWdzOwoJX2ZsYWdzIHw9IHZhbDsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZs
YWdzIHNldGYoZm10ZmxhZ3MgdmFsLCBmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRz
ID0gX2ZsYWdzOwoJX2ZsYWdzID0gKF9mbGFncyAmIH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsgcmV0
dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHVuc2V0ZihmbXRmbGFncyBtYXNrKSB7CglmbXRm
bGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzICY9IH5tYXNrOyByZXR1cm4gb2xkYml0czsg
fQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gX3dpZHRoOyB9CiAgICBpbnQgd2lkdGgo
aW50IHZhbCkgeyBpbnQgc2F2ZSA9IF93aWR0aDsgX3dpZHRoID0gdmFsOyByZXR1cm4gc2F2ZTsg
fQoKCgoKICAgIHZvaWQgX3Rocm93X2ZhaWx1cmUoKSBjb25zdCB7IH0KCiAgICB2b2lkIGNsZWFy
KGlvc3RhdGUgc3RhdGUgPSAwKSB7Cglfc3RhdGUgPSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxi
YWRiaXQ7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlvbnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAg
IHZvaWQgc2V0KGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxhZzsKCWlmIChfc3RhdGUgJiBf
ZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXRzdGF0ZShpb3N0YXRl
IGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7ICAKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Ro
cm93X2ZhaWx1cmUoKTsgfQogICAgaW50IGdvb2QoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0g
MDsgfQogICAgaW50IGVvZigpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIGlvczo6ZW9mYml0OyB9
CiAgICBpbnQgZmFpbCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSAmIChpb3M6OmJhZGJpdHxpb3M6
OmZhaWxiaXQpOyB9CiAgICBpbnQgYmFkKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpi
YWRiaXQ7IH0KICAgIGlvc3RhdGUgcmRzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZTsgfQog
ICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBmYWlsKCkgPyAodm9pZCopMCA6ICh2
b2lkKikoLTEpOyB9CiAgICBpbnQgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gZmFpbCgpOyB9
CiAgICBpb3N0YXRlIGV4Y2VwdGlvbnMoKSBjb25zdCB7IHJldHVybiBfZXhjZXB0aW9uczsgfQog
ICAgdm9pZCBleGNlcHRpb25zKGlvc3RhdGUgZW5hYmxlKSB7CglfZXhjZXB0aW9ucyA9IGVuYWJs
ZTsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQoKICAgIHN0
cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJldHVybiBfc3RyYnVmOyB9CiAgICBzdHJlYW1idWYq
IHJkYnVmKHN0cmVhbWJ1ZiAqX3MpIHsKICAgICAgc3RyZWFtYnVmICpfb2xkID0gX3N0cmJ1Zjsg
X3N0cmJ1ZiA9IF9zOyBjbGVhciAoKTsgcmV0dXJuIF9vbGQ7IH0KCiAgICBzdGF0aWMgaW50IHN5
bmNfd2l0aF9zdGRpbyhpbnQgb24pOwogICAgc3RhdGljIHZvaWQgc3luY193aXRoX3N0ZGlvKCkg
eyBzeW5jX3dpdGhfc3RkaW8oMSk7IH0KICAgIHN0YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOwog
ICAgc3RhdGljIGludCB4YWxsb2MoKTsKICAgIHZvaWQqJiBwd29yZChpbnQpOwogICAgdm9pZCog
cHdvcmQoaW50KSBjb25zdDsKICAgIGxvbmcmIGl3b3JkKGludCk7CiAgICBsb25nIGl3b3JkKGlu
dCkgY29uc3Q7CgoKCgoKCgoKCiAgICAgCiAgICBjbGFzcyBJbml0IHsKICAgIHB1YmxpYzoKICAg
ICAgSW5pdCAoKSB7IH0KICAgIH07CgogIHByb3RlY3RlZDoKICAgIGlubGluZSBpb3Moc3RyZWFt
YnVmKiBzYiA9IDAsIG9zdHJlYW0qIHRpZV90byA9IDApOwogICAgaW5saW5lIHZpcnR1YWwgfmlv
cygpOwogICAgaW5saW5lIHZvaWQgaW5pdChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAw
KTsKfTsKCgoKCnR5cGVkZWYgaW9zOjpzZWVrX2RpciBfc2Vla19kaXI7CgoKIAogCiAKIAogCgog
CiAKY2xhc3Mgc3RyZWFtbWFya2VyIDogcHJpdmF0ZSBfSU9fbWFya2VyIHsKICAgIGZyaWVuZCBj
bGFzcyBzdHJlYW1idWY7CiAgICB2b2lkIHNldF9vZmZzZXQoaW50IG9mZnNldCkgeyBfcG9zID0g
b2Zmc2V0OyB9CiAgcHVibGljOgogICAgc3RyZWFtbWFya2VyKHN0cmVhbWJ1ZiAqc2IpOwogICAg
fnN0cmVhbW1hcmtlcigpOwogICAgaW50IHNhdmluZygpIHsgcmV0dXJuICAxOyB9CiAgICBpbnQg
ZGVsdGEoc3RyZWFtbWFya2VyJik7CiAgICBpbnQgZGVsdGEoKTsKfTsKCnN0cnVjdCBzdHJlYW1i
dWYgOiBwdWJsaWMgX0lPX0ZJTEUgeyAgCiAgICBmcmllbmQgY2xhc3MgaW9zOwogICAgZnJpZW5k
IGNsYXNzIGlzdHJlYW07CiAgICBmcmllbmQgY2xhc3Mgb3N0cmVhbTsKICAgIGZyaWVuZCBjbGFz
cyBzdHJlYW1tYXJrZXI7CiAgICBjb25zdCB2b2lkIComX3Z0YWJsZSgpIHsgcmV0dXJuICooY29u
c3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAxKTsgfQogIHByb3RlY3RlZDoKICAgIHN0YXRp
YyBzdHJlYW1idWYqIF9saXN0X2FsbDsgIAogICAgX0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVy
biBfY2hhaW47IH0KICAgIHZvaWQgX3VuX2xpbmsoKTsKICAgIHZvaWQgX2xpbmtfaW4oKTsKICAg
IGNoYXIqIGdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8gX0lP
X3NhdmVfYmFzZSA6IF9JT19yZWFkX3B0cjsgfQogICAgY2hhciogcHB0cigpIGNvbnN0IHsgcmV0
dXJuIF9JT193cml0ZV9wdHI7IH0KICAgIGNoYXIqIGVncHRyKCkgY29uc3QKICAgICAgeyByZXR1
cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAg
Y2hhciogZXBwdHIoKSBjb25zdCB7IHJldHVybiBfSU9fd3JpdGVfZW5kOyB9CiAgICBjaGFyKiBw
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9iYXNlOyB9CiAgICBjaGFyKiBlYmFjaygp
IGNvbnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDog
X0lPX3JlYWRfYmFzZTt9CiAgICBjaGFyKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9i
YXNlOyB9CiAgICBjaGFyKiBlYnVmKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQ7IH0KICAg
IGludCBibGVuKCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9lbmQgLSBfSU9fYnVmX2Jhc2U7IH0K
ICAgIHZvaWQgeHB1dF9jaGFyKGNoYXIgYykgeyAqX0lPX3dyaXRlX3B0cisrID0gYzsgfQogICAg
aW50IHhmbGFncygpIHsgcmV0dXJuIF9mbGFncyA7IH0KICAgIGludCB4ZmxhZ3MoaW50IGYpIHtp
bnQgZmwgPSBfZmxhZ3MgOyBfZmxhZ3MgID0gZjsgcmV0dXJuIGZsO30KICAgIHZvaWQgeHNldGZs
YWdzKGludCBmKSB7IF9mbGFncyAgfD0gZjsgfQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYsIGlu
dCBtYXNrKQogICAgICB7IF9mbGFncyAgPSAoX2ZsYWdzICAmIH5tYXNrKSB8IChmICYgbWFzayk7
IH0KICAgIHZvaWQgZ2J1bXAoaW50IG4pCiAgICAgIHsgX2ZsYWdzICAmIDB4MTAwICA/IChfSU9f
c2F2ZV9iYXNlKz1uKTooX0lPX3JlYWRfcHRyKz1uKTt9CiAgICB2b2lkIHBidW1wKGludCBuKSB7
IF9JT193cml0ZV9wdHIgKz0gbjsgfQogICAgdm9pZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBp
bnQgYT0wKTsKICAgIHZvaWQgc2V0cChjaGFyKiBwLCBjaGFyKiBlcCkKICAgICAgeyBfSU9fd3Jp
dGVfYmFzZT1fSU9fd3JpdGVfcHRyPXA7IF9JT193cml0ZV9lbmQ9ZXA7IH0KICAgIHZvaWQgc2V0
ZyhjaGFyKiBlYiwgY2hhciogZywgY2hhciAqZWcpIHsKICAgICAgaWYgKF9mbGFncyAgJiAweDEw
MCApIF9JT19mcmVlX2JhY2t1cF9hcmVhKHRoaXMpOyAKICAgICAgX0lPX3JlYWRfYmFzZSA9IGVi
OyBfSU9fcmVhZF9wdHIgPSBnOyBfSU9fcmVhZF9lbmQgPSBlZzsgfQogICAgY2hhciAqc2hvcnRi
dWYoKSB7IHJldHVybiBfc2hvcnRidWY7IH0KCiAgICBpbnQgaW5fYmFja3VwKCkgeyByZXR1cm4g
X2ZsYWdzICYgMHgxMDAgOyB9CiAgICAgCiAgICBjaGFyICpHYmFzZSgpIHsgcmV0dXJuIGluX2Jh
Y2t1cCgpID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX2Jhc2U7IH0KICAgICAKICAgIGNoYXIg
KmVHcHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9l
bmQ7IH0KICAgICAKICAgIGNoYXIgKkJiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9f
cmVhZF9iYXNlIDogX0lPX3NhdmVfYmFzZTsgfQogICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9J
T19iYWNrdXBfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUJwdHIoKSB7IHJldHVybiBpbl9iYWNr
dXAoKSA/IF9JT19yZWFkX2VuZCA6IF9JT19zYXZlX2VuZDsgfQogICAgY2hhciAqTmJhc2UoKSB7
IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9CiAgICBjaGFyICplTnB0cigpIHsgcmV0dXJuIF9JT19z
YXZlX2VuZDsgfQogICAgaW50IGhhdmVfYmFja3VwKCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZSAh
PSBfX251bGwgOyB9CiAgICBpbnQgaGF2ZV9tYXJrZXJzKCkgeyByZXR1cm4gX21hcmtlcnMgIT0g
X19udWxsIDsgfQogICAgdm9pZCBmcmVlX2JhY2t1cF9hcmVhKCk7CiAgICB2b2lkIHVuc2F2ZV9t
YXJrZXJzKCk7ICAKICAgIGludCBwdXRfbW9kZSgpIHsgcmV0dXJuIF9mbGFncyAmIDB4ODAwIDsg
fQogICAgaW50IHN3aXRjaF90b19nZXRfbW9kZSgpOwogICAgCiAgICBzdHJlYW1idWYoaW50IGZs
YWdzPTApOwogIHB1YmxpYzoKICAgIHN0YXRpYyBpbnQgZmx1c2hfYWxsKCk7CiAgICBzdGF0aWMg
dm9pZCBmbHVzaF9hbGxfbGluZWJ1ZmZlcmVkKCk7ICAKICAgIHZpcnR1YWwgfnN0cmVhbWJ1Zigp
OwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7ICAKICAgIHZpcnR1YWwg
aW50IHVuZGVyZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCB1ZmxvdygpOyAgCiAgICB2aXJ0dWFs
IGludCBwYmFja2ZhaWwoaW50IGMpOwogCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNv
bnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRu
KGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0
cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1
YWwgc3RyZWFtcG9zIHNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlv
czo6b3V0KTsKCiAgICBzdHJlYW1wb3MgcHVic2Vla29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGly
IGQsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrb2Zm
ICh0aGlzLCBvLCBkLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9z
IHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KQogICAgICB7IHJldHVybiBfSU9fc2Vl
a3BvcyAodGhpcywgcG9zLCBtb2RlKTsgfQogICAgc3RyZWFtcG9zIHNzZWVrb2ZmKHN0cmVhbW9m
ZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHN0cmVhbXBvcyBz
c2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwogICAg
dmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFyKiBwLCBpbnQgbGVuKTsKICAgIHZpcnR1YWwg
aW50IHN5bmMoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUoKTsKCiAgICBpbnQgc2Vla21h
cmsoc3RyZWFtbWFya2VyJiBtYXJrLCBpbnQgZGVsdGEgPSAwKTsKICAgIGludCBzcHV0YmFja2Mo
Y2hhciBjKTsKICAgIGludCBzdW5nZXRjKCk7CiAgICBpbnQgdW5idWZmZXJlZCgpIHsgcmV0dXJu
IF9mbGFncyAmIDIgID8gMSA6IDA7IH0KICAgIGludCBsaW5lYnVmZmVyZWQoKSB7IHJldHVybiBf
ZmxhZ3MgJiAweDIwMCAgPyAxIDogMDsgfQogICAgdm9pZCB1bmJ1ZmZlcmVkKGludCBpKQoJeyBp
ZiAoaSkgX2ZsYWdzIHw9IDIgOyBlbHNlIF9mbGFncyAmPSB+MiA7IH0KICAgIHZvaWQgbGluZWJ1
ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0g
fjB4MjAwIDsgfQogICAgaW50IGFsbG9jYXRlKCkgeyAgCglpZiAoYmFzZSgpIHx8IHVuYnVmZmVy
ZWQoKSkgcmV0dXJuIDA7CgllbHNlIHJldHVybiBkb2FsbG9jYXRlKCk7IH0KICAgICAKICAgIHZv
aWQgYWxsb2NidWYoKSB7IGlmIChiYXNlKCkgPT0gX19udWxsICkgZG9hbGxvY2J1ZigpOyB9CiAg
ICB2b2lkIGRvYWxsb2NidWYoKTsKICAgIGludCBpbl9hdmFpbCgpIHsgcmV0dXJuIF9JT19yZWFk
X2VuZCAtIF9JT19yZWFkX3B0cjsgfQogICAgaW50IG91dF93YWl0aW5nKCkgeyByZXR1cm4gX0lP
X3dyaXRlX3B0ciAtIF9JT193cml0ZV9iYXNlOyB9CiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0
IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4geHNwdXRuKHMsIG4pOyB9CiAgICBzdHJl
YW1zaXplIHBhZG4oY2hhciBwYWQsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3BhZG4odGhp
cywgcGFkLCBuKTsgfQogICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4p
IHsgcmV0dXJuIF9JT19zZ2V0bih0aGlzLCBzLCBuKTsgfQogICAgaW50IGlnbm9yZShpbnQpOwog
ICAgaW50IGdldF9jb2x1bW4oKTsKICAgIGludCBzZXRfY29sdW1uKGludCk7CiAgICBsb25nIHNn
ZXRsaW5lKGNoYXIqIGJ1Ziwgc2l6ZV90ICAgbiwgY2hhciBkZWxpbSwgaW50IHB1dGJhY2tfZGVs
aW0pOwogICAgaW50IHNwdXRjKGludCBjKSB7IHJldHVybiBfSU9fcHV0YyhjLCB0aGlzKTsgfQog
ICAgaW50IHNidW1wYygpIHsgcmV0dXJuIF9JT19nZXRjKHRoaXMpOyB9CiAgICBpbnQgc2dldGMo
KSB7IHJldHVybiAoKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyID49ICggIHRoaXMgICktPl9JT19y
ZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyAoICB0aGlzICApID09ICgtMSkgID8gKC0xKSAgOiAqKHVu
c2lnbmVkIGNoYXIgKikgKCAgdGhpcyAgKS0+X0lPX3JlYWRfcHRyKSAgOyB9CiAgICBpbnQgc25l
eHRjKCkgewoJaWYgKF9JT19yZWFkX3B0ciA+PSBfSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3co
dGhpcykgPT0gKC0xKSApCgkgIHJldHVybiAoLTEpIDsKCWVsc2UgcmV0dXJuIF9JT19yZWFkX3B0
cisrLCBzZ2V0YygpOyB9CiAgICB2b2lkIHN0b3NzYygpIHsgaWYgKF9JT19yZWFkX3B0ciA8IF9J
T19yZWFkX2VuZCkgX0lPX3JlYWRfcHRyKys7IH0KICAgIGludCB2c2NhbihjaGFyIGNvbnN0ICpm
bXQwLCBfX2dudWNfdmFfbGlzdCAgYXAsIGlvcyogc3RyZWFtID0gX19udWxsICk7CiAgICBpbnQg
c2NhbihjaGFyIGNvbnN0ICpmbXQwIC4uLik7CiAgICBpbnQgdmZvcm0oY2hhciBjb25zdCAqZm10
MCwgX19nbnVjX3ZhX2xpc3QgIGFwKTsKICAgIGludCBmb3JtKGNoYXIgY29uc3QgKmZtdDAgLi4u
KTsKCgoKCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciogYnVmLCBzdHJlYW1z
aXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25zdCBjaGFyKiwg
c3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9z
ZWVrX2Rpcik7CiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IHN5
c19zdGF0KHZvaWQqKTsgIAoKICAgIHZpcnR1YWwgaW50IHNob3dtYW55YygpOwogICAgdmlydHVh
bCB2b2lkIGltYnVlKHZvaWQgKik7Cgp9OwoKIAogCgpjbGFzcyBmaWxlYnVmIDogcHVibGljIHN0
cmVhbWJ1ZiB7CiAgcHJvdGVjdGVkOgogICAgdm9pZCBpbml0KCk7CiAgcHVibGljOgogICAgc3Rh
dGljIGNvbnN0IGludCBvcGVucHJvdDsgIAogICAgZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZihpbnQg
ZmQpOwogICAgZmlsZWJ1ZihpbnQgZmQsIGNoYXIqIHAsIGludCBsZW4pOwoKCgogICAgfmZpbGVi
dWYoKTsKICAgIGZpbGVidWYqIGF0dGFjaChpbnQgZmQpOwogICAgZmlsZWJ1Ziogb3Blbihjb25z
dCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqbW9kZSk7CiAgICBmaWxlYnVmKiBvcGVuKGNv
bnN0IGNoYXIgKmZpbGVuYW1lLCBpb3M6Om9wZW5tb2RlIG1vZGUsIGludCBwcm90ID0gMDY2NCk7
CiAgICB2aXJ0dWFsIGludCB1bmRlcmZsb3coKTsKICAgIHZpcnR1YWwgaW50IG92ZXJmbG93KGlu
dCBjID0gKC0xKSApOwogICAgaW50IGlzX29wZW4oKSBjb25zdCB7IHJldHVybiBfZmlsZW5vID49
IDA7IH0KICAgIGludCBmZCgpIGNvbnN0IHsgcmV0dXJuIGlzX29wZW4oKSA/IF9maWxlbm8gOiAo
LTEpIDsgfQogICAgZmlsZWJ1ZiogY2xvc2UoKTsKICAgIHZpcnR1YWwgaW50IGRvYWxsb2NhdGUo
KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGlu
dCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1Zihj
aGFyKiBwLCBpbnQgbGVuKTsKICAgIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0
cmVhbXNpemUgbik7CiAgICBzdHJlYW1zaXplIHhzZ2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4p
OwogICAgdmlydHVhbCBpbnQgc3luYygpOwogIHByb3RlY3RlZDogIAogCiAgICBpbnQgaXNfcmVh
ZGluZygpIHsgcmV0dXJuIGViYWNrKCkgIT0gZWdwdHIoKTsgfQogICAgY2hhciogY3VyX3B0cigp
IHsgcmV0dXJuIGlzX3JlYWRpbmcoKSA/ICBncHRyKCkgOiBwcHRyKCk7IH0KICAgICAKICAgIGNo
YXIqIGZpbGVfcHRyKCkgeyByZXR1cm4gZUdwdHIoKTsgfQogICAgIAogICAgdmlydHVhbCBzdHJl
YW1zaXplIHN5c19yZWFkKGNoYXIqIGJ1Ziwgc3RyZWFtc2l6ZSBzaXplKTsKICAgIHZpcnR1YWwg
c3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwgc3Ry
ZWFtc2l6ZSBzeXNfd3JpdGUoY29uc3QgY2hhciosIHN0cmVhbXNpemUpOwogICAgdmlydHVhbCBp
bnQgc3lzX3N0YXQodm9pZCopOyAgCiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2UoKTsKCgoKCn07
CgppbmxpbmUgdm9pZCBpb3M6OmluaXQoc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7
CgkJX3N0YXRlID0gc2IgPyBpb3M6Omdvb2RiaXQgOiBpb3M6OmJhZGJpdDsgX2V4Y2VwdGlvbnM9
MDsKCQlfc3RyYnVmPXNiOyBfdGllID0gdGllX3RvOyBfd2lkdGg9MDsgX2ZpbGw9JyAnOwoKCQlf
ZmxhZ3M9aW9zOjpza2lwd3N8aW9zOjpkZWM7CgoKCgkJX3ByZWNpc2lvbj02OyBfYXJyYXlzID0g
MDsgfQoKaW5saW5lIGlvczo6aW9zKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZV90bykgeyBp
bml0KHNiLCB0aWVfdG8pOyB9CgppbmxpbmUgaW9zOjp+aW9zKCkgewoKCgogICAgIAogICAgIAog
ICAgb3BlcmF0b3IgZGVsZXRlW10gKF9hcnJheXMpOwp9Cn0gIAoKIyAzMSAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJlYW07IGNsYXNzIG9z
dHJlYW07CnR5cGVkZWYgaW9zJiAoKl9fbWFuaXApKGlvcyYpOwp0eXBlZGVmIGlzdHJlYW0mICgq
X19pbWFuaXApKGlzdHJlYW0mKTsKdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21hbmlwKShvc3RyZWFt
Jik7CgpleHRlcm4gaXN0cmVhbSYgd3MoaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIG9zdHJlYW0mIGZs
dXNoKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kbChvc3RyZWFtJiBvdXRzKTsK
ZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYgb3V0cyk7CgpjbGFzcyBvc3RyZWFtIDogdmly
dHVhbCBwdWJsaWMgaW9zCnsKICAgICAKICAgIHZvaWQgZG9fb3NmeCgpOwogIHB1YmxpYzoKICAg
IG9zdHJlYW0oKSB7IH0KICAgIG9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllZD0g
X19udWxsICk7CiAgICBpbnQgb3BmeCgpIHsKCWlmICghZ29vZCgpKSByZXR1cm4gMDsKCWVsc2Ug
eyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJuIDE7fSB9CiAgICB2b2lkIG9zZngo
KSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRidWZ8aW9zOjpzdGRpbykpCgkJICAg
ICAgZG9fb3NmeCgpOyB9CiAgICBvc3RyZWFtJiBmbHVzaCgpOwogICAgb3N0cmVhbSYgcHV0KGNo
YXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0aGlzOyB9CgoKCgoKICAgIG9zdHJl
YW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMsIHN0cmVhbXNpemUgbik7CiAgICBvc3RyZWFtJiB3cml0
ZShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdy
aXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShjb25zdCBzaWduZWQg
Y2hhciAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciop
cywgbik7fQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3Qgdm9pZCAqcywgc3RyZWFtc2l6ZSBuKQog
ICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgc2Vl
a3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsK
ICAgIHN0cmVhbXBvcyB0ZWxscCgpOwogICAgb3N0cmVhbSYgZm9ybShjb25zdCBjaGFyICpmb3Jt
YXQgLi4uKTsKICAgIG9zdHJlYW0mIHZmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3Zh
X2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY2hhciBjKTsKICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRoaXMpIDw8IChjaGFy
KWM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gKCp0
aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIgKnMp
OwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB1bnNpZ25lZCBjaGFyICpzKQoJeyByZXR1
cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChj
b25zdCBzaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7
IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCAqcCk7CiAgICBvc3RyZWFtJiBv
cGVyYXRvcjw8KGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgaW50IG4p
OwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PCh1bnNpZ25lZCBsb25nIG4pOwoKICAgIF9fZXh0ZW5zaW9uX18gb3N0cmVhbSYgb3BlcmF0b3I8
PChsb25nIGxvbmcgbik7CiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgbG9uZyBsb25nIG4pOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2hvcnQgbikge3Jl
dHVybiBvcGVyYXRvcjw8KChpbnQpbik7fQogICAgb3N0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25l
ZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKHVuc2lnbmVkIGludCluKTt9CgogICAgb3N0
cmVhbSYgb3BlcmF0b3I8PChib29sIGIpIHsgcmV0dXJuIG9wZXJhdG9yPDwoKGludCliKTsgfQoK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlIG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8
PChmbG9hdCBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0KCiAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pOwoKCgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChf
X29tYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwoc3RyZWFtYnVmKik7CgoKCn07CgpjbGFzcyBpc3RyZWFtIDog
dmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKcHJvdGVjdGVkOgogICAgc2l6ZV90ICAgX2djb3Vu
dDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAgICBpc3RyZWFtKCk6IF9nY291bnQg
KDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IF9fbnVsbCAp
OwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicp
OwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxp
bSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlz
dHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyJiBjKSB7
IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKGNoYXIqIHB0ciwg
aW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0bGluZSh1bnNpZ25l
ZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGlu
ZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFy
JiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBj
aGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFy
KilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKHNpZ25lZCBjaGFyKiBw
dHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciop
cHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVhZChjaGFyICpwdHIsIHN0cmVhbXNp
emUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBu
KQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFk
KHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hh
ciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0cmVhbXNpemUgbikK
ICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgZ2V0KHN0
cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldHMoY2hhciAq
KnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4KGludCBuZWVkID0gMCkgewoJaWYg
KCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsK
CSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1ZigpLT5pbl9hdmFpbCgpIDwgbmVlZCkp
IF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSkg
cmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQgaXBm
eDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJ
ZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVzaCgpOwoJICBpZiAoZmxhZ3MoKSAm
IGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsKCX0KICAg
IH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7
IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgcmRidWYoKS0+aW5fYXZh
aWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4gMTsKCX0KICAgIH0KICAgIHZvaWQg
aXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1cm4gKC0xKSA7
CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygpOwoJCSAgICAgICBpZiAoY2ggPT0g
KC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlzZngoKTsKCQkgICAgICAgcmV0dXJu
IGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgc2l6ZV90ICAgZ2NvdW50KCkgeyBy
ZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBuPTEsIGludCBkZWxpbSA9
ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtcG9zKTsK
ICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0
ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7CglpZiAoZ29vZCgpICYmIF9z
dHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0KTsKCXJldHVy
biAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29kKCkgJiYgX3N0cmJ1Zi0+
c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1cm4gKnRoaXM7fQog
ICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIGlzdHJlYW0mIHZz
Y2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKCgoKCgogICAg
aXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyKik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2ln
bmVkIGNoYXIqIHApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFt
JiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXAp
OyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXImIGMpOwogICAgaXN0cmVhbSYgb3BlcmF0
b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNoYXImKWMpO30KICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4gb3BlcmF0b3I+Pigo
Y2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihpbnQmKTsKICAgIGlzdHJlYW0mIG9w
ZXJhdG9yPj4obG9uZyYpOwoKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pihs
b25nIGxvbmcmKTsKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25l
ZCBsb25nIGxvbmcmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNob3J0Jik7CiAgICBpc3Ry
ZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1
bnNpZ25lZCBsb25nJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIHNob3J0Jik7
CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+
PihmbG9hdCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUmKTsKICAgIGlzdHJlYW0m
IG9wZXJhdG9yPj4obG9uZyBkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oIF9fbWFu
aXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgb3Bl
cmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAgaXN0
cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1idWYqKTsKfTsKCmNsYXNzIGlvc3RyZWFtIDogcHVibGlj
IGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFtCnsKICBwdWJsaWM6CiAgICBpb3N0cmVhbSgpIHsgfQog
ICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBfX251bGwgKTsKfTsKCmNs
YXNzIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgaXN0cmVhbSB7CnB1YmxpYzoKICBf
SU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYpOwogIF9JT19pc3RyZWFt
X3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9faXN0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7
IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PGlzdHJlYW0mPiAocmhzKSk7IH0KfTsKCmNs
YXNzIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgb3N0cmVhbSB7CnB1YmxpYzoKICBf
SU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0ob3N0cmVhbSYpOwogIF9JT19vc3RyZWFt
X3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9fb3N0cmVhbV93aXRoYXNzaWduJiByaHMpCiAgICB7
IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PG9zdHJlYW0mPiAocmhzKSk7IH0KfTsKCmV4
dGVybiBfSU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsKIApleHRlcm4gX0lPX29zdHJlYW1fd2l0
aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gY2xvZwoK
Cgo7CgpleHRlcm4gaXN0cmVhbSYgbG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gaXN0cmVhbSYg
dW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBsb2NrKG9zdHJlYW0mIG91dHMp
OwpleHRlcm4gb3N0cmVhbSYgdW5sb2NrKG9zdHJlYW0mIG91dHMpOwoKc3RydWN0IElvc3RyZWFt
X2luaXQgeyB9IDsgICAKCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpCnsgaS5zZXRmKGlvczo6ZGVj
LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIGhl
eChpb3MmIGkpCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7
IHJldHVybiBpOyB9CmlubGluZSBpb3MmIG9jdChpb3MmIGkpCnsgaS5zZXRmKGlvczo6b2N0LCBp
b3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cn0gIAoKCiMgMTQgImluc3Ry
dWN0aW9uLmgiIDIKCiMgMSAiZGF0YS5oIiAxCiAKIAogCiAKIAogCiAKIAoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCmV4dGVy
biAiQyIgeyAKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgog
CgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgog
CgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgoKCgoKCiAK
CnR5cGVkZWYgX19vZmZfdCAgZnBvc190OwoKCgoKCgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAK
CgoKCgoKCiAKCgoKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExMCAiL3Vzci9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpzdGRpbjsJCSAKZXh0ZXJuIEZJ
TEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAKCgogCmV4dGVybiBpbnQgcmVt
b3ZlICAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50
IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpICB0aHJv
dyAoKSAgOwoKCiAKCmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgIHRocm93ICgpICA7CgoK
CgoKCgoKCgogCmV4dGVybiBjaGFyICp0bXBuYW0gIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoK
CiAKCmV4dGVybiBjaGFyICp0bXBuYW1fciAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKCgog
CgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25z
dCBjaGFyICpfX3BmeCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgIChGSUxF
ICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZmx1c2ggIChGSUxFICpfX3N0
cmVhbSkgIHRocm93ICgpICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUg
Kl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4gIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKCQkJIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX21vZGVzKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gRklMRSAqZnJlb3BlbiAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19tb2RlcywKCQkJICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93
ICgpICA7CiMgMTk3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4g
RklMRSAqZmRvcGVuICAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgIHRocm93ICgp
ICA7CgoKIyAyMjMgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKCmV4dGVybiB2b2lkIHNl
dGJ1ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYp
ICB0aHJvdyAoKSAgOwogCgoKZXh0ZXJuIGludCBzZXR2YnVmICAoRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJIGludCBfX21vZGVzLCBzaXplX3Qg
X19uKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6ZV90IF9f
c2l6ZSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0
cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmcHJpbnRmICAoRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSwKCQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHNwcmludGYgIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgLi4uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCB2ZnByaW50ZiAgKEZJTEUgKl9fcmVz
dHJpY3QgX19zLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBf
X2dudWNfdmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgdnByaW50ZiAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJIF9fZ251Y192YV9saXN0ICBf
X2FyZykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2du
dWNfdmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJCSAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJp
bnRmICAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50
Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZzbnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCiMgMzAyICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICB0
aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgIHRocm93ICgpICA7CgojIDMzMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoK
IApleHRlcm4gaW50IGZnZXRjICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4g
aW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZ2V0
Y2hhciAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIAoKCgoKIApleHRlcm4gaW50IGdldGNfdW5sb2Nr
ZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxv
Y2tlZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmcHV0YyAgKGlu
dCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdXRjICAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB1dGNoYXIg
IChpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tl
ZCAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50
IHB1dGNfdW5sb2NrZWQgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4
dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKCgoKIApl
eHRlcm4gaW50IGdldHcgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBp
bnQgcHV0dyAgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRl
cm4gY2hhciAqZmdldHMgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKCQkJIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKIAoKZXh0ZXJuIGNoYXIg
KmdldHMgIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiMgNDIwICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZnB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAoJCSAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoK
CgoKCiAKZXh0ZXJuIGludCBwdXRzICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoK
CiAKZXh0ZXJuIGludCB1bmdldGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkICAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6
ZV90IF9fc2l6ZSwKCQkJICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAg
dGhyb3cgKCkgIDsKIApleHRlcm4gc2l6ZV90IGZ3cml0ZSAgKF9fY29uc3Qgdm9pZCAqX19yZXN0
cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3MpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAg
KHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCQkgICBzaXplX3QgX19u
LCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHNpemVfdCBm
d3JpdGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsCgkJCQkgICAg
c2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZzZWVrICAoRklMRSAqX19zdHJlYW0s
IGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpICB0aHJvdyAoKSAgOwogCmV4dGVybiBsb25n
IGludCBmdGVsbCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBy
ZXdpbmQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCgoKCgogCgoKdHlwZWRlZiBf
X29mZl90IG9mZl90OwoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBmZ2V0cG9zICAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJIGZwb3NfdCAqX19yZXN0cmljdCBfX3Bvcykg
IHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmc2V0cG9zICAoRklMRSAqX19zdHJlYW0sIF9fY29u
c3QgZnBvc190ICpfX3BvcykgIHRocm93ICgpICA7CiMgNTE5ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwoKCiMgNTI5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0ZXJuIHZvaWQgY2xl
YXJlcnIgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZW9mICAo
RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAq
X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAg
KEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg
IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgcGVycm9yICAo
X19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgc3lzX25lcnI7
CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgoKCgoKCgogCmV4
dGVybiBpbnQgZmlsZW5vICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVy
biBpbnQgZmlsZW5vX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoK
CiAKZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3Qg
Y2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcGNsb3NlICAoRklMRSAq
X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKIApleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIg
Kl9fcykgIHRocm93ICgpICA7CgoKCgoKCgoKCiMgNjAzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRocm93
ICgpICA7CgogCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRo
cm93ICgpICA7CgoKCgoKCgoKCgogCgoKCgoKfSAKCgoKCiMgMTMgImRhdGEuaCIgMgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvbGlzdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3BhaXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCiAKIAog
CiAKIAogCiAKIAogCiAKIAoKCiAKCiAKIAogCiAKIAogCiAKCgoKCgoKCgojIDE0OCAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRl
L2crKy0zL3N0bF9jb25maWcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgICAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjM0ICIvdXNyL2xpYi9nY2MtbGli
L2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2NvbmZpZy5oIiAzCgoKIyAyNDggIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
IAojIDMxNiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25maWcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiMgMzEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5k
cmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9wYWlyLmgiIDIgMwoK
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfcmVsb3BzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSB7CiAgcmV0dXJuICEoX194ID09
IF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yPihjb25z
dCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsKICByZXR1cm4gX195IDwgX194Owp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IF9UcCYgX194LCBj
b25zdCBfVHAmIF9feSkgewogIHJldHVybiAhKF9feSA8IF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYg
X195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsKfQoKIAoKCgogCiAKIAojIDM0ICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUv
ZysrLTMvcGFpci5oIiAyIDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2Ut
bGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3BhaXIuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UMSwg
Y2xhc3MgX1QyPgpzdHJ1Y3QgcGFpciB7CiAgdHlwZWRlZiBfVDEgZmlyc3RfdHlwZTsKICB0eXBl
ZGVmIF9UMiBzZWNvbmRfdHlwZTsKCiAgX1QxIGZpcnN0OwogIF9UMiBzZWNvbmQ7CiAgcGFpcigp
IDogZmlyc3QoX1QxKCkpLCBzZWNvbmQoX1QyKCkpIHt9CiAgcGFpcihjb25zdCBfVDEmIF9fYSwg
Y29uc3QgX1QyJiBfX2IpIDogZmlyc3QoX19hKSwgc2Vjb25kKF9fYikge30KCgogIHRlbXBsYXRl
IDxjbGFzcyBfVTEsIGNsYXNzIF9VMj4KICBwYWlyKGNvbnN0IHBhaXI8X1UxLCBfVTI+JiBfX3Ap
IDogZmlyc3QoX19wLmZpcnN0KSwgc2Vjb25kKF9fcC5zZWNvbmQpIHt9Cgp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHBhaXI8
X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCnsgCiAgcmV0dXJuIF9f
eC5maXJzdCA9PSBfX3kuZmlyc3QgJiYgX194LnNlY29uZCA9PSBfX3kuc2Vjb25kOyAKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
cGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKeyAKICByZXR1
cm4gX194LmZpcnN0IDwgX195LmZpcnN0IHx8IAogICAgICAgICAoIShfX3kuZmlyc3QgPCBfX3gu
Zmlyc3QpICYmIF9feC5zZWNvbmQgPCBfX3kuc2Vjb25kKTsgCn0KCnRlbXBsYXRlIDxjbGFzcyBf
VDEsIGNsYXNzIF9UMj4KaW5saW5lIHBhaXI8X1QxLCBfVDI+IG1ha2VfcGFpcihjb25zdCBfVDEm
IF9feCwgY29uc3QgX1QyJiBfX3kpCnsKICByZXR1cm4gcGFpcjxfVDEsIF9UMj4oX194LCBfX3kp
Owp9CgogCgoKCiAKIAogCiMgMzcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51
eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9wYWlyLmgiIDIgMwoKCgoKCgoKCgoK
CgogCiAKIAojIDMwICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4y
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRl
L2crKy0zL2l0ZXJhdG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvZnVuY3Rpb24uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCgoKCgoKIAoKIAoKCgoKIAoKCiAKCgoK
CgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgog
CgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK
CgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtl
LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgojIDM2ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvZnVuY3Rpb24uaCIgMiAzCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvc3RsX2Z1bmN0aW9uLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CiAKCnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBjbGFzcyBfUmVzdWx0PgpzdHJ1Y3QgdW5hcnlfZnVu
Y3Rpb24gewogIHR5cGVkZWYgX0FyZyBhcmd1bWVudF90eXBlOwogIHR5cGVkZWYgX1Jlc3VsdCBy
ZXN1bHRfdHlwZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNz
IF9SZXN1bHQ+CnN0cnVjdCBiaW5hcnlfZnVuY3Rpb24gewogIHR5cGVkZWYgX0FyZzEgZmlyc3Rf
YXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9BcmcyIHNlY29uZF9hcmd1bWVudF90eXBlOwogIHR5
cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKfTsgICAgICAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CnN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewogIF9U
cCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1
cm4gX194ICsgX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbWludXMgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1RwIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggLSBfX3k7IH0K
fTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBtdWx0aXBsaWVzIDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194
LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICogX195OyB9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZGl2aWRlcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1Rw
LF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf
X3kpIGNvbnN0IHsgcmV0dXJuIF9feCAvIF9feTsgfQp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9U
cD4gaW5saW5lIF9UcCBpZGVudGl0eV9lbGVtZW50KHBsdXM8X1RwPikgewogIHJldHVybiBfVHAo
MCk7Cn0KdGVtcGxhdGUgPGNsYXNzIF9UcD4gaW5saW5lIF9UcCBpZGVudGl0eV9lbGVtZW50KG11
bHRpcGxpZXM8X1RwPikgewogIHJldHVybiBfVHAoMSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CnN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gCnsK
ICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsg
cmV0dXJuIF9feCAlIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG5lZ2F0
ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPiAKewogIF9UcCBvcGVyYXRvcigpKGNv
bnN0IF9UcCYgX194KSBjb25zdCB7IHJldHVybiAtX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9v
bD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBj
b25zdCB7IHJldHVybiBfX3ggPT0gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1
Y3Qgbm90X2VxdWFsX3RvIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7
CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3Qg
eyByZXR1cm4gX194ICE9IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGdy
ZWF0ZXIgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9w
ZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBf
X3ggPiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNzIDogcHVibGlj
IGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0
IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194IDwgX195OyB9Cn07
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZ3JlYXRlcl9lcXVhbCA6IHB1YmxpYyBiaW5h
cnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYg
X194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID49IF9feTsgfQp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxlc3NfZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0
aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNv
bnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPD0gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9hbmQgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9U
cCxfVHAsYm9vbD4KewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1Rw
JiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAmJiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBf
VHA+CnN0cnVjdCBsb2dpY2FsX29yIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJv
b2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBj
b25zdCB7IHJldHVybiBfX3ggfHwgX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1
Y3QgbG9naWNhbF9ub3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLGJvb2w+CnsKICBib29s
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0IHsgcmV0dXJuICFfX3g7IH0KfTsKCnRl
bXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgpjbGFzcyB1bmFyeV9uZWdhdGUKICA6IHB1YmxpYyB1
bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVudF90eXBlLCBib29sPiB7
CnByb3RlY3RlZDoKICBfUHJlZGljYXRlIF9NX3ByZWQ7CnB1YmxpYzoKICBleHBsaWNpdCB1bmFy
eV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6IF9NX3ByZWQoX194KSB7fQogIGJvb2wg
b3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVudF90eXBlJiBfX3gp
IGNvbnN0IHsKICAgIHJldHVybiAhX01fcHJlZChfX3gpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUHJlZGljYXRlPgppbmxpbmUgdW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+IApub3QxKGNvbnN0
IF9QcmVkaWNhdGUmIF9fcHJlZCkKewogIHJldHVybiB1bmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4o
X19wcmVkKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+IApjbGFzcyBiaW5hcnlfbmVn
YXRlIAogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJz
dF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfUHJl
ZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9wcmVkOwpwdWJsaWM6CiAgZXhwbGlj
aXQgYmluYXJ5X25lZ2F0ZShjb25zdCBfUHJlZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gpIHt9
CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNhdGU6OmZpcnN0X2FyZ3Vt
ZW50X3R5cGUmIF9feCwgCiAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNh
dGU6OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3kpIGNvbnN0CiAgewogICAgcmV0dXJuICFfTV9w
cmVkKF9feCwgX195KTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+CmlubGlu
ZSBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+IApub3QyKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJl
ZCkKewogIHJldHVybiBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfT3BlcmF0aW9uPiAKY2xhc3MgYmluZGVyMXN0CiAgOiBwdWJsaWMgdW5hcnlf
ZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+IHsK
cHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3Rf
YXJndW1lbnRfdHlwZSB2YWx1ZTsKcHVibGljOgogIGJpbmRlcjFzdChjb25zdCBfT3BlcmF0aW9u
JiBfX3gsCiAgICAgICAgICAgIGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3Vt
ZW50X3R5cGUmIF9feSkKICAgICAgOiBvcChfX3gpLCB2YWx1ZShfX3kpIHt9CiAgdHlwZW5hbWUg
X09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVy
YXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBvcCh2
YWx1ZSwgX194KTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24sIGNsYXNzIF9U
cD4KaW5saW5lIGJpbmRlcjFzdDxfT3BlcmF0aW9uPiAKYmluZDFzdChjb25zdCBfT3BlcmF0aW9u
JiBfX29wZXIsIGNvbnN0IF9UcCYgX194KSAKewogIHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlv
bjo6Zmlyc3RfYXJndW1lbnRfdHlwZSBfQXJnMV90eXBlOwogIHJldHVybiBiaW5kZXIxc3Q8X09w
ZXJhdGlvbj4oX19vcGVyLCBfQXJnMV90eXBlKF9feCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09w
ZXJhdGlvbj4gCmNsYXNzIGJpbmRlcjJuZAogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVu
YW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9P
cGVyYXRpb24gb3A7CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUg
dmFsdWU7CnB1YmxpYzoKICBiaW5kZXIybmQoY29uc3QgX09wZXJhdGlvbiYgX194LAogICAgICAg
ICAgICBjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195
KSAKICAgICAgOiBvcChfX3gpLCB2YWx1ZShfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6
cmVzdWx0X3R5cGUKICBvcGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0
X2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIG9wKF9feCwgdmFsdWUpOyAK
ICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbiwgY2xhc3MgX1RwPgppbmxpbmUgYmlu
ZGVyMm5kPF9PcGVyYXRpb24+IApiaW5kMm5kKGNvbnN0IF9PcGVyYXRpb24mIF9fb3BlciwgY29u
c3QgX1RwJiBfX3gpIAp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJn
dW1lbnRfdHlwZSBfQXJnMl90eXBlOwogIHJldHVybiBiaW5kZXIybmQ8X09wZXJhdGlvbj4oX19v
cGVyLCBfQXJnMl90eXBlKF9feCkpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbjEs
IGNsYXNzIF9PcGVyYXRpb24yPgpjbGFzcyB1bmFyeV9jb21wb3NlCiAgOiBwdWJsaWMgdW5hcnlf
ZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3VtZW50X3R5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjE6OnJlc3VsdF90eXBlPiAKewpwcm90
ZWN0ZWQ6CiAgX09wZXJhdGlvbjEgX19vcDE7CiAgX09wZXJhdGlvbjIgX19vcDI7CnB1YmxpYzoK
ICB1bmFyeV9jb21wb3NlKGNvbnN0IF9PcGVyYXRpb24xJiBfX3gsIGNvbnN0IF9PcGVyYXRpb24y
JiBfX3kpIAogICAgOiBfX29wMShfX3gpLCBfX29wMihfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJh
dGlvbjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9u
Mjo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX19vcDEoX19vcDIoX194
KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9u
Mj4KaW5saW5lIHVuYXJ5X2NvbXBvc2U8X09wZXJhdGlvbjEsX09wZXJhdGlvbjI+IApjb21wb3Nl
MShjb25zdCBfT3BlcmF0aW9uMSYgX19vcDEsIGNvbnN0IF9PcGVyYXRpb24yJiBfX29wMikKewog
IHJldHVybiB1bmFyeV9jb21wb3NlPF9PcGVyYXRpb24xLF9PcGVyYXRpb24yPihfX29wMSwgX19v
cDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbjEsIGNsYXNzIF9PcGVyYXRpb24yLCBj
bGFzcyBfT3BlcmF0aW9uMz4KY2xhc3MgYmluYXJ5X2NvbXBvc2UKICA6IHB1YmxpYyB1bmFyeV9m
dW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uMTo6cmVzdWx0X3R5cGU+IHsKcHJvdGVj
dGVkOgogIF9PcGVyYXRpb24xIF9NX29wMTsKICBfT3BlcmF0aW9uMiBfTV9vcDI7CiAgX09wZXJh
dGlvbjMgX01fb3AzOwpwdWJsaWM6CiAgYmluYXJ5X2NvbXBvc2UoY29uc3QgX09wZXJhdGlvbjEm
IF9feCwgY29uc3QgX09wZXJhdGlvbjImIF9feSwgCiAgICAgICAgICAgICAgICAgY29uc3QgX09w
ZXJhdGlvbjMmIF9feikgCiAgICA6IF9NX29wMShfX3gpLCBfTV9vcDIoX195KSwgX01fb3AzKF9f
eikgeyB9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShj
b25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAg
ICByZXR1cm4gX01fb3AxKF9NX29wMihfX3gpLCBfTV9vcDMoX194KSk7CiAgfQp9OwoKdGVtcGxh
dGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMiwgY2xhc3MgX09wZXJhdGlv
bjM+CmlubGluZSBiaW5hcnlfY29tcG9zZTxfT3BlcmF0aW9uMSwgX09wZXJhdGlvbjIsIF9PcGVy
YXRpb24zPiAKY29tcG9zZTIoY29uc3QgX09wZXJhdGlvbjEmIF9fb3AxLCBjb25zdCBfT3BlcmF0
aW9uMiYgX19vcDIsIAogICAgICAgICBjb25zdCBfT3BlcmF0aW9uMyYgX19vcDMpCnsKICByZXR1
cm4gYmluYXJ5X2NvbXBvc2U8X09wZXJhdGlvbjEsX09wZXJhdGlvbjIsX09wZXJhdGlvbjM+CiAg
ICAoX19vcDEsIF9fb3AyLCBfX29wMyk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBjbGFzcyBf
UmVzdWx0PgpjbGFzcyBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9BcmcsIF9SZXN1bHQ+IHsKcHJvdGVjdGVkOgogIF9SZXN1bHQgKCpfTV9wdHIpKF9B
cmcpOwpwdWJsaWM6CiAgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbigpIHt9CiAgZXhwbGljaXQg
cG9pbnRlcl90b191bmFyeV9mdW5jdGlvbihfUmVzdWx0ICgqX194KShfQXJnKSkgOiBfTV9wdHIo
X194KSB7fQogIF9SZXN1bHQgb3BlcmF0b3IoKShfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gX01f
cHRyKF9feCk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBjbGFzcyBfUmVzdWx0Pgppbmxp
bmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVzdWx0PiBwdHJfZnVuKF9SZXN1
bHQgKCpfX3gpKF9BcmcpKQp7CiAgcmV0dXJuIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0Fy
ZywgX1Jlc3VsdD4oX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwg
Y2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24gOiAKICBwdWJs
aWMgYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9BcmcyLF9SZXN1bHQ+IHsKcHJvdGVjdGVkOgogICAg
X1Jlc3VsdCAoKl9NX3B0cikoX0FyZzEsIF9BcmcyKTsKcHVibGljOgogICAgcG9pbnRlcl90b19i
aW5hcnlfZnVuY3Rpb24oKSB7fQogICAgZXhwbGljaXQgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rp
b24oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgCiAgICAgIDogX01fcHRyKF9feCkge30K
ICAgIF9SZXN1bHQgb3BlcmF0b3IoKShfQXJnMSBfX3gsIF9BcmcyIF9feSkgY29uc3QgewogICAg
ICByZXR1cm4gX01fcHRyKF9feCwgX195KTsKICAgIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJn
MSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CmlubGluZSBwb2ludGVyX3RvX2JpbmFyeV9m
dW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0PiAKcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJn
MSwgX0FyZzIpKSB7CiAgcmV0dXJuIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9B
cmcyLF9SZXN1bHQ+KF9feCk7Cn0KCiAKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9JZGVu
dGl0eSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsX1RwPiB7CiAgY29uc3QgX1RwJiBvcGVy
YXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdCB7IHJldHVybiBfX3g7IH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+IHN0cnVjdCBpZGVudGl0eSA6IHB1YmxpYyBfSWRlbnRpdHk8X1RwPiB7fTsK
CiAKdGVtcGxhdGUgPGNsYXNzIF9QYWlyPgpzdHJ1Y3QgX1NlbGVjdDFzdCA6IHB1YmxpYyB1bmFy
eV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGU+IHsKICBjb25zdCB0
eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBfUGFpciYgX194KSBj
b25zdCB7CiAgICByZXR1cm4gX194LmZpcnN0OwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUGFp
cj4Kc3RydWN0IF9TZWxlY3QybmQgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsIHR5cGVu
YW1lIF9QYWlyOjpzZWNvbmRfdHlwZT4KewogIGNvbnN0IHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRf
dHlwZSYgb3BlcmF0b3IoKShjb25zdCBfUGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194
LnNlY29uZDsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+IHN0cnVjdCBzZWxlY3Qxc3Qg
OiBwdWJsaWMgX1NlbGVjdDFzdDxfUGFpcj4ge307CnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4gc3Ry
dWN0IHNlbGVjdDJuZCA6IHB1YmxpYyBfU2VsZWN0Mm5kPF9QYWlyPiB7fTsKCiAKdGVtcGxhdGUg
PGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4Kc3RydWN0IF9Qcm9qZWN0MXN0IDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9BcmcxPiB7CiAgX0FyZzEgb3BlcmF0b3IoKShj
b25zdCBfQXJnMSYgX194LCBjb25zdCBfQXJnMiYpIGNvbnN0IHsgcmV0dXJuIF9feDsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4Kc3RydWN0IF9Qcm9qZWN0Mm5kIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9BcmcyPiB7CiAgX0FyZzIgb3Bl
cmF0b3IoKShjb25zdCBfQXJnMSYsIGNvbnN0IF9BcmcyJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9f
eTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4gCnN0cnVjdCBwcm9q
ZWN0MXN0IDogcHVibGljIF9Qcm9qZWN0MXN0PF9BcmcxLCBfQXJnMj4ge307Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyPgpzdHJ1Y3QgcHJvamVjdDJuZCA6IHB1YmxpYyBfUHJv
amVjdDJuZDxfQXJnMSwgX0FyZzI+IHt9OwoKIAogCiAKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+
CnN0cnVjdCBjb25zdGFudF92b2lkX2Z1bgp7CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBl
OwogIHJlc3VsdF90eXBlIF9fdmFsOwogIGNvbnN0YW50X3ZvaWRfZnVuKGNvbnN0IHJlc3VsdF90
eXBlJiBfX3YpIDogX192YWwoX192KSB7fQogIGNvbnN0IHJlc3VsdF90eXBlJiBvcGVyYXRvcigp
KCkgY29uc3QgeyByZXR1cm4gX192YWw7IH0KfTsgIAoKCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0
LCBjbGFzcyBfQXJndW1lbnQgPSBfUmVzdWx0PgoKCgpzdHJ1Y3QgY29uc3RhbnRfdW5hcnlfZnVu
IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9Bcmd1bWVudCwgX1Jlc3VsdD4gewogIF9SZXN1bHQg
X01fdmFsOwogIGNvbnN0YW50X3VuYXJ5X2Z1bihjb25zdCBfUmVzdWx0JiBfX3YpIDogX01fdmFs
KF9fdikge30KICBjb25zdCBfUmVzdWx0JiBvcGVyYXRvcigpKGNvbnN0IF9Bcmd1bWVudCYpIGNv
bnN0IHsgcmV0dXJuIF9NX3ZhbDsgfQp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0LCBjbGFz
cyBfQXJnMSA9IF9SZXN1bHQsIGNsYXNzIF9BcmcyID0gX0FyZzE+CgoKCnN0cnVjdCBjb25zdGFu
dF9iaW5hcnlfZnVuIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1
bHQ+IHsKICBfUmVzdWx0IF9NX3ZhbDsKICBjb25zdGFudF9iaW5hcnlfZnVuKGNvbnN0IF9SZXN1
bHQmIF9fdikgOiBfTV92YWwoX192KSB7fQogIGNvbnN0IF9SZXN1bHQmIG9wZXJhdG9yKCkoY29u
c3QgX0FyZzEmLCBjb25zdCBfQXJnMiYpIGNvbnN0IHsKICAgIHJldHVybiBfTV92YWw7CiAgfQp9
OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+CmlubGluZSBjb25zdGFudF92b2lkX2Z1bjxfUmVz
dWx0PiBjb25zdGFudDAoY29uc3QgX1Jlc3VsdCYgX192YWwpCnsKICByZXR1cm4gY29uc3RhbnRf
dm9pZF9mdW48X1Jlc3VsdD4oX192YWwpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdD4KaW5s
aW5lIGNvbnN0YW50X3VuYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQ+IGNvbnN0YW50MShjb25zdCBf
UmVzdWx0JiBfX3ZhbCkKewogIHJldHVybiBjb25zdGFudF91bmFyeV9mdW48X1Jlc3VsdCxfUmVz
dWx0PihfX3ZhbCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0PgppbmxpbmUgY29uc3RhbnRf
YmluYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQsX1Jlc3VsdD4gCmNvbnN0YW50Mihjb25zdCBfUmVz
dWx0JiBfX3ZhbCkKewogIHJldHVybiBjb25zdGFudF9iaW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3Vs
dCxfUmVzdWx0PihfX3ZhbCk7Cn0KCiAKIApjbGFzcyBzdWJ0cmFjdGl2ZV9ybmcgOiBwdWJsaWMg
dW5hcnlfZnVuY3Rpb248dW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQ+IHsKcHJpdmF0ZToKICB1
bnNpZ25lZCBpbnQgX01fdGFibGVbNTVdOwogIHNpemVfdCBfTV9pbmRleDE7CiAgc2l6ZV90IF9N
X2luZGV4MjsKcHVibGljOgogIHVuc2lnbmVkIGludCBvcGVyYXRvcigpKHVuc2lnbmVkIGludCBf
X2xpbWl0KSB7CiAgICBfTV9pbmRleDEgPSAoX01faW5kZXgxICsgMSkgJSA1NTsKICAgIF9NX2lu
ZGV4MiA9IChfTV9pbmRleDIgKyAxKSAlIDU1OwogICAgX01fdGFibGVbX01faW5kZXgxXSA9IF9N
X3RhYmxlW19NX2luZGV4MV0gLSBfTV90YWJsZVtfTV9pbmRleDJdOwogICAgcmV0dXJuIF9NX3Rh
YmxlW19NX2luZGV4MV0gJSBfX2xpbWl0OwogIH0KCiAgdm9pZCBfTV9pbml0aWFsaXplKHVuc2ln
bmVkIGludCBfX3NlZWQpCiAgewogICAgdW5zaWduZWQgaW50IF9fayA9IDE7CiAgICBfTV90YWJs
ZVs1NF0gPSBfX3NlZWQ7CiAgICBzaXplX3QgX19pOwogICAgZm9yIChfX2kgPSAwOyBfX2kgPCA1
NDsgX19pKyspIHsKICAgICAgICBzaXplX3QgX19paSA9ICgyMSAqIChfX2kgKyAxKSAlIDU1KSAt
IDE7CiAgICAgICAgX01fdGFibGVbX19paV0gPSBfX2s7CiAgICAgICAgX19rID0gX19zZWVkIC0g
X19rOwogICAgICAgIF9fc2VlZCA9IF9NX3RhYmxlW19faWldOwogICAgfQogICAgZm9yIChpbnQg
X19sb29wID0gMDsgX19sb29wIDwgNDsgX19sb29wKyspIHsKICAgICAgICBmb3IgKF9faSA9IDA7
IF9faSA8IDU1OyBfX2krKykKICAgICAgICAgICAgX01fdGFibGVbX19pXSA9IF9NX3RhYmxlW19f
aV0gLSBfTV90YWJsZVsoMSArIF9faSArIDMwKSAlIDU1XTsKICAgIH0KICAgIF9NX2luZGV4MSA9
IDA7CiAgICBfTV9pbmRleDIgPSAzMTsKICB9CgogIHN1YnRyYWN0aXZlX3JuZyh1bnNpZ25lZCBp
bnQgX19zZWVkKSB7IF9NX2luaXRpYWxpemUoX19zZWVkKTsgfQogIHN1YnRyYWN0aXZlX3JuZygp
IHsgX01faW5pdGlhbGl6ZSgxNjE4MDMzOTh1KTsgfQp9OwoKCiAKCiAKIAogCiAKIAogCiAKCiAK
IAogCiAKIAoKIAogCiAKIAogCgoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xh
c3MgbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosX1JldD4gewpwdWJsaWM6
CiAgZXhwbGljaXQgbWVtX2Z1bl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihfX3BmKSB7
fQogIF9SZXQgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2Yp
KCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgpOwp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPGNvbnN0IF9UcCosX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1
bl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3Bl
cmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0K
cHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKSgpIGNvbnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVu
Y3Rpb248X1RwLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fcmVmX3QoX1JldCAo
X1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigpKF9UcCYgX19y
KSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoq
X01fZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIGNvbnN0
X21lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9SZXQ+IHsKcHVibGlj
OgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fcmVmX3QoX1JldCAoX1RwOjoqX19wZikoKSBjb25z
dCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yKSBjb25z
dCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZiko
KSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+
CmNsYXNzIG1lbV9mdW4xX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCosX0FyZyxfUmV0
PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9Bcmcp
KSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoX1RwKiBfX3AsIF9BcmcgX194KSBj
b25zdCB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6
Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3Mg
X0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29u
c3QgX1RwKixfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3Qo
X1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3Bl
cmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0CiAgICB7IHJldHVybiAoX19w
LT4qX01fZikoX194KTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3Mg
bWVtX2Z1bjFfcmVmX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLF9SZXQ+IHsK
cHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4xX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9Bcmcp
KSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoX1RwJiBfX3IsIF9BcmcgX194KSBj
b25zdCB7IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoq
X01fZikoX0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBf
QXJnPgpjbGFzcyBjb25zdF9tZW1fZnVuMV9yZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248
X1RwLF9BcmcsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3Qo
X1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3Bl
cmF0b3IoKShjb25zdCBfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgcmV0dXJuIChfX3IuKl9N
X2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsK
CgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1bl90PHZvaWQsIF9UcD4gOiBwdWJs
aWMgdW5hcnlfZnVuY3Rpb248X1RwKix2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVu
X3Qodm9pZCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigp
KF9UcCogX19wKSBjb25zdCB7IChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1Rw
OjoqX01fZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5f
dDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosdm9pZD4gewpw
dWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29u
c3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29u
c3QgeyAoX19wLT4qX01fZikoKTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29u
c3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpjbGFzcyBtZW1fZnVuX3JlZl90PHZvaWQsIF9U
cD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0
IG1lbV9mdW5fcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9p
ZCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25zdCB7IChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToK
ICB2b2lkIChfVHA6OipfTV9mKSgpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgY29u
c3RfbWVtX2Z1bl9yZWZfdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCx2
b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90KHZvaWQgKF9UcDo6
Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBf
VHAmIF9fcikgY29uc3QgeyAoX19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoq
X01fZikoKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNz
IG1lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJnPiA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1Rw
KixfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4xX3Qodm9pZCAoX1RwOjoq
X19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCwg
X0FyZyBfX3gpIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICB2b2lkIChf
VHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNs
YXNzIGNvbnN0X21lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJnPiAKICA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0
X21lbV9mdW4xX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpIDogX01fZihfX3BmKSB7
fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsgKF9f
cC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKSBjb25z
dDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3Jl
Zl90PHZvaWQsIF9UcCwgX0FyZz4KICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcs
dm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19w
ZikoX0FyZykpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAmIF9fciwgX0Fy
ZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6
Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3Mg
Y29uc3RfbWVtX2Z1bjFfcmVmX3Q8dm9pZCwgX1RwLCBfQXJnPgogIDogcHVibGljIGJpbmFyeV9m
dW5jdGlvbjxfVHAsX0FyZyx2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVu
MV9yZWZfdCh2b2lkIChfVHA6OipfX3BmKShfQXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAg
dm9pZCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyAoX19yLipf
TV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoX0FyZykgY29uc3Q7Cn07
CgoKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBtZW1f
ZnVuX3Q8X1JldCxfVHA+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpKQogIHsgcmV0dXJuIG1l
bV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cD4KaW5saW5lIGNvbnN0X21lbV9mdW5fdDxfUmV0LF9UcD4gbWVtX2Z1bihfUmV0IChfVHA6Oipf
X2YpKCkgY29uc3QpCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1bl90PF9SZXQsX1RwPihfX2YpOyB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgppbmxpbmUgbWVtX2Z1bl9yZWZfdDxf
UmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKSgpKSAKICB7IHJldHVybiBtZW1f
ZnVuX3JlZl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwPgppbmxpbmUgY29uc3RfbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1Jl
dCAoX1RwOjoqX19mKSgpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW5fcmVmX3Q8X1Jl
dCxfVHA+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9B
cmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4oX1JldCAoX1RwOjoq
X19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0K
CnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25z
dF9tZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKShfQXJn
KSBjb25zdCkKICB7IHJldHVybiBjb25zdF9tZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7
IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBt
ZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPiBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2Yp
KF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0K
CnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25z
dF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPgptZW1fZnVuX3JlZihfUmV0IChfVHA6Oipf
X2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsX1Rw
LF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9B
cmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4xKF9SZXQgKF9UcDo6
Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgY29u
c3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPiBtZW1fZnVuMShfUmV0IChfVHA6OipfX2YpKF9B
cmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4oX19m
KTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5l
IG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+IG1lbV9mdW4xX3JlZihfUmV0IChfVHA6Oipf
X2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7
IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBj
b25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPgptZW1fZnVuMV9yZWYoX1JldCAoX1Rw
OjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0
LF9UcCxfQXJnPihfX2YpOyB9CgogCgoKCiAKIAogCiMgMzggIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9mdW5jdGlv
bi5oIiAyIDMKCgoKIyA0OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIu
OTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2Z1bmN0aW9uLmgiIDMKCgojIDExMiAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL2Z1bmN0aW9uLmgiIDMKCgoKCiAKIAogCiMgMzEgIi91c3IvbGliL2djYy1saWIv
aTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVy
YXRvci5oIiAyIDMKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8y
Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgMzMgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9pdGVyYXRvci5oIiAyIDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJh
a2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnN0cnVjdCBpbnB1dF9p
dGVyYXRvcl90YWcge307CnN0cnVjdCBvdXRwdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgZm9y
d2FyZF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgaW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3Qg
YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgOiBwdWJsaWMgZm9yd2FyZF9pdGVyYXRvcl90YWcg
e307CnN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBiaWRpcmVjdGlv
bmFsX2l0ZXJhdG9yX3RhZyB7fTsKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNz
IF9EaXN0YW5jZT4gc3RydWN0IGlucHV0X2l0ZXJhdG9yIHsKICB0eXBlZGVmIGlucHV0X2l0ZXJh
dG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICB2
YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsK
ICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAg
ICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnN0cnVjdCBvdXRwdXRfaXRlcmF0b3IgewogIHR5cGVk
ZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQg
ICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAg
ZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yIHsKICB0eXBl
ZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1Rw
ICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAg
ICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgIHBvaW50
ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVy
YXRvciB7CiAgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiBfVHAqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAg
ICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvciB7CiAgdHlwZWRl
ZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVm
IF9UcCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFu
Y2UgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAg
ICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAg
ICAgICAgcmVmZXJlbmNlOwp9OwoKIyA5OCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtl
LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAz
CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHsK
ICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3Jf
Y2F0ZWdvcnk7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnZhbHVlX3R5cGUgICAgICAg
IHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlw
ZSAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cG9pbnRl
ciAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJl
bmNlICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGl0
ZXJhdG9yX3RyYWl0czxfVHAqPiB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVy
OwogIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRl
bXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4gewog
IHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAg
dHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVm
IHB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBj
b25zdCBfVHAqICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCYg
ICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xh
c3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRv
cl9jYXRlZ29yeQpfX2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJikKewogIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVn
b3J5OwogIHJldHVybiBfQ2F0ZWdvcnkoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxp
bmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpfX2Rp
c3RhbmNlX3R5cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2
YWx1ZV90eXBlKgpfX3ZhbHVlX3R5cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19j
YXN0PHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUqPigwKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
dGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkKaXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImIF9f
aSkgeyByZXR1cm4gX19pdGVyYXRvcl9jYXRlZ29yeShfX2kpOyB9CgoKdGVtcGxhdGUgPGNsYXNz
IF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5j
ZV90eXBlKgpkaXN0YW5jZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9fZGlzdGFu
Y2VfdHlwZShfX2kpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBlKgp2YWx1ZV90eXBlKGNvbnN0IF9JdGVy
JiBfX2kpIHsgcmV0dXJuIF9fdmFsdWVfdHlwZShfX2kpOyB9CgoKCgoKIyAyNTkgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwg
Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfRGlz
dGFuY2UmIF9fbiwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19s
YXN0KSB7ICsrX19maXJzdDsgKytfX247IH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2Um
IF9fbiwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCnsKICBfX24gKz0gX19sYXN0IC0gX19m
aXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+
CmlubGluZSB2b2lkIGRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAg
ICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsIF9EaXN0YW5jZSYgX19uKQp7CiAgX19k
aXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbiwgaXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkp
Owp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNl
KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRl
cmF0b3JfdGFnKQp7CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAg
ICArK19fZmlyc3Q7ICsrX19uOwogIH0KICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9S
YW5kb21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAg
ICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fbGFzdCAtIF9f
Zmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5j
ZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2Nh
dGVnb3J5IAogICAgX0NhdGVnb3J5OwogIHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFz
dCwgX0NhdGVnb3J5KCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBf
RGlzdGFuY2U+CmlubGluZSB2b2lkIF9fYWR2YW5jZShfSW5wdXRJdGVyJiBfX2ksIF9EaXN0YW5j
ZSBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykgewogIHdoaWxlIChfX24tLSkgKytfX2k7Cn0KCgoK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNl
PgppbmxpbmUgdm9pZCBfX2FkdmFuY2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlz
dGFuY2UgX19uLCAKICAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnKSB7CiAgaWYgKF9fbiA+PSAwKQogICAgd2hpbGUgKF9fbi0tKSArK19faTsKICBlbHNlCiAg
ICB3aGlsZSAoX19uKyspIC0tX19pOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFuY2UoX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAg
ICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICBfX2kgKz0gX19uOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgYWR2
YW5jZShfSW5wdXRJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uKSB7CiAgX19hZHZhbmNlKF9f
aSwgX19uLCBpdGVyYXRvcl9jYXRlZ29yeShfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250
YWluZXI+CmNsYXNzIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWlu
ZXIqIGNvbnRhaW5lcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBjb250
YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdv
cnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2
b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAg
ICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNl
OwoKICBleHBsaWNpdCBiYWNrX2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpIDogY29u
dGFpbmVyKCZfX3gpIHt9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3Bl
cmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsg
CiAgICBjb250YWluZXItPnB1c2hfYmFjayhfX3ZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9
CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKyso
KSB7IHJldHVybiAqdGhpczsgfQogIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBv
cGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgMzc4ICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGJh
Y2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+IGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYg
X194KSB7CiAgcmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgpjbGFzcyBmcm9udF9pbnNlcnRfaXRlcmF0b3Ig
ewpwcm90ZWN0ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBf
Q29udGFpbmVyICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJh
dG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAg
dmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAg
ICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGZyb250X2luc2VydF9pdGVyYXRv
cihfQ29udGFpbmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgZnJvbnRfaW5zZXJ0X2l0
ZXJhdG9yPF9Db250YWluZXI+JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVy
Ojp2YWx1ZV90eXBlJiBfX3ZhbHVlKSB7IAogICAgY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFs
dWUpOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRh
aW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJh
dG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9p
bnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhp
czsgfQp9OwoKIyA0MTcgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRl
IDxjbGFzcyBfQ29udGFpbmVyPgppbmxpbmUgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWlu
ZXI+IGZyb250X2luc2VydGVyKF9Db250YWluZXImIF9feCkgewogIHJldHVybiBmcm9udF9pbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWlu
ZXI+CmNsYXNzIGluc2VydF9pdGVyYXRvciB7CnByb3RlY3RlZDoKICBfQ29udGFpbmVyKiBjb250
YWluZXI7CiAgdHlwZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgaXRlcjsKcHVibGljOgogIHR5
cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1
dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVm
IHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwoKICBpbnNlcnRfaXRlcmF0b3IoX0NvbnRh
aW5lciYgX194LCB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBfX2kpIAogICAgOiBjb250
YWluZXIoJl9feCksIGl0ZXIoX19pKSB7fQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYK
ICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192YWx1
ZSkgeyAKICAgIGl0ZXIgPSBjb250YWluZXItPmluc2VydChpdGVyLCBfX3ZhbHVlKTsKICAgICsr
aXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+
JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFp
bmVyPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9D
b250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgNDU5ICIv
dXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5l
ciwgY2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgCmluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBp
bnNlcnRlcihfQ29udGFpbmVyJiBfX3gsIF9JdGVyYXRvciBfX2kpCnsKICB0eXBlZGVmIHR5cGVu
YW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9faXRlcjsKICByZXR1cm4gaW5zZXJ0X2l0ZXJhdG9y
PF9Db250YWluZXI+KF9feCwgX19pdGVyKF9faSkpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UcCYsIAog
ICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlID0gcHRyZGlmZl90PiAKCgoKCmNsYXNzIHJldmVyc2Vf
YmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxf
aXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgX1RwLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+ICBfU2VsZjsKcHJv
dGVjdGVkOgogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVk
ZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3Rh
bmNlICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgICAgICAgICAg
ICAgICAgIHJlZmVyZW5jZTsKCiAgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30K
ICBleHBsaWNpdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciBfX3gpCiAgICA6IGN1cnJlbnQoX194KSB7fQogIF9CaWRpcmVjdGlvbmFsSXRlcmF0
b3IgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9y
KigpIGNvbnN0IHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX190bXAgPSBjdXJyZW50Owog
ICAgcmV0dXJuICotLV9fdG1wOwogIH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyBy
ZXR1cm4gJihvcGVyYXRvciooKSk7IH0KCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1
cnJlbnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAg
ICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwog
IH0KICBfU2VsZiYgb3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhp
czsKICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7
CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKIyA1NTAgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfQmlJdGVyLCBjbGFzcyBf
VHAsIGNsYXNzIF9SZWYsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29sIG9w
ZXJhdG9yPT0oCiAgICBjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRl
ciwgX1RwLCBfUmVmLCBfRGlzdGFuY2U+JiBfX3gsIAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVj
dGlvbmFsX2l0ZXJhdG9yPF9CaUl0ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX195KQp7CiAg
cmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsKfQoKCgogCiAKIAogCiAKCnRlbXBsYXRl
IDxjbGFzcyBfSXRlcmF0b3I+CmNsYXNzIHJldmVyc2VfaXRlcmF0b3IgCnsKcHJvdGVjdGVkOgog
IF9JdGVyYXRvciBjdXJyZW50OwpwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXJhdG9yPjo6aXRlcmF0b3JfY2F0ZWdvcnkKICAgICAgICAgIGl0ZXJhdG9yX2Nh
dGVnb3J5OwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZh
bHVlX3R5cGUKICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBkaWZmZXJlbmNl
X3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9p
bnRlcgogICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSXRlcmF0b3I+OjpyZWZlcmVuY2UKICAgICAgICAgIHJlZmVyZW5jZTsKCiAgdHlwZWRlZiBf
SXRlcmF0b3IgaXRlcmF0b3JfdHlwZTsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJh
dG9yPiBfU2VsZjsKCnB1YmxpYzoKICByZXZlcnNlX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCBy
ZXZlcnNlX2l0ZXJhdG9yKGl0ZXJhdG9yX3R5cGUgX194KSA6IGN1cnJlbnQoX194KSB7fQoKICBy
ZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IF9TZWxmJiBfX3gpIDogY3VycmVudChfX3guY3VycmVudCkg
e30KCiAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2
ZXJzZV9pdGVyYXRvcjxfSXRlcj4mIF9feCkKICAgIDogY3VycmVudChfX3guYmFzZSgpKSB7fQoK
ICAgIAogIGl0ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICBy
ZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgewogICAgX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVu
dDsKICAgIHJldHVybiAqLS1fX3RtcDsKICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CgoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAg
IC0tY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQp
IHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190
bXA7CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJu
ICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAq
dGhpczsKICAgICsrY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJh
dG9yKyhkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVu
dCAtIF9fbik7CiAgfQogIF9TZWxmJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsK
ICAgIGN1cnJlbnQgLT0gX19uOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRv
ci0oZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQg
KyBfX24pOwogIH0KICBfU2VsZiYgb3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAg
ICBjdXJyZW50ICs9IF9fbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJh
dG9yW10oZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7
IH0gIAp9OyAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LCAKICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0
b3I+CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRv
cj4mIF9feCwgCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9J
dGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8
X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCm9wZXJhdG9yLShjb25zdCByZXZlcnNlX2l0ZXJh
dG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9J
dGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y
PiAKb3BlcmF0b3IrKHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVy
ZW5jZV90eXBlIF9fbiwKICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y
PiYgX194KSB7CiAgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgp
IC0gX19uKTsKfQoKIyA4MDUgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8y
Ljk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCiAKIAoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3QgPSBwdHJkaWZmX3Q+IApjbGFzcyBpc3Ry
ZWFtX2l0ZXJhdG9yIHsKICBmcmllbmQgYm9vbCBvcGVyYXRvcj09IDw+ICAoY29uc3QgaXN0cmVh
bV9pdGVyYXRvciYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaXN0cmVhbV9pdGVyYXRvciYpOwpwcm90ZWN0ZWQ6CiAgaXN0cmVhbSogX01fc3Ry
ZWFtOwogIF9UcCBfTV92YWx1ZTsKICBib29sIF9NX2VuZF9tYXJrZXI7CiAgdm9pZCBfTV9yZWFk
KCkgewogICAgX01fZW5kX21hcmtlciA9ICgqX01fc3RyZWFtKSA/IHRydWUgOiBmYWxzZTsKICAg
IGlmIChfTV9lbmRfbWFya2VyKSAqX01fc3RyZWFtID4+IF9NX3ZhbHVlOwogICAgX01fZW5kX21h
cmtlciA9ICgqX01fc3RyZWFtKSA/IHRydWUgOiBmYWxzZTsKICB9CnB1YmxpYzoKICB0eXBlZGVm
IGlucHV0X2l0ZXJhdG9yX3RhZyAgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAg
ICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdCAgICAgICAgICAgICAgIGRp
ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIGNvbnN0IF9UcCogICAgICAgICAgcG9pbnRlcjsKICB0
eXBlZGVmIGNvbnN0IF9UcCYgICAgICAgICAgcmVmZXJlbmNlOwoKICBpc3RyZWFtX2l0ZXJhdG9y
KCkgOiBfTV9zdHJlYW0oJmNpbiksIF9NX2VuZF9tYXJrZXIoZmFsc2UpIHt9CiAgaXN0cmVhbV9p
dGVyYXRvcihpc3RyZWFtJiBfX3MpIDogX01fc3RyZWFtKCZfX3MpIHsgX01fcmVhZCgpOyB9CiAg
cmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIF9NX3ZhbHVlOyB9CgogIHBvaW50
ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3IqKCkpOyB9CgogIGlzdHJl
YW1faXRlcmF0b3I8X1RwLCBfRGlzdD4mIG9wZXJhdG9yKysoKSB7IAogICAgX01fcmVhZCgpOyAK
ICAgIHJldHVybiAqdGhpczsKICB9CiAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0PiBvcGVy
YXRvcisrKGludCkgIHsKICAgIGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4gX190bXAgPSAq
dGhpczsKICAgIF9NX3JlYWQoKTsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07CgojIDg2NCAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8
X1RwLCBfRGlzdGFuY2U+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXN0cmVh
bV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feSkgewogIHJldHVybiAoX194Ll9NX3N0cmVh
bSA9PSBfX3kuX01fc3RyZWFtICYmCiAgICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBfX3ku
X01fZW5kX21hcmtlcikgfHwKICAgICAgICAgX194Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2UgJiYg
X195Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2U7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNz
IG9zdHJlYW1faXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgb3N0cmVhbSogX01fc3RyZWFtOwogIGNv
bnN0IGNoYXIqIF9NX3N0cmluZzsKcHVibGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3Rh
ZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVf
dHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5
cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAg
ICAgICAgICByZWZlcmVuY2U7CgogIG9zdHJlYW1faXRlcmF0b3Iob3N0cmVhbSYgX19zKSA6IF9N
X3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKDApIHt9CiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFt
JiBfX3MsIGNvbnN0IGNoYXIqIF9fYykgCiAgICA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5n
KF9fYykgIHt9CiAgb3N0cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvcj0oY29uc3QgX1RwJiBf
X3ZhbHVlKSB7IAogICAgKl9NX3N0cmVhbSA8PCBfX3ZhbHVlOwogICAgaWYgKF9NX3N0cmluZykg
Kl9NX3N0cmVhbSA8PCBfTV9zdHJpbmc7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIG9zdHJlYW1f
aXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBvc3RyZWFtX2l0
ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfSAKICBvc3RyZWFtX2l0
ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfSAKfTsKCiMgOTA3
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgogCgoKCiAKIAogCiMgMzYgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9pdGVyYXRvci5oIiAyIDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFu
ZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdHlwZV90cmFpdHMu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKc3RydWN0IF9fdHJ1ZV90eXBlIHsKfTsKCnN0cnVjdCBfX2ZhbHNlX3R5cGUgewp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9fdHlwZV90cmFpdHMgeyAKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICAgdGhpc19kdW1teV9tZW1iZXJfbXVzdF9iZV9maXJzdDsKICAgICAgICAg
ICAgICAgICAgICAKCgoKCgogICAgCgoKCgoKCgoKIAoKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5
cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5
cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX2ZhbHNl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07CgoKCiAKIAogCgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVf
dHJhaXRzPGJvb2w+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZh
dWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Nv
cHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNz
aWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9k
ZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0
ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNp
Z25lZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVs
dF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGNoYXI+IHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3Ry
YWl0czx3Y2hhcl90PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVm
YXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9j
b3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoK
dGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8c2hvcnQ+IHsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8
dW5zaWduZWQgc2hvcnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9k
ZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFs
X2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
YXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlh
bF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoK
dGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8aW50PiB7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVu
c2lnbmVkIGludD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1
bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29w
eV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3Np
Z25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rl
c3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1w
bGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2ln
bmVkIGxvbmc+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlf
Y29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdu
bWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1w
bGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25nIGxvbmc+IHsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8
dW5zaWduZWQgbG9uZyBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZp
YWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp
dmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2
aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry
aXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsK
fTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8ZmxvYXQ+IHsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlw
ZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90
cmFpdHM8ZG91YmxlPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVm
YXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9j
b3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fz
c2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxf
ZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRl
bXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgZG91YmxlPiB7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVk
ZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IF9fdHlwZV90cmFpdHM8X1RwKj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2
aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3Ry
aXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJp
dmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190
cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7
Cn07CgojIDI5NSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3R5cGVfdHJhaXRzLmgiIDMKCgoKIAogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0lzX2ludGVnZXIgewogIHR5cGVkZWYgX19mYWxzZV90eXBl
IF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGJvb2w+IHsK
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0
IF9Jc19pbnRlZ2VyPGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsK
CnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxzaWduZWQgY2hhcj4gewogIHR5cGVkZWYg
X190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2Vy
PHVuc2lnbmVkIGNoYXI+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoK
dGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHdjaGFyX3Q+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHNo
b3J0PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgc2hvcnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBl
IF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxpbnQ+IHsKICB0
eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNf
aW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsK
fTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxsb25nPiB7CiAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5z
aWduZWQgbG9uZz4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1w
bGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8bG9uZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVf
dHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWdu
ZWQgbG9uZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCgoK
IAogCiAKIyAzOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2l0ZXJhdG9yLmgiIDIgMwoKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfY29uc3RydWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL25ldy5oIiAxIDMKIAoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvbmV3IiAxIDMKIAogCgoKCgojcHJhZ21hIGludGVyZmFjZSAi
bmV3IgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2Ut
bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgOCAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL25ldyIgMiAzCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9leGNlcHRpb24iIDEg
MwogCiAKCgoKCiNwcmFnbWEgaW50ZXJmYWNlICJleGNlcHRpb24iCgpleHRlcm4gIkMrKyIgewoK
bmFtZXNwYWNlIHN0ZCB7CgpjbGFzcyBleGNlcHRpb24gewpwdWJsaWM6CiAgZXhjZXB0aW9uICgp
IHsgfQogIHZpcnR1YWwgfmV4Y2VwdGlvbiAoKSB7IH0KICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdo
YXQgKCkgY29uc3Q7Cn07CgpjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbiB7
CnB1YmxpYzoKICBiYWRfZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgfmJhZF9leGNlcHRpb24g
KCkgeyB9Cn07Cgp0eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVfaGFuZGxlcikgKCk7CnR5cGVkZWYg
dm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7Cgp0ZXJtaW5hdGVfaGFuZGxlciBzZXRfdGVy
bWluYXRlICh0ZXJtaW5hdGVfaGFuZGxlcik7CnZvaWQgdGVybWluYXRlICgpIF9fYXR0cmlidXRl
X18gKChfX25vcmV0dXJuX18pKTsKdW5leHBlY3RlZF9oYW5kbGVyIHNldF91bmV4cGVjdGVkICh1
bmV4cGVjdGVkX2hhbmRsZXIpOwp2b2lkIHVuZXhwZWN0ZWQgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bm9yZXR1cm5fXykpOwpib29sIHVuY2F1Z2h0X2V4Y2VwdGlvbiAoKTsKCn0gIAoKfSAgCgoKIyA5
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvbmV3
IiAyIDMKCgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZCB7CgogIGNsYXNzIGJhZF9hbGxv
YyA6IHB1YmxpYyBleGNlcHRpb24gewogIHB1YmxpYzoKICAgIHZpcnR1YWwgY29uc3QgY2hhciog
d2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gImJhZF9hbGxvYyI7IH0KICB9OwoKICBzdHJ1
Y3Qgbm90aHJvd190IHt9OwogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKICB0eXBl
ZGVmIHZvaWQgKCpuZXdfaGFuZGxlcikoKTsKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIg
KG5ld19oYW5kbGVyKTsKCn0gIAoKIAp2b2lkICpvcGVyYXRvciBuZXcgKHNpemVfdCkgdGhyb3cg
KHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCAqb3BlcmF0b3IgbmV3W10gKHNpemVfdCkgdGhyb3cgKHN0
ZDo6YmFkX2FsbG9jKTsKdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKikgdGhyb3coKTsKdm9p
ZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqKSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBuZXcg
KHNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBu
ZXdbXSAoc2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CnZvaWQgb3BlcmF0
b3IgZGVsZXRlICh2b2lkICosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBv
cGVyYXRvciBkZWxldGVbXSAodm9pZCAqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7
CgogCmlubGluZSB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3co
KSB7IHJldHVybiBwbGFjZTsgfQppbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2
b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQp9ICAKCgojIDYgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9uZXcuaCIgMiAzCgoK
dXNpbmcgc3RkOjpuZXdfaGFuZGxlcjsKdXNpbmcgc3RkOjpzZXRfbmV3X2hhbmRsZXI7CgoKIyAz
NCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF9jb25zdHJ1Y3QuaCIgMiAzCgoKIAoKIAogCgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgppbmxpbmUgdm9pZCBkZXN0cm95KF9UcCogX19wb2ludGVyKSB7CiAgX19wb2lu
dGVyLT5+X1RwKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIHZv
aWQgY29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpIHsKICBuZXcgKF9fcCkg
X1QxKF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxPgppbmxpbmUgdm9pZCBjb25zdHJ1
Y3QoX1QxKiBfX3ApIHsKICBuZXcgKF9fcCkgX1QxKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXJhdG9yPgppbmxpbmUgdm9pZApfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3Ig
X19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKewogIGZvciAo
IDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGRlc3Ryb3koJipfX2ZpcnN0KTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkIF9fZGVzdHJv
eV9hdXgoX0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvciwgX190cnVlX3R5cGUpIHt9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgppbmxpbmUgdm9p
ZApfX2Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f
bGFzdCwgX1RwKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNf
dHJpdmlhbF9kZXN0cnVjdG9yCiAgICAgICAgICBfVHJpdmlhbF9kZXN0cnVjdG9yOwogIF9fZGVz
dHJveV9hdXgoX19maXJzdCwgX19sYXN0LCBfVHJpdmlhbF9kZXN0cnVjdG9yKCkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KaW5saW5lIHZvaWQgZGVzdHJveShfRm9yd2Fy
ZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KSB7CiAgX19kZXN0cm95
KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKaW5saW5lIHZv
aWQgZGVzdHJveShjaGFyKiwgY2hhciopIHt9CmlubGluZSB2b2lkIGRlc3Ryb3kod2NoYXJfdCos
IHdjaGFyX3QqKSB7fQoKIAoKCgogCiAKIAojIDQyICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFu
ZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaXRlcmF0b3IuaCIg
MiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9yYXdfc3RvcmFnZV9pdGVyLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CmNsYXNzIHJhd19zdG9yYWdlX2l0ZXJhdG9yIHsKcHJvdGVj
dGVkOgogIF9Gb3J3YXJkSXRlcmF0b3IgX01faXRlcjsKcHVibGljOgogIHR5cGVkZWYgb3V0cHV0
X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAg
ICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYg
dm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IHJhd19zdG9yYWdlX2l0
ZXJhdG9yKF9Gb3J3YXJkSXRlcmF0b3IgX194KSA6IF9NX2l0ZXIoX194KSB7fQogIHJhd19zdG9y
YWdlX2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIHJhd19zdG9yYWdl
X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgX1RwJiBfX2VsZW1lbnQpIHsKICAgIGNvbnN0cnVj
dCgmKl9NX2l0ZXIsIF9fZWxlbWVudCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfSAgICAgICAgCiAg
cmF3X3N0b3JhZ2VfaXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiYgb3BlcmF0b3IrKygp
IHsKICAgICsrX01faXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgcmF3X3N0b3JhZ2VfaXRl
cmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiBvcGVyYXRvcisrKGludCkgewogICAgcmF3X3N0
b3JhZ2VfaXRlcmF0b3I8X0ZvcndhcmRJdGVyYXRvciwgX1RwPiBfX3RtcCA9ICp0aGlzOwogICAg
KytfTV9pdGVyOwogICAgcmV0dXJuIF9fdG1wOwogIH0KfTsKCiMgNzMgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGxfcmF3X3N0b3JhZ2VfaXRlci5oIiAzCgoKIAoKCgogCiAKIAojIDQ1ICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
aXRlcmF0b3IuaCIgMiAzCgoKCiMgOTggIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1s
aW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVyYXRvci5oIiAzCgoKCgog
CiAKIAojIDMzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIv
Z2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF9hbGdvYmFzZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK
CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoK
CiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2Mt
bGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoK
CgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGlu
dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CiMgMzMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVt
Y3B5ICAodm9pZCAqICBfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29uc3Qgdm9pZCAqICBf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKIAoKZXh0ZXJuIHZvaWQg
KiAgbWVtbW92ZSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19zcmMsCgkJCSAg
ICAgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiB2b2lkICogIG1lbWNjcHkg
ICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIGludCBfX2Ms
IHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiB2b2lkICogIG1lbXNldCAgKHZv
aWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGlu
dCBtZW1jbXAgIChfX2NvbnN0IHZvaWQgKiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsCgkJ
CXNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCAqICBtZW1jaHIgIChfX2Nv
bnN0IHZvaWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgoKCgoK
CgogCmV4dGVybiBjaGFyICpzdHJjcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFy
ICpzdHJuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFy
ICpzdHJjYXQgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zcmMpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJuY2F0ICAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBp
bnQgc3RybmNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXpl
X3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjb2xsICAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qg
c3RyeGZybSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiMgMTA3ICIvdXNyL2lu
Y2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApleHRlcm4gY2hhciAqX19zdHJkdXAgIChfX2NvbnN0IGNo
YXIgKl9fcykgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpzdHJkdXAgIChfX2NvbnN0IGNoYXIg
Kl9fcykgIHRocm93ICgpICA7CgoKIAoKCgoKCgojIDE0MyAiL3Vzci9pbmNsdWRlL3N0cmluZy5o
IiAzCgoKIApleHRlcm4gY2hhciAqc3RyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
ICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2MpICB0aHJvdyAoKSAgOwoKCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuICAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpICB0aHJvdyAoKSAgOwog
CgpleHRlcm4gc2l6ZV90IHN0cnNwbiAgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIg
Kl9fYWNjZXB0KSAgdGhyb3cgKCkgIDsKIApleHRlcm4gY2hhciAqc3RycGJyayAgKF9fY29uc3Qg
Y2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgdGhyb3cgKCkgIDsKIApleHRlcm4g
Y2hhciAqc3Ryc3RyICAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9f
bmVlZGxlKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RydG9rICAoY2hh
ciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0p
ICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywKCQkJICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCgkJCSAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGNo
YXIgKnN0cnRva19yICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSwKCQkJICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIp
ICB0aHJvdyAoKSAgOwoKCiMgMjAzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApleHRl
cm4gc2l6ZV90IHN0cmxlbiAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgoKCgoK
CgogCmV4dGVybiBjaGFyICpzdHJlcnJvciAgKGludCBfX2Vycm51bSkgIHRocm93ICgpICA7Cgog
CgpleHRlcm4gY2hhciAqX19zdHJlcnJvcl9yICAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwg
c2l6ZV90IF9fYnVmbGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgIChp
bnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICB0aHJvdyAoKSAgOwoK
CiAKCmV4dGVybiB2b2lkIF9fYnplcm8gICh2b2lkICogIF9fcywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CgoKIApleHRlcm4gdm9pZCBiY29weSAgKF9fY29uc3Qgdm9pZCAqICBfX3NyYywgdm9p
ZCAqICBfX2Rlc3QsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9pZCBiemVy
byAgKHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBi
Y21wICAoX19jb25zdCB2b2lkICogIF9fczEsIF9fY29uc3Qgdm9pZCAqICBfX3MyLCBzaXplX3Qg
X19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmluZGV4ICAoX19jb25zdCBjaGFyICpf
X3MsIGludCBfX2MpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBfX2ZmcyAg
KGludCBfX2kpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwpleHRlcm4gaW50
IGZmcyAgKGludCBfX2kpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKIAoK
CgoKCgoKCgogCmV4dGVybiBpbnQgX19zdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBf
X2NvbnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHN0cmNhc2VjbXAgIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CgogCmV4
dGVybiBpbnQgc3RybmNhc2VjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAq
X19zMiwKCQkJICAgICBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgojIDI3NyAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCgoKCiAKCmV4dGVybiBjaGFyICpzdHJzZXAgIChjaGFyICoqX19yZXN0
cmljdCBfX3N0cmluZ3AsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pICB0
aHJvdyAoKSAgOwoKCiMgMzE5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCiMgMzQ3ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKfSAKCgojIDQ4ICIvdXNyL2xpYi9nY2MtbGliL2k1
ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Fs
Z29iYXNlLmgiIDIgMwoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgv
Mi45NS4yL2luY2x1ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKCgoKCiAKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEg
MwogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4y
L2luY2x1ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKIyAxMTQgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgojIDEgIi91c3Iv
aW5jbHVkZS9saW1pdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgogCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCgoKIAoKCiAK
CgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xp
bS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9s
aW51eC9saW1pdHMuaCIgMSAzCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv
Yml0cy9sb2NhbF9saW0uaCIgMiAzCgoKIAoKCgoKCiAKCiAKCgogCgogCgoKIAoKIAoKCiAKCgoK
IAoKIyAxMjYgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzCgoKCgoKCgoKIAoK
CgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAK
CgogCgoKIAoKCiAKCgogCgoKCgogCgoKCgogCgoKCiAKCgogCgoKCiAKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzNCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAy
IDMKCgoKCgoKCgogCgoKCgoKIAoKIyAxMjEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgoK
ICAKCgoKCgoKCgojIDExNyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIu
OTUuMi9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKCgojIDExICIv
dXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwoKCgoKCiAKCgoKIAoKCgogCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoKCiAK
CiAKCgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgojIDEwNyAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL2xpbWl0cy5o
IiAzCgoKCgogCgoKCgoKCgoKCiMgNDkgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1s
aW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgog
CgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK
IAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45
NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBx
dW90OwkJCSAKICAgIGludCByZW07CQkJIAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAog
IHsKICAgIGxvbmcgaW50IHF1b3Q7CQkgCiAgICBsb25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7
CgoKCiMgNjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgogCgoKCiAKCgoKCgogCgpleHRl
cm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggICh2b2lkKSAgdGhyb3cgKCkgIDsKCgog
CmV4dGVybiBkb3VibGUgYXRvZiAgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkgIDsK
IApleHRlcm4gaW50IGF0b2kgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIGxvbmcgaW50IGF0b2wgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7
CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xsICAoX19jb25zdCBj
aGFyICpfX25wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0cikgIHRocm93ICgpICA7CgoKCgoKCgoKCgogCmV4dGVybiBsb25nIGludCBzdHJ0b2wgIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdW5zaWduZWQgbG9u
ZyBpbnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fYmFzZSkgIHRo
cm93ICgpICA7CgoKIApfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApfX2V4dGVuc2lvbl9fCmV4dGVy
biB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAoJCQkJCSAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAg
aW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9u
ZyBsb25nIGludCBzdHJ0b2xsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJ
CSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsK
IApfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsICAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoKCiMgMTkw
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2Rf
aW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICBpbnQgX19ncm91cCkgIHRocm93ICgp
ICA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCQkgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19n
cm91cCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFs
ICAoX19jb25zdCBjaGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgIHRocm93ICgpICA7CgpleHRl
cm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAoJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCWludCBfX2Jhc2Us
IGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9f
c3RydG91bF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCSAgX19yZXN0cmljdCBfX25w
dHIsCgkJCQkJCSAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCSAgaW50IF9fYmFz
ZSwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9u
ZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAg
IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKX19leHRlbnNpb25fXwpl
eHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsICAoX19jb25z
dCBjaGFyICoKCQkJCQkJCV9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCQkJY2hhciAqKgoJCQkJCQkJ
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkJCWludCBfX2Jhc2UsCgkJCQkJCQlpbnQgX19ncm91
cCkgIHRocm93ICgpICA7CgoKCgojIDMyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCgog
CgoKZXh0ZXJuIGNoYXIgKmw2NGEgIChsb25nIGludCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRl
cm4gbG9uZyBpbnQgYTY0bCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgojIDEg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKZXh0ZXJuICJDIiB7IAoKCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191
X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1
X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFk
X3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoK
Cgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7
CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsK
CgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7
CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKdHlwZWRlZiBfX2lk
X3QgaWRfdDsKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCnR5cGVkZWYgX19kYWRk
cl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlf
dCBrZXlfdDsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDUxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMg
NjIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5cGVkZWYgX190aW1lX3QgdGlt
ZV90OwoKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCiMgMjc5ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCgoKCiMgMTIxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoK
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFu
ZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoK
IyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoj
IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoK
IyAyNjkgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1s
aWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAxMjQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAz
CgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoKCiAKCiMgMTU4ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBlZGVmIGludCBpbnQ4X3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIGludCBpbnQx
Nl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiBpbnQg
aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYg
aW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElfXyApKSkgOwoKCnR5
cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBf
X1FJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsK
CnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRf
XykpKTsKCgogCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRp
YW4uaCIgMSAzCiAKCgoKCgoKIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoK
CgoKCgoKCgoKCgojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgogCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCgoKCgoK
CgoKCgoKIyA1NiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCiMgNzIgIi91c3IvaW5j
bHVkZS9iaXRzL3NlbGVjdC5oIiAzCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAy
IDMKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0
CiAgewogICAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5z
aWduZWQgbG9uZyBpbnQpKSkgXTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91
c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2
MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CgoKCgoKCgoKIAoKc3RydWN0IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwkJIAog
ICAgbG9uZyBpbnQgdHZfbnNlYzsJCSAKICB9OwoKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCgoKCiMgMzggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAi
QyIgeyAKCiAKCgoKc3RydWN0IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoK
IAp0eXBlZGVmIF9fZmRfc2V0IGZkX3NldDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRl
cm4gaW50IF9fc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBf
X2ZkX3NldCAqX193cml0ZWZkcywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0
aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNlbGVjdCAgKGludCBf
X25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2Zk
X3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAo
KSAgOwoKIyA5MSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCn0gCgoKIyAxOTMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lz
bWFjcm9zLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ3ICIvdXNy
L2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk2ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwkgIAp0eXBlZGVm
IF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250
X3Q7ICAKCgoKCgoKCgoKCgoKfSAKCgojIDMzOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK
CgogCgoKCiAKZXh0ZXJuIGludDMyX3QgcmFuZG9tICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4
dGVybiB2b2lkIHNyYW5kb20gICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgdGhyb3cgKCkgIDsKCiAK
CgoKZXh0ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAq
ICBfX3N0YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICB0aHJvdyAoKSAgOwoK
IAoKZXh0ZXJuIHZvaWQgKiAgc2V0c3RhdGUgICh2b2lkICogIF9fc3RhdGVidWYpICB0aHJvdyAo
KSAgOwoKCgogCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CQkg
CiAgICBpbnQzMl90ICpycHRyOwkJIAogICAgaW50MzJfdCAqc3RhdGU7CQkgCiAgICBpbnQgcmFu
ZF90eXBlOwkJIAogICAgaW50IHJhbmRfZGVnOwkJIAogICAgaW50IHJhbmRfc2VwOwkJIAogICAg
aW50MzJfdCAqZW5kX3B0cjsJCSAKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAgKHN0cnVjdCBy
YW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKCQkJICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50
IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgIHRocm93ICgpICA7CgpleHRlcm4g
aW50IGluaXRzdGF0ZV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwKCQkJICAgICB2b2lkICogIF9f
cmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgICBzaXplX3QgX19zdGF0ZWxlbiwKCQkJICAgICBz
dHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJu
IGludCBzZXRzdGF0ZV9yICAodm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICBz
dHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwoKCgoKIApl
eHRlcm4gaW50IHJhbmQgICh2b2lkKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBzcmFuZCAg
KHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCByYW5kX3Ig
ICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgIHRocm93ICgpICA7CgoKCgogCgogCmV4dGVybiBkb3Vi
bGUgZHJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBsb25n
IGludCBscmFuZDQ4ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4
ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
bG9uZyBpbnQgbXJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQganJh
bmQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgIHRocm93ICgpICA7CmV4dGVy
biB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQx
NnZbM10pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICAodW5zaWduZWQgc2hvcnQg
aW50IF9fcGFyYW1bN10pICB0aHJvdyAoKSAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewog
ICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNd
OwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9s
ZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9y
ICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91Ymxl
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3Ig
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBscmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBtcmFuZDQ4X3IgIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQganJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxv
bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBz
cmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVm
ZmVyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBp
bnQgX19zZWVkMTZ2WzNdLAoJCQkgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhy
b3cgKCkgIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFy
YW1bN10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsK
CgoKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3Np
emUpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBf
X3B0ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZv
aWQgKiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2ZyZWUgICh2b2lkICog
IF9fcHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJh
a2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vz
ci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFr
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFr
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAi
L3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJh
a2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
CiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMjUgIi91c3IvaW5j
bHVkZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKZXh0ZXJuIHZvaWQgKiAg
YWxsb2NhICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCgoKfSAKCgojIDQ5MiAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgdmFsbG9jICAoc2l6
ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAg
dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50
IGF0ZXhpdCAgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJu
IGludCBfX29uX2V4aXQgICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogIF9f
YXJnKSwKCQkJICAgdm9pZCAqICBfX2FyZykgIHRocm93ICgpICA7CmV4dGVybiBpbnQgb25fZXhp
dCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgdm9p
ZCAqICBfX2FyZykgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiB2b2lkIGV4aXQgIChpbnQgX19z
dGF0dXMpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoK
CgogCmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgp
ICA7CgogCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25h
bWUpICB0aHJvdyAoKSAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChfX2NvbnN0IGNoYXIg
Kl9fc3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0
IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFt
ZSkgIHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93
ICgpICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAg
dGhyb3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUp
ICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2Nv
bW1hbmQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0
aCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fcmVzb2x2ZWQpICB0aHJvdyAoKSAgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBh
cl9mbl90KSAgKF9fY29uc3Qgdm9pZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCgoKCgogCgpl
eHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2b2lkICogIF9fa2V5LCBfX2NvbnN0IHZv
aWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJ
CSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQg
ICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgX19j
b21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9feCkgIHRo
cm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbG9uZyBpbnQgbGFi
cyAgKGxvbmcgaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCgoKCgogCgogCmV4dGVybiBkaXZfdCBkaXYgIChpbnQgX19udW1lciwgaW50IF9fZGVub20p
ICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkgIHRocm93ICgpICAKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoKIAoKCiAKCgpleHRlcm4gY2hh
ciAqZWN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRl
cm4gY2hhciAqZmN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKCiAK
CgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIg
Kl9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnFlY3Z0ICAobG9uZyBkb3VibGUg
IF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0ICAobG9u
ZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnFn
Y3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpICB0
aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gaW50IGVjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19z
aWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXplX3QgX19sZW4pICB0aHJvdyAoKSAg
OwpleHRlcm4gaW50IGZjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq
X19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLAoJCQlzaXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBx
ZWN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0
cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBxZmN2dF9y
ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBf
X2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgoKCiAKCmV4dGVybiBpbnQgbWJsZW4g
IChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiBp
bnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKCQkJX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiBpbnQgd2N0
b21iICAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJu
IHNpemVfdCBtYnN0b3djcyAgKHdjaGFyX3QgKl9fcmVzdHJpY3QgIF9fcHdjcywKCQkJICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKIApl
eHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICAgX19j
b25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7
CgoKCiAKCgoKZXh0ZXJuIGludCBycG1hdGNoICAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSAg
dGhyb3cgKCkgIDsKCgoKIyA3MzIgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgojIDc1NiAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIyA3NjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MwoKCgoKCn0gCgoKIyA1MCAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIu
OTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzNDIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyA1MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRy
YWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5o
IiAyIDMKCgoKCgoKCgogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3Mg
X0ZvcndhcmRJdGVyMiwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCBfX2l0ZXJfc3dhcChfRm9yd2Fy
ZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IsIF9UcCopIHsKICBfVHAgX190bXAgPSAqX19h
OwogICpfX2EgPSAqX19iOwogICpfX2IgPSBfX3RtcDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+CmlubGluZSB2b2lkIGl0ZXJfc3dhcChfRm9y
d2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBfX2IpIHsKICBfX2l0ZXJfc3dhcChfX2EsIF9f
YiwgX192YWx1ZV90eXBlKCBfX2EgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUg
dm9pZCBzd2FwKF9UcCYgX19hLCBfVHAmIF9fYikgewogIF9UcCBfX3RtcCA9IF9fYTsKICBfX2Eg
PSBfX2I7CiAgX19iID0gX190bXA7Cn0KCiAKIAoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpp
bmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKSB7CiAg
cmV0dXJuIF9fYiA8IF9fYSA/IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5s
aW5lIGNvbnN0IF9UcCYgbWF4KGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikgewogIHJl
dHVybiAgX19hIDwgX19iID8gX19iIDogX19hOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0
IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4gX19jb21wKF9fYiwgX19hKSA/
IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGlu
ZSBjb25zdCBfVHAmIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21wYXJl
IF9fY29tcCkgewogIHJldHVybiBfX2NvbXAoX19hLCBfX2IpID8gX19iIDogX19hOwp9CgogCiAK
CiAKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0
SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX091dHB1dEl0ZXIgX19jb3B5KF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRl
cmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X3Jlc3VsdCwgKytfX2ZpcnN0KQogICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9PdXRw
dXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfT3V0cHV0SXRlcgpfX2NvcHkoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgX091
dHB1dEl0ZXIgX19yZXN1bHQsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2Uq
KQp7CiAgZm9yIChfRGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1f
X24pIHsKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogICAgKytfX3Jl
c3VsdDsKICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxp
bmUgX1RwKgpfX2NvcHlfdHJpdmlhbChjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19s
YXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgbWVtbW92ZShfX3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9m
KF9UcCkgKiAoX19sYXN0IC0gX19maXJzdCkpOwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3Qg
LSBfX2ZpcnN0KTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1
dEl0ZXIsIGNsYXNzIF9Cb29sVHlwZT4Kc3RydWN0IF9fY29weV9kaXNwYXRjaCB7CiAgc3RhdGlj
IF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkgewogICAgdHlw
ZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcj46Oml0ZXJhdG9yX2NhdGVn
b3J5IF9DYXRlZ29yeTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1
dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlOwogICAgcmV0dXJuIF9fY29weShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfQ2F0ZWdvcnkoKSwgKF9EaXN0YW5jZSopIDApOwogIH0K
fTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX2NvcHlfZGlzcGF0Y2g8X1RwKiwgX1Rw
KiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwg
Y29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIHJldHVybiBfX2NvcHlfdHJp
dmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNoPGNvbnN0IF9UcCosIF9UcCosIF9fdHJ1ZV90eXBl
Pgp7CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19s
YXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gX19jb3B5X3RyaXZpYWwoX19maXJzdCwg
X19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNs
YXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgY29weShfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRl
ciBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0
ZXI+Ojp2YWx1ZV90eXBlIF9UcDsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1Rw
Pjo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcgogICAgICAgICAgX1RyaXZpYWw7CiAg
cmV0dXJuIF9fY29weV9kaXNwYXRjaDxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlciwgX1RyaXZpYWw+
CiAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7Cn0KCiMgMjEzICIvdXNyL2xp
Yi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUv
ZysrLTMvc3RsX2FsZ29iYXNlLmgiIDMKCgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rp
b25hbEl0ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyLCAKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZT4KaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19jb3B5X2JhY2t3YXJkKF9CaWRp
cmVjdGlvbmFsSXRlcjEgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fcmVzdWx0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
RGlzdGFuY2UqKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KQogICAgKi0tX19yZXN1bHQg
PSAqLS1fX2xhc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpp
bmxpbmUgX0JpZGlyZWN0aW9uYWxJdGVyIF9fY29weV9iYWNrd2FyZChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKikKewogIGZvciAo
X0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKQogICAgKi0t
X19yZXN1bHQgPSAqLS1fX2xhc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCiAKIAogCiAKCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0
ZXIyLAogICAgICAgICAgY2xhc3MgX0Jvb2xUeXBlPgpzdHJ1Y3QgX19jb3B5X2JhY2t3YXJkX2Rp
c3BhdGNoCnsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25h
bEl0ZXIxPjo6aXRlcmF0b3JfY2F0ZWdvcnkgCiAgICAgICAgICBfQ2F0OwogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFsSXRlcjE+OjpkaWZmZXJlbmNlX3R5
cGUKICAgICAgICAgIF9EaXN0YW5jZTsKCiAgc3RhdGljIF9CaWRpcmVjdGlvbmFsSXRlcjIgY29w
eShfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX3Jlc3VsdCkgewogICAgcmV0dXJu
IF9fY29weV9iYWNrd2FyZChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfQ2F0KCksIChfRGlz
dGFuY2UqKSAwKTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Jh
Y2t3YXJkX2Rpc3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgp7CiAgc3RhdGljIF9UcCog
Y29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0
KSB7CiAgICBjb25zdCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICBtZW1t
b3ZlKF9fcmVzdWx0IC0gX051bSwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiBfTnVtKTsKICAgIHJl
dHVybiBfX3Jlc3VsdCAtIF9OdW07CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxjb25zdCBfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4K
ewogIHN0YXRpYyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFz
dCwgX1RwKiBfX3Jlc3VsdCkgewogICAgcmV0dXJuICBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8
X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CiAgICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9f
cmVzdWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JJMSwgY2xhc3MgX0JJMj4KaW5saW5l
IF9CSTIgY29weV9iYWNrd2FyZChfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVz
dWx0KSB7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfQkkyPjo6dmFsdWVfdHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgOjpoYXNf
dHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yCiAgICAgICAgICBfVHJpdmlhbDsKICByZXR1cm4g
X19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPF9CSTEsIF9CSTIsIF9Ucml2aWFsPgogICAgICAgICAg
ICAgIDo6Y29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoKIyAzMDMgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxnb2Jhc2UuaCIgMwoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIs
IGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KcGFpcjxfSW5wdXRJdGVyLCBfT3V0cHV0
SXRlcj4gX19jb3B5X24oX0lucHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKSB7
CiAgZm9yICggOyBfX2NvdW50ID4gMDsgLS1fX2NvdW50KSB7CiAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBwYWlyPF9J
bnB1dEl0ZXIsIF9PdXRwdXRJdGVyPihfX2ZpcnN0LCBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUkFJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBwYWly
PF9SQUl0ZXIsIF9PdXRwdXRJdGVyPgpfX2NvcHlfbihfUkFJdGVyIF9fZmlyc3QsIF9TaXplIF9f
Y291bnQsCiAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICByYW5kb21fYWNj
ZXNzX2l0ZXJhdG9yX3RhZykgewogIF9SQUl0ZXIgX19sYXN0ID0gX19maXJzdCArIF9fY291bnQ7
CiAgcmV0dXJuIHBhaXI8X1JBSXRlciwgX091dHB1dEl0ZXI+KF9fbGFzdCwgY29weShfX2ZpcnN0
LCBfX2xhc3QsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFz
cyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIsIF9PdXRw
dXRJdGVyPgpfX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsIF9PdXRw
dXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9f
cmVzdWx0LAogICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkg
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0
cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+CmNvcHlfbihfSW5w
dXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAg
cmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0KTsKfQoKIAogCgoKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lkIGZpbGwoX0ZvcndhcmRJ
dGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZSkgewog
IGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0gX192
YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3Mg
X1RwPgpfT3V0cHV0SXRlciBmaWxsX24oX091dHB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBj
b25zdCBfVHAmIF9fdmFsdWUpIHsKICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3Qp
CiAgICAqX19maXJzdCA9IF9fdmFsdWU7CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCiAKIAoKdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KcGFpcjxfSW5wdXRJdGVy
MSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyKSB7
CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgKl9fZmlyc3QxID09ICpfX2ZpcnN0Mikg
ewogICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1
dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJzdDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0JpbmFyeVByZWRpY2F0
ZT4KcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9f
Zmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRl
cjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1
dEl0ZXIyIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9f
bGFzdDEgJiYgX19iaW5hcnlfcHJlZCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICsrX19m
aXJzdDE7CiAgICArK19fZmlyc3QyOwogIH0KICByZXR1cm4gcGFpcjxfSW5wdXRJdGVyMSwgX0lu
cHV0SXRlcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmlubGluZSBib29sIGVxdWFsKF9JbnB1dEl0ZXIxIF9f
Zmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5wdXRJdGVy
MiBfX2ZpcnN0MikgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwg
KytfX2ZpcnN0MikKICAgIGlmICgqX19maXJzdDEgIT0gKl9fZmlyc3QyKQogICAgICByZXR1cm4g
ZmFsc2U7CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xh
c3MgX0lucHV0SXRlcjIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CmlubGluZSBib29sIGVxdWFs
KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAg
ICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVk
KSB7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3Qy
KQogICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAgICAgcmV0
dXJuIGZhbHNlOwogIHJldHVybiB0cnVlOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShf
SW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0Mikg
ewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyCiAg
ICAgICAgOyArK19fZmlyc3QxLCArK19fZmlyc3QyKSB7CiAgICBpZiAoKl9fZmlyc3QxIDwgKl9f
Zmlyc3QyKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEp
CiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYg
X19maXJzdDIgIT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFz
cyBfSW5wdXRJdGVyMiwgY2xhc3MgX0NvbXBhcmU+CmJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBh
cmUoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFz
dDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgZm9y
ICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAgICAgICA7
ICsrX19maXJzdDEsICsrX19maXJzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19m
aXJzdDIpKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19m
aXJzdDEpKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBfX2ZpcnN0MSA9PSBfX2xh
c3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7Cn0KCmlubGluZSBib29sIApsZXhpY29ncmFwaGlj
YWxfY29tcGFyZShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MSwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpCnsKICBjb25zdCBzaXplX3QgX19sZW4x
ID0gX19sYXN0MSAtIF9fZmlyc3QxOwogIGNvbnN0IHNpemVfdCBfX2xlbjIgPSBfX2xhc3QyIC0g
X19maXJzdDI7CiAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0
MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3Vs
dCA8IDAgOiBfX2xlbjEgPCBfX2xlbjI7Cn0KCmlubGluZSBib29sIGxleGljb2dyYXBoaWNhbF9j
b21wYXJlKGNvbnN0IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX2ZpcnN0MiwgY29uc3Qg
Y2hhciogX19sYXN0MikKewoKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoKGNvbnN0
IHNpZ25lZCBjaGFyKikgX19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QyKTsKCgoKCgoKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KaW50IF9fbGV4aWNv
Z3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBf
X2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikKewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xh
c3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJz
dDIpCiAgICAgIHJldHVybiAtMTsKICAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpCiAgICAg
IHJldHVybiAxOwogICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIGlmIChfX2Zp
cnN0MiA9PSBfX2xhc3QyKSB7CiAgICByZXR1cm4gIShfX2ZpcnN0MSA9PSBfX2xhc3QxKTsKICB9
CiAgZWxzZSB7CiAgICByZXR1cm4gLTE7CiAgfQp9CgppbmxpbmUgaW50Cl9fbGV4aWNvZ3JhcGhp
Y2FsX2NvbXBhcmVfM3dheShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFz
dDIpCnsKICBjb25zdCBwdHJkaWZmX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogIGNv
bnN0IHB0cmRpZmZfdCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgY29uc3QgaW50IF9f
cmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7
CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCAKICAgICAgICAgICAgICAgICAgICAg
ICA6IChfX2xlbjEgPT0gX19sZW4yID8gMCA6IChfX2xlbjEgPCBfX2xlbjIgPyAtMSA6IDEpKTsK
fQoKaW5saW5lIGludCAKX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KGNvbnN0IGNoYXIq
IF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCnsKCiAgcmV0
dXJuIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDIp
OwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIy
PgppbnQgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwg
X0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lu
cHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpCnsKICByZXR1cm4gX19sZXhp
Y29ncmFwaGljYWxfY29tcGFyZV8zd2F5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19s
YXN0Mik7Cn0KCiAKCgoKIAogCiAKIyAzNiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtl
LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsZ29iYXNlLmgiIDIgMwoK
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfdW5pbml0aWFsaXplZC5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgogCgogCiAKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciAKX191bmluaXRpYWxp
emVkX2NvcHlfYXV4KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3RydWVfdHlwZSkKewogIHJldHVybiBjb3B5KF9fZmlyc3QsIF9fbGFzdCwg
X19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJ
dGVyPgpfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJdGVyIF9f
Zmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX0Zvcndh
cmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKQp7
CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9f
Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QsICsrX19jdXIpCiAgICAgIGNvbnN0cnVjdCgmKl9f
Y3VyLCAqX19maXJzdCk7CiAgICByZXR1cm4gX19jdXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVz
dHJveShfX3Jlc3VsdCwgX19jdXIpIDsgdGhyb3c7IH0gOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJ
dGVyCl9fdW5pbml0aWFsaXplZF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwgX1RwKikK
ewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+Ojppc19QT0RfdHlwZSBfSXNf
UE9EOwogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX19maXJzdCwgX19sYXN0LCBf
X3Jlc3VsdCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNz
IF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlcgogIHVuaW5pdGlhbGl6ZWRfY29weShf
SW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2NvcHko
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X192YWx1ZV90eXBlKCBfX3Jlc3VsdCApICk7Cn0KCmlubGluZSBjaGFyKiB1bmluaXRpYWxpemVk
X2NvcHkoY29uc3QgY2hhciogX19maXJzdCwgY29uc3QgY2hhciogX19sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIF9fcmVzdWx0KSB7CiAgbWVtbW92ZShfX3Jlc3Vs
dCwgX19maXJzdCwgX19sYXN0IC0gX19maXJzdCk7CiAgcmV0dXJuIF9fcmVzdWx0ICsgKF9fbGFz
dCAtIF9fZmlyc3QpOwp9CgppbmxpbmUgd2NoYXJfdCogCnVuaW5pdGlhbGl6ZWRfY29weShjb25z
dCB3Y2hhcl90KiBfX2ZpcnN0LCBjb25zdCB3Y2hhcl90KiBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICB3Y2hhcl90KiBfX3Jlc3VsdCkKewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNp
emVvZih3Y2hhcl90KSAqIChfX2xhc3QgLSBfX2ZpcnN0KSk7CiAgcmV0dXJuIF9fcmVzdWx0ICsg
KF9fbGFzdCAtIF9fZmlyc3QpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xh
c3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KcGFpcjxfSW5wdXRJdGVyLCBfRm9yd2FyZEl0
ZXI+Cl9fdW5pbml0aWFsaXplZF9jb3B5X24oX0lucHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2Nv
dW50LAogICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICBfRm9yd2FyZEl0ZXIgX19j
dXIgPSBfX3Jlc3VsdDsKICB0cnkgIHsKICAgIGZvciAoIDsgX19jb3VudCA+IDAgOyAtLV9fY291
bnQsICsrX19maXJzdCwgKytfX2N1cikgCiAgICAgIGNvbnN0cnVjdCgmKl9fY3VyLCAqX19maXJz
dCk7CiAgICByZXR1cm4gcGFpcjxfSW5wdXRJdGVyLCBfRm9yd2FyZEl0ZXI+KF9fZmlyc3QsIF9f
Y3VyKTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVzdWx0LCBfX2N1cikgOyB0aHJv
dzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1NpemUs
IGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBhaXI8X1JhbmRvbUFjY2Vzc0l0ZXIsIF9Gb3J3
YXJkSXRlcj4KX191bmluaXRpYWxpemVkX2NvcHlfbihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0
LCBfU2l6ZSBfX2NvdW50LAogICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jl
c3VsdCwKICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykg
ewogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCA9IF9fZmlyc3QgKyBfX2NvdW50OwogIHJldHVy
biBwYWlyPF9SYW5kb21BY2Nlc3NJdGVyLCBfRm9yd2FyZEl0ZXI+KAogICAgICAgICAgICAgICAg
IF9fbGFzdCwKICAgICAgICAgICAgICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1Np
emUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJ
dGVyPgpfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19j
b3VudCwKICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0
dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5X24oX19maXJzdCwgX19jb3VudCwgX19yZXN1bHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJz
dCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3Mg
X0ZvcndhcmRJdGVyPgppbmxpbmUgcGFpcjxfSW5wdXRJdGVyLCBfRm9yd2FyZEl0ZXI+CnVuaW5p
dGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fdW5pbml0
aWFsaXplZF9jb3B5X24oX19maXJzdCwgX19jb3VudCwgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7Cn0KCiAK
IAp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9f
dW5pbml0aWFsaXplZF9maWxsX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX190cnVl
X3R5cGUpCnsKICBmaWxsKF9fZmlyc3QsIF9fbGFzdCwgX194KTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lkCl9fdW5pbml0aWFsaXplZF9maWxsX2F1eChf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX19mYWxzZV90eXBlKQp7CiAgX0ZvcndhcmRJdGVy
IF9fY3VyID0gX19maXJzdDsKICB0cnkgIHsKICAgIGZvciAoIDsgX19jdXIgIT0gX19sYXN0OyAr
K19fY3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgX194KTsKICB9CiAgY2F0Y2goLi4uKSB7
ICBkZXN0cm95KF9fZmlyc3QsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfVHAxPgppbmxpbmUgdm9pZCBfX3VuaW5p
dGlhbGl6ZWRfZmlsbChfRm9yd2FyZEl0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX194LCBfVHAxKikK
ewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHAxPjo6aXNfUE9EX3R5cGUgX0lz
X1BPRDsKICBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3gsIF9J
c19QT0QoKSk7CiAgICAgICAgICAgICAgICAgICAKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJk
SXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCB1bmluaXRpYWxpemVkX2ZpbGwoX0ZvcndhcmRJ
dGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194KQp7
CiAgX191bmluaXRpYWxpemVkX2ZpbGwoX19maXJzdCwgX19sYXN0LCBfX3gsIF9fdmFsdWVfdHlw
ZSggX19maXJzdCApICk7Cn0KCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFz
cyBfU2l6ZSwgY2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9m
aWxsX25fYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBfX3RydWVfdHlwZSkKewogIHJldHVybiBmaWxs
X24oX19maXJzdCwgX19uLCBfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBj
bGFzcyBfU2l6ZSwgY2xhc3MgX1RwPgpfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2ZpbGxf
bl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBf
X2N1ciA9IF9fZmlyc3Q7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19f
Y3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgX194KTsKICAgIHJldHVybiBfX2N1cjsKICB9
CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fZmlyc3QsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcCwgY2xh
c3MgX1RwMT4KaW5saW5lIF9Gb3J3YXJkSXRlciAKX191bmluaXRpYWxpemVkX2ZpbGxfbihfRm9y
d2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9feCwgX1RwMSopCnsKICB0
eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwMT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7
CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9maWxsX25fYXV4KF9fZmlyc3QsIF9fbiwgX194LCBf
SXNfUE9EKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfU2l6ZSwg
Y2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJdGVyIAp1bmluaXRpYWxpemVkX2ZpbGxfbihfRm9y
d2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9feCkKewogIHJldHVybiBf
X3VuaW5pdGlhbGl6ZWRfZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194LCBfX3ZhbHVlX3R5cGUoIF9f
Zmlyc3QgKSApOwp9CgogCiAKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwg
Y2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRl
cgpfX3VuaW5pdGlhbGl6ZWRfY29weV9jb3B5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJ
dGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmly
c3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX3Jlc3VsdCkKewogIF9Gb3J3YXJkSXRlciBfX21pZCA9IHVuaW5pdGlhbGl6ZWRf
Y29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpOwogIHRyeSAgewogICAgcmV0dXJuIHVu
aW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0MiwgX19sYXN0MiwgX19taWQpOwogIH0KICBjYXRjaCgu
Li4pIHsgIGRlc3Ryb3koX19yZXN1bHQsIF9fbWlkKSA7IHRocm93OyB9IDsKfQoKIAogCiAKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfSW5wdXRJdGVyPgpp
bmxpbmUgX0ZvcndhcmRJdGVyIApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9jb3B5KF9Gb3J3YXJkSXRl
ciBfX3Jlc3VsdCwgX0ZvcndhcmRJdGVyIF9fbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IF9UcCYgX194LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIgX19m
aXJzdCwgX0lucHV0SXRlciBfX2xhc3QpCnsKICB1bmluaXRpYWxpemVkX2ZpbGwoX19yZXN1bHQs
IF9fbWlkLCBfX3gpOwogIHRyeSAgewogICAgcmV0dXJuIHVuaW5pdGlhbGl6ZWRfY29weShfX2Zp
cnN0LCBfX2xhc3QsIF9fbWlkKTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVzdWx0
LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0KCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
LCBjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQKX191bmluaXRpYWxp
emVkX2NvcHlfZmlsbChfSW5wdXRJdGVyIF9fZmlyc3QxLCBfSW5wdXRJdGVyIF9fbGFzdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fZmlyc3QyLCBfRm9yd2FyZEl0
ZXIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCkKewog
IF9Gb3J3YXJkSXRlciBfX21pZDIgPSB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDEsIF9fbGFz
dDEsIF9fZmlyc3QyKTsKICB0cnkgIHsKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbChfX21pZDIsIF9f
bGFzdDIsIF9feCk7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0MiwgX19taWQy
KSA7IHRocm93OyB9IDsKfQoKIAoKCgogCiAKIAojIDM5ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxnb2Jhc2Uu
aCIgMiAzCgoKCiMgNjUgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9hbGdvYmFzZS5oIiAzCgoKCgogCiAKIAojIDMw
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvbGlzdC5oIiAyIDMKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1h
bmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsbG9jLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFr
ZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCgoKCgoKCgoK
CgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1s
aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKIyA1MyAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9h
bGxvYy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgojIDMyICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKCgoKCgogCgoKCgoj
IDU2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiB2
b2lkIF9fYXNzZXJ0X2ZhaWwgIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLAoJCQkJX19jb25z
dCBjaGFyICpfX2ZpbGUsCgkJCQl1bnNpZ25lZCBpbnQgX19saW5lLAoJCQkJX19jb25zdCBjaGFy
ICpfX2Z1bmN0aW9uKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJu
X18pKTsKCiAKZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgIChpbnQgX19lcnJudW0s
CgkJCQkgICAgICAgX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJCQkgICAgICAgdW5zaWduZWQgaW50
IF9fbGluZSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAg
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKfSAKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1NiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtl
LWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMK
CgoKCgoKCgoKCgoKICAgICAKICAgICAKICAgICAKIyAxICIvdXNyL2luY2x1ZGUvcHRocmVhZC5o
IiAxIDMKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9z
Y2hlZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAxICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDUxICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNjIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoK
IyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwoKCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAyOSAiL3Vzci9pbmNs
dWRlL3NjaGVkLmgiIDIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgoKIApzdHJ1Y3Qg
c2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2NoZWRfcHJpb3JpdHk7CiAgfTsKCmV4dGVybiAiQyIg
eyAKCiAKCmV4dGVybiBpbnQgY2xvbmUgIChpbnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lk
ICpfX2NoaWxkX3N0YWNrLAoJCSAgICAgICBpbnQgX19mbGFncywgdm9pZCAqX19hcmcpICB0aHJv
dyAoKSAgOwoKCn0gCgoKCgoKCiAKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7CiAgICBpbnQgc2No
ZWRfcHJpb3JpdHk7CiAgfTsKCgojIDMyICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMiAzCgoKZXh0
ZXJuICJDIiB7IAoKIApleHRlcm4gaW50IF9fc2NoZWRfc2V0cGFyYW0gIChfX3BpZF90IF9fcGlk
LAoJCQkJICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7
CmV4dGVybiBpbnQgc2NoZWRfc2V0cGFyYW0gIChfX3BpZF90IF9fcGlkLAoJCQkJX19jb25zdCBz
dHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9f
c2NoZWRfZ2V0cGFyYW0gIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFy
YW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldHBhcmFtICAoX19waWRfdCBfX3Bp
ZCwgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGlu
dCBfX3NjaGVkX3NldHNjaGVkdWxlciAgKF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJ
CSAgICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXIgIChfX3BpZF90IF9fcGlkLCBpbnQgX19wb2xp
Y3ksCgkJCQkgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfZ2V0c2NoZWR1bGVyICAoX19waWRfdCBfX3BpZCkg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0c2NoZWR1bGVyICAoX19waWRfdCBfX3Bp
ZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF95aWVsZCAgKHZvaWQpICB0aHJv
dyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3lpZWxkICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4
dGVybiBpbnQgX19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4ICAoaW50IF9fYWxnb3JpdGhtKSAgdGhy
b3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4ICAoaW50IF9fYWxnb3Jp
dGhtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9taW4g
IChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlv
cml0eV9taW4gIChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9f
c2NoZWRfcnJfZ2V0X2ludGVydmFsICAoX19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVjICpf
X3QpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbCAgKF9fcGlk
X3QgX19waWQsIHN0cnVjdCB0aW1lc3BlYyAqX190KSAgdGhyb3cgKCkgIDsKCn0gCgoKIyAyMCAi
L3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKCgoKIAoKCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFr
ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYx
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5k
cmFrZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2
OSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9p
NTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKIAoKCiAKCgoKCgogCgoKCgoKCgojIDU5ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMK
IAojIDQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKIAp0eXBl
ZGVmIF9fY2xvY2tfdCBjbG9ja190OwoKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK
CgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQg
dG1fc2VjOwkJCSAKICBpbnQgdG1fbWluOwkJCSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRt
X21kYXk7CQkJIAogIGludCB0bV9tb247CQkJIAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1f
d2RheTsJCQkgCiAgaW50IHRtX3lkYXk7CQkJIAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25n
IGludCB0bV9nbXRvZmY7CQkgCiAgX19jb25zdCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAK
CmV4dGVybiBjbG9ja190IGNsb2NrICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1l
X3QgdGltZSAgKHRpbWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUg
ZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAg
KHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRp
bWUgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKCQkJICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgpICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3Qg
dG0gKmdtdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCiAKCmV4
dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhy
b3cgKCkgIDsKCgogCgpleHRlcm4gc3RydWN0IHRtICpfX2dtdGltZV9yICAoX19jb25zdCB0aW1l
X3QgKl9fcmVzdHJpY3QgX190aW1lciwKCQkJCSAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Rw
KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVf
dCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAg
dGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yICAoX19jb25zdCB0
aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKCQkJCSAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3Qg
X190cCkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0
cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9fY29u
c3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCgogCgogCgpleHRlcm4gY2hhciAqYXNj
dGltZV9yICAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwKCQkJICAgICBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmN0aW1lX3Ig
IChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAK
ZXh0ZXJuIGludCBfX2RheWxpZ2h0OwkJIApleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoK
CgogCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQp
ICB0aHJvdyAoKSAgOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGlt
ZXpvbmU7CgoKCiAKCmV4dGVybiBpbnQgc3RpbWUgIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSAg
dGhyb3cgKCkgIDsKCgoKIAoKCgoKCgogCgoKIApleHRlcm4gdGltZV90IHRpbWVnbSAgKHN0cnVj
dCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsICAoc3Ry
dWN0IHRtICpfX3RwKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBkeXNpemUgIChpbnQgX195
ZWFyKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGludCBuYW5vc2xlZXAgIChfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKCQkJICAgc3RydWN0IHRpbWVzcGVjICpf
X3JlbWFpbmluZykgIHRocm93ICgpICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CgoKIyAyNzQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKfSAKCgoKCiMgMjEgIi91c3IvaW5j
bHVkZS9wdGhyZWFkLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9zaWduYWwuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9p
bmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKCgoKIAoKCgoKCiMgMTI1ICIvdXNyL2luY2x1ZGUvYml0
cy9zaWdzZXQuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAyIDMKCgogCgoKCgoK
CgoKCgoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCiMgMzUyICIvdXNyL2luY2x1
ZGUvc2lnbmFsLmgiIDMKCgp9IAoKCiMgMjQgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoK
CiMgNzMgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKCiMgMjMgIi91c3IvaW5jbHVkZS9i
aXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgogCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAg
bG9uZyBpbnQgX19zdGF0dXM7ICAgICAgICAgICAgIAogIGludCBfX3NwaW5sb2NrOyAgICAgICAg
ICAgICAgICAKfTsKCgogCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0
aHJlYWRfZGVzY3I7CgoKCgogCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kZXRhY2hzdGF0ZTsK
ICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07
CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6
ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBf
X3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1
Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7ICAKICBfcHRocmVhZF9kZXNjciBfX2Nfd2Fp
dGluZzsgICAgICAgICAKfSBwdGhyZWFkX2NvbmRfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgaW50
IHB0aHJlYWRfa2V5X3Q7CgoKIAogCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZl
ZDsgICAgICAgICAgICAgICAgCiAgaW50IF9fbV9jb3VudDsgICAgICAgICAgICAgICAgICAgCiAg
X3B0aHJlYWRfZGVzY3IgX19tX293bmVyOyAgICAgICAgCiAgaW50IF9fbV9raW5kOyAgICAgICAg
ICAgICAgICAgICAgCiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOyAgCn0gcHRo
cmVhZF9tdXRleF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBw
dGhyZWFkX211dGV4YXR0cl90OwoKCiAKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKIyAx
MTYgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCgoKCiAKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGludCBwdGhyZWFkX3Q7CgoKIyAyNSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIg
MiAzCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCmVudW0KewogIFBUSFJF
QURfQ1JFQVRFX0pPSU5BQkxFLAoKICBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAoKfTsKCmVudW0K
ewogIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCwKCiAgUFRIUkVBRF9FWFBMSUNJVF9TQ0hFRAoKfTsK
CmVudW0KewogIFBUSFJFQURfU0NPUEVfU1lTVEVNLAoKICBQVEhSRUFEX1NDT1BFX1BST0NFU1MK
Cn07CgplbnVtCnsKICBQVEhSRUFEX01VVEVYX0ZBU1RfTlAsCiAgUFRIUkVBRF9NVVRFWF9SRUNV
UlNJVkVfTlAsCiAgUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QCgoKCgoKCgp9OwoKZW51bQp7
CiAgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUsCgogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKCn07
CgoKCgoKCgoKCgoKCiAKCnN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlcgp7CiAgdm9pZCAo
Kl9fcm91dGluZSkgICh2b2lkICopICA7CSAgIAogIHZvaWQgKl9fYXJnOwkJCQkgICAKICBpbnQg
X19jYW5jZWx0eXBlOwkJCSAgIAogIHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19w
cmV2OyAgCn07CgogCgplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9FTkFCTEUsCgogIFBUSFJFQURf
Q0FOQ0VMX0RJU0FCTEUKCn07CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAoKICBQ
VEhSRUFEX0NBTkNFTF9BU1lOQ0hST05PVVMKCn07CgoKCiAKCiAKCgpleHRlcm4gaW50IHB0aHJl
YWRfY3JlYXRlICAocHRocmVhZF90ICpfX3RocmVhZCwKCQkJCV9fY29uc3QgcHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKCQkJCXZvaWQgKigqX19zdGFydF9yb3V0aW5lKSAodm9pZCAqKSwKCQkJCXZv
aWQgKl9fYXJnKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3NlbGYg
ICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2VxdWFsICAocHRocmVh
ZF90IF9fdGhyZWFkMSwgcHRocmVhZF90IF9fdGhyZWFkMikgIHRocm93ICgpICA7CgogCmV4dGVy
biB2b2lkIHB0aHJlYWRfZXhpdCAgKHZvaWQgKl9fcmV0dmFsKSAgdGhyb3cgKCkgICBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgogCgoKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4gIChw
dGhyZWFkX3QgX190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybikgIHRocm93ICgpICA7CgogCgoK
CmV4dGVybiBpbnQgcHRocmVhZF9kZXRhY2ggIChwdGhyZWFkX3QgX190aCkgIHRocm93ICgpICA7
CgoKIAoKIAoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2luaXQgIChwdGhyZWFkX2F0dHJfdCAq
X19hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAg
KHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJl
YWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAg
ICBpbnQgX19kZXRhY2hzdGF0ZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9h
dHRyX2dldGRldGFjaHN0YXRlICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJ
CSAgICAgaW50ICpfX2RldGFjaHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbSAgKF9fY29uc3QgcHRocmVhZF9h
dHRyX3QgKl9fYXR0ciwKCQkJCQkgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kgIChwdGhy
ZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgaW50IF9fcG9saWN5KSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3kgIChfX2NvbnN0IHB0aHJl
YWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgKl9fcG9saWN5KSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkICAocHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKCQkJCQkgICAgICBpbnQgX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0aW5oZXJpdHNjaGVkICAoX19jb25zdCBwdGhyZWFkX2F0
dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgIGludCAqX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAK
ZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NvcGUgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRy
LCBpbnQgX19zY29wZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dl
dHNjb3BlICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJICAgICAgIGludCAq
X19zY29wZSkgIHRocm93ICgpICA7CgojIDIyMyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoK
CiAKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyICAocHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKCQkJCQkgICB2b2lkICpfX3N0YWNrYWRkcikgIHRocm93ICgpICA7CgogCmV4
dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrYWRkciAgKF9fY29uc3QgcHRocmVhZF9hdHRy
X3QgKl9fYXR0ciwKCQkJCQkgICB2b2lkICoqX19zdGFja2FkZHIpICB0aHJvdyAoKSAgOwoKIAoK
CmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZSAgKHB0aHJlYWRfYXR0cl90ICpf
X2F0dHIsCgkJCQkJICAgc2l6ZV90IF9fc3RhY2tzaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2tzaXplICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAq
X19hdHRyLAoJCQkJCSAgIHNpemVfdCAqX19zdGFja3NpemUpICB0aHJvdyAoKSAgOwoKIAoKIAoK
ZXh0ZXJuIGludCBwdGhyZWFkX3NldHNjaGVkcGFyYW0gIChwdGhyZWFkX3QgX190YXJnZXRfdGhy
ZWFkLCBpbnQgX19wb2xpY3ksCgkJCQkgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0g
Kl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJh
bSAgKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsCgkJCQkgICAgICAgaW50ICpfX3BvbGljeSwK
CQkJCSAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKCgoK
CgoKCgogCgogCgpleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRl
eF90ICpfX211dGV4LAoJCQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4
X2F0dHIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfaW5pdCAgKHB0aHJl
YWRfbXV0ZXhfdCAqX19tdXRleCwKCQkJCSAgIF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAq
X19tdXRleF9hdHRyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhf
ZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgcHRocmVhZF9tdXRleF9kZXN0cm95ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdHJ5bG9jayAgKHB0aHJlYWRf
bXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90
cnlsb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBfX3B0aHJlYWRfbXV0ZXhfbG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRo
cm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9sb2NrICAocHRocmVhZF9tdXRleF90
ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdW5s
b2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBw
dGhyZWFkX211dGV4X3VubG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgp
ICA7CgoKIAoKIAoKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQgIChwdGhyZWFk
X211dGV4YXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0
ZXhhdHRyX2luaXQgIChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoK
IApleHRlcm4gaW50IF9fcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhh
dHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJf
ZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgojIDMx
NSAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoKCgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRf
Y29uZF9pbml0ICAocHRocmVhZF9jb25kX3QgKl9fY29uZCwKCQkJCSAgIF9fY29uc3QgcHRocmVh
ZF9jb25kYXR0cl90ICpfX2NvbmRfYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRo
cmVhZF9jb25kX2Rlc3Ryb3kgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfc2lnbmFsICAocHRocmVhZF9jb25kX3QgKl9fY29u
ZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAgKHB0
aHJlYWRfY29uZF90ICpfX2NvbmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFk
X2NvbmRfd2FpdCAgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkgICBwdGhyZWFkX211dGV4
X3QgKl9fbXV0ZXgpICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90
aW1lZHdhaXQgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kLAoJCQkJCXB0aHJlYWRfbXV0ZXhfdCAq
X19tdXRleCwKCQkJCQlfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19hYnN0aW1lKSAgdGhyb3cg
KCkgIDsKCiAKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2luaXQgIChwdGhyZWFkX2Nv
bmRhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25k
YXR0cl9kZXN0cm95ICAocHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoK
CiMgNDA4ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgoKCiAKCiAKCgoKCgpleHRlcm4gaW50
IF9fcHRocmVhZF9rZXlfY3JlYXRlICAocHRocmVhZF9rZXlfdCAqX19rZXksCgkJCQkgICAgICB2
b2lkICgqX19kZXN0cl9mdW5jdGlvbikgKHZvaWQgKikpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50
IHB0aHJlYWRfa2V5X2NyZWF0ZSAgKHB0aHJlYWRfa2V5X3QgKl9fa2V5LAoJCQkJICAgIHZvaWQg
KCpfX2Rlc3RyX2Z1bmN0aW9uKSAodm9pZCAqKSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg
cHRocmVhZF9rZXlfZGVsZXRlICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiBpbnQgX19wdGhyZWFkX3NldHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSwK
CQkJCSAgICAgICBfX2NvbnN0IHZvaWQgKl9fcG9pbnRlcikgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgcHRocmVhZF9zZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXksCgkJCQkgICAgIF9f
Y29uc3Qgdm9pZCAqX19wb2ludGVyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKl9fcHRo
cmVhZF9nZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwpleHRl
cm4gdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJv
dyAoKSAgOwoKCiAKCiAKCgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfb25jZSAgKHB0aHJlYWRfb25j
ZV90ICpfX29uY2VfY29udHJvbCwKCQkJCXZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX29uY2UgIChwdGhyZWFkX29uY2VfdCAqX19v
bmNlX2NvbnRyb2wsCgkJCSAgICAgIHZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAgdGhy
b3cgKCkgIDsKCgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUgIChpbnQg
X19zdGF0ZSwgaW50ICpfX29sZHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgcHRo
cmVhZF9zZXRjYW5jZWx0eXBlICAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfY2FuY2VsICAocHRocmVhZF90IF9fdGhyZWFkKSAg
dGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gdm9pZCBwdGhyZWFkX3Rlc3RjYW5jZWwgICh2b2lkKSAg
dGhyb3cgKCkgIDsKCgogCgoKCgoKCgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3B1
c2ggIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJCQkJCXZvaWQg
KCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCXZvaWQgKl9fYXJnKSAgdGhyb3cgKCkgIDsKCiAK
CgoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVhbnVwX3BvcCAgKHN0cnVjdCBfcHRocmVhZF9j
bGVhbnVwX2J1ZmZlciAqX19idWZmZXIsCgkJCQkgICAgICAgaW50IF9fZXhlY3V0ZSkgIHRocm93
ICgpICA7CgogCgoKIyA1MTQgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDMKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc2lndGhyZWFkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayAgKGludCBfX2hvdywgX19jb25zdCBf
X3NpZ3NldF90ICpfX25ld21hc2ssCgkJCQkgX19zaWdzZXRfdCAqX19vbGRtYXNrKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2tpbGwgIChwdGhyZWFkX3QgX190aHJlYWQsIGlu
dCBfX3NpZ25vKSAgdGhyb3cgKCkgIDsKCgojIDUxNyAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIg
MiAzCgoKCiAKCiAKCgoKCgoKCgoKCmV4dGVybiBpbnQgX19wdGhyZWFkX2F0Zm9yayAgKHZvaWQg
KCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCSAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCgkJCQkg
IHZvaWQgKCpfX2NoaWxkKSAodm9pZCkpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRf
YXRmb3JrICAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAoJCQkJdm9pZCAoKl9fcGFyZW50KSAo
dm9pZCksCgkJCQl2b2lkICgqX19jaGlsZCkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRl
cm4gdm9pZCBwdGhyZWFkX2tpbGxfb3RoZXJfdGhyZWFkc19ucCAgKHZvaWQpICB0aHJvdyAoKSAg
OwoKCiAKZXh0ZXJuIHZvaWQgX19wdGhyZWFkX2luaXRpYWxpemUgICh2b2lkKSAgdGhyb3cgKCkg
IDsKCn0gCgoKIyA3MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUu
Mi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMKCgoKCgoKCgojIDg3
ICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCiMgOTcgIi91c3IvbGliL2djYy1saWIvaTU4
Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxs
b2MuaCIgMwoKIyAxMTUgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCgoKCgoKCgogCgoK
CgoKIAogCgoKCgoKCgoKCnRlbXBsYXRlIDxpbnQgX19pbnN0PgpjbGFzcyBfX21hbGxvY19hbGxv
Y190ZW1wbGF0ZSB7Cgpwcml2YXRlOgoKICBzdGF0aWMgdm9pZCogX1Nfb29tX21hbGxvYyhzaXpl
X3QpOwogIHN0YXRpYyB2b2lkKiBfU19vb21fcmVhbGxvYyh2b2lkKiwgc2l6ZV90KTsKCgogIHN0
YXRpYyB2b2lkICgqIF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyKSgpOwoKCnB1YmxpYzoKCiAg
c3RhdGljIHZvaWQqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgewogICAgdm9pZCogX19yZXN1bHQg
PSBtYWxsb2MoX19uKTsKICAgIGlmICgwID09IF9fcmVzdWx0KSBfX3Jlc3VsdCA9IF9TX29vbV9t
YWxsb2MoX19uKTsKICAgIHJldHVybiBfX3Jlc3VsdDsKICB9CgogIHN0YXRpYyB2b2lkIGRlYWxs
b2NhdGUodm9pZCogX19wLCBzaXplX3QgICkKICB7CiAgICBmcmVlKF9fcCk7CiAgfQoKICBzdGF0
aWMgdm9pZCogcmVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCAgLCBzaXplX3QgX19uZXdfc3op
CiAgewogICAgdm9pZCogX19yZXN1bHQgPSByZWFsbG9jKF9fcCwgX19uZXdfc3opOwogICAgaWYg
KDAgPT0gX19yZXN1bHQpIF9fcmVzdWx0ID0gX1Nfb29tX3JlYWxsb2MoX19wLCBfX25ld19zeik7
CiAgICByZXR1cm4gX19yZXN1bHQ7CiAgfQoKICBzdGF0aWMgdm9pZCAoKiBfX3NldF9tYWxsb2Nf
aGFuZGxlcih2b2lkICgqX19mKSgpKSkoKQogIHsKICAgIHZvaWQgKCogX19vbGQpKCkgPSBfX21h
bGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgIF9fbWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyID0g
X19mOwogICAgcmV0dXJuKF9fb2xkKTsKICB9Cgp9OwoKIAoKCnRlbXBsYXRlIDxpbnQgX19pbnN0
Pgp2b2lkICgqIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD46Ol9fbWFsbG9jX2FsbG9j
X29vbV9oYW5kbGVyKSgpID0gMDsKCgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCoKX19tYWxs
b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X1Nfb29tX21hbGxvYyhzaXplX3QgX19uKQp7CiAg
ICB2b2lkICgqIF9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICB2b2lkKiBfX3Jlc3VsdDsKCiAg
ICBmb3IgKDs7KSB7CiAgICAgICAgX19teV9tYWxsb2NfaGFuZGxlciA9IF9fbWFsbG9jX2FsbG9j
X29vbV9oYW5kbGVyOwogICAgICAgIGlmICgwID09IF9fbXlfbWFsbG9jX2hhbmRsZXIpIHsgY2Vy
ciA8PCAib3V0IG9mIG1lbW9yeSIgPDwgZW5kbDsgZXhpdCgxKSA7IH0KICAgICAgICAoKl9fbXlf
bWFsbG9jX2hhbmRsZXIpKCk7CiAgICAgICAgX19yZXN1bHQgPSBtYWxsb2MoX19uKTsKICAgICAg
ICBpZiAoX19yZXN1bHQpIHJldHVybihfX3Jlc3VsdCk7CiAgICB9Cn0KCnRlbXBsYXRlIDxpbnQg
X19pbnN0Pgp2b2lkKiBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+OjpfU19vb21fcmVh
bGxvYyh2b2lkKiBfX3AsIHNpemVfdCBfX24pCnsKICAgIHZvaWQgKCogX19teV9tYWxsb2NfaGFu
ZGxlcikoKTsKICAgIHZvaWQqIF9fcmVzdWx0OwoKICAgIGZvciAoOzspIHsKICAgICAgICBfX215
X21hbGxvY19oYW5kbGVyID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXI7CiAgICAgICAgaWYg
KDAgPT0gX19teV9tYWxsb2NfaGFuZGxlcikgeyBjZXJyIDw8ICJvdXQgb2YgbWVtb3J5IiA8PCBl
bmRsOyBleGl0KDEpIDsgfQogICAgICAgICgqX19teV9tYWxsb2NfaGFuZGxlcikoKTsKICAgICAg
ICBfX3Jlc3VsdCA9IHJlYWxsb2MoX19wLCBfX24pOwogICAgICAgIGlmIChfX3Jlc3VsdCkgcmV0
dXJuKF9fcmVzdWx0KTsKICAgIH0KfQoKdHlwZWRlZiBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTww
PiBtYWxsb2NfYWxsb2M7Cgp0ZW1wbGF0ZTxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KY2xhc3Mg
c2ltcGxlX2FsbG9jIHsKCnB1YmxpYzoKICAgIHN0YXRpYyBfVHAqIGFsbG9jYXRlKHNpemVfdCBf
X24pCiAgICAgIHsgcmV0dXJuIDAgPT0gX19uID8gMCA6IChfVHAqKSBfQWxsb2M6OmFsbG9jYXRl
KF9fbiAqIHNpemVvZiAoX1RwKSk7IH0KICAgIHN0YXRpYyBfVHAqIGFsbG9jYXRlKHZvaWQpCiAg
ICAgIHsgcmV0dXJuIChfVHAqKSBfQWxsb2M6OmFsbG9jYXRlKHNpemVvZiAoX1RwKSk7IH0KICAg
IHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUoX1RwKiBfX3AsIHNpemVfdCBfX24pCiAgICAgIHsgaWYg
KDAgIT0gX19uKSBfQWxsb2M6OmRlYWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YgKF9UcCkpOyB9
CiAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKF9UcCogX19wKQogICAgICB7IF9BbGxvYzo6ZGVh
bGxvY2F0ZShfX3AsIHNpemVvZiAoX1RwKSk7IH0KfTsKCiAKIAogCiAKIAp0ZW1wbGF0ZSA8Y2xh
c3MgX0FsbG9jPgpjbGFzcyBkZWJ1Z19hbGxvYyB7Cgpwcml2YXRlOgoKICBlbnVtIHtfU19leHRy
YSA9IDh9OyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAKCnB1YmxpYzoKCiAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgewog
ICAgY2hhciogX19yZXN1bHQgPSAoY2hhciopX0FsbG9jOjphbGxvY2F0ZShfX24gKyBfU19leHRy
YSk7CiAgICAqKHNpemVfdCopX19yZXN1bHQgPSBfX247CiAgICByZXR1cm4gX19yZXN1bHQgKyBf
U19leHRyYTsKICB9CgogIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3Qg
X19uKQogIHsKICAgIGNoYXIqIF9fcmVhbF9wID0gKGNoYXIqKV9fcCAtIF9TX2V4dHJhOwogICAg
KCh2b2lkKSAoKCAqKHNpemVfdCopX19yZWFsX3AgPT0gX19uICkgPyAwIDoJKF9fYXNzZXJ0X2Zh
aWwgKCIqKHNpemVfdCopX19yZWFsX3AgPT0gX19uIiAsCSIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9j
LmgiLCAyNjMsIF9fUFJFVFRZX0ZVTkNUSU9OX18gKSwgMCkpKSA7CiAgICBfQWxsb2M6OmRlYWxs
b2NhdGUoX19yZWFsX3AsIF9fbiArIF9TX2V4dHJhKTsKICB9CgogIHN0YXRpYyB2b2lkKiByZWFs
bG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fb2xkX3N6LCBzaXplX3QgX19uZXdfc3opCiAgewog
ICAgY2hhciogX19yZWFsX3AgPSAoY2hhciopX19wIC0gX1NfZXh0cmE7CiAgICAoKHZvaWQpICgo
ICooc2l6ZV90KilfX3JlYWxfcCA9PSBfX29sZF9zeiApID8gMCA6CShfX2Fzc2VydF9mYWlsICgi
KihzaXplX3QqKV9fcmVhbF9wID09IF9fb2xkX3N6IiAsCSIvdXNyL2xpYi9nY2MtbGliL2k1ODYt
bWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9j
LmgiLCAyNzAsIF9fUFJFVFRZX0ZVTkNUSU9OX18gKSwgMCkpKSA7CiAgICBjaGFyKiBfX3Jlc3Vs
dCA9IChjaGFyKikKICAgICAgX0FsbG9jOjpyZWFsbG9jYXRlKF9fcmVhbF9wLCBfX29sZF9zeiAr
IF9TX2V4dHJhLCBfX25ld19zeiArIF9TX2V4dHJhKTsKICAgICooc2l6ZV90KilfX3Jlc3VsdCA9
IF9fbmV3X3N6OwogICAgcmV0dXJuIF9fcmVzdWx0ICsgX1NfZXh0cmE7CiAgfQoKfTsKCgoKCgoK
CgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKCgoKCgoK
CnRlbXBsYXRlIDxib29sIHRocmVhZHMsIGludCBpbnN0PgpjbGFzcyBfX2RlZmF1bHRfYWxsb2Nf
dGVtcGxhdGUgewoKcHJpdmF0ZToKICAgCiAgIAoKICAgIGVudW0ge19BTElHTiA9IDh9OwogICAg
ZW51bSB7X01BWF9CWVRFUyA9IDEyOH07CiAgICBlbnVtIHtfTkZSRUVMSVNUUyA9IF9NQVhfQllU
RVMvX0FMSUdOfTsKCiAgc3RhdGljIHNpemVfdAogIF9TX3JvdW5kX3VwKHNpemVfdCBfX2J5dGVz
KQogICAgeyByZXR1cm4gKCgoX19ieXRlcykgKyBfQUxJR04tMSkgJiB+KF9BTElHTiAtIDEpKTsg
fQoKcHJpdmF0ZSA6CiAgdW5pb24gX09iaiB7CiAgICAgICAgdW5pb24gX09iaiogX01fZnJlZV9s
aXN0X2xpbms7CiAgICAgICAgY2hhciBfTV9jbGllbnRfZGF0YVsxXTsgICAgIAogIH07CnByaXZh
dGU6CgoKCgogICAgc3RhdGljIF9PYmoqIHZvbGF0aWxlICBfU19mcmVlX2xpc3RbX05GUkVFTElT
VFNdOwoKICBzdGF0aWMgIHNpemVfdCBfU19mcmVlbGlzdF9pbmRleChzaXplX3QgX19ieXRlcykg
ewogICAgICAgIHJldHVybiAoKChfX2J5dGVzKSArIF9BTElHTi0xKS9fQUxJR04gLSAxKTsKICB9
CgogICAKICBzdGF0aWMgdm9pZCogX1NfcmVmaWxsKHNpemVfdCBfX24pOwogICAKICAgCiAgc3Rh
dGljIGNoYXIqIF9TX2NodW5rX2FsbG9jKHNpemVfdCBfX3NpemUsIGludCYgX19ub2Jqcyk7Cgog
ICAKICBzdGF0aWMgY2hhciogX1Nfc3RhcnRfZnJlZTsKICBzdGF0aWMgY2hhciogX1NfZW5kX2Zy
ZWU7CiAgc3RhdGljIHNpemVfdCBfU19oZWFwX3NpemU7CgoKCgoKCgoKICAgIHN0YXRpYyBwdGhy
ZWFkX211dGV4X3QgX1Nfbm9kZV9hbGxvY2F0b3JfbG9jazsKCgoKCgoKIyAzODkgIi91c3IvbGli
L2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxsb2MuaCIgMwoKCiAgICBjbGFzcyBfTG9jayB7CiAgICAgICAgcHVibGljOgog
ICAgICAgICAgICBfTG9jaygpIHsgaWYgKHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhfbG9jaygmX1Nf
bm9kZV9hbGxvY2F0b3JfbG9jaykgOyB9CiAgICAgICAgICAgIH5fTG9jaygpIHsgaWYgKHRocmVh
ZHMpIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZfU19ub2RlX2FsbG9jYXRvcl9sb2NrKSA7IH0KICAg
IH07CiAgICBmcmllbmQgY2xhc3MgX0xvY2s7CgpwdWJsaWM6CgogICAKICBzdGF0aWMgdm9pZCog
YWxsb2NhdGUoc2l6ZV90IF9fbikKICB7CiAgICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9s
aXN0OwogICAgX09iaiogICBfX3Jlc3VsdDsKCiAgICBpZiAoX19uID4gKHNpemVfdCkgX01BWF9C
WVRFUykgewogICAgICAgIHJldHVybihtYWxsb2NfYWxsb2M6OmFsbG9jYXRlKF9fbikpOwogICAg
fQogICAgX19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChf
X24pOwogICAgIAogICAgIAogICAgIAoKICAgICAgICAgCiAgICAgICAgX0xvY2sgX19sb2NrX2lu
c3RhbmNlOwoKICAgIF9fcmVzdWx0ID0gKl9fbXlfZnJlZV9saXN0OwogICAgaWYgKF9fcmVzdWx0
ID09IDApIHsKICAgICAgICB2b2lkKiBfX3IgPSBfU19yZWZpbGwoX1Nfcm91bmRfdXAoX19uKSk7
CiAgICAgICAgcmV0dXJuIF9fcjsKICAgIH0KICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcmVzdWx0
IC0+IF9NX2ZyZWVfbGlzdF9saW5rOwogICAgcmV0dXJuIChfX3Jlc3VsdCk7CiAgfTsKCiAgIAog
IHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19uKQogIHsKICAgIF9P
YmoqIF9fcSA9IChfT2JqKilfX3A7CiAgICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0
OwoKICAgIGlmIChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB7CiAgICAgICAgbWFsbG9jX2Fs
bG9jOjpkZWFsbG9jYXRlKF9fcCwgX19uKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBfX215
X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAgICAg
CgogICAgICAgICAKICAgICAgICBfTG9jayBfX2xvY2tfaW5zdGFuY2U7CgogICAgX19xIC0+IF9N
X2ZyZWVfbGlzdF9saW5rID0gKl9fbXlfZnJlZV9saXN0OwogICAgKl9fbXlfZnJlZV9saXN0ID0g
X19xOwogICAgIAogIH0KCiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXpl
X3QgX19vbGRfc3osIHNpemVfdCBfX25ld19zeik7Cgp9IDsKCnR5cGVkZWYgX19kZWZhdWx0X2Fs
bG9jX3RlbXBsYXRlPCB0cnVlICwgMD4gYWxsb2M7CnR5cGVkZWYgX19kZWZhdWx0X2FsbG9jX3Rl
bXBsYXRlPGZhbHNlLCAwPiBzaW5nbGVfY2xpZW50X2FsbG9jOwoKCgogCiAKIAogCnRlbXBsYXRl
IDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KY2hhcioKX19kZWZhdWx0X2FsbG9jX3RlbXBs
YXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfY2h1bmtfYWxsb2Moc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50JiBfX25vYmpzKQp7CiAgICBjaGFyKiBfX3Jlc3VsdDsKICAgIHNpemVfdCBfX3RvdGFsX2J5
dGVzID0gX19zaXplICogX19ub2JqczsKICAgIHNpemVfdCBfX2J5dGVzX2xlZnQgPSBfU19lbmRf
ZnJlZSAtIF9TX3N0YXJ0X2ZyZWU7CgogICAgaWYgKF9fYnl0ZXNfbGVmdCA+PSBfX3RvdGFsX2J5
dGVzKSB7CiAgICAgICAgX19yZXN1bHQgPSBfU19zdGFydF9mcmVlOwogICAgICAgIF9TX3N0YXJ0
X2ZyZWUgKz0gX190b3RhbF9ieXRlczsKICAgICAgICByZXR1cm4oX19yZXN1bHQpOwogICAgfSBl
bHNlIGlmIChfX2J5dGVzX2xlZnQgPj0gX19zaXplKSB7CiAgICAgICAgX19ub2JqcyA9IChpbnQp
KF9fYnl0ZXNfbGVmdC9fX3NpemUpOwogICAgICAgIF9fdG90YWxfYnl0ZXMgPSBfX3NpemUgKiBf
X25vYmpzOwogICAgICAgIF9fcmVzdWx0ID0gX1Nfc3RhcnRfZnJlZTsKICAgICAgICBfU19zdGFy
dF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAgICAgICAgcmV0dXJuKF9fcmVzdWx0KTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgc2l6ZV90IF9fYnl0ZXNfdG9fZ2V0ID0KCSAgMiAqIF9fdG90YWxfYnl0
ZXMgKyBfU19yb3VuZF91cChfU19oZWFwX3NpemUgPj4gNCk7CiAgICAgICAgIAogICAgICAgIGlm
IChfX2J5dGVzX2xlZnQgPiAwKSB7CiAgICAgICAgICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9m
cmVlX2xpc3QgPQogICAgICAgICAgICAgICAgICAgICAgICBfU19mcmVlX2xpc3QgKyBfU19mcmVl
bGlzdF9pbmRleChfX2J5dGVzX2xlZnQpOwoKICAgICAgICAgICAgKChfT2JqKilfU19zdGFydF9m
cmVlKSAtPiBfTV9mcmVlX2xpc3RfbGluayA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAg
Kl9fbXlfZnJlZV9saXN0ID0gKF9PYmoqKV9TX3N0YXJ0X2ZyZWU7CiAgICAgICAgfQogICAgICAg
IF9TX3N0YXJ0X2ZyZWUgPSAoY2hhciopbWFsbG9jKF9fYnl0ZXNfdG9fZ2V0KTsKICAgICAgICBp
ZiAoMCA9PSBfU19zdGFydF9mcmVlKSB7CiAgICAgICAgICAgIHNpemVfdCBfX2k7CiAgICAgICAg
ICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3Q7CgkgICAgX09iaiogX19wOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKF9f
aSA9IF9fc2l6ZTsgX19pIDw9IF9NQVhfQllURVM7IF9faSArPSBfQUxJR04pIHsKICAgICAgICAg
ICAgICAgIF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgo
X19pKTsKICAgICAgICAgICAgICAgIF9fcCA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAg
ICAgIGlmICgwICE9IF9fcCkgewogICAgICAgICAgICAgICAgICAgICpfX215X2ZyZWVfbGlzdCA9
IF9fcCAtPiBfTV9mcmVlX2xpc3RfbGluazsKICAgICAgICAgICAgICAgICAgICBfU19zdGFydF9m
cmVlID0gKGNoYXIqKV9fcDsKICAgICAgICAgICAgICAgICAgICBfU19lbmRfZnJlZSA9IF9TX3N0
YXJ0X2ZyZWUgKyBfX2k7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuKF9TX2NodW5rX2FsbG9j
KF9fc2l6ZSwgX19ub2JqcykpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCSAgICBfU19lbmRfZnJlZSA9
IDA7CSAKICAgICAgICAgICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFyKiltYWxsb2NfYWxsb2M6OmFs
bG9jYXRlKF9fYnl0ZXNfdG9fZ2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAKICAgICAgICB9CiAgICAgICAgX1NfaGVhcF9zaXplICs9IF9fYnl0ZXNfdG9fZ2V0
OwogICAgICAgIF9TX2VuZF9mcmVlID0gX1Nfc3RhcnRfZnJlZSArIF9fYnl0ZXNfdG9fZ2V0Owog
ICAgICAgIHJldHVybihfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMpKTsKICAgIH0KfQoK
CiAKIAogCnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4Kdm9pZCoKX19kZWZh
dWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfcmVmaWxsKHNpemVfdCBf
X24pCnsKICAgIGludCBfX25vYmpzID0gMjA7CiAgICBjaGFyKiBfX2NodW5rID0gX1NfY2h1bmtf
YWxsb2MoX19uLCBfX25vYmpzKTsKICAgIF9PYmoqIHZvbGF0aWxlICogX19teV9mcmVlX2xpc3Q7
CiAgICBfT2JqKiBfX3Jlc3VsdDsKICAgIF9PYmoqIF9fY3VycmVudF9vYmo7CiAgICBfT2JqKiBf
X25leHRfb2JqOwogICAgaW50IF9faTsKCiAgICBpZiAoMSA9PSBfX25vYmpzKSByZXR1cm4oX19j
aHVuayk7CiAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2lu
ZGV4KF9fbik7CgogICAgIAogICAgICBfX3Jlc3VsdCA9IChfT2JqKilfX2NodW5rOwogICAgICAq
X19teV9mcmVlX2xpc3QgPSBfX25leHRfb2JqID0gKF9PYmoqKShfX2NodW5rICsgX19uKTsKICAg
ICAgZm9yIChfX2kgPSAxOyA7IF9faSsrKSB7CiAgICAgICAgX19jdXJyZW50X29iaiA9IF9fbmV4
dF9vYmo7CiAgICAgICAgX19uZXh0X29iaiA9IChfT2JqKikoKGNoYXIqKV9fbmV4dF9vYmogKyBf
X24pOwogICAgICAgIGlmIChfX25vYmpzIC0gMSA9PSBfX2kpIHsKICAgICAgICAgICAgX19jdXJy
ZW50X29iaiAtPiBfTV9mcmVlX2xpc3RfbGluayA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9fY3VycmVudF9vYmogLT4gX01fZnJlZV9saXN0X2xp
bmsgPSBfX25leHRfb2JqOwogICAgICAgIH0KICAgICAgfQogICAgcmV0dXJuKF9fcmVzdWx0KTsK
fQoKdGVtcGxhdGUgPGJvb2wgdGhyZWFkcywgaW50IGluc3Q+CnZvaWQqCl9fZGVmYXVsdF9hbGxv
Y190ZW1wbGF0ZTx0aHJlYWRzLCBpbnN0Pjo6cmVhbGxvY2F0ZSh2b2lkKiBfX3AsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vbGRf
c3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uZXdfc3opCnsKICAgIHZvaWQqIF9fcmVzdWx0OwogICAgc2l6ZV90IF9fY29weV9z
ejsKCiAgICBpZiAoX19vbGRfc3ogPiAoc2l6ZV90KSBfTUFYX0JZVEVTICYmIF9fbmV3X3N6ID4g
KHNpemVfdCkgX01BWF9CWVRFUykgewogICAgICAgIHJldHVybihyZWFsbG9jKF9fcCwgX19uZXdf
c3opKTsKICAgIH0KICAgIGlmIChfU19yb3VuZF91cChfX29sZF9zeikgPT0gX1Nfcm91bmRfdXAo
X19uZXdfc3opKSByZXR1cm4oX19wKTsKICAgIF9fcmVzdWx0ID0gYWxsb2NhdGUoX19uZXdfc3op
OwogICAgX19jb3B5X3N6ID0gX19uZXdfc3ogPiBfX29sZF9zej8gX19vbGRfc3ogOiBfX25ld19z
ejsKICAgIG1lbWNweShfX3Jlc3VsdCwgX19wLCBfX2NvcHlfc3opOwogICAgZGVhbGxvY2F0ZShf
X3AsIF9fb2xkX3N6KTsKICAgIHJldHVybihfX3Jlc3VsdCk7Cn0KCgogICAgdGVtcGxhdGUgPGJv
b2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgogICAgcHRocmVhZF9tdXRleF90CiAgICBfX2RlZmF1
bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19ub2RlX2FsbG9jYXRvcl9s
b2NrCiAgICAgICAgPSB7MCwgMCwgMCwgUFRIUkVBRF9NVVRFWF9GQVNUX05QLCB7MCwgMH19IDsK
CgoKCgoKCgoKIyA2MDIgIi91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1
LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKCiMgNjg5ICIvdXNy
L2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBf
X2luc3Q+CmNoYXIqIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46
Ol9TX3N0YXJ0X2ZyZWUgPSAwOwoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0
PgpjaGFyKiBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19l
bmRfZnJlZSA9IDA7Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnNpemVf
dCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19oZWFwX3Np
emUgPSAwOwoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpfX2RlZmF1bHRf
YWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfT2JqKiB2b2xhdGlsZSAKX19kZWZh
dWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiA6Ol9TX2ZyZWVfbGlzdFsKICAg
IF9ORlJFRUxJU1RTCl0gPSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgfTsKIAogCiAKCgoKCgoKCgoKCiAKIAogCiAKIAogCiAKCgoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4KY2xhc3MgYWxsb2NhdG9yIHsKICB0eXBlZGVmIGFsbG9jIF9BbGxvYzsgICAgICAg
ICAgIApwdWJsaWM6CiAgdHlwZWRlZiBzaXplX3QgICAgIHNpemVfdHlwZTsKICB0eXBlZGVmIHB0
cmRpZmZfdCAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICBwb2ludGVyOwog
IHR5cGVkZWYgY29uc3QgX1RwKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICBy
ZWZlcmVuY2U7CiAgdHlwZWRlZiBjb25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBlZGVm
IF9UcCAgICAgICAgdmFsdWVfdHlwZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0cnVjdCBy
ZWJpbmQgewogICAgdHlwZWRlZiBhbGxvY2F0b3I8X1RwMT4gb3RoZXI7CiAgfTsKCiAgYWxsb2Nh
dG9yKCkgdGhyb3coKSAge30KICBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yJikgdGhyb3coKSAg
e30KICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gYWxsb2NhdG9yKGNvbnN0IGFsbG9jYXRvcjxfVHAx
PiYpIHRocm93KCkgIHt9CiAgfmFsbG9jYXRvcigpIHRocm93KCkgIHt9CgogIHBvaW50ZXIgYWRk
cmVzcyhyZWZlcmVuY2UgX194KSBjb25zdCB7IHJldHVybiAmX194OyB9CiAgY29uc3RfcG9pbnRl
ciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCiAg
IAogICAKICBfVHAqIGFsbG9jYXRlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0gMCkgewog
ICAgcmV0dXJuIF9fbiAhPSAwID8gc3RhdGljX2Nhc3Q8X1RwKj4oX0FsbG9jOjphbGxvY2F0ZShf
X24gKiBzaXplb2YoX1RwKSkpCiAgICAgICAgICAgICAgICAgICAgOiAwOwogIH0KCiAgIAogIHZv
aWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlIF9fbikKICAgIHsgX0FsbG9jOjpk
ZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mKF9UcCkpOyB9CgogIHNpemVfdHlwZSBtYXhfc2l6
ZSgpIGNvbnN0IHRocm93KCkgCiAgICB7IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7
IH0KCiAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwpIHsgbmV3
KF9fcCkgX1RwKF9fdmFsKTsgfQogIHZvaWQgZGVzdHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5f
VHAoKTsgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBhbGxvY2F0b3I8dm9pZD4gewogIHR5cGVkZWYg
c2l6ZV90ICAgICAgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICAgZGlmZmVyZW5jZV90
eXBlOwogIHR5cGVkZWYgdm9pZCogICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZvaWQq
IGNvbnN0X3BvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICB2YWx1ZV90eXBlOwoKICB0ZW1w
bGF0ZSA8Y2xhc3MgX1RwMT4gc3RydWN0IHJlYmluZCB7CiAgICB0eXBlZGVmIGFsbG9jYXRvcjxf
VHAxPiBvdGhlcjsKICB9Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0IGFsbG9jYXRv
cjxfVDI+JikKewogIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBf
VDI+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBh
bGxvY2F0b3I8X1QyPiYpCnsKICByZXR1cm4gZmFsc2U7Cn0KCiAKIAogCiAKIAogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnN0cnVjdCBfX2FsbG9jYXRvciB7CiAgX0FsbG9j
IF9fdW5kZXJseWluZ19hbGxvYzsKCiAgdHlwZWRlZiBzaXplX3QgICAgc2l6ZV90eXBlOwogIHR5
cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgcG9p
bnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYg
ICAgICAgcmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAg
dHlwZWRlZiBfVHAgICAgICAgIHZhbHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBz
dHJ1Y3QgcmViaW5kIHsKICAgIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0FsbG9jPiBvdGhl
cjsKICB9OwoKICBfX2FsbG9jYXRvcigpIHRocm93KCkgIHt9CiAgX19hbGxvY2F0b3IoY29uc3Qg
X19hbGxvY2F0b3ImIF9fYSkgdGhyb3coKSAKICAgIDogX191bmRlcmx5aW5nX2FsbG9jKF9fYS5f
X3VuZGVybHlpbmdfYWxsb2MpIHt9CiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+CiAgX19hbGxvY2F0
b3IoY29uc3QgX19hbGxvY2F0b3I8X1RwMSwgX0FsbG9jPiYgX19hKSB0aHJvdygpIAogICAgOiBf
X3VuZGVybHlpbmdfYWxsb2MoX19hLl9fdW5kZXJseWluZ19hbGxvYykge30KICB+X19hbGxvY2F0
b3IoKSB0aHJvdygpICB7fQoKICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3Qg
eyByZXR1cm4gJl9feDsgfQogIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2Ug
X194KSBjb25zdCB7IHJldHVybiAmX194OyB9CgogICAKICBfVHAqIGFsbG9jYXRlKHNpemVfdHlw
ZSBfX24sIGNvbnN0IHZvaWQqID0gMCkgewogICAgcmV0dXJuIF9fbiAhPSAwCiAgICAgICAgPyBz
dGF0aWNfY2FzdDxfVHAqPihfX3VuZGVybHlpbmdfYWxsb2MuYWxsb2NhdGUoX19uICogc2l6ZW9m
KF9UcCkpKQogICAgICAgIDogMDsKICB9CgogICAKICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBf
X3AsIHNpemVfdHlwZSBfX24pCiAgICB7IF9fdW5kZXJseWluZ19hbGxvYy5kZWFsbG9jYXRlKF9f
cCwgX19uICogc2l6ZW9mKF9UcCkpOyB9CgogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRo
cm93KCkgCiAgICB7IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KCiAgdm9pZCBj
b25zdHJ1Y3QocG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwpIHsgbmV3KF9fcCkgX1RwKF9f
dmFsKTsgfQogIHZvaWQgZGVzdHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KY2xhc3MgX19hbGxvY2F0b3I8dm9pZCwgX0FsbG9jPiB7
CiAgdHlwZWRlZiBzaXplX3QgICAgICBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICBk
aWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYg
Y29uc3Qgdm9pZCogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgIHZhbHVlX3R5
cGU7CgogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5cGVkZWYg
X19hbGxvY2F0b3I8X1RwMSwgX0FsbG9jPiBvdGhlcjsKICB9Owp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9UcCwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9fYWxsb2Nh
dG9yPF9UcCwgX0FsbG9jPiYgX19hMSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2Fs
bG9jYXRvcjxfVHAsIF9BbGxvYz4mIF9fYTIpCnsKICByZXR1cm4gX19hMS5fX3VuZGVybHlpbmdf
YWxsb2MgPT0gX19hMi5fX3VuZGVybHlpbmdfYWxsb2M7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX19hbGxvY2F0b3I8
X1RwLCBfQWxsb2M+JiBfX2ExLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxsb2Nh
dG9yPF9UcCwgX0FsbG9jPiYgX19hMikKewogIHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19hbGxv
YyAhPSBfX2EyLl9fdW5kZXJseWluZ19hbGxvYzsKfQoKCiAKIAogCgp0ZW1wbGF0ZSA8aW50IGlu
c3Q+CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8
aW5zdD4mLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fbWFsbG9jX2FsbG9jX3RlbXBs
YXRlPGluc3Q+JikKewogIHJldHVybiB0cnVlOwp9CgoKdGVtcGxhdGUgPGludCBfX2luc3Q+Cmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0
PiYsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8
X19pbnN0PiYpCnsKICByZXR1cm4gZmFsc2U7Cn0KCgoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRz
LCBpbnQgX19pbnN0PgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9fZGVmYXVsdF9hbGxv
Y190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mLAogICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mKQp7CiAgcmV0
dXJuIHRydWU7Cn0KCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFk
cywgX19pbnN0PiYsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX19kZWZhdWx0X2FsbG9j
X3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYpCnsKICByZXR1cm4gZmFsc2U7Cn0KCgoKdGVt
cGxhdGUgPGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBkZWJ1Z19h
bGxvYzxfQWxsb2M+JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWJ1Z19hbGxvYzxf
QWxsb2M+JikgewogIHJldHVybiB0cnVlOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JiwKICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JikgewogIHJldHVybiBmYWxz
ZTsKfQoKCiAKIAogCiAKIAogCgogCiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCgog
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2NhdG9yPgpzdHJ1Y3QgX0FsbG9jX3Ry
YWl0cwp7CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gZmFsc2U7CiAgdHlw
ZWRlZiB0eXBlbmFtZSBfQWxsb2NhdG9yOjogICByZWJpbmQ8X1RwPjo6b3RoZXIKICAgICAgICAg
IGFsbG9jYXRvcl90eXBlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRv
cj4KY29uc3QgYm9vbCBfQWxsb2NfdHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46Ol9TX2luc3RhbmNl
bGVzczsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDE+CnN0cnVjdCBfQWxsb2Nf
dHJhaXRzPF9UcCwgYWxsb2NhdG9yPF9UcDE+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2lu
c3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBhbGxvYz4gX0Fs
bG9jX3R5cGU7CiAgdHlwZWRlZiBhbGxvY2F0b3I8X1RwPiBhbGxvY2F0b3JfdHlwZTsKfTsKCiAK
CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9U
cCwgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+CnsKICBzdGF0aWMgY29uc3QgYm9v
bCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX19t
YWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+IF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19h
bGxvY2F0b3I8X1RwLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gYWxsb2NhdG9y
X3R5cGU7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgYm9vbCBfX3RocmVhZHMsIGludCBfX2lu
c3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9f
dGhyZWFkcywgX19pbnN0PiA+CnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3Mg
PSB0cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBs
YXRlPF9fdGhyZWFkcywgX19pbnN0PiA+CiAgICAgICAgICBfQWxsb2NfdHlwZTsKICB0eXBlZGVm
IF9fYWxsb2NhdG9yPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19p
bnN0PiA+CiAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBjbGFzcyBfQWxsb2M+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgZGVidWdfYWxsb2M8X0Fs
bG9jPiA+CnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5
cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+IF9BbGxvY190eXBl
OwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gYWxsb2Nh
dG9yX3R5cGU7Cn07CgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEsIGludCBf
X2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwKICAgICAgICAgICAgICAgICAgICAgX19h
bGxvY2F0b3I8X1RwMSwgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+ID4KewogIHN0
YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVf
YWxsb2M8X1RwLCBfX21hbGxvY19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gX0FsbG9jX3R5cGU7
CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5z
dD4gPiBhbGxvY2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVHAx
LCBib29sIF9fdGhyLCBpbnQgX19pbnN0PgpzdHJ1Y3QgX0FsbG9jX3RyYWl0czxfVHAsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2FsbG9jYXRvcjxfVHAxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyLCBfX2luc3Q+ID4gPgp7
CiAgc3RhdGljIGNvbnN0IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNp
bXBsZV9hbGxvYzxfVHAsIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4K
ICAgICAgICAgIF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX2RlZmF1
bHRfYWxsb2NfdGVtcGxhdGU8X190aHIsX19pbnN0PiA+CiAgICAgICAgICBhbGxvY2F0b3JfdHlw
ZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVHAxLCBjbGFzcyBfQWxsb2M+CnN0
cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19hbGxvY2F0b3I8X1RwMSwgZGVidWdfYWxsb2M8X0Fs
bG9jPiA+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAg
dHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gX0FsbG9jX3R5
cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRvcjxfVHAsIGRlYnVnX2FsbG9jPF9BbGxvYz4gPiBhbGxv
Y2F0b3JfdHlwZTsKfTsKCgoKCgoKCgogCgoKCgoKIAogCiAKIyAyMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2Fs
bG9jLmgiIDIgMwoKCgojIDQwICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgv
Mi45NS4yLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMwoKCgoKIAogCiAKIyAz
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL2xpc3QuaCIgMiAzCgojIDEgIi91c3IvbGliL2djYy1saWIvaTU4Ni1t
YW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfbGlzdC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBfTGlzdF9ub2RlIHsKICB0eXBlZGVmIHZvaWQqIF9Wb2lkX3Bv
aW50ZXI7CiAgX1ZvaWRfcG9pbnRlciBfTV9uZXh0OwogIF9Wb2lkX3BvaW50ZXIgX01fcHJldjsK
ICBfVHAgX01fZGF0YTsKfTsKCnRlbXBsYXRlPGNsYXNzIF9UcCwgY2xhc3MgX1JlZiwgY2xhc3Mg
X1B0cj4Kc3RydWN0IF9MaXN0X2l0ZXJhdG9yIHsKICB0eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9U
cCxfVHAmLF9UcCo+ICAgICAgICAgICAgIGl0ZXJhdG9yOwogIHR5cGVkZWYgX0xpc3RfaXRlcmF0
b3I8X1RwLGNvbnN0IF9UcCYsY29uc3QgX1RwKj4gY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiBf
TGlzdF9pdGVyYXRvcjxfVHAsX1JlZixfUHRyPiAgICAgICAgICAgICBfU2VsZjsKCiAgdHlwZWRl
ZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVm
IF9UcCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX1B0ciBwb2ludGVyOwogIHR5cGVkZWYgX1JlZiBy
ZWZlcmVuY2U7CiAgdHlwZWRlZiBfTGlzdF9ub2RlPF9UcD4gX05vZGU7CiAgdHlwZWRlZiBzaXpl
X3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKCiAgX05v
ZGUqIF9NX25vZGU7CgogIF9MaXN0X2l0ZXJhdG9yKF9Ob2RlKiBfX3gpIDogX01fbm9kZShfX3gp
IHt9CiAgX0xpc3RfaXRlcmF0b3IoKSB7fQogIF9MaXN0X2l0ZXJhdG9yKGNvbnN0IGl0ZXJhdG9y
JiBfX3gpIDogX01fbm9kZShfX3guX01fbm9kZSkge30KCiAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IF9TZWxmJiBfX3gpIGNvbnN0IHsgcmV0dXJuIF9NX25vZGUgPT0gX194Ll9NX25vZGU7IH0KICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgX1NlbGYmIF9feCkgY29uc3QgeyByZXR1cm4gX01fbm9kZSAh
PSBfX3guX01fbm9kZTsgfQogIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAo
Kl9NX25vZGUpLl9NX2RhdGE7IH0KCgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuICYob3BlcmF0b3IqKCkpOyB9CgoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsgCiAgICBfTV9u
b2RlID0gKF9Ob2RlKikoX01fbm9kZS0+X01fbmV4dCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQog
IF9TZWxmIG9wZXJhdG9yKysoaW50KSB7IAogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsr
KnRoaXM7CiAgICByZXR1cm4gX190bXA7CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkgeyAKICAg
IF9NX25vZGUgPSAoX05vZGUqKShfTV9ub2RlLT5fTV9wcmV2KTsKICAgIHJldHVybiAqdGhpczsK
ICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsgCiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwog
ICAgLS0qdGhpczsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07CgojIDEyMCAiL3Vzci9saWIvZ2Nj
LWxpYi9pNTg2LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF9saXN0LmgiIDMKCgoKIAogCiAKIAogCiAKCgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBj
bGFzcyBfQWxsb2NhdG9yLCBib29sIF9Jc1N0YXRpYz4KY2xhc3MgX0xpc3RfYWxsb2NfYmFzZSB7
CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvY190cmFpdHM8X1RwLCBfQWxsb2NhdG9y
Pjo6YWxsb2NhdG9yX3R5cGUKICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90
eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBfTm9kZV9hbGxvY2F0b3I7IH0KCiAg
X0xpc3RfYWxsb2NfYmFzZShjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKSA6IF9Ob2RlX2FsbG9j
YXRvcihfX2EpIHt9Cgpwcm90ZWN0ZWQ6CiAgX0xpc3Rfbm9kZTxfVHA+KiBfTV9nZXRfbm9kZSgp
CiAgIHsgcmV0dXJuIF9Ob2RlX2FsbG9jYXRvci5hbGxvY2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0
X25vZGUoX0xpc3Rfbm9kZTxfVHA+KiBfX3ApCiAgICB7IF9Ob2RlX2FsbG9jYXRvci5kZWFsbG9j
YXRlKF9fcCwgMSk7IH0KCnByb3RlY3RlZDoKICB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzPF9MaXN0
X25vZGU8X1RwPiwgX0FsbG9jYXRvcj46OmFsbG9jYXRvcl90eXBlCiAgICAgICAgICAgX05vZGVf
YWxsb2NhdG9yOwogIF9MaXN0X25vZGU8X1RwPiogX01fbm9kZTsKfTsKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3I+CmNsYXNzIF9MaXN0X2FsbG9jX2Jhc2U8X1RwLCBf
QWxsb2NhdG9yLCB0cnVlPiB7CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvY190cmFp
dHM8X1RwLCBfQWxsb2NhdG9yPjo6YWxsb2NhdG9yX3R5cGUKICAgICAgICAgIGFsbG9jYXRvcl90
eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBhbGxv
Y2F0b3JfdHlwZSgpOyB9CgogIF9MaXN0X2FsbG9jX2Jhc2UoY29uc3QgYWxsb2NhdG9yX3R5cGUm
KSB7fQoKcHJvdGVjdGVkOgogIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfTGlzdF9u
b2RlPF9UcD4sIF9BbGxvY2F0b3I+OjpfQWxsb2NfdHlwZQogICAgICAgICAgX0FsbG9jX3R5cGU7
CiAgX0xpc3Rfbm9kZTxfVHA+KiBfTV9nZXRfbm9kZSgpIHsgcmV0dXJuIF9BbGxvY190eXBlOjph
bGxvY2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0X25vZGUoX0xpc3Rfbm9kZTxfVHA+KiBfX3ApIHsg
X0FsbG9jX3R5cGU6OmRlYWxsb2NhdGUoX19wLCAxKTsgfQoKcHJvdGVjdGVkOgogIF9MaXN0X25v
ZGU8X1RwPiogX01fbm9kZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4K
Y2xhc3MgX0xpc3RfYmFzZSAKICA6IHB1YmxpYyBfTGlzdF9hbGxvY19iYXNlPF9UcCwgX0FsbG9j
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46
Ol9TX2luc3RhbmNlbGVzcz4KewpwdWJsaWM6CiAgdHlwZWRlZiBfTGlzdF9hbGxvY19iYXNlPF9U
cCwgX0FsbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfQWxsb2NfdHJhaXRzPF9UcCwg
X0FsbG9jPjo6X1NfaW5zdGFuY2VsZXNzPgogICAgICAgICAgX0Jhc2U7IAogIHR5cGVkZWYgdHlw
ZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRvcl90eXBlOwoKICBfTGlzdF9iYXNl
KGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpIDogX0Jhc2UoX19hKSB7CiAgICBfTV9ub2RlID0g
X01fZ2V0X25vZGUoKTsKICAgIF9NX25vZGUtPl9NX25leHQgPSBfTV9ub2RlOwogICAgX01fbm9k
ZS0+X01fcHJldiA9IF9NX25vZGU7CiAgfQogIH5fTGlzdF9iYXNlKCkgewogICAgY2xlYXIoKTsK
ICAgIF9NX3B1dF9ub2RlKF9NX25vZGUpOwogIH0KCiAgdm9pZCBjbGVhcigpOwp9OwoKIyAyMjkg
Ii91c3IvbGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfbGlzdC5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0FsbG9jPgp2b2lkIApfTGlzdF9iYXNlPF9UcCxfQWxsb2M+OjpjbGVhcigpIAp7CiAgX0xpc3Rf
bm9kZTxfVHA+KiBfX2N1ciA9IChfTGlzdF9ub2RlPF9UcD4qKSBfTV9ub2RlLT5fTV9uZXh0Owog
IHdoaWxlIChfX2N1ciAhPSBfTV9ub2RlKSB7CiAgICBfTGlzdF9ub2RlPF9UcD4qIF9fdG1wID0g
X19jdXI7CiAgICBfX2N1ciA9IChfTGlzdF9ub2RlPF9UcD4qKSBfX2N1ci0+X01fbmV4dDsKICAg
IGRlc3Ryb3koJl9fdG1wLT5fTV9kYXRhKTsKICAgIF9NX3B1dF9ub2RlKF9fdG1wKTsKICB9CiAg
X01fbm9kZS0+X01fbmV4dCA9IF9NX25vZGU7CiAgX01fbm9kZS0+X01fcHJldiA9IF9NX25vZGU7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1RwID4g
ID4KY2xhc3MgbGlzdCA6IHByb3RlY3RlZCBfTGlzdF9iYXNlPF9UcCwgX0FsbG9jPiB7CiAgdHlw
ZWRlZiBfTGlzdF9iYXNlPF9UcCwgX0FsbG9jPiBfQmFzZTsKcHJvdGVjdGVkOgogIHR5cGVkZWYg
dm9pZCogX1ZvaWRfcG9pbnRlcjsKCnB1YmxpYzogICAgICAKICB0eXBlZGVmIF9UcCB2YWx1ZV90
eXBlOwogIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVl
X3R5cGUqIGNvbnN0X3BvaW50ZXI7CiAgdHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7CiAg
dHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiBjb25zdF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBfTGlz
dF9ub2RlPF9UcD4gX05vZGU7CiAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYg
cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKCiAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6YWxs
b2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7CiAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRv
cigpIGNvbnN0IHsgcmV0dXJuIF9CYXNlOjpnZXRfYWxsb2NhdG9yKCk7IH0KCnB1YmxpYzoKICB0
eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9UcCxfVHAmLF9UcCo+ICAgICAgICAgICAgIGl0ZXJhdG9y
OwogIHR5cGVkZWYgX0xpc3RfaXRlcmF0b3I8X1RwLGNvbnN0IF9UcCYsY29uc3QgX1RwKj4gY29u
c3RfaXRlcmF0b3I7CgoKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPGl0ZXJh
dG9yPiAgICAgICByZXZlcnNlX2l0ZXJhdG9yOwoKCgoKCgoKCgpwcm90ZWN0ZWQ6CgogIHVzaW5n
IF9CYXNlOjpfTV9ub2RlOwogIHVzaW5nIF9CYXNlOjpfTV9wdXRfbm9kZTsKICB1c2luZyBfQmFz
ZTo6X01fZ2V0X25vZGU7CgoKcHJvdGVjdGVkOgogIF9Ob2RlKiBfTV9jcmVhdGVfbm9kZShjb25z
dCBfVHAmIF9feCkKICB7CiAgICBfTm9kZSogX19wID0gX01fZ2V0X25vZGUoKTsKICAgIHRyeSAg
ewogICAgICBjb25zdHJ1Y3QoJl9fcC0+X01fZGF0YSwgX194KTsKICAgIH0KICAgIGNhdGNoKC4u
LikgeyAgX01fcHV0X25vZGUoX19wKSA7IHRocm93OyB9IDsKICAgIHJldHVybiBfX3A7CiAgfQoK
ICBfTm9kZSogX01fY3JlYXRlX25vZGUoKQogIHsKICAgIF9Ob2RlKiBfX3AgPSBfTV9nZXRfbm9k
ZSgpOwogICAgdHJ5ICB7CiAgICAgIGNvbnN0cnVjdCgmX19wLT5fTV9kYXRhKTsKICAgIH0KICAg
IGNhdGNoKC4uLikgeyAgX01fcHV0X25vZGUoX19wKSA7IHRocm93OyB9IDsKICAgIHJldHVybiBf
X3A7CiAgfQoKcHVibGljOgogIGV4cGxpY2l0IGxpc3QoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9f
YSA9IGFsbG9jYXRvcl90eXBlKCkpIDogX0Jhc2UoX19hKSB7fQoKICBpdGVyYXRvciBiZWdpbigp
ICAgICAgICAgICAgIHsgcmV0dXJuIChfTm9kZSopKF9NX25vZGUtPl9NX25leHQpOyB9CiAgY29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiAoX05vZGUqKShfTV9ub2RlLT5fTV9u
ZXh0KTsgfQoKICBpdGVyYXRvciBlbmQoKSAgICAgICAgICAgICB7IHJldHVybiBfTV9ub2RlOyB9
CiAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gX01fbm9kZTsgfQoKICByZXZl
cnNlX2l0ZXJhdG9yIHJiZWdpbigpIAogICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQo
KSk7IH0KICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IAogICAgeyByZXR1
cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KCiAgcmV2ZXJzZV9pdGVyYXRvciBy
ZW5kKCkKICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9p
dGVyYXRvcihiZWdpbigpKTsgfQoKICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01fbm9k
ZS0+X01fbmV4dCA9PSBfTV9ub2RlOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7CiAgICBz
aXplX3R5cGUgX19yZXN1bHQgPSAwOwogICAgZGlzdGFuY2UoYmVnaW4oKSwgZW5kKCksIF9fcmVz
dWx0KTsKICAgIHJldHVybiBfX3Jlc3VsdDsKICB9CiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29u
c3QgeyByZXR1cm4gc2l6ZV90eXBlKC0xKTsgfQoKICByZWZlcmVuY2UgZnJvbnQoKSB7IHJldHVy
biAqYmVnaW4oKTsgfQogIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IHsgcmV0dXJuICpi
ZWdpbigpOyB9CiAgcmVmZXJlbmNlIGJhY2soKSB7IHJldHVybiAqKC0tZW5kKCkpOyB9CiAgY29u
c3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCB7IHJldHVybiAqKC0tZW5kKCkpOyB9CgogIHZvaWQg
c3dhcChsaXN0PF9UcCwgX0FsbG9jPiYgX194KSB7ICA6OnN3YXAoX01fbm9kZSwgX194Ll9NX25v
ZGUpOyB9CgogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVHAm
IF9feCkgewogICAgX05vZGUqIF9fdG1wID0gX01fY3JlYXRlX25vZGUoX194KTsKICAgIF9fdG1w
LT5fTV9uZXh0ID0gX19wb3NpdGlvbi5fTV9ub2RlOwogICAgX190bXAtPl9NX3ByZXYgPSBfX3Bv
c2l0aW9uLl9NX25vZGUtPl9NX3ByZXY7CiAgICAoKF9Ob2RlKikgKF9fcG9zaXRpb24uX01fbm9k
ZS0+X01fcHJldikpLT5fTV9uZXh0ID0gX190bXA7CiAgICBfX3Bvc2l0aW9uLl9NX25vZGUtPl9N
X3ByZXYgPSBfX3RtcDsKICAgIHJldHVybiBfX3RtcDsKICB9CiAgaXRlcmF0b3IgaW5zZXJ0KGl0
ZXJhdG9yIF9fcG9zaXRpb24pIHsgcmV0dXJuIGluc2VydChfX3Bvc2l0aW9uLCBfVHAoKSk7IH0K
CiAgIAoKICB0ZW1wbGF0ZTxjbGFzcyBfSW50ZWdlcj4KICB2b2lkIF9NX2luc2VydF9kaXNwYXRj
aChpdGVyYXRvciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgX190cnVlX3R5cGUpIHsKICAgIGluc2VydChfX3BvcywgKHNpemVfdHlw
ZSkgX19uLCAoX1RwKSBfX3gpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9y
PgogIHZvaWQgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUpOwoKICB0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBpbnNlcnQoaXRlcmF0b3IgX19wb3MsIF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkgewogICAgdHlwZWRlZiB0
eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7
CiAgICBfTV9pbnNlcnRfZGlzcGF0Y2goX19wb3MsIF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFs
KCkpOwogIH0KCgoKCgoKICB2b2lkIGluc2VydChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9f
biwgY29uc3QgX1RwJiBfX3gpOwogCiAgdm9pZCBwdXNoX2Zyb250KGNvbnN0IF9UcCYgX194KSB7
IGluc2VydChiZWdpbigpLCBfX3gpOyB9CiAgdm9pZCBwdXNoX2Zyb250KCkge2luc2VydChiZWdp
bigpKTt9CiAgdm9pZCBwdXNoX2JhY2soY29uc3QgX1RwJiBfX3gpIHsgaW5zZXJ0KGVuZCgpLCBf
X3gpOyB9CiAgdm9pZCBwdXNoX2JhY2soKSB7aW5zZXJ0KGVuZCgpKTt9CgogIGl0ZXJhdG9yIGVy
YXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24pIHsKICAgIF9Ob2RlKiBfX25leHRfbm9kZSA9IChfTm9k
ZSopIChfX3Bvc2l0aW9uLl9NX25vZGUtPl9NX25leHQpOwogICAgX05vZGUqIF9fcHJldl9ub2Rl
ID0gKF9Ob2RlKikgKF9fcG9zaXRpb24uX01fbm9kZS0+X01fcHJldik7CiAgICBfX3ByZXZfbm9k
ZS0+X01fbmV4dCA9IF9fbmV4dF9ub2RlOwogICAgX19uZXh0X25vZGUtPl9NX3ByZXYgPSBfX3By
ZXZfbm9kZTsKICAgIGRlc3Ryb3koJl9fcG9zaXRpb24uX01fbm9kZS0+X01fZGF0YSk7CiAgICBf
TV9wdXRfbm9kZShfX3Bvc2l0aW9uLl9NX25vZGUpOwogICAgcmV0dXJuIGl0ZXJhdG9yKF9fbmV4
dF9ub2RlKTsKICB9CiAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3Ig
X19sYXN0KTsKICB2b2lkIGNsZWFyKCkgeyBfQmFzZTo6Y2xlYXIoKTsgfQoKICB2b2lkIHJlc2l6
ZShzaXplX3R5cGUgX19uZXdfc2l6ZSwgY29uc3QgX1RwJiBfX3gpOwogIHZvaWQgcmVzaXplKHNp
emVfdHlwZSBfX25ld19zaXplKSB7IHJlc2l6ZShfX25ld19zaXplLCBfVHAoKSk7IH0KCiAgdm9p
ZCBwb3BfZnJvbnQoKSB7IGVyYXNlKGJlZ2luKCkpOyB9CiAgdm9pZCBwb3BfYmFjaygpIHsgCiAg
ICBpdGVyYXRvciBfX3RtcCA9IGVuZCgpOwogICAgZXJhc2UoLS1fX3RtcCk7CiAgfQogIGxpc3Qo
c2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbHVlLAogICAgICAgY29uc3QgYWxsb2NhdG9y
X3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9CYXNlKF9fYSkKICAgIHsgaW5z
ZXJ0KGJlZ2luKCksIF9fbiwgX192YWx1ZSk7IH0KICBleHBsaWNpdCBsaXN0KHNpemVfdHlwZSBf
X24pCiAgICA6IF9CYXNlKGFsbG9jYXRvcl90eXBlKCkpCiAgICB7IGluc2VydChiZWdpbigpLCBf
X24sIF9UcCgpKTsgfQoKCgogICAKICAgCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9y
PgogIGxpc3QoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAog
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6
IF9CYXNlKF9fYSkKICAgIHsgaW5zZXJ0KGJlZ2luKCksIF9fZmlyc3QsIF9fbGFzdCk7IH0KCiMg
NDMzICIvdXNyL2xpYi9nY2MtbGliL2k1ODYtbWFuZHJha2UtbGludXgvMi45NS4yLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvc3RsX2xpc3QuaCIgMwoKICBsaXN0KGNvbnN0IGxpc3Q8X1RwLCBf
QWxsb2M+JiBfX3gpIDogX0Jhc2UoX194LmdldF9hbGxvY2F0b3IoKSkKICAgIHsgaW5zZXJ0KGJl
Z2luKCksIF9feC5iZWdpbigpLCBfX3guZW5kKCkpOyB9CgogIH5saXN0KCkgeyB9CgogIGxpc3Q8
X1RwLCBfQWxsb2M+JiBvcGVyYXRvcj0oY29uc3QgbGlzdDxfVHAsIF9BbGxvYz4mIF9feCk7Cgpw
dWJsaWM6CiAgIAogICAKICAgCiAgIAoKICB2b2lkIGFzc2lnbihzaXplX3R5cGUgX19uLCBjb25z
dCBfVHAmIF9fdmFsKTsKCgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9p
ZCBhc3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KSB7
CiAgICB0eXBlZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVn
cmFsIF9JbnRlZ3JhbDsKICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9J
bnRlZ3JhbCgpKTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4KICB2b2lkIF9NX2Fz
c2lnbl9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkK
ICAgIHsgYXNzaWduKChzaXplX3R5cGUpIF9fbiwgKF9UcCkgX192YWwpOyB9CgogIHRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW5wdXRJ
dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19mYWxzZV90eXBlKTsKCgoKcHJvdGVjdGVkOgogIHZvaWQgdHJhbnNmZXIoaXRl
cmF0b3IgX19wb3NpdGlvbiwgaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KSB7CiAg
ICBpZiAoX19wb3NpdGlvbiAhPSBfX2xhc3QpIHsKICAgICAgIAogICAgICAoKF9Ob2RlKikgKF9f
bGFzdC5fTV9ub2RlLT5fTV9wcmV2KSktPl9NX25leHQgICAgID0gX19wb3NpdGlvbi5fTV9ub2Rl
OwogICAgICAoKF9Ob2RlKikgKF9fZmlyc3QuX01fbm9kZS0+X01fcHJldikpLT5fTV9uZXh0ICAg
ID0gX19sYXN0Ll9NX25vZGU7CiAgICAgICgoX05vZGUqKSAoX19wb3NpdGlvbi5fTV9ub2RlLT5f
TV9wcmV2KSktPl9NX25leHQgPSBfX2ZpcnN0Ll9NX25vZGU7IAoKICAgICAgIAogICAgICBfTm9k
ZSogX190bXAgPSAoX05vZGUqKSAoX19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2KTsKICAgICAg
X19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2ID0gX19sYXN0Ll9NX25vZGUtPl9NX3ByZXY7CiAg
ICAgIF9fbGFzdC5fTV9ub2RlLT5fTV9wcmV2ICAgICAgPSBfX2ZpcnN0Ll9NX25vZGUtPl9NX3By
ZXY7IAogICAgICBfX2ZpcnN0Ll9NX25vZGUtPl9NX3ByZXYgICAgPSBfX3RtcDsKICAgIH0KICB9
CgpwdWJsaWM6CiAgdm9pZCBzcGxpY2UoaXRlcmF0b3IgX19wb3NpdGlvbiwgbGlzdCYgX194KSB7
CiAgICBpZiAoIV9feC5lbXB0eSgpKSAKICAgICAgdHJhbnNmZXIoX19wb3NpdGlvbiwgX194LmJl
Z2luKCksIF9feC5lbmQoKSk7CiAgfQogIHZvaWQgc3BsaWNlKGl0ZXJhdG9yIF9fcG9zaXRpb24s
IGxpc3QmLCBpdGVyYXRvciBfX2kpIHsKICAgIGl0ZXJhdG9yIF9faiA9IF9faTsKICAgICsrX19q
OwogICAgaWYgKF9fcG9zaXRpb24gPT0gX19pIHx8IF9fcG9zaXRpb24gPT0gX19qKSByZXR1cm47
CiAgICB0cmFuc2ZlcihfX3Bvc2l0aW9uLCBfX2ksIF9faik7CiAgfQogIHZvaWQgc3BsaWNlKGl0
ZXJhdG9yIF9fcG9zaXRpb24sIGxpc3QmLCBpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xh
c3QpIHsKICAgIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICAgIHRyYW5zZmVyKF9fcG9zaXRp
b24sIF9fZmlyc3QsIF9fbGFzdCk7CiAgfQogIHZvaWQgcmVtb3ZlKGNvbnN0IF9UcCYgX192YWx1
ZSk7CiAgdm9pZCB1bmlxdWUoKTsKICB2b2lkIG1lcmdlKGxpc3QmIF9feCk7CiAgdm9pZCByZXZl
cnNlKCk7CiAgdm9pZCBzb3J0KCk7CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4gdm9p
ZCByZW1vdmVfaWYoX1ByZWRpY2F0ZSk7CiAgdGVtcGxhdGUgPGNsYXNzIF9CaW5hcnlQcmVkaWNh
dGU+IHZvaWQgdW5pcXVlKF9CaW5hcnlQcmVkaWNhdGUpOwogIHRlbXBsYXRlIDxjbGFzcyBfU3Ry
aWN0V2Vha09yZGVyaW5nPiB2b2lkIG1lcmdlKGxpc3QmLCBfU3RyaWN0V2Vha09yZGVyaW5nKTsK
ICB0ZW1wbGF0ZSA8Y2xhc3MgX1N0cmljdFdlYWtPcmRlcmluZz4gdm9pZCBzb3J0KF9TdHJpY3RX
ZWFrT3JkZXJpbmcpOwoKCiAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PSA8PiAgKAogICAgY29uc3Qg
bGlzdCYgX194LCBjb25zdCBsaXN0JiBfX3kpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xh
c3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4m
IF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0PF9UcCxfQWxsb2M+JiBfX3kp
CnsKICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q8X1RwLF9BbGxvYz46Ol9Ob2RlIF9Ob2RlOwogIF9O
b2RlKiBfX2UxID0gX194Ll9NX25vZGU7CiAgX05vZGUqIF9fZTIgPSBfX3kuX01fbm9kZTsKICBf
Tm9kZSogX19uMSA9IChfTm9kZSopIF9fZTEtPl9NX25leHQ7CiAgX05vZGUqIF9fbjIgPSAoX05v
ZGUqKSBfX2UyLT5fTV9uZXh0OwogIGZvciAoIDsgX19uMSAhPSBfX2UxICYmIF9fbjIgIT0gX19l
MiA7CiAgICAgICAgICBfX24xID0gKF9Ob2RlKikgX19uMS0+X01fbmV4dCwgX19uMiA9IChfTm9k
ZSopIF9fbjItPl9NX25leHQpCiAgICBpZiAoX19uMS0+X01fZGF0YSAhPSBfX24yLT5fTV9kYXRh
KQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIF9fbjEgPT0gX19lMSAmJiBfX24yID09IF9f
ZTI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9feCwKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9feSkKewogIHJldHVybiBsZXhpY29ncmFwaGljYWxf
Y29tcGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3kuYmVnaW4oKSwgX195LmVuZCgpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIApzd2FwKGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3gs
IGxpc3Q8X1RwLCBfQWxsb2M+JiBfX3kpCnsKICBfX3guc3dhcChfX3kpOwp9CgoKCgoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPiB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcj4K
dm9pZCAKbGlzdDxfVHAsIF9BbGxvYz46Ol9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRvciBfX3Bv
c2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIg
X19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19mYWxzZV90eXBlKQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X2ZpcnN0KQogICAgaW5zZXJ0KF9fcG9zaXRpb24sICpfX2ZpcnN0KTsKfQoKIyA1ODIgIi91c3Iv
bGliL2djYy1saWIvaTU4Ni1tYW5kcmFrZS1saW51eC8yLjk1LjIvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfbGlzdC5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9j
Pgp2b2lkIApsaXN0PF9UcCwgX0FsbG9jPjo6aW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIHNp
emVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX194KQp7CiAgZm9yICggOyBfX24gPiAwOyAtLV9fbikK
ICAgIGluc2VydChfX3Bvc2l0aW9uLCBfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfQWxsb2M+Cmxpc3Q8X1RwLF9BbGxvYz46Oml0ZXJhdG9yIGxpc3Q8X1RwLCBfQWxsb2M+Ojpl
cmFzZShpdGVyYXRvciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yIF9fbGFzdCkKewogIHdoaWxlIChfX2ZpcnN0ICE9
IF9fbGFzdCkKICAgIGVyYXNlKF9fZmlyc3QrKyk7CiAgcmV0dXJuIF9fbGFzdDsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+OjpyZXNp
emUoc2l6ZV90eXBlIF9fbmV3X3NpemUsIGNvbnN0IF9UcCYgX194KQp7CiAgaXRlcmF0b3IgX19p
ID0gYmVnaW4oKTsKICBzaXplX3R5cGUgX19sZW4gPSAwOwogIGZvciAoIDsgX19pICE9IGVuZCgp
ICYmIF9fbGVuIDwgX19uZXdfc2l6ZTsgKytfX2ksICsrX19sZW4pCiAgICA7CiAgaWYgKF9fbGVu
ID09IF9fbmV3X3NpemUpCiAgICBlcmFzZShfX2ksIGVuZCgpKTsKICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICBpbnNlcnQoZW5kKCksIF9fbmV3X3NpemUgLSBfX2xlbiwgX194
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpsaXN0PF9UcCwgX0FsbG9j
PiYgbGlzdDxfVHAsIF9BbGxvYz46Om9wZXJhdG9yPShjb25zdCBsaXN0PF9UcCwgX0FsbG9jPiYg
X194KQp7CiAgaWYgKHRoaXMgIT0gJl9feCkgewogICAgaXRlcmF0b3IgX19maXJzdDEgPSBiZWdp
bigpOwogICAgaXRlcmF0b3IgX19sYXN0MSA9IGVuZCgpOwogICAgY29uc3RfaXRlcmF0b3IgX19m
aXJzdDIgPSBfX3guYmVnaW4oKTsKICAgIGNvbnN0X2l0ZXJhdG9yIF9fbGFzdDIgPSBfX3guZW5k
KCk7CiAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3Qy
KSAKICAgICAgKl9fZmlyc3QxKysgPSAqX19maXJzdDIrKzsKICAgIGlmIChfX2ZpcnN0MiA9PSBf
X2xhc3QyKQogICAgICBlcmFzZShfX2ZpcnN0MSwgX19sYXN0MSk7CiAgICBlbHNlCiAgICAgIGlu
c2VydChfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7CiAgfQogIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+
Ojphc3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbCkgewogIGl0ZXJhdG9yIF9f
aSA9IGJlZ2luKCk7CiAgZm9yICggOyBfX2kgIT0gZW5kKCkgJiYgX19uID4gMDsgKytfX2ksIC0t
X19uKQogICAgKl9faSA9IF9fdmFsOwogIGlmIChfX24gPiAwKQogICAgaW5zZXJ0KGVuZCgpLCBf
X24sIF9fdmFsKTsKICBlbHNlCiAgICBlcmFzZShfX2ksIGVuZCgpKTsKfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyPgp2b2lk
Cmxpc3Q8X1RwLCBfQWxsb2M+OjpfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0SXRlciBfX2ZpcnN0
MiwgX0lucHV0SXRlciBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fZmFsc2VfdHlwZSkKewogIGl0ZXJhdG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICBpdGVy
YXRvciBfX2xhc3QxID0gZW5kKCk7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9f
Zmlyc3QyICE9IF9fbGFzdDI7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICAqX19maXJzdDEg
PSAqX19maXJzdDI7CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICBlcmFzZShfX2ZpcnN0
MSwgX19sYXN0MSk7CiAgZWxzZQogICAgaW5zZXJ0KF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3Qy
KTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQgbGlzdDxfVHAs
IF9BbGxvYz46OnJlbW92ZShjb25zdCBfVHAmIF9fdmFsdWUpCnsKICBpdGVyYXRvciBfX2ZpcnN0
ID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsKICAgIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICArK19fbmV4dDsK
ICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbHVlKSBlcmFzZShfX2ZpcnN0KTsKICAgIF9fZmlyc3Qg
PSBfX25leHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQg
bGlzdDxfVHAsIF9BbGxvYz46OnVuaXF1ZSgpCnsKICBpdGVyYXRvciBfX2ZpcnN0ID0gYmVnaW4o
KTsKICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJl
dHVybjsKICBpdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogIHdoaWxlICgrK19fbmV4dCAhPSBf
X2xhc3QpIHsKICAgIGlmICgqX19maXJzdCA9PSAqX19uZXh0KQogICAgICBlcmFzZShfX25leHQp
OwogICAgZWxzZQogICAgICBfX2ZpcnN0ID0gX19uZXh0OwogICAgX19uZXh0ID0gX19maXJzdDsK
ICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCBsaXN0PF9UcCwg
X0FsbG9jPjo6bWVyZ2UobGlzdDxfVHAsIF9BbGxvYz4mIF9feCkKewogIGl0ZXJhdG9yIF9fZmly
c3QxID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QxID0gZW5kKCk7CiAgaXRlcmF0b3IgX19m
aXJzdDIgPSBfX3guYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QyID0gX194LmVuZCgpOwogIHdo
aWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAo
Kl9fZmlyc3QyIDwgKl9fZmlyc3QxKSB7CiAgICAgIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Qy
OwogICAgICB0cmFuc2ZlcihfX2ZpcnN0MSwgX19maXJzdDIsICsrX19uZXh0KTsKICAgICAgX19m
aXJzdDIgPSBfX25leHQ7CiAgICB9CiAgICBlbHNlCiAgICAgICsrX19maXJzdDE7CiAgaWYgKF9f
Zmlyc3QyICE9IF9fbGFzdDIpIHRyYW5zZmVyKF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxs
b2M+OjpyZXZlcnNlKCkgCnsKICAgCiAgaWYgKF9NX25vZGUtPl9NX25leHQgIT0gX01fbm9kZSAm
JgogICAgICAoKF9Ob2RlKikgKF9NX25vZGUtPl9NX25leHQpKS0+X01fbmV4dCAhPSBfTV9ub2Rl
KSB7CiAgICBpdGVyYXRvciBfX2ZpcnN0ID0gYmVnaW4oKTsKICAgICsrX19maXJzdDsKICAgIHdo
aWxlIChfX2ZpcnN0ICE9IGVuZCgpKSB7CiAgICAgIGl0ZXJhdG9yIF9fb2xkID0gX19maXJzdDsK
ICAgICAgKytfX2ZpcnN0OwogICAgICB0cmFuc2ZlcihiZWdpbigpLCBfX29sZCwgX19maXJzdCk7
CiAgICB9CiAgfQp9ICAgIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lk
IGxpc3Q8X1RwLCBfQWxsb2M+Ojpzb3J0KCkKewogICAKICBpZiAoX01fbm9kZS0+X01fbmV4dCAh
PSBfTV9ub2RlICYmCiAgICAgICgoX05vZGUqKSAoX01fbm9kZS0+X01fbmV4dCkpLT5fTV9uZXh0
ICE9IF9NX25vZGUpIHsKICAgIGxpc3Q8X1RwLCBfQWxsb2M+IF9fY2Fycnk7CiAgICBsaXN0PF9U
cCwgX0FsbG9jPiBfX2NvdW50ZXJbNjRdOwogICAgaW50IF9fZmlsbCA9IDA7CiAgICB3aGlsZSAo
IWVtcHR5KCkpIHsKICAgICAgX19jYXJyeS5zcGxpY2UoX19jYXJyeS5iZWdpbigpLCAqdGhpcywg
YmVnaW4oKSk7CiAgICAgIGludCBfX2kgPSAwOwogICAgICB3aGlsZShfX2kgPCBfX2ZpbGwgJiYg
IV9fY291bnRlcltfX2ldLmVtcHR5KCkpIHsKICAgICAgICBfX2NvdW50ZXJbX19pXS5tZXJnZShf
X2NhcnJ5KTsKICAgICAgICBfX2NhcnJ5LnN3YXAoX19jb3VudGVyW19faSsrXSk7CiAgICAgIH0K
ICAgICAgX19jYXJyeS5zd2FwKF9fY291bnRlcltfX2ldKTsgICAgICAgICAKICAgICAgaWYgKF9f
aSA9PSBfX2ZpbGwpICsrX19maWxsOwogICAgfSAKCiAgICBmb3IgKGludCBfX2kgPSAxOyBfX2kg
PCBfX2ZpbGw7ICsrX19pKQogICAgICBfX2NvdW50ZXJbX19pXS5tZXJnZShfX2NvdW50ZXJbX19p
LTFdKTsKICAgIHN3YXAoX19jb3VudGVyW19fZmlsbC0xXSk7CiAgfQp9CgoKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+CnZvaWQg
bGlzdDxfVHAsIF9BbGxvYz46OnJlbW92ZV9pZihfUHJlZGljYXRlIF9fcHJlZCkKewogIGl0ZXJh
dG9yIF9fZmlyc3QgPSBiZWdpbigpOwogIGl0ZXJhdG9yIF9fbGFzdCA9IGVuZCgpOwogIHdoaWxl
IChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsKICAg
ICsrX19uZXh0OwogICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIGVyYXNlKF9fZmlyc3QpOwogICAg
X19maXJzdCA9IF9fbmV4dDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxv
Yz4gdGVtcGxhdGUgPGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CnZvaWQgbGlzdDxfVHAsIF9BbGxv
Yz46OnVuaXF1ZShfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCnsKICBpdGVyYXRvciBf
X2ZpcnN0ID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICBpZiAoX19maXJz
dCA9PSBfX2xhc3QpIHJldHVybjsKICBpdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogIHdoaWxl
ICgrK19fbmV4dCAhPSBfX2xhc3QpIHsKICAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCAq
X19uZXh0KSkKICAgICAgZXJhc2UoX19uZXh0KTsKICAgIGVsc2UKICAgICAgX19maXJzdCA9IF9f
bmV4dDsKICAgIF9fbmV4dCA9IF9fZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBj
bGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgp2b2lkIGxp
c3Q8X1RwLCBfQWxsb2M+OjptZXJnZShsaXN0PF9UcCwgX0FsbG9jPiYgX194LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCkKewogIGl0ZXJh
dG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QxID0gZW5kKCk7CiAgaXRl
cmF0b3IgX19maXJzdDIgPSBfX3guYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QyID0gX194LmVu
ZCgpOwogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIp
CiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkgewogICAgICBpdGVyYXRvciBf
X25leHQgPSBfX2ZpcnN0MjsKICAgICAgdHJhbnNmZXIoX19maXJzdDEsIF9fZmlyc3QyLCArK19f
bmV4dCk7CiAgICAgIF9fZmlyc3QyID0gX19uZXh0OwogICAgfQogICAgZWxzZQogICAgICArK19f
Zmlyc3QxOwogIGlmIChfX2ZpcnN0MiAhPSBfX2xhc3QyKSB0cmFuc2ZlcihfX2xhc3QxLCBfX2Zp
cnN0MiwgX19sYXN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVt
cGxhdGUgPGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CnZvaWQgbGlzdDxfVHAsIF9BbGxvYz46
OnNvcnQoX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApCnsKICAgCiAgaWYgKF9NX25vZGUtPl9N
X25leHQgIT0gX01fbm9kZSAmJgogICAgICAoKF9Ob2RlKikgKF9NX25vZGUtPl9NX25leHQpKS0+
X01fbmV4dCAhPSBfTV9ub2RlKSB7CiAgICBsaXN0PF9UcCwgX0FsbG9jPiBfX2NhcnJ5OwogICAg
bGlzdDxfVHAsIF9BbGxvYz4gX19jb3VudGVyWzY0XTsKICAgIGludCBfX2ZpbGwgPSAwOwogICAg
d2hpbGUgKCFlbXB0eSgpKSB7CiAgICAgIF9fY2Fycnkuc3BsaWNlKF9fY2FycnkuYmVnaW4oKSwg
KnRoaXMsIGJlZ2luKCkpOwogICAgICBpbnQgX19pID0gMDsKICAgICAgd2hpbGUoX19pIDwgX19m
aWxsICYmICFfX2NvdW50ZXJbX19pXS5lbXB0eSgpKSB7CiAgICAgICAgX19jb3VudGVyW19faV0u
bWVyZ2UoX19jYXJyeSwgX19jb21wKTsKICAgICAgICBfX2NhcnJ5LnN3YXAoX19jb3VudGVyW19f
aSsrXSk7CiAgICAgIH0KICAgICAgX19jYXJyeS5zd2FwKF9fY291bnRlcltfX2ldKTsgICAgICAg
ICAKICAgICAgaWYgKF9faSA9PSBfX2ZpbGwpICsrX19maWxsOwogICAgfSAKCiAgICBmb3IgKGlu
dCBfX2kgPSAxOyBfX2kgPCBfX2ZpbGw7ICsrX19pKSAKICAgICAgX19jb3VudGVyW19faV0ubWVy
Z2UoX19jb3VudGVyW19faS0xXSwgX19jb21wKTsKICAgIHN3YXAoX19jb3VudGVyW19fZmlsbC0x
XSk7CiAgfQp9CgoKCgoKCgoKICAKCgoKIAogCiAKIyAzMiAiL3Vzci9saWIvZ2NjLWxpYi9pNTg2
LW1hbmRyYWtlLWxpbnV4LzIuOTUuMi8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2xpc3QuaCIg
MiAzCgoKCgoKCgoKIAogCiAKIyAxNCAiZGF0YS5oIiAyCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IGJ5dGU7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgd29yZDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
ZHdvcmQ7CgoKCmNsYXNzIERhdGEgewpwdWJsaWM6CglEYXRhKCBEYXRhICZmcm9tLCBpbnQgb2Zm
c2V0LCBpbnQgbGVuZ3RoPTApOwoJdmlydHVhbCB+RGF0YSgpOwoJdmlydHVhbCB2b2lkIGxpc3Rp
bmcob3N0cmVhbSAmb3V0KTsJIAoJdmlydHVhbCB2b2lkIGFuYWx5emUodm9pZCk7Cgl2aXJ0dWFs
IHZvaWQgc2F2ZShvc3RyZWFtICZvcyk7CQkgCgl2aXJ0dWFsIHZvaWQgbG9hZCgpOwoJdmlydHVh
bCB1bnNpZ25lZCBjaGFyIG9wZXJhdG9yW10oaW50IHgpOwoJdmlydHVhbCBEYXRhICpvcGVyYXRv
cj4+KHVuc2lnbmVkIGNoYXIgJngpOwoJdmlydHVhbCB2b2lkIGFkZF9zZWN0aW9uKERhdGEgKnNl
Y3Rpb24pOwoJdmlydHVhbCB2b2lkIHJlbW92ZV9zZWN0aW9uKERhdGEgKnNlY3Rpb24pOwoJdmly
dHVhbCBpbnQgc2l6ZSh2b2lkKSB7cmV0dXJuIGxlbmd0aDt9IDsKCXZpcnR1YWwgYm9vbCBpc3Zh
bGlkKHZvaWQpOwoJdmlydHVhbCBpbnQgYWJzX29mZnNldCgpOwoKCSAKCSAKCXVuc2lnbmVkIGNo
YXIgZ2V0X2J5dGUoaW50IG9mcyk7Cgl1bnNpZ25lZCBzaG9ydCBnZXRfd29yZChpbnQgb2ZzKTsK
CXVuc2lnbmVkIGludCBnZXRfZHdvcmQoaW50IG9mcyk7CgoJc2lnbmVkIGNoYXIgZ2V0X3NpZ25l
ZGJ5dGUoaW50IG9mcyk7CglzaWduZWQgc2hvcnQgZ2V0X3NpZ25lZHdvcmQoaW50IG9mcyk7Cglz
aWduZWQgaW50IGdldF9zaWduZWRkd29yZChpbnQgb2ZzKTsKCnByb3RlY3RlZDoKCXNpemVfdAlv
ZmZzZXQ7CglzaXplX3QJbGVuZ3RoOwoJRGF0YSAmc291cmNlOwoJbGlzdDxEYXRhKj4gc2VjdGlv
bnM7CnByaXZhdGU6Cglvc3RyZWFtICZkdW1wKG9zdHJlYW0gJm91dCk7Cn07CgoKCiMgMTUgImlu
c3RydWN0aW9uLmgiIDIKCiMgMSAiYWRkcmVzcy5oIiAxCgogCiAKIAogCiAKIAogCiAKCgoKCgoK
CmNsYXNzIFNlZ21lbnQgOiBwdWJsaWMgRGF0YQp7CnByb3RlY3RlZDoKCWludCBzZWdpZDsgIApw
dWJsaWM6CglTZWdtZW50KERhdGEgJnNlZ2RhdGEsIGludCBvZmZzZXQsIGludCBzaXplLCBpbnQg
aWQpIDsKCX5TZWdtZW50KCk7Cgl2aXJ0dWFsIGludCBiYXNlKCk9MDsKCXZpcnR1YWwgaW50IGRf
Yml0KCk9MDsKCXZpcnR1YWwgaW50IGxpbWl0KCkge3JldHVybiBzaXplKCk7fSAgCn07CgpjbGFz
cyBTZWdtZW50MTYgOiBwdWJsaWMgU2VnbWVudAp7CnB1YmxpYzoKCVNlZ21lbnQxNihEYXRhICZz
ZWdkYXRhLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSwgaW50IGlkKTsKCX5TZWdtZW50MTYoKTsKCWlu
dCBiYXNlKCkge3JldHVybiBzZWdpZCoweDEwO30KCWludCBkX2JpdCgpIHtyZXR1cm4gMDsgfQp9
OwoKY2xhc3MgU2VnbWVudDMyOiBwdWJsaWMgU2VnbWVudAp7CnB1YmxpYzoKCVNlZ21lbnQzMiAo
RGF0YSAmc2VnZGF0YSwgaW50IG9mZnNldCwgaW50IHNpemUsIGludCBpZCkgOwoJflNlZ21lbnQz
MigpOwoJaW50IGJhc2UoKSB7cmV0dXJuIG9mZnNldDt9CglpbnQgZF9iaXQoKSB7cmV0dXJuIDE7
IH0KfTsKCmNsYXNzIEFkZHJlc3MKewpwcml2YXRlOgoJaW50IG9mczsKCVNlZ21lbnQgKnNlZ21l
bnQ7CnB1YmxpYzoKCUFkZHJlc3MoU2VnbWVudCAqc2VnLCBpbnQgb2ZzKSA6IHNlZ21lbnQoc2Vn
KSwgb2ZzKG9mcykgeyB9OwoJQWRkcmVzcyhjb25zdCBBZGRyZXNzICZmcm9tKQoJewoJCW9mcz1m
cm9tLm9mczsKCQlzZWdtZW50PWZyb20uc2VnbWVudDsKCX0KCUFkZHJlc3MoKQoJewoJCW9mcz0w
OwoJCXNlZ21lbnQgPSBfX251bGwgOwoJfQoJfkFkZHJlc3MoKSB7fQoJaW50IHJlbG9mcygpIGNv
bnN0IHsgcmV0dXJuIG9mczsgfQoJaW50IG9mZnNldCgpIGNvbnN0IHsKCQlpZihzZWdtZW50LT5k
X2JpdCgpKQoJCQlyZXR1cm4gc2VnbWVudC0+YmFzZSgpICsgb2ZzOyAKCQllbHNlCgkJCXJldHVy
biAoc2VnbWVudC0+YmFzZSgpICsgb2ZzKSYweGZmZmZmOwoJfQoJYm9vbCBvcGVyYXRvcjwoY29u
c3QgQWRkcmVzcyAmYTEpIGNvbnN0IHsgCgkJcmV0dXJuIChvZmZzZXQoKTxhMS5vZmZzZXQoKSk7
IAoJfQoJYm9vbCBvcGVyYXRvcj4oY29uc3QgQWRkcmVzcyAmYTEpIGNvbnN0IHsgCgkJcmV0dXJu
IChvZmZzZXQoKT5hMS5vZmZzZXQoKSk7IAoJfQoJQWRkcmVzcyAmb3BlcmF0b3IrPShpbnQgeCkg
e29mcys9eDsgcmV0dXJuICp0aGlzO30KCW9wZXJhdG9yIGludCgpIHtyZXR1cm4gb2Zmc2V0KCk7
fQoJU2VnbWVudCAqc2VnKCkge3JldHVybiBzZWdtZW50O30KCWlubGluZSBmcmllbmQgb3N0cmVh
bSYgb3BlcmF0b3I8PChvc3RyZWFtICZvcyxBZGRyZXNzIGFkZHIpCgl7CgkJb3MuZm9ybSAoIiUw
NFg6JTA0WCIsYWRkci5zZWcoKS0+YmFzZSgpLzB4MTAsYWRkci5vZnMpOwoJCXJldHVybiBvczsK
CX0KfTsKCgoKIyAxNiAiaW5zdHJ1Y3Rpb24uaCIgMgoKIyAxICJzeW1ib2wuaCIgMQogCiAKIAog
CiAKIAogCiAKCgoKCgoKY2xhc3MgU3ltYm9sCnsKcHVibGljOgoJZW51bSBTeW1ib2xUeXBlIHsg
U3RhcnRBZGRyZXNzLCBMYWJlbCwgU3Vicm91dGluZSwgRGF0YSwgCgkJCUJ5dGUsIFdvcmQsIER3
b3JkLCBTdHJpbmcgfTsKcHJpdmF0ZToKCUFkZHJlc3MgYWRkcjsKCVN5bWJvbFR5cGUgc3ltX3R5
cGU7CglpbnQgc2l6ZTsKCWNoYXIgKmlkOwpwdWJsaWM6CglmcmllbmQgb3N0cmVhbSYgb3BlcmF0
b3I8PCAob3N0cmVhbSAmb3MsIFN5bWJvbCAqc3ltKTsKCVN5bWJvbChBZGRyZXNzIGFkZHJlc3Ms
IFN5bWJvbFR5cGUgdHlwZSk7Cgl+U3ltYm9sKCk7CglBZGRyZXNzIGFkZHJlc3MoKTsKCWludCBT
aXplKCkgY29uc3Q7Cgl2b2lkIHNldFNpemUoaW50IHN6KTsKCVN5bWJvbFR5cGUgdHlwZSgpIGNv
bnN0OwoJdm9pZCBhZGRfcmVmZXJlbmNlKEFkZHJlc3MgcmVmX2FkZHJlc3MpOwoJY2hhciAqbmFt
ZSgpIGNvbnN0Owp9OwoKCgoKIyAxNyAiaW5zdHJ1Y3Rpb24uaCIgMgoKIyAxICJyZWdpc3RlcnMu
aCIgMQogCiAKIAogCiAKIAoKCgoKCgpjbGFzcyBSZWdpc3RlcnMKewpwcml2YXRlOgpwdWJsaWM6
CglSZWdpc3RlcnMoKTsKCX5SZWdpc3RlcnMoKTsKCXVuc2lnbmVkIGludCBlYXg7Cgl1bnNpZ25l
ZCBpbnQgZWN4OwoJdW5zaWduZWQgaW50IGVieDsKCXVuc2lnbmVkIGludCBlZHg7Cgl1bnNpZ25l
ZCBpbnQgZXNpOwoJdW5zaWduZWQgaW50IGVkaTsKCXVuc2lnbmVkIGludCBlYnA7Cgl1bnNpZ25l
ZCBpbnQgZXNwOwoJdW5zaWduZWQgaW50IGVpcDsKCXVuc2lnbmVkIGludCBlZmxhZ3M7CglTZWdt
ZW50ICpjczsKCVNlZ21lbnQgKmRzOwoJU2VnbWVudCAqZXM7CglTZWdtZW50ICpzczsKCVNlZ21l
bnQgKmZzOwoJU2VnbWVudCAqZ3M7Cn07CgoKCiMgMTggImluc3RydWN0aW9uLmgiIDIKCgpjb25z
dCBpbnQgUFJPQ184MDg2PTEwMDsKY29uc3QgaW50IFBST0NfODA4OD0xMDE7CmNvbnN0IGludCBQ
Uk9DXzgwMjg2PTEwMjsKY29uc3QgaW50IFBST0NfODAzODY9MTAzOwpjb25zdCBpbnQgUFJPQ19p
NDg2PTEwNDsKY29uc3QgaW50IFBST0NfUEVOVElVTT0xMDU7CmNvbnN0IGludCBQUk9DX01NWD0x
MDY7Cgpjb25zdCBpbnQgUFJPQ184MDg3PTIwMTsKY29uc3QgaW50IFBST0NfODAyODc9MjAyOwpj
b25zdCBpbnQgUFJPQ184MDM4Nz0yMDM7CgogCmNvbnN0IGludCBJTlNUX05PTkU9MDsKY29uc3Qg
aW50IElOU1RfSlVNUD0weDEwOwpjb25zdCBpbnQgSU5TVF9TSU5HTEVfT1BFUkFORD0weDExOwpj
b25zdCBpbnQgSU5TVF9TT1VSQ0VfREVTVD0weDEyOwpjb25zdCBpbnQgSU5TVF9OT19PUEVSQU5E
Uz0weDEzOwpjb25zdCBpbnQgSU5TVF9TVFJJTkdPUD0weDE0Owpjb25zdCBpbnQgSU5TVF9GQVJK
VU1QPTB4MTU7CmNvbnN0IGludCBJTlNUX0lNVUw9MHgxNjsKCiAKY29uc3QgaW50IE9QX1JFR0lT
VEVSPTA7CmNvbnN0IGludCBPUF9NRU1PUlk9MTsKY29uc3QgaW50IE9QX1JFR19QVFI9MjsKY29u
c3QgaW50IE9QX1JFR19QVFJfT0ZTPTM7CmNvbnN0IGludCBPUF9DT05TVEFOVD00Owpjb25zdCBp
bnQgT1BfU0lCX1BUUj01Owpjb25zdCBpbnQgT1BfRlBSRUc9NjsKCiAKY29uc3QgaW50IE9QX0JZ
VEU9MDsKY29uc3QgaW50IE9QX1dPUkQ9MTsKY29uc3QgaW50IE9QX0RXT1JEPTI7CmNvbnN0IGlu
dCBPUF9TSUdORURfQllURT0zOwpjb25zdCBpbnQgT1BfUkVBTDMyPTQ7CmNvbnN0IGludCBPUF9S
RUFMNjQ9NTsKCiAKY29uc3QgaW50IENPREVfSlVNUD0xOwpjb25zdCBpbnQgQ09ERV9DT05EX0pV
TVA9MjsKY29uc3QgaW50IENPREVfQ0FMTD0zOwpjb25zdCBpbnQgQ09ERV9SRVQ9NDsKY29uc3Qg
aW50IENPREVfU1RPUD01Owpjb25zdCBpbnQgQ09ERV9OT05FPTA7Cgpjb25zdCBpbnQgRkFMU0U9
MDsKY29uc3QgaW50IFRSVUU9MTsKCiAKY2xhc3Mgb3BlcmFuZCB7CglmcmllbmQgY2xhc3MgaW5z
dHJ1Y3Rpb247CglEYXRhICZidWY7CnB1YmxpYzoKCW9wZXJhbmQoRGF0YSAmKTsKCX5vcGVyYW5k
KCk7CnB1YmxpYzoKCWludCBkZWNvZGVfcm0oaW50IG9mcyk7CglpbnQgZ2V0X2NvbnN0YW50KGlu
dCBvZnMpOwoJdm9pZCBwcmludF9vcGVyYW5kKGludCB0ZWxsX3NpemUpOwoJdmlydHVhbCB2b2lk
IHNob3dfc2l6ZV9vcl9zZWdtZW50KGludCB0ZWxsX3NpemUpOwogICAgICAgIFN5bWJvbCAqZ2V0
X3N5bWJvbCh2b2lkKTsKCXZvaWQgc2V0X3NlZyhTZWdtZW50ICopOwpwdWJsaWM6CglpbnQgb3Bf
c2l6ZTsJCQkgCglpbnQgcHRyX3NpemU7CQkJIAoJaW50IHJlZzsJCQkgCglpbnQgaW5kZXhfcmVn
OwkJCSAKCWludCBzY2FsaW5nX2ZhY3RvcjsJCSAKCWludCBjb25zdGFudDsKCWludCBvcGVyYW5k
X3R5cGU7CglpbnQgc2VnbWVudF9vdmVycmlkZTsJCSAKCVNlZ21lbnQgKnNlZzsKCWNoYXIgKm5h
bWU7CQkJIAp9OwoKY2xhc3MgaW5zdHJ1Y3Rpb24gOiBwdWJsaWMgRGF0YSB7CglmcmllbmQgY2xh
c3Mgb3BlcmFuZDsKcHVibGljOgoJaW5zdHJ1Y3Rpb24oRGF0YSAmZnJvbSwgaW50IGRfYml0LCBB
ZGRyZXNzIGFkZHIsIGludCBsZW5ndGgsIFJlZ2lzdGVycyAmcmVncyk7Cgl+aW5zdHJ1Y3Rpb24o
KTsKCXZpcnR1YWwgdm9pZCBhbmFseXplKHZvaWQpOwoJdmlydHVhbCB2b2lkIGxpc3Rpbmcob3N0
cmVhbSAmb3V0KTsKCglTeW1ib2wgKmdldF9zeW1ib2wodm9pZCk7CgpwdWJsaWM6ICAKCWNoYXIg
Km5tZW1vbmljOwkJIAoJY2hhciAqbm1lbW9uaWMyOwkgCglpbnQgaW5zdF90eXBlOwkJIAoJaW50
IGFkZHJlc3Nfb3ZlcnJpZGU7CglpbnQgb3BlcmFuZF9vdmVycmlkZTsKcHJpdmF0ZToKCURhdGEg
JmJ1ZjsKCUFkZHJlc3MgYWRkcmVzczsJIAoJaW50IGRfYml0OwoJaW50IG11bHRpcGxpZXI7CQkg
CglSZWdpc3RlcnMgJnI7CnB1YmxpYzoKCWludCBjb2RlOwkJIAoJb3BlcmFuZCBzb3VyY2U7CQkg
CglvcGVyYW5kIGRlc3Q7Cgpwcml2YXRlOgoJIAoJdm9pZCBzZXRfb3BzaXplKGludCB3KTsKCXZv
aWQgZGVjb2RlKGludCBvZnMpOwoJaW50IGRvX3ByZWZpeGVzKGludCBvZnMpOwoKCSAKCXZvaWQg
am1wcmVsOChpbnQgb2ZzKTsKCXZvaWQgam1wcmVsMTYoaW50IG9mcyk7Cgl2b2lkIHNpbmdsZXJl
ZyhpbnQgb2ZzKTsKCXZvaWQgaW50ZXJ1cHQoaW50IG9mcyk7Cgl2b2lkIHJlZ19pbW0oaW50IG9m
cyk7Cgl2b2lkIGFjY3VtX2ltbShpbnQgb2ZzKTsKCXZvaWQgcmVnMnJtKGludCBvZnMpOwoJdm9p
ZCBybTJyZWcoaW50IG9mcyk7Cgl2b2lkIHJtMnNlZ3JlZyhpbnQgb2ZzKTsKCXZvaWQgc2VncmVn
MnJtKGludCBvZnMpOwoJdm9pZCBjb25zdDJybShpbnQgb2ZzKTsKCXZvaWQgYWNjdW0ybWVtKGlu
dCBvZnMpOwoJdm9pZCBtZW0yYWNjdW0oaW50IG9mcyk7Cgl2b2lkIHJtX29ubHkoaW50IG9mcyk7
Cgl2b2lkIHNoaWZ0X2NsKGludCBvZnMpOwoJdm9pZCBzZWdyZWdfcChpbnQgb2ZzKTsKCXZvaWQg
bG9hZHB0cihpbnQgb2ZzKTsKCXZvaWQgc3BlY2lhbChpbnQgb2ZzKTsKCXZvaWQgcHJlZml4X3Jl
cChpbnQgb2ZzKTsKCXZvaWQgcHVzaF9pbW0oaW50IG9mcyk7Cgl2b2lkIHNldGNvbmQoaW50IG9m
cyk7Cgl2b2lkIHJtOF8yX3JlZyhpbnQgb2ZzKTsKCXZvaWQgZmFyX2ptcGNhbGwoaW50IG9mcyk7
Cgl2b2lkIGltdWxfMjg2KGludCBvZnMpOwoJdm9pZCByZXQoaW50IG9mcyk7Cgl2b2lkIGlub3V0
KGludCBvZnMpOwoJdm9pZCBzcGVjaWFsX21vdmUoaW50IG9mcyk7Cgl2b2lkIHRhYmxlX2luc3Qo
aW50IG9mcyk7Cgl2b2lkIGVudGVyKGludCBvZnMpOwoJdm9pZCBsZHNlZ21lbnRfbGltaXQoaW50
IG9mcyk7Cgl2b2lkIGdlbl9mcGRlY29kZShpbnQgb2ZzKTsKCgkgCgl0eXBlZGVmIHZvaWQgKGlu
c3RydWN0aW9uOjoqIHBpZGYpKGludCBvZnMpOwoJdHlwZWRlZiBzdHJ1Y3QgVEFHb3BfY29kZSB7
CgkJaW50IHByb2Nlc3Nvcl90eXBlOwoJCWNoYXIgKm5tZW07CgkJaW50IGxlbmd0aDsKCQlwaWRm
IGZ1bmM7Cgl9IG9wY29kZV9kZXNjOwoKCSAKCXN0YXRpYyBvcGNvZGVfZGVzYyBvcHRhYmxlWzI1
Nl07CgoJIAoJc3RhdGljIG9wY29kZV9kZXNjIG9wdGFibGUyWzI1Nl07CgoJIAoJY2hhciAqZnBf
ZDloWzMyXTsKCWNoYXIgKmZwX25tZW1vbmljc1s4XVs4XTsKCglpbmxpbmUgc2lnbmVkIGNoYXIg
R0VUU0lHTkVEQllURShpbnQgbykKCXsKCQl1bnNpZ25lZCBjaGFyIGNoID0gYnVmW29dOwoJCXJl
dHVybiAqKHNpZ25lZCBjaGFyICopJmNoOwoJfQoKCWlubGluZSBpbnQgR0VUU0lHTkVEV09SRChp
bnQgbykKCXsKCQl1bnNpZ25lZCBzaG9ydCB3ID0gZ2V0X3dvcmQobyk7CgkJcmV0dXJuICooc2ln
bmVkIHNob3J0KikmdzsKCX0KCn07CgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKIAppbmxpbmUgdW5z
aWduZWQgY2hhciBHRVRfUk0oaW50IHdoZXJlLHVuc2lnbmVkIGNoYXIgYnl0ZSkKewoJcmV0dXJu
IChieXRlPj53aGVyZSkmNzsKfQoKIAppbmxpbmUgdW5zaWduZWQgY2hhciBHRVRSRUcoaW50IHdo
ZXJlLHVuc2lnbmVkIGNoYXIgYnl0ZSkKewoJcmV0dXJuIChieXRlPj53aGVyZSkmNzsKfQoKIApp
bmxpbmUgdW5zaWduZWQgY2hhciBHRVRNT0QoaW50IHdoZXJlLCB1bnNpZ25lZCBjaGFyIGJ5dGUp
CnsKCXJldHVybiAoYnl0ZT4+d2hlcmUpJjM7Cn0KCiAKIAogCiAKIAoKIAogCiAKIAogCgogCgoK
CiAKIAogCiAKIAogCiAKCiAKZXh0ZXJuIGludCByZWcwMFs4XTsKZXh0ZXJuIGludCByZWcwMVs4
XTsKZXh0ZXJuIGludCByZWcxMFs4XTsKZXh0ZXJuIGludCByZWcxMVs4XTsKCiAKZXh0ZXJuIGlu
dCBkcmVnMDBbOF07CmV4dGVybiBpbnQgZHJlZzAxWzhdOwpleHRlcm4gaW50IGRyZWcxMFs4XTsK
ZXh0ZXJuIGludCBkcmVnMTFbOF07CgogCmV4dGVybiBpbnQgc2liX2luZGV4X3JlZ1s4XTsKZXh0
ZXJuIGludCBzaWJfYmFzZV9yZWdbOF07CgogCmV4dGVybiBpbnQgc2VnX3JlZ1tdOwoKIApleHRl
cm4gaW50IGNvbnRyb2xfcmVnW107CmV4dGVybiBpbnQgZGVidWdfcmVnW107CmV4dGVybiBpbnQg
dGVzdF9yZWdbXTsKCmV4dGVybiBjaGFyICp3b3JkcmVnW107CmV4dGVybiBjaGFyICpkd29yZHJl
Z1tdOwpleHRlcm4gY2hhciAqYnl0ZXJlZ1tdOwpleHRlcm4gY2hhciAqZnByZWdbXTsKCiAKZXh0
ZXJuIGNoYXIgKlRUVGludG9wW107CmV4dGVybiBjaGFyICpUVFRzaGlmdFtdOwpleHRlcm4gY2hh
ciAqVFRUaW5jZGVjW107CmV4dGVybiBjaGFyICpUVFRub3RuZWdbXTsKZXh0ZXJuIGNoYXIgKlRU
VHBvcFtdOwoKIApleHRlcm4gY2hhciAqdGFibGVfaW5zdF9ubWVtW107CgpleHRlcm4gY2hhciAq
bm1fdW5rbm93bjsKCgoKIyAxMCAidGFibGVzLkMiIDIKCgogCmludCByZWcwMFs4XT17OCAsOSAs
MTAgLDExICwKCQkJCTYgLDcgLDM3ICwzIH07CmludCByZWcwMVs4XT17OCAsOSAsMTAgLDExICwK
CQkJCTYgLDcgLDUgLDMgfTsKaW50IHJlZzEwWzhdPXs4ICw5ICw4ICw5ICwKCQkJCTYgLDcgLDUg
LDMgfTsKaW50IHJlZzExWzhdPXswICwxICwyICwzICwKCQkJCTQgLDUgLDYgLDcgfTsKCiAKaW50
IGRyZWcwMFs4XT17MCAsMSAsMiAsMyAsCgkJCQkzNyAsMzcgLDYgLDcgfTsKaW50IGRyZWcwMVs4
XT17MCAsMSAsMiAsMyAsCgkJCQkzNyAsNSAsNiAsNyB9OwppbnQgZHJlZzEwWzhdPXswICwxICwy
ICwzICwKCQkJCTM3ICw1ICw2ICw3IH07CmludCBkcmVnMTFbOF09ezAgLDEgLDIgLDMgLAoJCQkJ
NCAsNSAsNiAsNyB9OwoKaW50IHNpYl9iYXNlX3JlZ1s4XT17MCAsMSAsMiAsNSAsCgkJCQk0ICw1
ICw2ICw3IH07CmludCBzaWJfaW5kZXhfcmVnWzhdPXswICwxICwyICw1ICwKCQkJCTM3ICw1ICw2
ICw3IH07CgppbnQgc2VnX3JlZ1tdPXsxMiAsMTMgLDE0ICwxNSAsMTYgLDE3ICwzNyAsMzcgfTsK
CiAKaW50IGNvbnRyb2xfcmVnW109ezIwICwzNyAsMjEgLDIyICwKCQkJCTM3ICwzNyAsMzcgLDM3
IH07CgppbnQgZGVidWdfcmVnW109ezI4ICwyOSAsMzAgLDMxICwKCQkJCTMyICwzMiAsMzQgLDM1
IH07CgppbnQgdGVzdF9yZWdbXT17MzcgLDM3ICwzNyAsMjMgLAoJCQkJMjQgLDI1ICwyNiAsMjcg
fTsKCmNoYXIgKndvcmRyZWdbXT17IkFYIiwiQ1giLCJEWCIsIkJYIiwKCQkJCSJTUCIsIkJQIiwi
U0kiLCJESSIsCgkJCQkiQlgrU0kiLCJCWCtESSIsIkJQK1NJIiwiQlArREkiLAoJCQkJIkVTIiwi
Q1MiLCJTUyIsIkRTIiwKCQkJCSJGUyIsIkdTIixfX251bGwgLF9fbnVsbCAsCgkJCQlfX251bGwg
LF9fbnVsbCAsX19udWxsICxfX251bGwgLAkgCgkJCQlfX251bGwgLF9fbnVsbCAsX19udWxsICxf
X251bGwgLAoJCQkJX19udWxsICxfX251bGwgLF9fbnVsbCAsX19udWxsICwKCQkJCV9fbnVsbCAs
X19udWxsICxfX251bGwgLF9fbnVsbCAsCgkJCQlfX251bGwgLF9fbnVsbCB9OwoKY2hhciAqZHdv
cmRyZWdbXT17IkVBWCIsIkVDWCIsIkVEWCIsIkVCWCIsCgkJCQkiRVNQIiwiRUJQIiwiRVNJIiwi
RURJIiwKCQkJCSJFQlgrRVNJIiwiRUJYK0VESSIsIkVCUCtFU0kiLCJFQlArRURJIiwKCQkJCSJF
UyIsIkNTIiwiU1MiLCJEUyIsCgkJCQkiRlMiLCJHUyIsX19udWxsICxfX251bGwgLAoJCQkJIkNS
MCIsIkNSMiIsIkNSMyIsIlRSMyIsCSAKCQkJCSJUUjQiLCJUUjUiLCJUUjYiLCJUUjciLAoJCQkJ
IkRSMCIsIkRSMSIsIkRSMiIsIkRSMyIsCgkJCQkiRFI0IiwiRFI1IiwiRFI2IiwiRFI3IiwKCQkJ
CV9fbnVsbCAsX19udWxsIH07CgpjaGFyICpieXRlcmVnW109eyJBTCIsIkNMIiwiREwiLCJCTCIs
IkFIIiwiQ0giLCJESCIsIkJIIn07CgpjaGFyICpmcHJlZ1tdPXsiRlAwIiwiRlAxIiwiRlAyIiwi
RlAzIiwiRlA0IiwiRlA1IiwiRlA2IiwiRlA3In07CgogCgoKY2hhciAqbm1fYWFhID0iYWFhIjsg
IGNoYXIgKm5tX2FhZCA9ImFhZCI7ICBjaGFyICpubV9hYW0gPSJhYW0iOyAgY2hhciAqbm1fYWFz
ID0iYWFzIjsgIGNoYXIgKm5tX2FkZCA9ImFkZCI7ICBjaGFyICpubV9hZGMgPSJhZGMiOyAgY2hh
ciAqbm1fYW5kID0iYW5kIjsgIGNoYXIgKm5tX2FycGwgPSJhcnBsIjsgCmNoYXIgKm5tX2JvdW5k
ID0iYm91bmQiOyAgY2hhciAqbm1fYnN3YXAgPSJic3dhcCI7ICBjaGFyICpubV9jYWxsID0iY2Fs
bCI7ICBjaGFyICpubV9idCA9ImJ0IjsgIGNoYXIgKm5tX2J0YyA9ImJ0YyI7ICBjaGFyICpubV9i
dHMgPSJidHMiOyAgY2hhciAqbm1fYnRyID0iYnRyIjsgIGNoYXIgKm5tX2JzZiA9ImJzZiI7IApj
aGFyICpubV9ic3IgPSJic3IiOyAgY2hhciAqbm1fY2FsbGYgPSJjYWxsZiI7ICBjaGFyICpubV9j
YncgPSJjYnciOyAgY2hhciAqbm1fY2xjID0iY2xjIjsgIGNoYXIgKm5tX2NsZCA9ImNsZCI7ICBj
aGFyICpubV9jbGkgPSJjbGkiOyAgY2hhciAqbm1fY2x0cyA9ImNsdHMiOyAgY2hhciAqbm1fY21j
ID0iY21jIjsgCmNoYXIgKm5tX2NtcCA9ImNtcCI7ICBjaGFyICpubV9jbXBzYiA9ImNtcHNiIjsg
IGNoYXIgKm5tX2NtcHN3ID0iY21wc3ciOyAgY2hhciAqbm1fY21weGNoZyA9ImNtcHhjaGciOyAg
Y2hhciAqbm1fY3dkID0iY3dkIjsgIGNoYXIgKm5tX2RhYSA9ImRhYSI7ICBjaGFyICpubV9kYXMg
PSJkYXMiOyAKY2hhciAqbm1fZGVjID0iZGVjIjsgIGNoYXIgKm5tX2RpdiA9ImRpdiI7ICBjaGFy
ICpubV9lbnRlciA9ImVudGVyIjsgIGNoYXIgKm5tX2YyeG0xID0iZjJ4bTEiOyAgY2hhciAqbm1f
ZmFicyA9ImZhYnMiOyAgY2hhciAqbm1fZmFkZCA9ImZhZGQiOyAKY2hhciAqbm1fZmFkZHAgPSJm
YWRkcCI7ICBjaGFyICpubV9maWFkZCA9ImZpYWRkIjsgIGNoYXIgKm5tX2ZibGQgPSJmYmxkIjsg
IGNoYXIgKm5tX2Zic3RwID0iZmJzdHAiOyAgY2hhciAqbm1fZmNocyA9ImZjaHMiOyAgY2hhciAq
bm1fZmNsZXggPSJmY2xleCI7ICBjaGFyICpubV9mbmNsZXggPSJmbmNsZXgiOyAgY2hhciAqbm1f
ZmNvbSA9ImZjb20iOyAKY2hhciAqbm1fZmNvbXAgPSJmY29tcCI7ICBjaGFyICpubV9mY29tcHAg
PSJmY29tcHAiOyAgY2hhciAqbm1fZmNvcyA9ImZjb3MiOyAgY2hhciAqbm1fZmRlY3N0cCA9ImZk
ZWNzdHAiOyAgY2hhciAqbm1fZmRpdiA9ImZkaXYiOyAgY2hhciAqbm1fZmRpdnAgPSJmZGl2cCI7
ICBjaGFyICpubV9maWRpdiA9ImZpZGl2IjsgIGNoYXIgKm5tX2ZkaXZyID0iZmRpdnIiOyAKY2hh
ciAqbm1fZmRpdnByID0iZmRpdnByIjsgIGNoYXIgKm5tX2ZpZGl2ciA9ImZpZGl2ciI7ICBjaGFy
ICpubV9mZnJlZSA9ImZmcmVlIjsgIGNoYXIgKm5tX2ZpY29tID0iZmljb20iOyAgY2hhciAqbm1f
Zmljb21wID0iZmljb21wIjsgIGNoYXIgKm5tX2ZpbGQgPSJmaWxkIjsgIGNoYXIgKm5tX2ZpbmNz
dHAgPSJmaW5jc3RwIjsgIGNoYXIgKm5tX2Zpbml0ID0iZmluaXQiOyAKY2hhciAqbm1fZmltdWwg
PSJmaW11bCI7ICBjaGFyICpubV9maXN0ID0iZmlzdCI7ICBjaGFyICpubV9maXN0cCA9ImZpc3Rw
IjsgIGNoYXIgKm5tX2ZsZCA9ImZsZCI7ICBjaGFyICpubV9mbGQxID0iZmxkMSI7ICBjaGFyICpu
bV9mbGRsMnQgPSJmbGRsMnQiOyAgY2hhciAqbm1fZmxkbDJlID0iZmxkbDJlIjsgIGNoYXIgKm5t
X2ZsZHBpID0iZmxkcGkiOyAKY2hhciAqbm1fZmxkbGcyID0iZmxkbGcyIjsgIGNoYXIgKm5tX2Zs
ZGxuMiA9ImZsZGxuMiI7ICBjaGFyICpubV9mbGRjdyA9ImZsZGN3IjsgIGNoYXIgKm5tX2ZsZGVu
diA9ImZsZGVudiI7ICBjaGFyICpubV9mbGR6ID0iZmxkeiI7ICBjaGFyICpubV9mbXVsID0iZm11
bCI7ICBjaGFyICpubV9mbXVscCA9ImZtdWxwIjsgIGNoYXIgKm5tX2ZuaW5pdCA9ImZuaW5pdCI7
IApjaGFyICpubV9mbmxkY3cgPSJmbmxkY3ciOyAgY2hhciAqbm1fZm5vcCA9ImZub3AiOyAgY2hh
ciAqbm1fZnBhdGFuID0iZnBhdGFuIjsgIGNoYXIgKm5tX2ZwcmVtID0iZnByZW0iOyAgY2hhciAq
bm1fZnByZW0xID0iZnByZW0xIjsgIGNoYXIgKm5tX2ZwdGFuID0iZnB0YW4iOyAgY2hhciAqbm1f
ZnJuZGludCA9ImZybmRpbnQiOyAgY2hhciAqbm1fZnJzdG9yID0iZnJzdG9yIjsgCmNoYXIgKm5t
X2ZzYXZlID0iZnNhdmUiOyAgY2hhciAqbm1fZm5zYXZlID0iZm5zYXZlIjsgIGNoYXIgKm5tX2Zz
Y2FsZSA9ImZzY2FsZSI7ICBjaGFyICpubV9mc2luID0iZnNpbiI7ICBjaGFyICpubV9mc2luY29z
ID0iZnNpbmNvcyI7ICBjaGFyICpubV9mc3FydCA9ImZzcXJ0IjsgIGNoYXIgKm5tX2ZzdCA9ImZz
dCI7ICBjaGFyICpubV9mc3RwID0iZnN0cCI7IApjaGFyICpubV9mc3RjdyA9ImZzdGN3IjsgIGNo
YXIgKm5tX2Zuc3RjdyA9ImZuc3RjdyI7ICBjaGFyICpubV9mc3RlbnYgPSJmc3RlbnYiOyAgY2hh
ciAqbm1fZm5zdGVudiA9ImZuc3RlbnYiOyAgY2hhciAqbm1fZnN0c3cgPSJmc3RzdyI7ICBjaGFy
ICpubV9mbnN0c3cgPSJmbnN0c3ciOyAgY2hhciAqbm1fZnN0dWIgPSJmc3R1YiI7ICBjaGFyICpu
bV9mc3ViID0iZnN1YiI7IApjaGFyICpubV9mc3VicCA9ImZzdWJwIjsgIGNoYXIgKm5tX2Zpc3Vi
ID0iZmlzdWIiOyAgY2hhciAqbm1fZnN1YnIgPSJmc3ViciI7ICBjaGFyICpubV9mc3VicHIgPSJm
c3VicHIiOyAgY2hhciAqbm1fZmlzdWJyID0iZmlzdWJyIjsgIGNoYXIgKm5tX2Z0c3QgPSJmdHN0
IjsgIGNoYXIgKm5tX2Z1Y29tID0iZnVjb20iOyAgY2hhciAqbm1fZnVjb21wID0iZnVjb21wIjsg
CmNoYXIgKm5tX2Z1Y29tcHAgPSJmdWNvbXBwIjsgIGNoYXIgKm5tX2Z3YWl0ID0iZndhaXQiOyAg
Y2hhciAqbm1fZnhhbSA9ImZ4YW0iOyAgY2hhciAqbm1fZnhjaCA9ImZ4Y2giOyAgY2hhciAqbm1f
Znh0cmFjdCA9ImZ4dHJhY3QiOyAgY2hhciAqbm1fZnlsMnggPSJmeWwyeCI7ICBjaGFyICpubV9m
eWwyeHAxID0iZnlsMnhwMSI7ICBjaGFyICpubV9oYWx0ID0iaGFsdCI7IApjaGFyICpubV9pZGl2
ID0iaWRpdiI7ICBjaGFyICpubV9pbXVsID0iaW11bCI7ICBjaGFyICpubV9pbiA9ImluIjsgIGNo
YXIgKm5tX2luYyA9ImluYyI7ICBjaGFyICpubV9pbnMgPSJpbnMiOyAgY2hhciAqbm1faW50ID0i
aW50IjsgIGNoYXIgKm5tX2ludG8gPSJpbnRvIjsgIGNoYXIgKm5tX2ludmQgPSJpbnZkIjsgCmNo
YXIgKm5tX2ludmxwZyA9ImludmxwZyI7ICBjaGFyICpubV9pcmV0ID0iaXJldCI7ICBjaGFyICpu
bV9qYSA9ImphIjsgIGNoYXIgKm5tX2piID0iamIiOyAgY2hhciAqbm1famJlID0iamJlIjsgIGNo
YXIgKm5tX2pjeHogPSJqY3h6IjsgIGNoYXIgKm5tX2pnID0iamciOyAgY2hhciAqbm1famdlID0i
amdlIjsgCmNoYXIgKm5tX2psZSA9ImpsZSI7ICBjaGFyICpubV9qbHQgPSJqbHQiOyAgY2hhciAq
bm1fam1wID0iam1wIjsgIGNoYXIgKm5tX2ptcGYgPSJqbXBmIjsgIGNoYXIgKm5tX2puYiA9Impu
YiI7ICBjaGFyICpubV9qbm8gPSJqbm8iOyAgY2hhciAqbm1fam5wID0iam5wIjsgIGNoYXIgKm5t
X2pucyA9ImpucyI7IApjaGFyICpubV9qbnogPSJqbnoiOyAgY2hhciAqbm1fam8gPSJqbyI7ICBj
aGFyICpubV9qcCA9ImpwIjsgIGNoYXIgKm5tX2pzID0ianMiOyAgY2hhciAqbm1fanogPSJqeiI7
ICBjaGFyICpubV9sYWhmID0ibGFoZiI7ICBjaGFyICpubV9sYXIgPSJsYXIiOyAgY2hhciAqbm1f
bGRzID0ibGRzIjsgCmNoYXIgKm5tX2xlYSA9ImxlYSI7ICBjaGFyICpubV9sZWF2ZSA9ImxlYXZl
IjsgIGNoYXIgKm5tX2xlcyA9ImxlcyI7ICBjaGFyICpubV9sZ2R0ID0ibGdkdCI7ICBjaGFyICpu
bV9saWR0ID0ibGlkdCI7ICBjaGFyICpubV9sbXN3ID0ibG1zdyI7ICBjaGFyICpubV9sb2NrID0i
bG9jayI7ICBjaGFyICpubV9sb2RzYiA9ImxvZHNiIjsgCmNoYXIgKm5tX2xvZHN3ID0ibG9kc3ci
OyAgY2hhciAqbm1fbG9vcCA9Imxvb3AiOyAgY2hhciAqbm1fbG9vcGUgPSJsb29wZSI7ICBjaGFy
ICpubV9sb29wbmUgPSJsb29wbmUiOyAgY2hhciAqbm1fbGZzID0ibGZzIjsgIGNoYXIgKm5tX2xn
cyA9ImxncyI7ICBjaGFyICpubV9sc3IgPSJsc3IiOyAgY2hhciAqbm1fbHNzID0ibHNzIjsgCmNo
YXIgKm5tX2xzbCA9ImxzbCI7ICBjaGFyICpubV9sdHIgPSJsdHIiOyAgY2hhciAqbm1fbW92ID0i
bW92IjsgIGNoYXIgKm5tX21vdnNiID0ibW92c2IiOyAgY2hhciAqbm1fbW92c3cgPSJtb3ZzdyI7
ICBjaGFyICpubV9tb3ZzeCA9Im1vdnN4IjsgIGNoYXIgKm5tX21vdnp4ID0ibW92engiOyAgY2hh
ciAqbm1fbXVsID0ibXVsIjsgCmNoYXIgKm5tX25lZyA9Im5lZyI7ICBjaGFyICpubV9ub3QgPSJu
b3QiOyAgY2hhciAqbm1fbm9wID0ibm9wIjsgIGNoYXIgKm5tX29yID0ib3IiOyAgY2hhciAqbm1f
b3V0ID0ib3V0IjsgIGNoYXIgKm5tX291dHMgPSJvdXRzIjsgIGNoYXIgKm5tX3B1c2ggPSJwdXNo
IjsgIGNoYXIgKm5tX3B1c2hhID0icHVzaGEiOyAKY2hhciAqbm1fcHVzaGYgPSJwdXNoZiI7ICBj
aGFyICpubV9wb3AgPSJwb3AiOyAgY2hhciAqbm1fcG9wZiA9InBvcGYiOyAgY2hhciAqbm1fcG9w
YSA9InBvcGEiOyAgY2hhciAqbm1fcmVwID0icmVwIjsgIGNoYXIgKm5tX3JlcGUgPSJyZXBlIjsg
IGNoYXIgKm5tX3JldCA9InJldCI7ICBjaGFyICpubV9yY2wgPSJyY2wiOyAKY2hhciAqbm1fcmNy
ID0icmNyIjsgIGNoYXIgKm5tX3JvbCA9InJvbCI7ICBjaGFyICpubV9yb3IgPSJyb3IiOyAgY2hh
ciAqbm1fc2FoZiA9InNhaGYiOyAgY2hhciAqbm1fc2JiID0ic2JiIjsgIGNoYXIgKm5tX3NhciA9
InNhciI7ICBjaGFyICpubV9zYWwgPSJzYWwiOyAgY2hhciAqbm1fc2Nhc2IgPSJzY2FzYiI7IApj
aGFyICpubV9zY2FzdyA9InNjYXN3IjsgIGNoYXIgKm5tX3NldGEgPSJzZXRhIjsgIGNoYXIgKm5t
X3NldGIgPSJzZXRiIjsgIGNoYXIgKm5tX3NldGJlID0ic2V0YmUiOyAgY2hhciAqbm1fc2V0ZyA9
InNldGciOyAgY2hhciAqbm1fc2V0Z2UgPSJzZXRnZSI7ICBjaGFyICpubV9zZXRsZSA9InNldGxl
IjsgIGNoYXIgKm5tX3NldGx0ID0ic2V0bHQiOyAKY2hhciAqbm1fc2V0bmIgPSJzZXRuYiI7ICBj
aGFyICpubV9zZXRubyA9InNldG5vIjsgIGNoYXIgKm5tX3NldG5wID0ic2V0bnAiOyAgY2hhciAq
bm1fc2V0bnMgPSJzZXRucyI7ICBjaGFyICpubV9zZXRueiA9InNldG56IjsgIGNoYXIgKm5tX3Nl
dG8gPSJzZXRvIjsgIGNoYXIgKm5tX3NldHAgPSJzZXRwIjsgIGNoYXIgKm5tX3NldHMgPSJzZXRz
IjsgCmNoYXIgKm5tX3NldHogPSJzZXR6IjsgIGNoYXIgKm5tX3NnZHQgPSJzZ2R0IjsgIGNoYXIg
Km5tX3NpZHQgPSJzaWR0IjsgIGNoYXIgKm5tX3NobCA9InNobCI7ICBjaGFyICpubV9zaGxkID0i
c2hsZCI7ICBjaGFyICpubV9zaHIgPSJzaHIiOyAgY2hhciAqbm1fc2hyZCA9InNocmQiOyAgY2hh
ciAqbm1fc2xkdCA9InNsZHQiOyAKY2hhciAqbm1fc21zdyA9InNtc3ciOyAgY2hhciAqbm1fc3Rj
ID0ic3RjIjsgIGNoYXIgKm5tX3N0ZCA9InN0ZCI7ICBjaGFyICpubV9zdGkgPSJzdGkiOyAgY2hh
ciAqbm1fc3RyID0ic3RyIjsgIGNoYXIgKm5tX3N0b3NiID0ic3Rvc2IiOyAgY2hhciAqbm1fc3Rv
c3cgPSJzdG9zdyI7IApjaGFyICpubV9zdWIgPSJzdWIiOyAgY2hhciAqbm1fdGVzdCA9InRlc3Qi
OyAgY2hhciAqbm1fdmVyciA9InZlcnIiOyAgY2hhciAqbm1fdmVydyA9InZlcnciOyAgY2hhciAq
bm1fd2FpdCA9IndhaXQiOyAgY2hhciAqbm1fd2JpbnZkID0id2JpbnZkIjsgIGNoYXIgKm5tX3hh
ZGQgPSJ4YWRkIjsgIGNoYXIgKm5tX3hvciA9InhvciI7IApjaGFyICpubV94Y2hnID0ieGNoZyI7
ICBjaGFyICpubV94bGF0ID0ieGxhdCI7IApjaGFyICpubV91bmtub3duPSI/Pz8iOwpjaGFyICpu
bV9jcz0iY3M6IjsKY2hhciAqbm1fZXM9ImVzOiI7CmNoYXIgKm5tX2RzPSJkczoiOwpjaGFyICpu
bV9zcz0ic3M6IjsKCiAKCgpjaGFyICpUVFRpbnRvcFtdPXtubV9hZGQsbm1fb3Isbm1fYWRjLG5t
X3NiYixubV9hbmQsbm1fc3ViLG5tX3hvcixubV9jbXB9OwpjaGFyICpUVFRzaGlmdFtdPXtubV9y
b2wsbm1fcm9yLG5tX3JjbCxubV9yY3Isbm1fc2hsLG5tX3NocixubV9zYWwsbm1fc2FyfTsKY2hh
ciAqVFRUaW5jZGVjW109e25tX2luYyxubV9kZWMsbm1fY2FsbCxubV9jYWxsZiwKCQkJCQlubV9q
bXAsbm1fam1wZixubV9wdXNoLG5tX3BvcH07CmNoYXIgKlRUVG5vdG5lZ1tdPXtubV90ZXN0LG5t
X3Vua25vd24sbm1fbm90LG5tX25lZywKCQkJCQlubV9tdWwsbm1faW11bCxubV9kaXYsbm1faWRp
dn07CmNoYXIgKlRUVHBvcFtdPXtubV9wb3Asbm1fdW5rbm93bixubV91bmtub3duLG5tX3Vua25v
d24sCgkJCQkJbm1fdW5rbm93bixubV91bmtub3duLG5tX3Vua25vd24sbm1fdW5rbm93bn07Cgpj
aGFyICp0YWJsZV9pbnN0X25tZW1bXT17bm1fc2dkdCxubV9zaWR0LG5tX2xnZHQsbm1fbGlkdCwK
CQkJCQlubV9zbXN3LG5tX3Vua25vd24sbm1fbG1zdyxubV9pbnZscGd9OwoKIAoKY2hhciAqZnBf
ZDloWzMyXT17CglubV9mY2hzLG5tX2ZhYnMsX19udWxsICxfX251bGwgLAoJbm1fZnRzdCxubV9m
eGFtLF9fbnVsbCAsX19udWxsICwKCW5tX2ZsZDEsbm1fZmxkbDJ0LG5tX2ZsZGwyZSxubV9mbGRw
aSwKCW5tX2ZsZGxnMixubV9mbGRsbjIsbm1fZmxkeixfX251bGwgLAoJbm1fZjJ4bTEsbm1fZnls
Mngsbm1fZnB0YW4sbm1fZnBhdGFuLAoJbm1fZnh0cmFjdCxubV9mcHJlbTEsbm1fZmRlY3N0cCxu
bV9maW5jc3RwLAoJbm1fZnByZW0sbm1fZnlsMnhwMSxubV9mc3FydCxubV9mc2luY29zLAoJbm1f
ZnJuZGludCxubV9mc2NhbGUsbm1fZnNpbixubV9mY29zCn07CgpjaGFyICpmcF9ubWVtb25pY3Nb
OF1bOF09ewoJbm1fZmFkZCxubV9mbXVsLG5tX2Zjb20sbm1fZmNvbXAsbm1fZnN1YixubV9mc3Vi
cixubV9mZGl2LG5tX2ZkaXZyLAoJbm1fZmxkLF9fbnVsbCAsbm1fZnN0LG5tX2ZzdHAsbm1fZmxk
ZW52LG5tX2ZubGRjdyxubV9mbnN0ZW52LG5tX2Zuc3RjdywKCW5tX2ZpYWRkLG5tX2ZpbXVsLG5t
X2ZpY29tLG5tX2ZpY29tcCxubV9maXN1YixubV9maXN1YnIsbm1fZmlkaXYsbm1fZmlkaXZyLAoJ
bm1fZmlsZCxfX251bGwgLG5tX2Zpc3Qsbm1fZmlzdHAsX19udWxsICxubV9mbGQsX19udWxsICxu
bV9mc3RwLAoJbm1fZmFkZCxubV9mbXVsLG5tX2Zjb20sbm1fZmNvbXAsbm1fZnN1YixubV9mc3Vi
cixubV9mZGl2LG5tX2ZkaXZyLAoJbm1fZmxkLF9fbnVsbCAsbm1fZnN0LG5tX2ZzdHAsbm1fZnJz
dG9yLF9fbnVsbCAsbm1fZnNhdmUsbm1fZnN0c3csCglubV9maWFkZCxubV9maW11bCxubV9maWNv
bSxubV9maWNvbXAsbm1fZmlzdWIsbm1fZmlzdWJyLG5tX2ZpZGl2LG5tX2ZpZGl2ciwKCW5tX2Zp
bGQsX19udWxsICxubV9maXN0LF9fbnVsbCAsbm1fZmJsZCxubV9maWxkLG5tX2Zpc3RwLG5tX2Zp
c3RwCn07CgppbnN0cnVjdGlvbjo6b3Bjb2RlX2Rlc2MgaW5zdHJ1Y3Rpb246Om9wdGFibGVbMjU2
XT17Cgl7UFJPQ184MDg2LG5tX2FkZCwxLCZyZWcycm19LAkgCgl7UFJPQ184MDg2LG5tX2FkZCwx
LCZyZWcycm19LAoJe1BST0NfODA4NixubV9hZGQsMSwmcm0ycmVnfSwKCXtQUk9DXzgwODYsbm1f
YWRkLDEsJnJtMnJlZ30sCgl7UFJPQ184MDg2LG5tX2FkZCwxLCZhY2N1bV9pbW19LAoJe1BST0Nf
ODA4NixubV9hZGQsMSwmYWNjdW1faW1tfSwKCXtQUk9DXzgwODgsbm1fcHVzaCwxLCZzZWdyZWdf
cH0sCgl7UFJPQ184MDg4LG5tX3BvcCwxLCZzZWdyZWdfcH0sCgl7UFJPQ184MDg4LG5tX29yLDEs
JnJlZzJybX0sCgl7UFJPQ184MDg4LG5tX29yLDEsJnJlZzJybX0sCgl7UFJPQ184MDg4LG5tX29y
LDEsJnJtMnJlZ30sCgl7UFJPQ184MDg4LG5tX29yLDEsJnJtMnJlZ30sCgl7UFJPQ184MDg4LG5t
X29yLDEsJmFjY3VtX2ltbX0sCgl7UFJPQ184MDg4LG5tX29yLDEsJmFjY3VtX2ltbX0sCgl7UFJP
Q184MDg4LG5tX3B1c2gsMSwmc2VncmVnX3B9LAoJe1BST0NfODAyODYsX19udWxsICwxLCZzcGVj
aWFsfSwJCSAKCXtQUk9DXzgwODYsbm1fYWRjLDEsJnJlZzJybX0sCSAKCXtQUk9DXzgwODYsbm1f
YWRjLDEsJnJlZzJybX0sCgl7UFJPQ184MDg2LG5tX2FkYywxLCZybTJyZWd9LAoJe1BST0NfODA4
NixubV9hZGMsMSwmcm0ycmVnfSwKCXtQUk9DXzgwODYsbm1fYWRjLDEsJmFjY3VtX2ltbX0sCgl7
UFJPQ184MDg2LG5tX2FkYywxLCZhY2N1bV9pbW19LAoJe1BST0NfODA4OCxubV9wdXNoLDEsJnNl
Z3JlZ19wfSwKCXtQUk9DXzgwODgsbm1fcG9wLDEsJnNlZ3JlZ19wfSwKCXtQUk9DXzgwODgsbm1f
c2JiLDEsJnJlZzJybX0sCgl7UFJPQ184MDg4LG5tX3NiYiwxLCZyZWcycm19LAoJe1BST0NfODA4
OCxubV9zYmIsMSwmcm0ycmVnfSwKCXtQUk9DXzgwODgsbm1fc2JiLDEsJnJtMnJlZ30sCgl7UFJP
Q184MDg4LG5tX3NiYiwxLCZhY2N1bV9pbW19LAoJe1BST0NfODA4OCxubV9zYmIsMSwmYWNjdW1f
aW1tfSwKCXtQUk9DXzgwODgsbm1fcHVzaCwxLCZzZWdyZWdfcH0sCgl7UFJPQ184MDg4LG5tX3Bv
cCwxLCZzZWdyZWdfcH0sCgl7UFJPQ184MDg2LG5tX2FuZCwxLCZyZWcycm19LAkgCgl7UFJPQ184
MDg2LG5tX2FuZCwxLCZyZWcycm19LAoJe1BST0NfODA4NixubV9hbmQsMSwmcm0ycmVnfSwKCXtQ
Uk9DXzgwODYsbm1fYW5kLDEsJnJtMnJlZ30sCgl7UFJPQ184MDg2LG5tX2FuZCwxLCZhY2N1bV9p
bW19LAoJe1BST0NfODA4NixubV9hbmQsMSwmYWNjdW1faW1tfSwKCXtQUk9DXzgwODgsbm1fZXMs
MSxfX251bGwgfSwKCXtQUk9DXzgwODgsbm1fZGFhLDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5t
X3N1YiwxLCZyZWcycm19LAoJe1BST0NfODA4OCxubV9zdWIsMSwmcmVnMnJtfSwKCXtQUk9DXzgw
ODgsbm1fc3ViLDEsJnJtMnJlZ30sCgl7UFJPQ184MDg4LG5tX3N1YiwxLCZybTJyZWd9LAoJe1BS
T0NfODA4OCxubV9zdWIsMSwmYWNjdW1faW1tfSwKCXtQUk9DXzgwODgsbm1fc3ViLDEsJmFjY3Vt
X2ltbX0sCgl7UFJPQ184MDg4LG5tX2NzLDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX2Rhcywx
LF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV94b3IsMSwmcmVnMnJtfSwJIAoJe1BST0NfODA4OCxu
bV94b3IsMSwmcmVnMnJtfSwKCXtQUk9DXzgwODgsbm1feG9yLDEsJnJtMnJlZ30sCgl7UFJPQ184
MDg4LG5tX3hvciwxLCZybTJyZWd9LAoJe1BST0NfODA4OCxubV94b3IsMSwmYWNjdW1faW1tfSwK
CXtQUk9DXzgwODgsbm1feG9yLDEsJmFjY3VtX2ltbX0sCgl7UFJPQ184MDg4LG5tX3NzLDEsX19u
dWxsIH0sCgl7UFJPQ184MDg2LG5tX2FhYSwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9jbXAs
MSwmcmVnMnJtfSwKCXtQUk9DXzgwODgsbm1fY21wLDEsJnJlZzJybX0sCgl7UFJPQ184MDg4LG5t
X2NtcCwxLCZybTJyZWd9LAoJe1BST0NfODA4OCxubV9jbXAsMSwmcm0ycmVnfSwKCXtQUk9DXzgw
ODgsbm1fY21wLDEsJmFjY3VtX2ltbX0sCgl7UFJPQ184MDg4LG5tX2NtcCwxLCZhY2N1bV9pbW19
LAoJe1BST0NfODA4OCxubV9kcywxLF9fbnVsbCB9LAoJe1BST0NfODA4NixubV9hYXMsMSxfX251
bGwgfSwKCXtQUk9DXzgwODgsbm1faW5jLDEsJnNpbmdsZXJlZ30sCSAKCXtQUk9DXzgwODgsbm1f
aW5jLDEsJnNpbmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX2luYywxLCZzaW5nbGVyZWd9LAoJe1BS
T0NfODA4OCxubV9pbmMsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1faW5jLDEsJnNpbmds
ZXJlZ30sCgl7UFJPQ184MDg4LG5tX2luYywxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9p
bmMsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1faW5jLDEsJnNpbmdsZXJlZ30sCgl7UFJP
Q184MDg4LG5tX2RlYywxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9kZWMsMSwmc2luZ2xl
cmVnfSwKCXtQUk9DXzgwODgsbm1fZGVjLDEsJnNpbmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX2Rl
YywxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9kZWMsMSwmc2luZ2xlcmVnfSwKCXtQUk9D
XzgwODgsbm1fZGVjLDEsJnNpbmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX2RlYywxLCZzaW5nbGVy
ZWd9LAoJe1BST0NfODA4OCxubV9kZWMsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1fcHVz
aCwxLCZzaW5nbGVyZWd9LAkgCgl7UFJPQ184MDg4LG5tX3B1c2gsMSwmc2luZ2xlcmVnfSwKCXtQ
Uk9DXzgwODgsbm1fcHVzaCwxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9wdXNoLDEsJnNp
bmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX3B1c2gsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgs
bm1fcHVzaCwxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9wdXNoLDEsJnNpbmdsZXJlZ30s
Cgl7UFJPQ184MDg4LG5tX3B1c2gsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1fcG9wLDEs
JnNpbmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX3BvcCwxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4
OCxubV9wb3AsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1fcG9wLDEsJnNpbmdsZXJlZ30s
Cgl7UFJPQ184MDg4LG5tX3BvcCwxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9wb3AsMSwm
c2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1fcG9wLDEsJnNpbmdsZXJlZ30sCgl7UFJPQ184MDg4
LG5tX3BvcCwxLCZzaW5nbGVyZWd9LAoJe1BST0NfODAyODYsbm1fcHVzaGEsMSxfX251bGwgfSwJ
CSAKCXtQUk9DXzgwMjg2LG5tX3BvcGEsMSxfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX2JvdW5k
LDEsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV9hcnBsLDEsJmxkc2VnbWVudF9saW1pdH0sCgl7
UFJPQ184MDI4NixubV91bmtub3duLDEsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV91bmtub3du
LDEsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV91bmtub3duLDEsX19udWxsIH0sCgl7UFJPQ184
MDI4NixubV91bmtub3duLDEsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV9wdXNoLDEsJnB1c2hf
aW1tfSwKCXtQUk9DXzgwMjg2LG5tX2ltdWwsMSwmaW11bF8yODZ9LAoJe1BST0NfODAyODYsbm1f
cHVzaCwxLCZwdXNoX2ltbX0sCgl7UFJPQ184MDI4NixubV9pbXVsLDEsJmltdWxfMjg2fSwKCXtQ
Uk9DXzgwMjg2LG5tX2lucywxLF9fbnVsbCB9LAoJe1BST0NfODAyODYsbm1faW5zLDEsX19udWxs
IH0sCgl7UFJPQ184MDI4NixubV9vdXRzLDEsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV9vdXRz
LDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX2pvLDIsJmptcHJlbDh9LAkJIAoJe1BST0NfODA4
OCxubV9qbm8sMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4LG5tX2piLDIsJmptcHJlbDh9LAoJe1BS
T0NfODA4OCxubV9qbmIsMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4LG5tX2p6LDIsJmptcHJlbDh9
LAoJe1BST0NfODA4OCxubV9qbnosMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4LG5tX2piZSwyLCZq
bXByZWw4fSwKCXtQUk9DXzgwODgsbm1famEsMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4LG5tX2pz
LDIsJmptcHJlbDh9LAoJe1BST0NfODA4OCxubV9qbnMsMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4
LG5tX2pwLDIsJmptcHJlbDh9LAoJe1BST0NfODA4OCxubV9qbnAsMiwmam1wcmVsOH0sCgl7UFJP
Q184MDg4LG5tX2psdCwyLCZqbXByZWw4fSwKCXtQUk9DXzgwODgsbm1famdlLDIsJmptcHJlbDh9
LAoJe1BST0NfODA4OCxubV9qbGUsMiwmam1wcmVsOH0sCgl7UFJPQ184MDg4LG5tX2pnLDIsJmpt
cHJlbDh9LAoJe1BST0NfODA4NixfX251bGwgLDEsJmNvbnN0MnJtfSwJCSAKCXtQUk9DXzgwODYs
X19udWxsICwxLCZjb25zdDJybX0sCgl7UFJPQ184MDg2LF9fbnVsbCAsMSwmY29uc3Qycm19LAoJ
e1BST0NfODA4NixfX251bGwgLDEsJmNvbnN0MnJtfSwKCXtQUk9DXzgwODgsbm1fdGVzdCwxLCZy
ZWcycm19LAoJe1BST0NfODA4OCxubV90ZXN0LDEsJnJlZzJybX0sCgl7UFJPQ184MDg4LG5tX3hj
aGcsMSwmcmVnMnJtfSwKCXtQUk9DXzgwODgsbm1feGNoZywxLCZyZWcycm19LAoJe1BST0NfODA4
OCxubV9tb3YsMSwmcmVnMnJtfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJnJlZzJybX0sCgl7UFJP
Q184MDg4LG5tX21vdiwxLCZybTJyZWd9LAoJe1BST0NfODA4OCxubV9tb3YsMSwmcm0ycmVnfSwK
CXtQUk9DXzgwODgsbm1fbW92LDEsJnNlZ3JlZzJybX0sCgl7UFJPQ184MDg4LG5tX2xlYSwxLCZy
bTJyZWd9LAoJe1BST0NfODA4OCxubV9tb3YsMSwmcm0yc2VncmVnfSwKCXtQUk9DXzgwODgsbm1f
cG9wLDEsJnJtX29ubHl9LAoJe1BST0NfODA4OCxubV94Y2hnLDEsJnNpbmdsZXJlZ30sCSAKCXtQ
Uk9DXzgwODgsbm1feGNoZywxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV94Y2hnLDEsJnNp
bmdsZXJlZ30sCgl7UFJPQ184MDg4LG5tX3hjaGcsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgs
bm1feGNoZywxLCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV94Y2hnLDEsJnNpbmdsZXJlZ30s
Cgl7UFJPQ184MDg4LG5tX3hjaGcsMSwmc2luZ2xlcmVnfSwKCXtQUk9DXzgwODgsbm1feGNoZywx
LCZzaW5nbGVyZWd9LAoJe1BST0NfODA4OCxubV9jYncsMSxfX251bGwgfSwKCXtQUk9DXzgwODgs
bm1fY3dkLDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX2NhbGwsNSwmZmFyX2ptcGNhbGx9LAoJ
e1BST0NfODA4NyxubV93YWl0LDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX3B1c2hmLDEsX19u
dWxsIH0sCgl7UFJPQ184MDg4LG5tX3BvcGYsMSxfX251bGwgfSwKCXtQUk9DXzgwODgsbm1fc2Fo
ZiwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9sYWhmLDEsX19udWxsIH0sCgl7UFJPQ184MDg4
LG5tX21vdiwzLCZtZW0yYWNjdW19LAkgCgl7UFJPQ184MDg4LG5tX21vdiwzLCZtZW0yYWNjdW19
LAoJe1BST0NfODA4OCxubV9tb3YsMywmYWNjdW0ybWVtfSwKCXtQUk9DXzgwODgsbm1fbW92LDMs
JmFjY3VtMm1lbX0sCgl7UFJPQ184MDg4LG5tX21vdnNiLDEsX19udWxsIH0sCgl7UFJPQ184MDg4
LG5tX21vdnN3LDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX2NtcHNiLDEsX19udWxsIH0sCgl7
UFJPQ184MDg4LG5tX2NtcHN3LDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX3Rlc3QsMSwmYWNj
dW1faW1tfSwKCXtQUk9DXzgwODgsbm1fdGVzdCwxLCZhY2N1bV9pbW19LAoJe1BST0NfODA4OCxu
bV9zdG9zYiwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9zdG9zdywxLF9fbnVsbCB9LAoJe1BS
T0NfODA4OCxubV9sb2RzYiwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9sb2RzdywxLF9fbnVs
bCB9LAoJe1BST0NfODA4OCxubV9zY2FzYiwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9zY2Fz
dywxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9tb3YsMSwmcmVnX2ltbX0sCQkgCgl7UFJPQ184
MDg4LG5tX21vdiwxLCZyZWdfaW1tfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJnJlZ19pbW19LAoJ
e1BST0NfODA4OCxubV9tb3YsMSwmcmVnX2ltbX0sCgl7UFJPQ184MDg4LG5tX21vdiwxLCZyZWdf
aW1tfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJnJlZ19pbW19LAoJe1BST0NfODA4OCxubV9tb3Ys
MSwmcmVnX2ltbX0sCgl7UFJPQ184MDg4LG5tX21vdiwxLCZyZWdfaW1tfSwKCXtQUk9DXzgwODgs
bm1fbW92LDEsJnJlZ19pbW19LAoJe1BST0NfODA4OCxubV9tb3YsMSwmcmVnX2ltbX0sCgl7UFJP
Q184MDg4LG5tX21vdiwxLCZyZWdfaW1tfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJnJlZ19pbW19
LAoJe1BST0NfODA4OCxubV9tb3YsMSwmcmVnX2ltbX0sCgl7UFJPQ184MDg4LG5tX21vdiwxLCZy
ZWdfaW1tfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJnJlZ19pbW19LAoJe1BST0NfODA4OCxubV9t
b3YsMSwmcmVnX2ltbX0sCgl7UFJPQ184MDg4LF9fbnVsbCAsMSwmc2hpZnRfY2x9LAkJIAoJe1BS
T0NfODA4OCxfX251bGwgLDEsJnNoaWZ0X2NsfSwKCXtQUk9DXzgwODgsbm1fcmV0LDEsJnJldH0s
Cgl7UFJPQ184MDg4LG5tX3JldCwxLCZyZXR9LAoJe1BST0NfODA4OCxubV9sZXMsMSwmbG9hZHB0
cn0sCgl7UFJPQ184MDg4LG5tX2xkcywxLCZsb2FkcHRyfSwKCXtQUk9DXzgwODgsbm1fbW92LDEs
JmNvbnN0MnJtfSwKCXtQUk9DXzgwODgsbm1fbW92LDEsJmNvbnN0MnJtfSwKCXtQUk9DXzgwODgs
bm1fZW50ZXIsNCwmZW50ZXJ9LAoJe1BST0NfODA4OCxubV9sZWF2ZSwxLF9fbnVsbCB9LAoJe1BS
T0NfODA4OCxubV9yZXQsMSwmcmV0fSwKCXtQUk9DXzgwODgsbm1fcmV0LDEsJnJldH0sCgl7UFJP
Q184MDg4LG5tX2ludCwxLCZpbnRlcnVwdH0sCgl7UFJPQ184MDg4LG5tX2ludCwyLCZpbnRlcnVw
dH0sCgl7UFJPQ184MDg4LG5tX2ludG8sMSxfX251bGwgfSwKCXtQUk9DXzgwODgsbm1faXJldCwx
LF9fbnVsbCB9LAoJe1BST0NfODA4OCxfX251bGwgLDEsJnNoaWZ0X2NsfSwJCSAKCXtQUk9DXzgw
ODgsX19udWxsICwxLCZzaGlmdF9jbH0sCgl7UFJPQ184MDg4LF9fbnVsbCAsMSwmc2hpZnRfY2x9
LAoJe1BST0NfODA4OCxfX251bGwgLDEsJnNoaWZ0X2NsfSwKCXtQUk9DXzgwODYsbm1fYWFtLDIs
X19udWxsIH0sCgl7UFJPQ184MDg2LG5tX2FhZCwyLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV91
bmtub3duLDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX3hsYXQsMSxfX251bGwgfSwKCXtQUk9D
XzgwODcsX19udWxsICwxLCZnZW5fZnBkZWNvZGV9LAoJe1BST0NfODA4NyxfX251bGwgLDEsJmdl
bl9mcGRlY29kZX0sCgl7UFJPQ184MDg3LF9fbnVsbCAsMSwmZ2VuX2ZwZGVjb2RlfSwKCXtQUk9D
XzgwODcsX19udWxsICwxLCZnZW5fZnBkZWNvZGV9LAoJe1BST0NfODA4NyxfX251bGwgLDEsJmdl
bl9mcGRlY29kZX0sCgl7UFJPQ184MDg3LF9fbnVsbCAsMSwmZ2VuX2ZwZGVjb2RlfSwKCXtQUk9D
XzgwODcsX19udWxsICwxLCZnZW5fZnBkZWNvZGV9LAoJe1BST0NfODA4NyxfX251bGwgLDEsJmdl
bl9mcGRlY29kZX0sCgl7UFJPQ184MDg4LG5tX2xvb3BuZSwyLCZqbXByZWw4fSwJIAoJe1BST0Nf
ODA4OCxubV9sb29wZSwyLCZqbXByZWw4fSwKCXtQUk9DXzgwODgsbm1fbG9vcCwyLCZqbXByZWw4
fSwKCXtQUk9DXzgwODgsbm1famN4eiwyLCZqbXByZWw4fSwKCXtQUk9DXzgwODgsbm1faW4sMiwm
aW5vdXR9LAoJe1BST0NfODA4OCxubV9pbiwyLCZpbm91dH0sCgl7UFJPQ184MDg4LG5tX291dCwy
LCZpbm91dH0sCgl7UFJPQ184MDg4LG5tX291dCwyLCZpbm91dH0sCgl7UFJPQ184MDg4LG5tX2Nh
bGwsMSwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9qbXAsMSwmam1wcmVsMTZ9LAoJe1BST0Nf
ODA4OCxubV9qbXAsNSwmZmFyX2ptcGNhbGx9LAoJe1BST0NfODA4OCxubV9qbXAsMiwmam1wcmVs
OH0sCgl7UFJPQ184MDg4LG5tX2luLDEsJmlub3V0fSwKCXtQUk9DXzgwODgsbm1faW4sMSwmaW5v
dXR9LAoJe1BST0NfODA4OCxubV9vdXQsMSwmaW5vdXR9LAoJe1BST0NfODA4OCxubV9vdXQsMSwm
aW5vdXR9LAoJe1BST0NfODA4OCxubV9sb2NrLDEsX19udWxsIH0sCQkgCgl7UFJPQ184MDg4LG5t
X3Vua25vd24sMSxfX251bGwgfSwKCXtQUk9DXzgwODgsbm1fcmVwLDEsJnByZWZpeF9yZXB9LAoJ
e1BST0NfODA4OCxubV9yZXBlLDEsJnByZWZpeF9yZXB9LAoJe1BST0NfODA4OCxubV9oYWx0LDEs
X19udWxsIH0sCgl7UFJPQ184MDg4LG5tX2NtYywxLF9fbnVsbCB9LAogCXtQUk9DXzgwODgsX19u
dWxsICwxLCZybV9vbmx5fSwJIAoJe1BST0NfODA4OCxfX251bGwgLDEsJnJtX29ubHl9LAoJe1BS
T0NfODA4OCxubV9jbGMsMSxfX251bGwgfSwKCXtQUk9DXzgwODgsbm1fc3RjLDEsX19udWxsIH0s
Cgl7UFJPQ184MDg4LG5tX2NsaSwxLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9zdGksMSxfX251
bGwgfSwKCXtQUk9DXzgwODgsbm1fY2xkLDEsX19udWxsIH0sCgl7UFJPQ184MDg4LG5tX3N0ZCwx
LF9fbnVsbCB9LAoJe1BST0NfODA4OCxfX251bGwgLDEsJnJtX29ubHl9LCAJIAoJe1BST0NfODA4
OCxfX251bGwgLDEsJnJtX29ubHl9Cn07CgoKaW5zdHJ1Y3Rpb246Om9wY29kZV9kZXNjIGluc3Ry
dWN0aW9uOjpvcHRhYmxlMlsyNTZdPXsKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwJ
IAoJe1BST0NfODAyODYsX19udWxsICwyLCZ0YWJsZV9pbnN0fSwgCgl7UFJPQ184MDI4NixubV9s
YXIsMiwmbGRzZWdtZW50X2xpbWl0fSwKCXtQUk9DXzgwMjg2LG5tX2xzbCwyLCZsZHNlZ21lbnRf
bGltaXR9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19u
dWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsbm1fY2x0cywyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfaTQ4NixubV9pbnZkLDIsX19udWxsIH0s
Cgl7UFJPQ184MDI4NixubV93YmludmQsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAs
MixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2
LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQ
Uk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251
bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwJCSAKCXtQUk9DXzgwMjg2LF9f
bnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9D
XzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwg
fSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAs
MixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2
LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQ
Uk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251
bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVs
bCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgw
Mjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX21vdiwyLCZzcGVjaWFsX21v
dmV9LAkgCgl7UFJPQ184MDI4NixubV9tb3YsMiwmc3BlY2lhbF9tb3ZlfSwKCXtQUk9DXzgwMjg2
LG5tX21vdiwyLCZzcGVjaWFsX21vdmV9LAoJe1BST0NfODAyODYsbm1fbW92LDIsJnNwZWNpYWxf
bW92ZX0sCgl7UFJPQ184MDI4NixubV9tb3YsMiwmc3BlY2lhbF9tb3ZlfSwKCXtQUk9DXzgwMjg2
LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX21vdiwyLCZzcGVjaWFsX21vdmV9
LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BS
T0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxs
ICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAkJIAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9
LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BS
T0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxs
ICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAy
ODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJ
e1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9f
bnVsbCB9LAkJIAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BS
T0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxs
ICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAy
ODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJ
e1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9f
bnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19u
dWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAkJIAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxs
ICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAy
ODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJ
e1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9f
bnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19u
dWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9
LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAkJIAoJe1BST0NfODAy
ODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJ
e1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9f
bnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19u
dWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9
LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BS
T0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAkJIAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19u
dWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9
LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BS
T0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVs
bCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxs
ICwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsX19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODA4
OCxubV9qbywyLCZqbXByZWwxNn0sCQkgCgl7UFJPQ184MDg4LG5tX2pubywyLCZqbXByZWwxNn0s
Cgl7UFJPQ184MDg4LG5tX2piLDIsJmptcHJlbDE2fSwKCXtQUk9DXzgwODgsbm1fam5iLDIsJmpt
cHJlbDE2fSwKCXtQUk9DXzgwODgsbm1fanosMiwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9q
bnosMiwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9qYmUsMiwmam1wcmVsMTZ9LAoJe1BST0Nf
ODA4OCxubV9qYSwyLCZqbXByZWwxNn0sCgl7UFJPQ184MDg4LG5tX2pzLDIsJmptcHJlbDE2fSwK
CXtQUk9DXzgwODgsbm1fam5zLDIsJmptcHJlbDE2fSwKCXtQUk9DXzgwODgsbm1fanAsMiwmam1w
cmVsMTZ9LAoJe1BST0NfODA4OCxubV9qbnAsMiwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9q
bHQsMiwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9qZ2UsMiwmam1wcmVsMTZ9LAoJe1BST0Nf
ODA4OCxubV9qbGUsMiwmam1wcmVsMTZ9LAoJe1BST0NfODA4OCxubV9qZywyLCZqbXByZWwxNn0s
Cgl7UFJPQ184MDg4LG5tX3NldG8sMiwmc2V0Y29uZH0sCQkgCgl7UFJPQ184MDg4LG5tX3NldG5v
LDIsJnNldGNvbmR9LAoJe1BST0NfODA4OCxubV9zZXRiLDIsJnNldGNvbmR9LAoJe1BST0NfODA4
OCxubV9zZXRuYiwyLCZzZXRjb25kfSwKCXtQUk9DXzgwODgsbm1fc2V0eiwyLCZzZXRjb25kfSwK
CXtQUk9DXzgwODgsbm1fc2V0bnosMiwmc2V0Y29uZH0sCgl7UFJPQ184MDg4LG5tX3NldGJlLDIs
JnNldGNvbmR9LAoJe1BST0NfODA4OCxubV9zZXRhLDIsJnNldGNvbmR9LAoJe1BST0NfODA4OCxu
bV9zZXRzLDIsJnNldGNvbmR9LAoJe1BST0NfODA4OCxubV9zZXRucywyLCZzZXRjb25kfSwKCXtQ
Uk9DXzgwODgsbm1fc2V0cCwyLCZzZXRjb25kfSwKCXtQUk9DXzgwODgsbm1fc2V0bnAsMiwmc2V0
Y29uZH0sCgl7UFJPQ184MDg4LG5tX3NldGx0LDIsJnNldGNvbmR9LAoJe1BST0NfODA4OCxubV9z
ZXRnZSwyLCZzZXRjb25kfSwKCXtQUk9DXzgwODgsbm1fc2V0bGUsMiwmc2V0Y29uZH0sCgl7UFJP
Q184MDg4LG5tX3NldGcsMiwmc2V0Y29uZH0sCgl7UFJPQ184MDI4NixubV9wdXNoLDIsJnNlZ3Jl
Z19wfSwJCSAKCXtQUk9DXzgwMjg2LG5tX3BvcCwyLCZzZWdyZWdfcH0sCgl7UFJPQ184MDI4Nixf
X251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV9idCwyLF9fbnVsbCB9LAoJe1BST0Nf
ODAyODYsbm1fc2hsZCwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsbm1fc2hsZCwyLF9fbnVsbCB9
LAoJe1BST0NfaTQ4NixubV9jbXB4Y2hnLDIsX19udWxsIH0sCgl7UFJPQ19pNDg2LG5tX2NtcHhj
aGcsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX3B1c2gsMiwmc2VncmVnX3B9LAoJe1BST0Nf
ODAyODYsbm1fcG9wLDIsJnNlZ3JlZ19wfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwg
fSwKCXtQUk9DXzgwMjg2LG5tX2J0cywyLF9fbnVsbCB9LAoJe1BST0NfODAyODYsbm1fc2hyZCwy
LF9fbnVsbCB9LAoJe1BST0NfODAyODYsbm1fc2hyZCwyLF9fbnVsbCB9LAoJe1BST0NfODAyODYs
X19udWxsICwyLF9fbnVsbCB9LAoJe1BST0NfODA4OCxubV9pbXVsLDIsJmltdWxfMjg2fSwKCXtQ
Uk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwJCQkgCgl7UFJPQ184MDI4NixfX251bGwgLDIs
X19udWxsIH0sCgl7UFJPQ184MDI4NixubV9sc3MsMiwmbG9hZHB0cn0sCgl7UFJPQ184MDI4Nixu
bV9idHIsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX2xmcywyLCZsb2FkcHRyfSwJCgl7UFJP
Q184MDI4NixubV9sZ3MsMiwmbG9hZHB0cn0sCgl7UFJPQ184MDI4NixubV9tb3Z6eCwyLCZybThf
Ml9yZWd9LAoJe1BST0NfODAyODYsbm1fbW92engsMiwmcm04XzJfcmVnfSwKCXtQUk9DXzgwMjg2
LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQ
Uk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwJCSAKCXtQUk9DXzgwMjg2LG5tX2J0YywyLF9f
bnVsbCB9LAoJe1BST0NfODAyODYsbm1fYnNmLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixubV9i
c3IsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX21vdnN4LDIsJnJtOF8yX3JlZ30sCgl7UFJP
Q184MDI4NixubV9tb3ZzeCwyLCZybThfMl9yZWd9LAoJe1BST0NfaTQ4NixubV94YWRkLDIsX19u
dWxsIH0sCQkgCgl7UFJPQ19pNDg2LG5tX3hhZGQsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9f
bnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9D
XzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwg
fSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAsMixfX251bGwgfSwKCXtQUk9DXzgwMjg2LF9fbnVsbCAs
MixfX251bGwgfSwKCXtQUk9DXzgwMjg2LG5tX2Jzd2FwLDIsX19udWxsIH0sCgl7UFJPQ184MDI4
NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7
UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19u
dWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251
bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184
MDI4NixfX251bGwgLDIsX19udWxsIH0sCQkgCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxs
IH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwg
LDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4
NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7
UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19u
dWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251
bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184
MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0s
Cgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIs
X19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCQkgCgl7UFJPQ184MDI4
NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7
UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19u
dWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251
bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184
MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0s
Cgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIs
X19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4Nixf
X251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJP
Q184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxs
IH0sCQkgCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251
bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184
MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0s
Cgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIs
X19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4Nixf
X251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJP
Q184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxs
IH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwg
LDIsX19udWxsIH0sCgl7UFJPQ184MDI4NixfX251bGwgLDIsX19udWxsIH0KfTsKCg==


More information about the Gcc-prs mailing list