public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: eezyy@gmx.net
To: gcc-gnats@gcc.gnu.org
Subject: optimization/9900: map coloring failure
Date: Sun, 02 Mar 2003 03:46:00 -0000	[thread overview]
Message-ID: <20030302034138.12822.qmail@sources.redhat.com> (raw)


>Number:         9900
>Category:       optimization
>Synopsis:       map coloring failure
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Mar 02 03:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     me
>Release:        gcc version 3.4 20030301 cvs
>Organization:
>Environment:

>Description:
tried to compile binutils, got this:
readelf.c: In function `get_dynamic_flags':
readelf.c:4603: internal compiler error: Didn't find a coloring.
preprocessed source attached
>How-To-Repeat:

>Fix:

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

IyAxICJyZWFkZWxmLmMiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8Y29tbWFuZCBsaW5lPiIKIyAx
ICJyZWFkZWxmLmMiCiMgMjUgInJlYWRlbGYuYyIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjkxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjkyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzCiMgMzIwICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
bnUvc3R1YnMuaCIgMSAzCiMgMzIxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzcg
Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzCiMgNjUgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg
MwoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9u
LCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAo
aW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9f
YXNzZXJ0aW9uLCBjb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX2xpbmUpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgojIDI2ICJyZWFkZWxmLmMiIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUv
Yml0cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjQvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjEzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNp
emVfdDsKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25n
OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRf
dDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50
IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRl
ZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsK
Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9f
ZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0
eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsK
dHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVm
IF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3Vf
aW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90
IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5
cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0
eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxb
Ml07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAq
X19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBs
b25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tfdDsKCgp0eXBlZGVm
IGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoKCgoKCnR5cGVkZWYg
aW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoK
CnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxr
Y250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcg
X19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRl
ZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRf
dDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19v
ZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1
ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2No
ZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAg
aW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1
Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MK
ewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3Nj
aGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2Nv
cGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAq
X19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9w
dGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5z
aWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21f
cmVzZXJ2ZWQ7CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAg
aW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhy
ZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRo
cmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBl
ZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2Nr
IF9fcndfbG9jazsKICBpbnQgX19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3Jp
dGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2Ny
IF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7
Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5k
OwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZv
bGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVj
dCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50
IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9i
YXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9i
YXJyaWVyYXR0cl90OwoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90Owoj
IDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCiMgMzEgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9z
aG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9s
b25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90
Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoK
Cgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCnR5cGVkZWYgX19pbm82NF90IGlubzY0X3Q7
CgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoK
Cgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7
CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoK
CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90
OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7
CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJf
dDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiMgMTMyICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyA1OCAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCiMgNzQgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKCgoKIyA5MiAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMwp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyAxMDQgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKIyAxMzMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVzZWNv
bmRzX3Q7CgoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEg
MwojIDE0NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBl
ZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE5MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
CnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsK
dHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsK
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVf
aW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50
IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMTIg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIg
MSAzCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2VuZGlhbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAyMTMgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiMgMjMgIi91c3IvaW5j
bHVkZS9iaXRzL3NpZ3NldC5oIiAzCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKCgoKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICog
c2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90
OwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMTE2ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIGxv
bmcgaW50IHR2X25zZWM7CiAgfTsKIyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAz
CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNjcgIi91c3IvaW5jbHVkZS9i
aXRzL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAg
IF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj
dC5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIGxvbmcg
aW50IF9fZmRfbWFzazsKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVm
IHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2Yg
KF9fZmRfbWFzaykpXTsKCgoKCgogIH0gZmRfc2V0OwoKCgoKCgp0eXBlZGVmIF9fZmRfbWFzayBm
ZF9tYXNrOwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCgoKCgoKCgpleHRlcm4g
aW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAg
ICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAg
ICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAgICAgICAg
ICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0ZXJuIGlu
dCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAg
ICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAgICAgICAg
ICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICAg
ICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNrKSA7CgoK
CiMgMjE2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
MwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgoKCnR5cGVkZWYgX19ibGtj
bnRfdCBibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKCgoKdHlw
ZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKIyAyNTcgIi91c3IvaW5jbHVkZS9zeXMvdHlw
ZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtj
bnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7
CgoKCiMgMjcgInJlYWRlbGYuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMK
IyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDk2ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAxIDMKIyAz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0CiAgewogICAgX19kZXZf
dCBzdF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3Rf
aW5vOwoKCgogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9fbmxpbmtfdCBzdF9ubGluazsKICAg
IF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7CiAgICBfX2Rldl90IHN0X3JkZXY7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qgc3Rfc2l6ZTsKCgoK
ICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgoKICAgIF9fYmxrY250X3Qgc3RfYmxvY2tzOwoK
CgogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7
CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsK
ICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwoK
ICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkNDsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9f
dW51c2VkNTsKCgoKICB9OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsK
ICAgIHVuc2lnbmVkIGludCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9k
ZV90IHN0X21vZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsK
ICAgIF9fZ2lkX3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50
IF9fcGFkMjsKICAgIF9fb2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6
ZTsKCiAgICBfX2Jsa2NudDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAg
ICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAg
dW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9Owoj
IDk5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp
bGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoK
ZXh0ZXJuIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgOwojIDIxOSAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0NjQgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpf
X3Jlc3RyaWN0IF9fYnVmKSA7CmV4dGVybiBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBz
dGF0NjQgKl9fYnVmKSA7CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CiMgMjQxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxz
dGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4gaW50IGNo
bW9kIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CgoKCmV4dGVybiBp
bnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIF9fbW9k
ZV90IHVtYXNrIChfX21vZGVfdCBfX21hc2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBnZXR1bWFz
ayAodm9pZCkgOwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19t
b2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJuIGludCBta25vZCAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICA7CgoKCgpleHRlcm4gaW50
IG1rZmlmbyAoX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwojIDMwNiAi
L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3RhdCAoaW50IF9fdmVy
LCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CmV4dGVybiBpbnQgX194
c3RhdCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBfX2x4c3RhdCAoaW50
IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSA7CiMgMzMwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIg
MwpleHRlcm4gaW50IF9fZnhzdGF0NjQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qg
c3RhdDY0ICpfX3N0YXRfYnVmKQogICAgIDsKZXh0ZXJuIGludCBfX3hzdGF0NjQgKGludCBfX3Zl
ciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3Zlciwg
X19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
dGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3ZlciwgX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
X19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0IChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpf
X3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoK
ZXh0ZXJuIF9faW5saW5lX18gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJu
IF9fbHhzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBp
bnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9f
ZnhzdGF0ICgzLCBfX2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1r
bm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZGV2X3QgX19kZXYpCnsKICByZXR1cm4gX194bWtub2QgKDEsIF9f
cGF0aCwgX19tb2RlLCAmX19kZXYpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQ2
NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hzdGF0NjQgKDMsIF9fcGF0aCwg
X19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdDY0IChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQg
Kl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7
Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0
NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdDY0ICgzLCBfX2ZkLCBfX3N0YXRidWYp
Owp9CgoKCgoKIyAyOCAicmVhZGVsZi5jIiAyCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzOSAiL3Vzci9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDQ0ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwojIDUzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNs
dWRlL3N0ZGlvLmgiIDMKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoKCgoKCiMgNzEg
Ii91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIg
Mwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgODEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvX0dfY29uZmlnLmgiIDEgMwojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAzMjUgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM1NCAiL3Vzci9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBl
ZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5o
IiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUv
d2NoYXIuaCIgMwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv
bgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsK
fSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVk
ZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0df
ZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90
IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2djb252
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2MyAi
L3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKCiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMK
CgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51bQp7CiAg
X19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAogIF9fR0NP
TlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09VVFBVVCwK
ICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVULAoKICBf
X0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9SCn07CgoK
CmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9SRV9FUlJP
UlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2NvbnZfc3Rl
cF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFu
c19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3Rl
cCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50
LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252
X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19n
Y29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90
cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGlu
dCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBl
ZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2Nv
bnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2Nv
bnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5z
X2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVj
dCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAq
X19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFy
ICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19p
bml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVk
ZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsK
ICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0
YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291
dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoK
ICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBf
X21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3Qg
X19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252
X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBz
OwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAq
X19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwp0eXBlZGVmIHVu
aW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgc3RydWN0CiAgewogICAgc3RydWN0
IF9fZ2NvbnZfaW5mbyBfX2NkOwogICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YTsK
ICB9IF9fY29tYmluZWQ7Cn0gX0dfaWNvbnZfdDsKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3Qg
X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50
IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf
XykpKTsKIyAzMyAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2lu
Y2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuNC9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19n
bnVjX3ZhX2xpc3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNjIgIi91c3Iv
aW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMg
MTcyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoK
CgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVj
dCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTk1ICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9f
Y29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07
CiMgMjYzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBf
ZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CiAg
Y2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsKICBjaGFyKiBfSU9f
d3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hhciogX0lPX2J1Zl9iYXNlOwog
IGNoYXIqIF9JT19idWZfZW5kOwoKICBjaGFyICpfSU9fc2F2ZV9iYXNlOwogIGNoYXIgKl9JT19i
YWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7CgogIHN0cnVjdCBfSU9fbWFya2VyICpf
bWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47CgogIGludCBfZmlsZW5vOwoKCgog
IGludCBfZmxhZ3MyOwoKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgogIHVuc2lnbmVkIHNob3J0
IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0
YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMxMSAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9fcGFkMTsKICB2b2lkICpf
X3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAt
IDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfSU9f
RklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1
cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rk
b3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKIyAzNTAg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAo
dm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hh
ciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pOwoK
CgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90
ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19j
b29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsK
dHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9f
aW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4g
Y29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9m
biAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAg
X19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRl
ZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVj
dCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19yZWFkX3dyaXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190
IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lP
X0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dv
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMgNDMyICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9J
T19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChf
SU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7
CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0
ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVu
bG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9f
RklMRSAqKSA7CiMgNDYyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192
ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7
CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hh
ciAqX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7
CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7
CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoK
ZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQs
IGludCkgOwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0
X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICop
IDsKIyA4MiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9z
dGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwoj
IDk1ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlv
LmgiIDMKCgp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgoKdHlwZWRlZiBfR19mcG9zNjRf
dCBmcG9zNjRfdDsKIyAxNDcgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40
L2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAx
IDMKIyAxNDggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGluOwpleHRlcm4gc3Ry
dWN0IF9JT19GSUxFICpzdGRvdXQ7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEUgKnN0ZGVycjsKCgoK
CgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVy
biBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7
CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTgwICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KnRtcG5hbSAoY2hhciAqX19zKSA7CgoKCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIDsK
CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwojIDIwMiAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBj
aGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQog
ICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKZXh0ZXJuIGludCBmY2xvc2Ug
KEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgMjQ4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42
NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJl
b3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxF
ICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgpleHRlcm4g
RklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1
bmNzKSA7CgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3MsIHNpemVfdCBfX2xlbiwg
X19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1zdHJlYW0g
KGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVsb2MpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVm
IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoK
CmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19y
ZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9f
bikgOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4
dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCmV4dGVy
biBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn
KSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCgoKCgpleHRlcm4gaW50
IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVy
biBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAog
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgMCkpKTsKCgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAg
ICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAq
Kl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
bXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0
ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10
LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMp
KSk7CgoKCgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgc3NjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4p
IDsKCgoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywg
MiwgMCkpKTsKCgpleHRlcm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKCgoKCmV4dGVybiBpbnQgZmdl
dGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsK
CgpleHRlcm4gaW50IGdldGNoYXIgKHZvaWQpIDsKCgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5s
b2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9p
ZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoK
CgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50
IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChp
bnQgX19jKSA7CgoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAo
aW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIg
Kl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAg
IDsKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIgKmZn
ZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMgNDcwICIvdXNy
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQg
X19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIDsKCgpl
eHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRj
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lk
ICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3
cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKCgoK
CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIs
IHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2Nr
ZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0pIDsKCgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQg
X19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0
cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwoKIyA1MzcgIi91
c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3do
ZW5jZSkgOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwojIDU1MyAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAz
CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190
ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19z
dHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgOwojIDU3MiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAzCgoKCmV4dGVybiBpbnQgZnNl
ZWtvNjQgKEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgOwpl
eHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZn
ZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3Qg
X19wb3MpCiAgICAgOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29u
c3QgZnBvczY0X3QgKl9fcG9zKSA7CgoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19z
dHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQg
ZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKCgojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N5c19lcnJsaXN0LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0
cy9zeXNfZXJybGlzdC5oIiAzCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJu
IF9fY29uc3QgY2hhciAqX19jb25zdCBfc3lzX2Vycmxpc3RbXTsKIyA2MDkgIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgpleHRl
cm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3Vu
bG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29u
c3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50
IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hh
ciAqX19zKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgOwoKCgoKc3Ry
dWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sg
Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYg
KHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZs
b2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJ
TEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CiMgNjgzICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRl
L3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIyAzMyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICBy
ZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4g
KChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAo
X19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpl
eHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChz
dGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChz
dGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1
dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0Y191bmxvY2tl
ZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9f
d3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19z
dHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGlu
dApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChf
X3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBf
X292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBj
aGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgpleHRlcm4g
X19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKCgoc3Rk
b3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJm
bG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCoo
c3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVybiBfX2lubGlu
ZSBfX3NzaXplX3QKZ2V0bGluZSAoY2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuIF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19uLCAnXG4nLCBf
X3N0cmVhbSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgxMCkgIT0gMCk7
Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0p
CnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsKfQojIDY4NCAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRpby5oIiAy
IDMKCgoKIyAyOSAicmVhZGVsZi5jIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMg
MzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwoj
IDQzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKCgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91
cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0bV93
ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9m
ZjsKICBfX2NvbnN0IGNoYXIgKnRtX3pvbmU7CgoKCgp9OwoKCgoKCgoKCnN0cnVjdCBpdGltZXJz
cGVjCiAgewogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVz
cGVjIGl0X3ZhbHVlOwogIH07CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE3NiAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCgpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9pZCkgOwoKCmV4dGVybiB0aW1l
X3QgdGltZSAodGltZV90ICpfX3RpbWVyKSA7CgoKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGlt
ZV90IF9fdGltZTEsIHRpbWVfdCBfX3RpbWUwKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gdGltZV90IG1rdGltZSAoc3RydWN0IHRtICpfX3RwKSA7CgoKCgoKZXh0
ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNp
emUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJp
Y3QgX190cCkgOwoKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICA7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUv
eGxvY2FsZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0
cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sx
M107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQg
Kl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKCgogIGNvbnN0
IGNoYXIgKl9fbmFtZXNbMTNdOwp9ICpfX2xvY2FsZV90OwojIDIxMiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMiAzCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2xvY2FsZV90IF9fbG9jKSA7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChf
X2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9y
IChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKZXh0ZXJuIHN0cnVjdCB0
bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoK
CgoKCmV4dGVybiBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgOwoKCmV4
dGVybiBjaGFyICpjdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKCgoKCmV4dGVy
biBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgpleHRlcm4g
Y2hhciAqY3RpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCmV4dGVybiBjaGFy
ICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190
aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0
ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCB0aW1lem9u
ZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSA7CiMgMzA3
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0g
Kl9fdHApIDsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSA7CgoK
ZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCgpleHRlcm4gaW50IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVxdWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9f
cmVtYWluaW5nKSA7CgoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChjbG9ja2lkX3QgX19jbG9j
a19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3JlcykgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0dGlt
ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX190cCkgOwoKCmV4dGVy
biBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qgc3RydWN0
IHRpbWVzcGVjICpfX3RwKQogICAgIDsKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNs
b2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNw
dWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVy
biBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGlu
dCB0aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9z
ZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9f
b3ZhbHVlKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwg
c3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0
b3ZlcnJ1biAodGltZXJfdCBfX3RpbWVyaWQpIDsKIyAzNzggIi91c3IvaW5jbHVkZS90aW1lLmgi
IDMKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRl
IChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSA7CiMgMzkzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CmV4dGVybiBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcs
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7
CgoKCiMgMzAgInJlYWRlbGYuYyIgMgojIDM5ICJyZWFkZWxmLmMiCiMgMSAiLi4vYmZkL2JmZC5o
IiAxCiMgMzggIi4uL2JmZC9iZmQuaCIKIyAxICIuLi9pbmNsdWRlL2Fuc2lkZWNsLmgiIDEKIyAz
OSAiLi4vYmZkL2JmZC5oIiAyCiMgMSAiLi4vaW5jbHVkZS9zeW1jYXQuaCIgMQojIDQwICIuLi9i
ZmQvYmZkLmgiIDIKIyA3OSAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHN0cnVjdCBiZmQgYmZkOwoj
IDkwICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgaW50IGJmZF9ib29sZWFuOwojIDEzMCAiLi4vYmZk
L2JmZC5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBiZmRfdm1hOwp0eXBlZGVmIGxvbmcg
bG9uZyBiZmRfc2lnbmVkX3ZtYTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgYmZkX3NpemVf
dHlwZTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgc3ltdmFsdWU7CiMgMTc5ICIuLi9iZmQv
YmZkLmgiCnR5cGVkZWYgYmZkX3NpZ25lZF92bWEgZmlsZV9wdHI7CnR5cGVkZWYgYmZkX3ZtYSB1
ZmlsZV9wdHI7CgpleHRlcm4gdm9pZCBiZmRfc3ByaW50Zl92bWEKICAoYmZkICosIGNoYXIgKiwg
YmZkX3ZtYSk7CmV4dGVybiB2b2lkIGJmZF9mcHJpbnRmX3ZtYQogIChiZmQgKiwgdm9pZCAqLCBi
ZmRfdm1hKTsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IGZsYWd3b3JkOwp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgYmZkX2J5dGU7CgoKCnR5cGVkZWYgZW51bSBiZmRfZm9ybWF0CnsKICBiZmRfdW5r
bm93biA9IDAsCiAgYmZkX29iamVjdCwKICBiZmRfYXJjaGl2ZSwKICBiZmRfY29yZSwKICBiZmRf
dHlwZV9lbmQKfQpiZmRfZm9ybWF0OwojIDI2OCAiLi4vYmZkL2JmZC5oIgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgc3ltaW5kZXg7CgoKdHlwZWRlZiBjb25zdCBzdHJ1Y3QgcmVsb2NfaG93dG9fc3Ry
dWN0IHJlbG9jX2hvd3RvX3R5cGU7CiMgMjkwICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgc3RydWN0
IGNhcnN5bQp7CiAgY2hhciAqbmFtZTsKICBmaWxlX3B0ciBmaWxlX29mZnNldDsKfQpjYXJzeW07
CgoKCnN0cnVjdCBvcmwKewogIGNoYXIgKipuYW1lOwogIHVuaW9uCiAgewogICAgZmlsZV9wdHIg
cG9zOwogICAgYmZkICphYmZkOwogIH0gdTsKICBpbnQgbmFtaWR4Owp9OwoKCnR5cGVkZWYgc3Ry
dWN0IGxpbmVub19jYWNoZV9lbnRyeQp7CiAgdW5zaWduZWQgaW50IGxpbmVfbnVtYmVyOwogIHVu
aW9uCiAgewogICAgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqc3ltOwogICAgYmZkX3ZtYSBv
ZmZzZXQ7CiAgfSB1Owp9CmFsZW50OwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBzZWMgKnNlY19wdHI7
CiMgMzQ3ICIuLi9iZmQvYmZkLmgiCnR5cGVkZWYgc3RydWN0IHN0YXQgc3RhdF90eXBlOwoKdHlw
ZWRlZiBlbnVtIGJmZF9wcmludF9zeW1ib2wKewogIGJmZF9wcmludF9zeW1ib2xfbmFtZSwKICBi
ZmRfcHJpbnRfc3ltYm9sX21vcmUsCiAgYmZkX3ByaW50X3N5bWJvbF9hbGwKfSBiZmRfcHJpbnRf
c3ltYm9sX3R5cGU7CgoKCnR5cGVkZWYgc3RydWN0IF9zeW1ib2xfaW5mbwp7CiAgc3ltdmFsdWUg
dmFsdWU7CiAgY2hhciB0eXBlOwogIGNvbnN0IGNoYXIgKm5hbWU7CiAgdW5zaWduZWQgY2hhciBz
dGFiX3R5cGU7CiAgY2hhciBzdGFiX290aGVyOwogIHNob3J0IHN0YWJfZGVzYzsKICBjb25zdCBj
aGFyICpzdGFiX25hbWU7Cn0gc3ltYm9sX2luZm87CgoKCmV4dGVybiBjb25zdCBjaGFyICpiZmRf
Z2V0X3N0YWJfbmFtZQogIChpbnQpOwoKCgoKCgpzdHJ1Y3QgYmZkX2hhc2hfZW50cnkKewoKICBz
dHJ1Y3QgYmZkX2hhc2hfZW50cnkgKm5leHQ7CgogIGNvbnN0IGNoYXIgKnN0cmluZzsKCgogIHVu
c2lnbmVkIGxvbmcgaGFzaDsKfTsKCgoKc3RydWN0IGJmZF9oYXNoX3RhYmxlCnsKCiAgc3RydWN0
IGJmZF9oYXNoX2VudHJ5ICoqdGFibGU7CgogIHVuc2lnbmVkIGludCBzaXplOwoKCgoKCgoKICBz
dHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqbmV3ZnVuYykKICAgIChzdHJ1Y3QgYmZkX2hhc2hfZW50
cnkgKiwgc3RydWN0IGJmZF9oYXNoX3RhYmxlICosIGNvbnN0IGNoYXIgKik7CgoKICB2b2lkICog
bWVtb3J5Owp9OwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfaGFzaF90YWJsZV9pbml0CiAgKHN0
cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqKSAoc3RydWN0
IGJmZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICop
KTsKCgoKCgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2hhc2hfdGFibGVfaW5pdF9uCiAgKHN0cnVj
dCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKigqKSAoc3RydWN0IGJm
ZF9oYXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopLCB1
bnNpZ25lZCBpbnQgc2l6ZSk7CgoKCgoKCmV4dGVybiB2b2lkIGJmZF9oYXNoX3RhYmxlX2ZyZWUK
ICAoc3RydWN0IGJmZF9oYXNoX3RhYmxlICopOwoKCgoKCmV4dGVybiBzdHJ1Y3QgYmZkX2hhc2hf
ZW50cnkgKmJmZF9oYXNoX2xvb2t1cAogIChzdHJ1Y3QgYmZkX2hhc2hfdGFibGUgKiwgY29uc3Qg
Y2hhciAqLCBiZmRfYm9vbGVhbiBjcmVhdGUsIGJmZF9ib29sZWFuIGNvcHkpOwoKCgpleHRlcm4g
dm9pZCBiZmRfaGFzaF9yZXBsYWNlCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBzdHJ1Y3Qg
YmZkX2hhc2hfZW50cnkgKm9sZCwgc3RydWN0IGJmZF9oYXNoX2VudHJ5ICpudyk7CgoKCmV4dGVy
biBzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKmJmZF9oYXNoX25ld2Z1bmMKICAoc3RydWN0IGJmZF9o
YXNoX2VudHJ5ICosIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqLCBjb25zdCBjaGFyICopOwoKCgpl
eHRlcm4gdm9pZCAqIGJmZF9oYXNoX2FsbG9jYXRlCiAgKHN0cnVjdCBiZmRfaGFzaF90YWJsZSAq
LCB1bnNpZ25lZCBpbnQpOwoKCgoKZXh0ZXJuIHZvaWQgYmZkX2hhc2hfdHJhdmVyc2UKICAoc3Ry
dWN0IGJmZF9oYXNoX3RhYmxlICosIGJmZF9ib29sZWFuICgqKSAoc3RydWN0IGJmZF9oYXNoX2Vu
dHJ5ICosIHZvaWQgKiksIHZvaWQgKiBpbmZvKTsKIyA0NjggIi4uL2JmZC9iZmQuaCIKZXh0ZXJu
IGJmZF9zaXplX3R5cGUgYmZkX2JyZWFkCiAgKHZvaWQgKiwgYmZkX3NpemVfdHlwZSwgYmZkICop
OwpleHRlcm4gYmZkX3NpemVfdHlwZSBiZmRfYndyaXRlCiAgKGNvbnN0IHZvaWQgKiwgYmZkX3Np
emVfdHlwZSwgYmZkICopOwpleHRlcm4gaW50IGJmZF9zZWVrCiAgKGJmZCAqLCBmaWxlX3B0ciwg
aW50KTsKZXh0ZXJuIHVmaWxlX3B0ciBiZmRfdGVsbAogIChiZmQgKik7CmV4dGVybiBpbnQgYmZk
X2ZsdXNoCiAgKGJmZCAqKTsKZXh0ZXJuIGludCBiZmRfc3RhdAogIChiZmQgKiwgc3RydWN0IHN0
YXQgKik7CiMgNDk3ICIuLi9iZmQvYmZkLmgiCmV4dGVybiB2b2lkIHdhcm5fZGVwcmVjYXRlZAog
IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopOwojIDUzNiAi
Li4vYmZkL2JmZC5oIgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2NhY2hlX2Nsb3NlCiAgKGJmZCAq
YWJmZCk7CgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9yZWNvcmRfcGhkcgogIChiZmQgKiwgdW5z
aWduZWQgbG9uZywgYmZkX2Jvb2xlYW4sIGZsYWd3b3JkLCBiZmRfYm9vbGVhbiwgYmZkX3ZtYSwg
YmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFuLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBzZWMgKiopOwoK
CgoKYmZkX3ZtYSBiZmRfZ2V0YjY0CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEg
YmZkX2dldGw2NAogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfc2lnbmVkX3ZtYSBiZmRf
Z2V0Yl9zaWduZWRfNjQKICAoY29uc3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEg
YmZkX2dldGxfc2lnbmVkXzY0CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF92bWEgYmZk
X2dldGIzMgogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfdm1hIGJmZF9nZXRsMzIKICAo
Y29uc3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3NpZ25lZF92bWEgYmZkX2dldGJfc2lnbmVkXzMy
CiAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CmJmZF9zaWduZWRfdm1hIGJmZF9nZXRsX3NpZ25l
ZF8zMgogIChjb25zdCB1bnNpZ25lZCBjaGFyICopOwpiZmRfdm1hIGJmZF9nZXRiMTYKICAoY29u
c3QgdW5zaWduZWQgY2hhciAqKTsKYmZkX3ZtYSBiZmRfZ2V0bDE2CiAgKGNvbnN0IHVuc2lnbmVk
IGNoYXIgKik7CmJmZF9zaWduZWRfdm1hIGJmZF9nZXRiX3NpZ25lZF8xNgogIChjb25zdCB1bnNp
Z25lZCBjaGFyICopOwpiZmRfc2lnbmVkX3ZtYSBiZmRfZ2V0bF9zaWduZWRfMTYKICAoY29uc3Qg
dW5zaWduZWQgY2hhciAqKTsKdm9pZCBiZmRfcHV0YjY0CiAgKGJmZF92bWEsIHVuc2lnbmVkIGNo
YXIgKik7CnZvaWQgYmZkX3B1dGw2NAogIChiZmRfdm1hLCB1bnNpZ25lZCBjaGFyICopOwp2b2lk
IGJmZF9wdXRiMzIKICAoYmZkX3ZtYSwgdW5zaWduZWQgY2hhciAqKTsKdm9pZCBiZmRfcHV0bDMy
CiAgKGJmZF92bWEsIHVuc2lnbmVkIGNoYXIgKik7CnZvaWQgYmZkX3B1dGIxNgogIChiZmRfdm1h
LCB1bnNpZ25lZCBjaGFyICopOwp2b2lkIGJmZF9wdXRsMTYKICAoYmZkX3ZtYSwgdW5zaWduZWQg
Y2hhciAqKTsKCgoKYmZkX3ZtYSBiZmRfZ2V0X2JpdHMKICAoYmZkX2J5dGUgKiwgaW50LCBiZmRf
Ym9vbGVhbik7CnZvaWQgYmZkX3B1dF9iaXRzCiAgKGJmZF92bWEsIGJmZF9ieXRlICosIGludCwg
YmZkX2Jvb2xlYW4pOwoKCgoKc3RydWN0IGVjb2ZmX2RlYnVnX2luZm87CnN0cnVjdCBlY29mZl9k
ZWJ1Z19zd2FwOwpzdHJ1Y3QgZWNvZmZfZXh0cjsKc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeTsK
c3RydWN0IGJmZF9saW5rX2luZm87CnN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5OwpzdHJ1Y3Qg
YmZkX2VsZl92ZXJzaW9uX3RyZWU7CgpleHRlcm4gYmZkX3ZtYSBiZmRfZWNvZmZfZ2V0X2dwX3Zh
bHVlCiAgKGJmZCAqIGFiZmQpOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX3NldF9ncF92
YWx1ZQogIChiZmQgKmFiZmQsIGJmZF92bWEgZ3BfdmFsdWUpOwpleHRlcm4gYmZkX2Jvb2xlYW4g
YmZkX2Vjb2ZmX3NldF9yZWdtYXNrcwogIChiZmQgKmFiZmQsIHVuc2lnbmVkIGxvbmcgZ3BybWFz
aywgdW5zaWduZWQgbG9uZyBmcHJtYXNrLCB1bnNpZ25lZCBsb25nICpjcHJtYXNrKTsKCmV4dGVy
biB2b2lkICogYmZkX2Vjb2ZmX2RlYnVnX2luaXQKICAoYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3Qg
ZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0X2RlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdf
c3dhcCAqb3V0cHV0X3N3YXAsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiB2b2lk
IGJmZF9lY29mZl9kZWJ1Z19mcmVlCiAgKHZvaWQgKiBoYW5kbGUsIGJmZCAqb3V0cHV0X2JmZCwg
c3RydWN0IGVjb2ZmX2RlYnVnX2luZm8gKm91dHB1dF9kZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKm91dHB1dF9zd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpleHRl
cm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX2RlYnVnX2FjY3VtdWxhdGUKICAodm9pZCAqIGhhbmRs
ZSwgYmZkICpvdXRwdXRfYmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqb3V0cHV0X2RlYnVn
LCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqb3V0cHV0X3N3YXAsIGJmZCAqaW5wdXRf
YmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqaW5wdXRfZGVidWcsIGNvbnN0IHN0cnVjdCBl
Y29mZl9kZWJ1Z19zd2FwICppbnB1dF9zd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgoK
CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWNvZmZfZGVidWdfYWNjdW11bGF0ZV9vdGhlcgogICh2
b2lkICogaGFuZGxlLCBiZmQgKm91dHB1dF9iZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpv
dXRwdXRfZGVidWcsIGNvbnN0IHN0cnVjdCBlY29mZl9kZWJ1Z19zd2FwICpvdXRwdXRfc3dhcCwg
YmZkICppbnB1dF9iZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBiZmRfYm9v
bGVhbiBiZmRfZWNvZmZfZGVidWdfZXh0ZXJuYWxzCiAgKGJmZCAqYWJmZCwgc3RydWN0IGVjb2Zm
X2RlYnVnX2luZm8gKmRlYnVnLCBjb25zdCBzdHJ1Y3QgZWNvZmZfZGVidWdfc3dhcCAqc3dhcCwg
YmZkX2Jvb2xlYW4gcmVsb2NhdGVhYmxlLCBiZmRfYm9vbGVhbiAoKmdldF9leHRyKSAoc3RydWN0
IHN5bWJvbF9jYWNoZV9lbnRyeSAqLCBzdHJ1Y3QgZWNvZmZfZXh0ciAqKSwgdm9pZCAoKnNldF9p
bmRleCkgKHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgYmZkX3NpemVfdHlwZSkpOwoKCgoK
CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2Vjb2ZmX2RlYnVnX29uZV9leHRlcm5hbAogIChiZmQg
KmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKnN3YXAsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBlY29mZl9leHRyICpl
c3ltKTsKCgpleHRlcm4gYmZkX3NpemVfdHlwZSBiZmRfZWNvZmZfZGVidWdfc2l6ZQogIChiZmQg
KmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qgc3RydWN0IGVjb2Zm
X2RlYnVnX3N3YXAgKnN3YXApOwoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lY29mZl93cml0ZV9k
ZWJ1ZwogIChiZmQgKmFiZmQsIHN0cnVjdCBlY29mZl9kZWJ1Z19pbmZvICpkZWJ1ZywgY29uc3Qg
c3RydWN0IGVjb2ZmX2RlYnVnX3N3YXAgKnN3YXAsIGZpbGVfcHRyIHdoZXJlKTsKCmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfZWNvZmZfd3JpdGVfYWNjdW11bGF0ZWRfZGVidWcKICAodm9pZCAqIGhh
bmRsZSwgYmZkICphYmZkLCBzdHJ1Y3QgZWNvZmZfZGVidWdfaW5mbyAqZGVidWcsIGNvbnN0IHN0
cnVjdCBlY29mZl9kZWJ1Z19zd2FwICpzd2FwLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqaW5mbywg
ZmlsZV9wdHIgd2hlcmUpOwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfbWlwc19lY29mZl9jcmVh
dGVfZW1iZWRkZWRfcmVsb2NzCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1
Y3Qgc2VjICosIHN0cnVjdCBzZWMgKiwgY2hhciAqKik7CgoKCgpzdHJ1Y3QgYmZkX2xpbmtfbmVl
ZGVkX2xpc3QKewogIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbmV4dDsKICBiZmQgKmJ5
OwogIGNvbnN0IGNoYXIgKm5hbWU7Cn07CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjY0X3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKiwgYmZkX2Jvb2xlYW4pOwpleHRlcm4gc3RydWN0IGJmZF9saW5rX25lZWRlZF9s
aXN0ICpiZmRfZWxmX2dldF9uZWVkZWRfbGlzdAogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2lu
Zm8gKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QKICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqKik7CmV4dGVybiBiZmRfYm9vbGVh
biBiZmRfZWxmMzJfc2l6ZV9keW5hbWljX3NlY3Rpb25zCiAgKGJmZCAqLCBjb25zdCBjaGFyICos
IGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICogY29uc3QgKiwgc3RydWN0
IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAqKiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90
cmVlICopOwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmNjRfc2l6ZV9keW5hbWljX3NlY3Rp
b25zCiAgKGJmZCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBj
b25zdCBjaGFyICogY29uc3QgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNlYyAq
Kiwgc3RydWN0IGJmZF9lbGZfdmVyc2lvbl90cmVlICopOwoKCmV4dGVybiB2b2lkIGJmZF9lbGZf
c2V0X2R0X25lZWRlZF9uYW1lCiAgKGJmZCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBi
ZmRfZWxmX3NldF9kdF9uZWVkZWRfc29uYW1lCiAgKGJmZCAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gY29uc3QgY2hhciAqYmZkX2VsZl9nZXRfZHRfc29uYW1lCiAgKGJmZCAqKTsKZXh0ZXJuIHN0
cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqYmZkX2VsZl9nZXRfcnVucGF0aF9saXN0CiAgKGJm
ZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9lbGYz
Ml9kaXNjYXJkX2luZm8KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4g
YmZkX2Jvb2xlYW4gYmZkX2VsZjY0X2Rpc2NhcmRfaW5mbwogIChiZmQgKiwgc3RydWN0IGJmZF9s
aW5rX2luZm8gKik7CgoKCgpleHRlcm4gbG9uZyBiZmRfZ2V0X2VsZl9waGRyX3VwcGVyX2JvdW5k
CiAgKGJmZCAqYWJmZCk7CiMgNzAzICIuLi9iZmQvYmZkLmgiCmV4dGVybiBpbnQgYmZkX2dldF9l
bGZfcGhkcnMKICAoYmZkICphYmZkLCB2b2lkICpwaGRycyk7CgoKZXh0ZXJuIGludCBiZmRfZ2V0
X2FyY2hfc2l6ZQogIChiZmQgKik7CgoKZXh0ZXJuIGludCBiZmRfZ2V0X3NpZ25fZXh0ZW5kX3Zt
YQogIChiZmQgKik7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX202OGtfZWxmMzJfY3JlYXRlX2Vt
YmVkZGVkX3JlbG9jcwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwgc3RydWN0IHNl
YyAqLCBzdHJ1Y3Qgc2VjICosIGNoYXIgKiopOwoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF9taXBz
X2VsZjMyX2NyZWF0ZV9lbWJlZGRlZF9yZWxvY3MKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICosIHN0cnVjdCBzZWMgKiwgc3RydWN0IHNlYyAqLCBjaGFyICoqKTsKCgoKCmV4dGVybiBz
dHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKmJmZF9zdW5vc19nZXRfbmVlZGVkX2xpc3QKICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3N1
bm9zX3JlY29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZv
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfc3Vub3Nfc2l6ZV9keW5h
bWljX3NlY3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2Vj
ICoqLCBzdHJ1Y3Qgc2VjICoqLCBzdHJ1Y3Qgc2VjICoqKTsKCgoKCmV4dGVybiBiZmRfYm9vbGVh
biBiZmRfaTM4NmxpbnV4X3NpemVfZHluYW1pY19zZWN0aW9ucwogIChiZmQgKiwgc3RydWN0IGJm
ZF9saW5rX2luZm8gKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfbTY4a2xpbnV4X3NpemVfZHlu
YW1pY19zZWN0aW9ucwogIChiZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfc3BhcmNsaW51eF9zaXplX2R5bmFtaWNfc2VjdGlvbnMKICAoYmZkICos
IHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCgpzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJuYWw7
CnR5cGVkZWYgc3RydWN0IF9iZmRfd2luZG93X2ludGVybmFsIGJmZF93aW5kb3dfaW50ZXJuYWw7
Cgp0eXBlZGVmIHN0cnVjdCBfYmZkX3dpbmRvdwp7CgogIHZvaWQgKiBkYXRhOwogIGJmZF9zaXpl
X3R5cGUgc2l6ZTsKCgoKCgoKICBzdHJ1Y3QgX2JmZF93aW5kb3dfaW50ZXJuYWwgKmk7Cn0KYmZk
X3dpbmRvdzsKCmV4dGVybiB2b2lkIGJmZF9pbml0X3dpbmRvdwogIChiZmRfd2luZG93ICopOwpl
eHRlcm4gdm9pZCBiZmRfZnJlZV93aW5kb3cKICAoYmZkX3dpbmRvdyAqKTsKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF9nZXRfZmlsZV93aW5kb3cKICAoYmZkICosIGZpbGVfcHRyLCBiZmRfc2l6ZV90
eXBlLCBiZmRfd2luZG93ICosIGJmZF9ib29sZWFuKTsKCgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJm
ZF94Y29mZl9saW5rX3JlY29yZF9zZXQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5ICosIGJmZF9zaXplX3R5cGUpOwoKZXh0ZXJuIGJm
ZF9ib29sZWFuIGJmZF94Y29mZl9pbXBvcnRfc3ltYm9sCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqLCBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqLCBiZmRfdm1hLCBjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQpOwoKZXh0ZXJu
IGJmZF9ib29sZWFuIGJmZF94Y29mZl9leHBvcnRfc3ltYm9sCiAgKGJmZCAqLCBzdHJ1Y3QgYmZk
X2xpbmtfaW5mbyAqLCBzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSAqKTsKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF94Y29mZl9saW5rX2NvdW50X3JlbG9jCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xp
bmtfaW5mbyAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3hjb2ZmX3Jl
Y29yZF9saW5rX2Fzc2lnbm1lbnQKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIGNv
bnN0IGNoYXIgKik7CmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfeGNvZmZfc2l6ZV9keW5hbWljX3Nl
Y3Rpb25zCiAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
YmZkX2Jvb2xlYW4sIGludCwgYmZkX2Jvb2xlYW4sIGJmZF9ib29sZWFuLCBzdHJ1Y3Qgc2VjICoq
LCBiZmRfYm9vbGVhbik7CgoKZXh0ZXJuIGJmZF9ib29sZWFuIGJmZF94Y29mZl9saW5rX2dlbmVy
YXRlX3J0aW5pdAogIChiZmQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGJmZF9ib29s
ZWFuKTsKCgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX3hjb2ZmX2FyX2FyY2hpdmVfc2V0X21hZ2lj
CiAgKGJmZCAqLCBjaGFyICopOwoKCgoKc3RydWN0IGludGVybmFsX3N5bWVudDsKdW5pb24gaW50
ZXJuYWxfYXV4ZW50OwoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfY29mZl9nZXRfc3ltZW50CiAg
KGJmZCAqLCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICosIHN0cnVjdCBpbnRlcm5hbF9zeW1l
bnQgKik7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2NvZmZfZ2V0X2F1eGVudAogIChiZmQgKiwg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqLCBpbnQsIHVuaW9uIGludGVybmFsX2F1eGVudCAq
KTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfY29mZl9zZXRfc3ltYm9sX2NsYXNzCiAgKGJmZCAq
LCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICosIHVuc2lnbmVkIGludCk7CgpleHRlcm4gYmZk
X2Jvb2xlYW4gYmZkX202OGtfY29mZl9jcmVhdGVfZW1iZWRkZWRfcmVsb2NzCiAgKGJmZCAqLCBz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqLCBzdHJ1Y3Qgc2VjICosIHN0cnVjdCBzZWMgKiwgY2hhciAq
Kik7CgoKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19z
ZWN0aW9ucwogIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBi
ZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlu
a19pbmZvICosIGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2FybV9nZXRfYmZkX2Zvcl9p
bnRlcndvcmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBi
ZmRfYm9vbGVhbiBiZmRfYXJtX3BlX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucwogIChz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfYXJtX3BlX3By
b2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2FybV9wZV9nZXRfYmZkX2Zvcl9pbnRlcndv
cmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKCmV4dGVybiBiZmRfYm9v
bGVhbiBiZmRfZWxmMzJfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucwogIChzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCmV4dGVybiBiZmRfYm9vbGVhbiBiZmRfZWxmMzJfYXJtX3By
b2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24KICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICos
IGludCk7CgpleHRlcm4gYmZkX2Jvb2xlYW4gYmZkX2VsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRl
cndvcmtpbmcKICAoYmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICopOwoKZXh0ZXJuIGJmZF9i
b29sZWFuIGJmZF9lbGYzMl9hcm1fYWRkX2dsdWVfc2VjdGlvbnNfdG9fYmZkCiAgKGJmZCAqLCBz
dHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgpleHRlcm4gdm9pZCBiZmRfdGljb2ZmX3NldF9zZWN0
aW9uX2xvYWRfcGFnZQogIChzdHJ1Y3Qgc2VjICosIGludCk7CgpleHRlcm4gaW50IGJmZF90aWNv
ZmZfZ2V0X3NlY3Rpb25fbG9hZF9wYWdlCiAgKHN0cnVjdCBzZWMgKik7CgoKdm9pZApiZmRfaW5p
dCAodm9pZCk7CgoKYmZkICoKYmZkX29wZW5yIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3Qg
Y2hhciAqdGFyZ2V0KTsKCmJmZCAqCmJmZF9mZG9wZW5yIChjb25zdCBjaGFyICpmaWxlbmFtZSwg
Y29uc3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpOwoKYmZkICoKYmZkX29wZW5zdHJlYW1yIChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKCmJmZCAqCmJmZF9vcGVudyAoY29uc3Qg
Y2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCk7CgpiZmRfYm9vbGVhbgpiZmRfY2xv
c2UgKGJmZCAqYWJmZCk7CgpiZmRfYm9vbGVhbgpiZmRfY2xvc2VfYWxsX2RvbmUgKGJmZCAqKTsK
CmJmZCAqCmJmZF9jcmVhdGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBiZmQgKnRlbXBsKTsKCmJm
ZF9ib29sZWFuCmJmZF9tYWtlX3dyaXRhYmxlIChiZmQgKmFiZmQpOwoKYmZkX2Jvb2xlYW4KYmZk
X21ha2VfcmVhZGFibGUgKGJmZCAqYWJmZCk7CgpjaGFyICoKYmZkX2ZvbGxvd19nbnVfZGVidWds
aW5rIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKmRpcik7CiMgMTAyOSAiLi4vYmZkL2JmZC5oIgps
b25nCmJmZF9nZXRfbXRpbWUgKGJmZCAqYWJmZCk7Cgpsb25nCmJmZF9nZXRfc2l6ZSAoYmZkICph
YmZkKTsKIyAxMDQyICIuLi9iZmQvYmZkLmgiCnN0cnVjdCBiZmRfY29tZGF0X2luZm8KewoKICBj
b25zdCBjaGFyICpuYW1lOwoKCgoKCiAgbG9uZyBzeW1ib2w7Cn07Cgp0eXBlZGVmIHN0cnVjdCBz
ZWMKewoKCiAgY29uc3QgY2hhciAqbmFtZTsKCgogIGludCBpZDsKCgogIGludCBpbmRleDsKCgog
IHN0cnVjdCBzZWMgKm5leHQ7CgoKCgogIGZsYWd3b3JkIGZsYWdzOwojIDEyNTAgIi4uL2JmZC9i
ZmQuaCIKICB1bnNpZ25lZCBpbnQgdXNlcl9zZXRfdm1hIDogMTsKCgogIHVuc2lnbmVkIGludCBy
ZWxvY19kb25lIDogMTsKCgogIHVuc2lnbmVkIGludCBsaW5rZXJfbWFyayA6IDE7CgoKCiAgdW5z
aWduZWQgaW50IGxpbmtlcl9oYXNfaW5wdXQgOiAxOwoKCiAgdW5zaWduZWQgaW50IGdjX21hcmsg
OiAxOwoKCgoKICB1bnNpZ25lZCBpbnQgc2VnbWVudF9tYXJrIDogMTsKCgogIHVuc2lnbmVkIGlu
dCBzZWNfaW5mb190eXBlOjM7CgoKCgoKCgogIHVuc2lnbmVkIGludCB1c2VfcmVsYV9wOjE7CgoK
ICB1bnNpZ25lZCBpbnQgaGFzX3Rsc19yZWxvYzoxOwoKCiAgdW5zaWduZWQgaW50IGZsYWcxMTox
OwogIHVuc2lnbmVkIGludCBmbGFnMTI6MTsKICB1bnNpZ25lZCBpbnQgZmxhZzEzOjE7CiAgdW5z
aWduZWQgaW50IGZsYWcxNDoxOwogIHVuc2lnbmVkIGludCBmbGFnMTU6MTsKICB1bnNpZ25lZCBp
bnQgZmxhZzE2OjQ7CiAgdW5zaWduZWQgaW50IGZsYWcyMDo0OwogIHVuc2lnbmVkIGludCBmbGFn
MjQ6ODsKIyAxMzAyICIuLi9iZmQvYmZkLmgiCiAgYmZkX3ZtYSB2bWE7CgoKCgogIGJmZF92bWEg
bG1hOwoKCgoKICBiZmRfc2l6ZV90eXBlIF9jb29rZWRfc2l6ZTsKCgoKCiAgYmZkX3NpemVfdHlw
ZSBfcmF3X3NpemU7CiMgMTMyNiAiLi4vYmZkL2JmZC5oIgogIGJmZF92bWEgb3V0cHV0X29mZnNl
dDsKCgogIHN0cnVjdCBzZWMgKm91dHB1dF9zZWN0aW9uOwoKCgogIHVuc2lnbmVkIGludCBhbGln
bm1lbnRfcG93ZXI7CgoKCiAgc3RydWN0IHJlbG9jX2NhY2hlX2VudHJ5ICpyZWxvY2F0aW9uOwoK
CgogIHN0cnVjdCByZWxvY19jYWNoZV9lbnRyeSAqKm9yZWxvY2F0aW9uOwoKCiAgdW5zaWduZWQg
cmVsb2NfY291bnQ7CgoKCgoKICBmaWxlX3B0ciBmaWxlcG9zOwoKCiAgZmlsZV9wdHIgcmVsX2Zp
bGVwb3M7CgoKICBmaWxlX3B0ciBsaW5lX2ZpbGVwb3M7CgoKICB2b2lkICogdXNlcmRhdGE7CgoK
CiAgdW5zaWduZWQgY2hhciAqY29udGVudHM7CgoKICBhbGVudCAqbGluZW5vOwoKCiAgdW5zaWdu
ZWQgaW50IGxpbmVub19jb3VudDsKCgogIHVuc2lnbmVkIGludCBlbnRzaXplOwoKCiAgc3RydWN0
IGJmZF9jb21kYXRfaW5mbyAqY29tZGF0OwoKCgogIGZpbGVfcHRyIG1vdmluZ19saW5lX2ZpbGVw
b3M7CgoKICBpbnQgdGFyZ2V0X2luZGV4OwoKICB2b2lkICogdXNlZF9ieV9iZmQ7CgoKCiAgc3Ry
dWN0IHJlbGVudF9jaGFpbiAqY29uc3RydWN0b3JfY2hhaW47CgoKICBiZmQgKm93bmVyOwoKCiAg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqc3ltYm9sOwogIHN0cnVjdCBzeW1ib2xfY2FjaGVf
ZW50cnkgKipzeW1ib2xfcHRyX3B0cjsKCiAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsaW5rX29y
ZGVyX2hlYWQ7CiAgc3RydWN0IGJmZF9saW5rX29yZGVyICpsaW5rX29yZGVyX3RhaWw7Cn0gYXNl
Y3Rpb247CiMgMTQxMiAiLi4vYmZkL2JmZC5oIgpleHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX2Fi
c19zZWN0aW9uOwoKCgpleHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX3VuZF9zZWN0aW9uOwoKCgpl
eHRlcm4gY29uc3QgYXNlY3Rpb24gYmZkX2NvbV9zZWN0aW9uOwoKCmV4dGVybiBjb25zdCBhc2Vj
dGlvbiBiZmRfaW5kX3NlY3Rpb247CiMgMTQzMyAiLi4vYmZkL2JmZC5oIgpleHRlcm4gY29uc3Qg
c3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9hYnNfc3ltYm9sOwpleHRlcm4g
Y29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9jb21fc3ltYm9sOwpl
eHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF91bmRfc3lt
Ym9sOwpleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jYWNoZV9lbnRyeSAqIGNvbnN0IGJmZF9p
bmRfc3ltYm9sOwojIDE0NjkgIi4uL2JmZC9iZmQuaCIKdm9pZApiZmRfc2VjdGlvbl9saXN0X2Ns
ZWFyIChiZmQgKik7Cgphc2VjdGlvbiAqCmJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChiZmQgKmFi
ZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwoKY2hhciAqCmJmZF9nZXRfdW5pcXVlX3NlY3Rpb25fbmFt
ZSAoYmZkICphYmZkLCBjb25zdCBjaGFyICp0ZW1wbGF0LCBpbnQgKmNvdW50KTsKCgoKYXNlY3Rp
b24gKgpiZmRfbWFrZV9zZWN0aW9uX29sZF93YXkgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFt
ZSk7Cgphc2VjdGlvbiAqCmJmZF9tYWtlX3NlY3Rpb25fYW55d2F5IChiZmQgKmFiZmQsIGNvbnN0
IGNoYXIgKm5hbWUpOwoKYXNlY3Rpb24gKgpiZmRfbWFrZV9zZWN0aW9uIChiZmQgKiwgY29uc3Qg
Y2hhciAqbmFtZSk7CgpiZmRfYm9vbGVhbgpiZmRfc2V0X3NlY3Rpb25fZmxhZ3MgKGJmZCAqYWJm
ZCwgYXNlY3Rpb24gKnNlYywgZmxhZ3dvcmQgZmxhZ3MpOwoKdm9pZApiZmRfbWFwX292ZXJfc2Vj
dGlvbnMgKGJmZCAqYWJmZCwgdm9pZCAoKmZ1bmMpIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0
LCB2b2lkICogb2JqKSwgdm9pZCAqIG9iaik7CgoKCgoKYmZkX2Jvb2xlYW4KYmZkX3NldF9zZWN0
aW9uX3NpemUgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlYywgYmZkX3NpemVfdHlwZSB2YWwpOwoK
YmZkX2Jvb2xlYW4KYmZkX3NldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQsIGFzZWN0aW9u
ICpzZWN0aW9uLCB2b2lkICogZGF0YSwgZmlsZV9wdHIgb2Zmc2V0LCBiZmRfc2l6ZV90eXBlIGNv
dW50KTsKCgoKYmZkX2Jvb2xlYW4KYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQs
IGFzZWN0aW9uICpzZWN0aW9uLCB2b2lkICogbG9jYXRpb24sIGZpbGVfcHRyIG9mZnNldCwgYmZk
X3NpemVfdHlwZSBjb3VudCk7CgoKCmJmZF9ib29sZWFuCmJmZF9jb3B5X3ByaXZhdGVfc2VjdGlv
bl9kYXRhIChiZmQgKmliZmQsIGFzZWN0aW9uICppc2VjLCBiZmQgKm9iZmQsIGFzZWN0aW9uICpv
c2VjKTsKCgoKCgp2b2lkCl9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCAoc3RydWN0IGJm
ZF9saW5rX2luZm8gKmluZm8sIGFzZWN0aW9uICpzZWN0aW9uKTsKCmJmZF9ib29sZWFuCmJmZF9n
ZW5lcmljX2Rpc2NhcmRfZ3JvdXAgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKmdyb3VwKTsKCgplbnVt
IGJmZF9hcmNoaXRlY3R1cmUKewogIGJmZF9hcmNoX3Vua25vd24sCiAgYmZkX2FyY2hfb2JzY3Vy
ZSwKICBiZmRfYXJjaF9tNjhrLAojIDE1NDMgIi4uL2JmZC9iZmQuaCIKICBiZmRfYXJjaF92YXgs
CiAgYmZkX2FyY2hfaTk2MCwKIyAxNTYyICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfb3IzMiwK
CiAgYmZkX2FyY2hfYTI5aywKICBiZmRfYXJjaF9zcGFyYywKIyAxNTgxICIuLi9iZmQvYmZkLmgi
CiAgYmZkX2FyY2hfbWlwcywKIyAxNjA2ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfaTM4NiwK
CgoKCgogIGJmZF9hcmNoX3dlMzJrLAogIGJmZF9hcmNoX3RhaG9lLAogIGJmZF9hcmNoX2k4NjAs
CiAgYmZkX2FyY2hfaTM3MCwKICBiZmRfYXJjaF9yb21wLAogIGJmZF9hcmNoX2FsbGlhbnQsCiAg
YmZkX2FyY2hfY29udmV4LAogIGJmZF9hcmNoX204OGssCiAgYmZkX2FyY2hfbTk4aywKICBiZmRf
YXJjaF9weXJhbWlkLAogIGJmZF9hcmNoX2g4MzAwLAoKCgogIGJmZF9hcmNoX3BkcDExLAogIGJm
ZF9hcmNoX3Bvd2VycGMsCiMgMTY0NyAiLi4vYmZkL2JmZC5oIgogIGJmZF9hcmNoX3JzNjAwMCwK
CgoKCiAgYmZkX2FyY2hfaHBwYSwKICBiZmRfYXJjaF9kMTB2LAoKCgogIGJmZF9hcmNoX2QzMHYs
CiAgYmZkX2FyY2hfZGx4LAogIGJmZF9hcmNoX202OGhjMTEsCiAgYmZkX2FyY2hfbTY4aGMxMiwK
CgoKICBiZmRfYXJjaF96OGssCgoKICBiZmRfYXJjaF9oODUwMCwKICBiZmRfYXJjaF9zaCwKIyAx
Njc4ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2FyY2hfYWxwaGEsCgoKCiAgYmZkX2FyY2hfYXJtLAoj
IDE2OTQgIi4uL2JmZC9iZmQuaCIKICBiZmRfYXJjaF9uczMyaywKICBiZmRfYXJjaF93NjUsCiAg
YmZkX2FyY2hfdGljMzAsCiAgYmZkX2FyY2hfdGljNHgsCgoKICBiZmRfYXJjaF90aWM1NHgsCiAg
YmZkX2FyY2hfdGljODAsCiAgYmZkX2FyY2hfdjg1MCwKCgogIGJmZF9hcmNoX2FyYywKCgoKCiAg
YmZkX2FyY2hfbTMyciwKCgogIGJmZF9hcmNoX21uMTAyMDAsCiAgYmZkX2FyY2hfbW4xMDMwMCwK
CgogIGJmZF9hcmNoX2ZyMzAsCgogIGJmZF9hcmNoX2ZydiwKCgoKCgoKICBiZmRfYXJjaF9tY29y
ZSwKICBiZmRfYXJjaF9pYTY0LAoKCiAgYmZkX2FyY2hfaXAyaywKCgogYmZkX2FyY2hfaXEyMDAw
LAoKCiAgYmZkX2FyY2hfcGosCiAgYmZkX2FyY2hfYXZyLAoKCgoKCiAgYmZkX2FyY2hfY3JpcywK
ICBiZmRfYXJjaF9zMzkwLAoKCiAgYmZkX2FyY2hfb3BlbnJpc2MsCiAgYmZkX2FyY2hfbW1peCwK
ICBiZmRfYXJjaF94c3Rvcm15MTYsCgogIGJmZF9hcmNoX21zcDQzMCwKIyAxNzY1ICIuLi9iZmQv
YmZkLmgiCiAgYmZkX2FyY2hfbGFzdAogIH07Cgp0eXBlZGVmIHN0cnVjdCBiZmRfYXJjaF9pbmZv
CnsKICBpbnQgYml0c19wZXJfd29yZDsKICBpbnQgYml0c19wZXJfYWRkcmVzczsKICBpbnQgYml0
c19wZXJfYnl0ZTsKICBlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaDsKICB1bnNpZ25lZCBsb25n
IG1hY2g7CiAgY29uc3QgY2hhciAqYXJjaF9uYW1lOwogIGNvbnN0IGNoYXIgKnByaW50YWJsZV9u
YW1lOwogIHVuc2lnbmVkIGludCBzZWN0aW9uX2FsaWduX3Bvd2VyOwoKCgogIGJmZF9ib29sZWFu
IHRoZV9kZWZhdWx0OwogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICogKCpjb21wYXRpYmxl
KQogICAgICAgKGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9pbmZvICphLCBjb25zdCBzdHJ1Y3QgYmZk
X2FyY2hfaW5mbyAqYik7CgoKICBiZmRfYm9vbGVhbiAoKnNjYW4pIChjb25zdCBzdHJ1Y3QgYmZk
X2FyY2hfaW5mbyAqLCBjb25zdCBjaGFyICopOwoKICBjb25zdCBzdHJ1Y3QgYmZkX2FyY2hfaW5m
byAqbmV4dDsKfQpiZmRfYXJjaF9pbmZvX3R5cGU7Cgpjb25zdCBjaGFyICoKYmZkX3ByaW50YWJs
ZV9uYW1lIChiZmQgKmFiZmQpOwoKY29uc3QgYmZkX2FyY2hfaW5mb190eXBlICoKYmZkX3NjYW5f
YXJjaCAoY29uc3QgY2hhciAqc3RyaW5nKTsKCmNvbnN0IGNoYXIgKioKYmZkX2FyY2hfbGlzdCAo
dm9pZCk7Cgpjb25zdCBiZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfYXJjaF9nZXRfY29tcGF0aWJs
ZSAoIGNvbnN0IGJmZCAqYWJmZCwgY29uc3QgYmZkICpiYmZkLCBiZmRfYm9vbGVhbiBhY2NlcHRf
dW5rbm93bnMpOwoKCgoKdm9pZApiZmRfc2V0X2FyY2hfaW5mbyAoYmZkICphYmZkLCBjb25zdCBi
ZmRfYXJjaF9pbmZvX3R5cGUgKmFyZyk7CgplbnVtIGJmZF9hcmNoaXRlY3R1cmUKYmZkX2dldF9h
cmNoIChiZmQgKmFiZmQpOwoKdW5zaWduZWQgbG9uZwpiZmRfZ2V0X21hY2ggKGJmZCAqYWJmZCk7
Cgp1bnNpZ25lZCBpbnQKYmZkX2FyY2hfYml0c19wZXJfYnl0ZSAoYmZkICphYmZkKTsKCnVuc2ln
bmVkIGludApiZmRfYXJjaF9iaXRzX3Blcl9hZGRyZXNzIChiZmQgKmFiZmQpOwoKY29uc3QgYmZk
X2FyY2hfaW5mb190eXBlICoKYmZkX2dldF9hcmNoX2luZm8gKGJmZCAqYWJmZCk7Cgpjb25zdCBi
ZmRfYXJjaF9pbmZvX3R5cGUgKgpiZmRfbG9va3VwX2FyY2ggKGVudW0gYmZkX2FyY2hpdGVjdHVy
ZSBhcmNoLCB1bnNpZ25lZCBsb25nIG1hY2hpbmUpOwoKCgpjb25zdCBjaGFyICoKYmZkX3ByaW50
YWJsZV9hcmNoX21hY2ggKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLCB1bnNpZ25lZCBsb25n
IG1hY2hpbmUpOwoKdW5zaWduZWQgaW50CmJmZF9vY3RldHNfcGVyX2J5dGUgKGJmZCAqYWJmZCk7
Cgp1bnNpZ25lZCBpbnQKYmZkX2FyY2hfbWFjaF9vY3RldHNfcGVyX2J5dGUgKGVudW0gYmZkX2Fy
Y2hpdGVjdHVyZSBhcmNoLCB1bnNpZ25lZCBsb25nIG1hY2hpbmUpOwoKCgp0eXBlZGVmIGVudW0g
YmZkX3JlbG9jX3N0YXR1cwp7CgogIGJmZF9yZWxvY19vaywKCgogIGJmZF9yZWxvY19vdmVyZmxv
dywKCgogIGJmZF9yZWxvY19vdXRvZnJhbmdlLAoKCiAgYmZkX3JlbG9jX2NvbnRpbnVlLAoKCiAg
YmZkX3JlbG9jX25vdHN1cHBvcnRlZCwKCgogIGJmZF9yZWxvY19vdGhlciwKCgogIGJmZF9yZWxv
Y191bmRlZmluZWQsCgoKCgoKICBiZmRfcmVsb2NfZGFuZ2Vyb3VzCiB9CiBiZmRfcmVsb2Nfc3Rh
dHVzX3R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgcmVsb2NfY2FjaGVfZW50cnkKewoKICBzdHJ1Y3Qg
c3ltYm9sX2NhY2hlX2VudHJ5ICoqc3ltX3B0cl9wdHI7CgoKICBiZmRfc2l6ZV90eXBlIGFkZHJl
c3M7CgoKICBiZmRfdm1hIGFkZGVuZDsKCgogIHJlbG9jX2hvd3RvX3R5cGUgKmhvd3RvOwoKfQph
cmVsZW50OwoKZW51bSBjb21wbGFpbl9vdmVyZmxvdwp7CgogIGNvbXBsYWluX292ZXJmbG93X2Rv
bnQsCgoKCiAgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsCgoKCiAgY29tcGxhaW5fb3ZlcmZs
b3dfc2lnbmVkLAoKCgogIGNvbXBsYWluX292ZXJmbG93X3Vuc2lnbmVkCn07CgpzdHJ1Y3QgcmVs
b2NfaG93dG9fc3RydWN0CnsKCgoKCgoKICB1bnNpZ25lZCBpbnQgdHlwZTsKCgoKICB1bnNpZ25l
ZCBpbnQgcmlnaHRzaGlmdDsKCgoKCiAgaW50IHNpemU7CgoKCiAgdW5zaWduZWQgaW50IGJpdHNp
emU7CgoKCgoKICBiZmRfYm9vbGVhbiBwY19yZWxhdGl2ZTsKCgoKICB1bnNpZ25lZCBpbnQgYml0
cG9zOwoKCgogIGVudW0gY29tcGxhaW5fb3ZlcmZsb3cgY29tcGxhaW5fb25fb3ZlcmZsb3c7CgoK
CgoKICBiZmRfcmVsb2Nfc3RhdHVzX3R5cGUgKCpzcGVjaWFsX2Z1bmN0aW9uKQogICAgKGJmZCAq
LCBhcmVsZW50ICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgdm9pZCAqLCBhc2VjdGlv
biAqLCBiZmQgKiwgY2hhciAqKik7CgoKCiAgY2hhciAqbmFtZTsKIyAxOTcxICIuLi9iZmQvYmZk
LmgiCiAgYmZkX2Jvb2xlYW4gcGFydGlhbF9pbnBsYWNlOwojIDE5ODEgIi4uL2JmZC9iZmQuaCIK
ICBiZmRfdm1hIHNyY19tYXNrOwoKCgogIGJmZF92bWEgZHN0X21hc2s7CgoKCgoKCgogIGJmZF9i
b29sZWFuIHBjcmVsX29mZnNldDsKfTsKIyAyMDIxICIuLi9iZmQvYmZkLmgiCnVuc2lnbmVkIGlu
dApiZmRfZ2V0X3JlbG9jX3NpemUgKHJlbG9jX2hvd3RvX3R5cGUgKik7Cgp0eXBlZGVmIHN0cnVj
dCByZWxlbnRfY2hhaW4KewogIGFyZWxlbnQgcmVsZW50OwogIHN0cnVjdCByZWxlbnRfY2hhaW4g
Km5leHQ7Cn0KYXJlbGVudF9jaGFpbjsKCmJmZF9yZWxvY19zdGF0dXNfdHlwZQpiZmRfY2hlY2tf
b3ZlcmZsb3cgKGVudW0gY29tcGxhaW5fb3ZlcmZsb3cgaG93LCB1bnNpZ25lZCBpbnQgYml0c2l6
ZSwgdW5zaWduZWQgaW50IHJpZ2h0c2hpZnQsIHVuc2lnbmVkIGludCBhZGRyc2l6ZSwgYmZkX3Zt
YSByZWxvY2F0aW9uKTsKCgoKCgpiZmRfcmVsb2Nfc3RhdHVzX3R5cGUKYmZkX3BlcmZvcm1fcmVs
b2NhdGlvbiAoYmZkICphYmZkLCBhcmVsZW50ICpyZWxvY19lbnRyeSwgdm9pZCAqIGRhdGEsIGFz
ZWN0aW9uICppbnB1dF9zZWN0aW9uLCBiZmQgKm91dHB1dF9iZmQsIGNoYXIgKiplcnJvcl9tZXNz
YWdlKTsKCgoKCgoKYmZkX3JlbG9jX3N0YXR1c190eXBlCmJmZF9pbnN0YWxsX3JlbG9jYXRpb24g
KGJmZCAqYWJmZCwgYXJlbGVudCAqcmVsb2NfZW50cnksIHZvaWQgKiBkYXRhLCBiZmRfdm1hIGRh
dGFfc3RhcnQsIGFzZWN0aW9uICppbnB1dF9zZWN0aW9uLCBjaGFyICoqZXJyb3JfbWVzc2FnZSk7
CgoKCgoKZW51bSBiZmRfcmVsb2NfY29kZV9yZWFsIHsKICBfZHVtbXlfZmlyc3RfYmZkX3JlbG9j
X2NvZGVfcmVhbCwKCgoKICBCRkRfUkVMT0NfNjQsCiAgQkZEX1JFTE9DXzMyLAogIEJGRF9SRUxP
Q18yNiwKICBCRkRfUkVMT0NfMjQsCiAgQkZEX1JFTE9DXzE2LAogIEJGRF9SRUxPQ18xNCwKICBC
RkRfUkVMT0NfOCwKCgoKCgoKICBCRkRfUkVMT0NfNjRfUENSRUwsCiAgQkZEX1JFTE9DXzMyX1BD
UkVMLAogIEJGRF9SRUxPQ18yNF9QQ1JFTCwKICBCRkRfUkVMT0NfMTZfUENSRUwsCiAgQkZEX1JF
TE9DXzEyX1BDUkVMLAogIEJGRF9SRUxPQ184X1BDUkVMLAoKCiAgQkZEX1JFTE9DXzMyX0dPVF9Q
Q1JFTCwKICBCRkRfUkVMT0NfMTZfR09UX1BDUkVMLAogIEJGRF9SRUxPQ184X0dPVF9QQ1JFTCwK
ICBCRkRfUkVMT0NfMzJfR09UT0ZGLAogIEJGRF9SRUxPQ18xNl9HT1RPRkYsCiAgQkZEX1JFTE9D
X0xPMTZfR09UT0ZGLAogIEJGRF9SRUxPQ19ISTE2X0dPVE9GRiwKICBCRkRfUkVMT0NfSEkxNl9T
X0dPVE9GRiwKICBCRkRfUkVMT0NfOF9HT1RPRkYsCiAgQkZEX1JFTE9DXzY0X1BMVF9QQ1JFTCwK
ICBCRkRfUkVMT0NfMzJfUExUX1BDUkVMLAogIEJGRF9SRUxPQ18yNF9QTFRfUENSRUwsCiAgQkZE
X1JFTE9DXzE2X1BMVF9QQ1JFTCwKICBCRkRfUkVMT0NfOF9QTFRfUENSRUwsCiAgQkZEX1JFTE9D
XzY0X1BMVE9GRiwKICBCRkRfUkVMT0NfMzJfUExUT0ZGLAogIEJGRF9SRUxPQ18xNl9QTFRPRkYs
CiAgQkZEX1JFTE9DX0xPMTZfUExUT0ZGLAogIEJGRF9SRUxPQ19ISTE2X1BMVE9GRiwKICBCRkRf
UkVMT0NfSEkxNl9TX1BMVE9GRiwKICBCRkRfUkVMT0NfOF9QTFRPRkYsCgoKICBCRkRfUkVMT0Nf
NjhLX0dMT0JfREFULAogIEJGRF9SRUxPQ182OEtfSk1QX1NMT1QsCiAgQkZEX1JFTE9DXzY4S19S
RUxBVElWRSwKCgogIEJGRF9SRUxPQ18zMl9CQVNFUkVMLAogIEJGRF9SRUxPQ18xNl9CQVNFUkVM
LAogIEJGRF9SRUxPQ19MTzE2X0JBU0VSRUwsCiAgQkZEX1JFTE9DX0hJMTZfQkFTRVJFTCwKICBC
RkRfUkVMT0NfSEkxNl9TX0JBU0VSRUwsCiAgQkZEX1JFTE9DXzhfQkFTRVJFTCwKICBCRkRfUkVM
T0NfUlZBLAoKCiAgQkZEX1JFTE9DXzhfRkZubiwKCgoKCgoKCiAgQkZEX1JFTE9DXzMyX1BDUkVM
X1MyLAogIEJGRF9SRUxPQ18xNl9QQ1JFTF9TMiwKICBCRkRfUkVMT0NfMjNfUENSRUxfUzIsCgoK
CiAgQkZEX1JFTE9DX0hJMjIsCiAgQkZEX1JFTE9DX0xPMTAsCgoKCgoKICBCRkRfUkVMT0NfR1BS
RUwxNiwKICBCRkRfUkVMT0NfR1BSRUwzMiwKCgogIEJGRF9SRUxPQ19JOTYwX0NBTExKLAoKCgog
IEJGRF9SRUxPQ19OT05FLAogIEJGRF9SRUxPQ19TUEFSQ19XRElTUDIyLAogIEJGRF9SRUxPQ19T
UEFSQzIyLAogIEJGRF9SRUxPQ19TUEFSQzEzLAogIEJGRF9SRUxPQ19TUEFSQ19HT1QxMCwKICBC
RkRfUkVMT0NfU1BBUkNfR09UMTMsCiAgQkZEX1JFTE9DX1NQQVJDX0dPVDIyLAogIEJGRF9SRUxP
Q19TUEFSQ19QQzEwLAogIEJGRF9SRUxPQ19TUEFSQ19QQzIyLAogIEJGRF9SRUxPQ19TUEFSQ19X
UExUMzAsCiAgQkZEX1JFTE9DX1NQQVJDX0NPUFksCiAgQkZEX1JFTE9DX1NQQVJDX0dMT0JfREFU
LAogIEJGRF9SRUxPQ19TUEFSQ19KTVBfU0xPVCwKICBCRkRfUkVMT0NfU1BBUkNfUkVMQVRJVkUs
CiAgQkZEX1JFTE9DX1NQQVJDX1VBMTYsCiAgQkZEX1JFTE9DX1NQQVJDX1VBMzIsCiAgQkZEX1JF
TE9DX1NQQVJDX1VBNjQsCgoKICBCRkRfUkVMT0NfU1BBUkNfQkFTRTEzLAogIEJGRF9SRUxPQ19T
UEFSQ19CQVNFMjIsCgoKCiAgQkZEX1JFTE9DX1NQQVJDXzEwLAogIEJGRF9SRUxPQ19TUEFSQ18x
MSwKICBCRkRfUkVMT0NfU1BBUkNfT0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0hIMjIsCiAgQkZE
X1JFTE9DX1NQQVJDX0hNMTAsCiAgQkZEX1JFTE9DX1NQQVJDX0xNMjIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1BDX0hIMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1BDX0hNMTAsCiAgQkZEX1JFTE9DX1NQQVJD
X1BDX0xNMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1dESVNQMTYsCiAgQkZEX1JFTE9DX1NQQVJDX1dE
SVNQMTksCiAgQkZEX1JFTE9DX1NQQVJDXzcsCiAgQkZEX1JFTE9DX1NQQVJDXzYsCiAgQkZEX1JF
TE9DX1NQQVJDXzUsCgogIEJGRF9SRUxPQ19TUEFSQ19QTFQzMiwKICBCRkRfUkVMT0NfU1BBUkNf
UExUNjQsCiAgQkZEX1JFTE9DX1NQQVJDX0hJWDIyLAogIEJGRF9SRUxPQ19TUEFSQ19MT1gxMCwK
ICBCRkRfUkVMT0NfU1BBUkNfSDQ0LAogIEJGRF9SRUxPQ19TUEFSQ19NNDQsCiAgQkZEX1JFTE9D
X1NQQVJDX0w0NCwKICBCRkRfUkVMT0NfU1BBUkNfUkVHSVNURVIsCgoKICBCRkRfUkVMT0NfU1BB
UkNfUkVWMzIsCgoKICBCRkRfUkVMT0NfU1BBUkNfVExTX0dEX0hJMjIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19HRF9MTzEwLAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfR0RfQURELAogIEJGRF9SRUxP
Q19TUEFSQ19UTFNfR0RfQ0FMTCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX0xETV9ISTIyLAogIEJG
RF9SRUxPQ19TUEFSQ19UTFNfTERNX0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19MRE1fQURE
LAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfTERNX0NBTEwsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19M
RE9fSElYMjIsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19MRE9fTE9YMTAsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19MRE9fQURELAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfSUVfSEkyMiwKICBCRkRfUkVM
T0NfU1BBUkNfVExTX0lFX0xPMTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19JRV9MRCwKICBCRkRf
UkVMT0NfU1BBUkNfVExTX0lFX0xEWCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX0lFX0FERCwKICBC
RkRfUkVMT0NfU1BBUkNfVExTX0xFX0hJWDIyLAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfTEVfTE9Y
MTAsCiAgQkZEX1JFTE9DX1NQQVJDX1RMU19EVFBNT0QzMiwKICBCRkRfUkVMT0NfU1BBUkNfVExT
X0RUUE1PRDY0LAogIEJGRF9SRUxPQ19TUEFSQ19UTFNfRFRQT0ZGMzIsCiAgQkZEX1JFTE9DX1NQ
QVJDX1RMU19EVFBPRkY2NCwKICBCRkRfUkVMT0NfU1BBUkNfVExTX1RQT0ZGMzIsCiAgQkZEX1JF
TE9DX1NQQVJDX1RMU19UUE9GRjY0LAoKCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQX0hJ
MTYsCgoKCgoKICBCRkRfUkVMT0NfQUxQSEFfR1BESVNQX0xPMTYsCgoKCgogIEJGRF9SRUxPQ19B
TFBIQV9HUERJU1AsCiMgMjI2NCAiLi4vYmZkL2JmZC5oIgogIEJGRF9SRUxPQ19BTFBIQV9MSVRF
UkFMLAogIEJGRF9SRUxPQ19BTFBIQV9FTEZfTElURVJBTCwKICBCRkRfUkVMT0NfQUxQSEFfTElU
VVNFLAoKCgoKICBCRkRfUkVMT0NfQUxQSEFfSElOVCwKCgoKICBCRkRfUkVMT0NfQUxQSEFfTElO
S0FHRSwKCgoKICBCRkRfUkVMT0NfQUxQSEFfQ09ERUFERFIsCgoKCiAgQkZEX1JFTE9DX0FMUEhB
X0dQUkVMX0hJMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0dQUkVMX0xPMTYsCgoKCgogIEJGRF9SRUxP
Q19BTFBIQV9CUlNHUCwKCgogIEJGRF9SRUxPQ19BTFBIQV9UTFNHRCwKICBCRkRfUkVMT0NfQUxQ
SEFfVExTTERNLAogIEJGRF9SRUxPQ19BTFBIQV9EVFBNT0Q2NCwKICBCRkRfUkVMT0NfQUxQSEFf
R09URFRQUkVMMTYsCiAgQkZEX1JFTE9DX0FMUEhBX0RUUFJFTDY0LAogIEJGRF9SRUxPQ19BTFBI
QV9EVFBSRUxfSEkxNiwKICBCRkRfUkVMT0NfQUxQSEFfRFRQUkVMX0xPMTYsCiAgQkZEX1JFTE9D
X0FMUEhBX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19BTFBIQV9HT1RUUFJFTDE2LAogIEJGRF9SRUxP
Q19BTFBIQV9UUFJFTDY0LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTF9ISTE2LAogIEJGRF9SRUxP
Q19BTFBIQV9UUFJFTF9MTzE2LAogIEJGRF9SRUxPQ19BTFBIQV9UUFJFTDE2LAoKCgogIEJGRF9S
RUxPQ19NSVBTX0pNUCwKCgogIEJGRF9SRUxPQ19NSVBTMTZfSk1QLAoKCiAgQkZEX1JFTE9DX01J
UFMxNl9HUFJFTCwKCgogIEJGRF9SRUxPQ19ISTE2LAoKCgoKCiAgQkZEX1JFTE9DX0hJMTZfUywK
CgogIEJGRF9SRUxPQ19MTzE2LAoKCiAgQkZEX1JFTE9DX1BDUkVMX0hJMTZfUywKCgogIEJGRF9S
RUxPQ19QQ1JFTF9MTzE2LAoKCiAgQkZEX1JFTE9DX01JUFNfTElURVJBTCwKCgogIEJGRF9SRUxP
Q19NSVBTX0dPVDE2LAogIEJGRF9SRUxPQ19NSVBTX0NBTEwxNiwKICBCRkRfUkVMT0NfTUlQU19H
T1RfSEkxNiwKICBCRkRfUkVMT0NfTUlQU19HT1RfTE8xNiwKICBCRkRfUkVMT0NfTUlQU19DQUxM
X0hJMTYsCiAgQkZEX1JFTE9DX01JUFNfQ0FMTF9MTzE2LAogIEJGRF9SRUxPQ19NSVBTX1NVQiwK
ICBCRkRfUkVMT0NfTUlQU19HT1RfUEFHRSwKICBCRkRfUkVMT0NfTUlQU19HT1RfT0ZTVCwKICBC
RkRfUkVMT0NfTUlQU19HT1RfRElTUCwKICBCRkRfUkVMT0NfTUlQU19TSElGVDUsCiAgQkZEX1JF
TE9DX01JUFNfU0hJRlQ2LAogIEJGRF9SRUxPQ19NSVBTX0lOU0VSVF9BLAogIEJGRF9SRUxPQ19N
SVBTX0lOU0VSVF9CLAogIEJGRF9SRUxPQ19NSVBTX0RFTEVURSwKICBCRkRfUkVMT0NfTUlQU19I
SUdIRVNULAogIEJGRF9SRUxPQ19NSVBTX0hJR0hFUiwKICBCRkRfUkVMT0NfTUlQU19TQ05fRElT
UCwKICBCRkRfUkVMT0NfTUlQU19SRUwxNiwKICBCRkRfUkVMT0NfTUlQU19SRUxHT1QsCiAgQkZE
X1JFTE9DX01JUFNfSkFMUiwKCgogIEJGRF9SRUxPQ19GUlZfTEFCRUwxNiwKICBCRkRfUkVMT0Nf
RlJWX0xBQkVMMjQsCiAgQkZEX1JFTE9DX0ZSVl9MTzE2LAogIEJGRF9SRUxPQ19GUlZfSEkxNiwK
ICBCRkRfUkVMT0NfRlJWX0dQUkVMMTIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTFUxMiwKICBCRkRf
UkVMT0NfRlJWX0dQUkVMMzIsCiAgQkZEX1JFTE9DX0ZSVl9HUFJFTEhJLAogIEJGRF9SRUxPQ19G
UlZfR1BSRUxMTywKCgoKICBCRkRfUkVMT0NfMzg2X0dPVDMyLAogIEJGRF9SRUxPQ18zODZfUExU
MzIsCiAgQkZEX1JFTE9DXzM4Nl9DT1BZLAogIEJGRF9SRUxPQ18zODZfR0xPQl9EQVQsCiAgQkZE
X1JFTE9DXzM4Nl9KVU1QX1NMT1QsCiAgQkZEX1JFTE9DXzM4Nl9SRUxBVElWRSwKICBCRkRfUkVM
T0NfMzg2X0dPVE9GRiwKICBCRkRfUkVMT0NfMzg2X0dPVFBDLAogIEJGRF9SRUxPQ18zODZfVExT
X1RQT0ZGLAogIEJGRF9SRUxPQ18zODZfVExTX0lFLAogIEJGRF9SRUxPQ18zODZfVExTX0dPVElF
LAogIEJGRF9SRUxPQ18zODZfVExTX0xFLAogIEJGRF9SRUxPQ18zODZfVExTX0dELAogIEJGRF9S
RUxPQ18zODZfVExTX0xETSwKICBCRkRfUkVMT0NfMzg2X1RMU19MRE9fMzIsCiAgQkZEX1JFTE9D
XzM4Nl9UTFNfSUVfMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfTEVfMzIsCiAgQkZEX1JFTE9DXzM4
Nl9UTFNfRFRQTU9EMzIsCiAgQkZEX1JFTE9DXzM4Nl9UTFNfRFRQT0ZGMzIsCiAgQkZEX1JFTE9D
XzM4Nl9UTFNfVFBPRkYzMiwKCgogIEJGRF9SRUxPQ19YODZfNjRfR09UMzIsCiAgQkZEX1JFTE9D
X1g4Nl82NF9QTFQzMiwKICBCRkRfUkVMT0NfWDg2XzY0X0NPUFksCiAgQkZEX1JFTE9DX1g4Nl82
NF9HTE9CX0RBVCwKICBCRkRfUkVMT0NfWDg2XzY0X0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfWDg2
XzY0X1JFTEFUSVZFLAogIEJGRF9SRUxPQ19YODZfNjRfR09UUENSRUwsCiAgQkZEX1JFTE9DX1g4
Nl82NF8zMlMsCiAgQkZEX1JFTE9DX1g4Nl82NF9EVFBNT0Q2NCwKICBCRkRfUkVMT0NfWDg2XzY0
X0RUUE9GRjY0LAogIEJGRF9SRUxPQ19YODZfNjRfVFBPRkY2NCwKICBCRkRfUkVMT0NfWDg2XzY0
X1RMU0dELAogIEJGRF9SRUxPQ19YODZfNjRfVExTTEQsCiAgQkZEX1JFTE9DX1g4Nl82NF9EVFBP
RkYzMiwKICBCRkRfUkVMT0NfWDg2XzY0X0dPVFRQT0ZGLAogIEJGRF9SRUxPQ19YODZfNjRfVFBP
RkYzMiwKCgogIEJGRF9SRUxPQ19OUzMyS19JTU1fOCwKICBCRkRfUkVMT0NfTlMzMktfSU1NXzE2
LAogIEJGRF9SRUxPQ19OUzMyS19JTU1fMzIsCiAgQkZEX1JFTE9DX05TMzJLX0lNTV84X1BDUkVM
LAogIEJGRF9SRUxPQ19OUzMyS19JTU1fMTZfUENSRUwsCiAgQkZEX1JFTE9DX05TMzJLX0lNTV8z
Ml9QQ1JFTCwKICBCRkRfUkVMT0NfTlMzMktfRElTUF84LAogIEJGRF9SRUxPQ19OUzMyS19ESVNQ
XzE2LAogIEJGRF9SRUxPQ19OUzMyS19ESVNQXzMyLAogIEJGRF9SRUxPQ19OUzMyS19ESVNQXzhf
UENSRUwsCiAgQkZEX1JFTE9DX05TMzJLX0RJU1BfMTZfUENSRUwsCiAgQkZEX1JFTE9DX05TMzJL
X0RJU1BfMzJfUENSRUwsCgoKICBCRkRfUkVMT0NfUERQMTFfRElTUF84X1BDUkVMLAogIEJGRF9S
RUxPQ19QRFAxMV9ESVNQXzZfUENSRUwsCgoKICBCRkRfUkVMT0NfUEpfQ09ERV9ISTE2LAogIEJG
RF9SRUxPQ19QSl9DT0RFX0xPMTYsCiAgQkZEX1JFTE9DX1BKX0NPREVfRElSMTYsCiAgQkZEX1JF
TE9DX1BKX0NPREVfRElSMzIsCiAgQkZEX1JFTE9DX1BKX0NPREVfUkVMMTYsCiAgQkZEX1JFTE9D
X1BKX0NPREVfUkVMMzIsCgoKICBCRkRfUkVMT0NfUFBDX0IyNiwKICBCRkRfUkVMT0NfUFBDX0JB
MjYsCiAgQkZEX1JFTE9DX1BQQ19UT0MxNiwKICBCRkRfUkVMT0NfUFBDX0IxNiwKICBCRkRfUkVM
T0NfUFBDX0IxNl9CUlRBS0VOLAogIEJGRF9SRUxPQ19QUENfQjE2X0JSTlRBS0VOLAogIEJGRF9S
RUxPQ19QUENfQkExNiwKICBCRkRfUkVMT0NfUFBDX0JBMTZfQlJUQUtFTiwKICBCRkRfUkVMT0Nf
UFBDX0JBMTZfQlJOVEFLRU4sCiAgQkZEX1JFTE9DX1BQQ19DT1BZLAogIEJGRF9SRUxPQ19QUENf
R0xPQl9EQVQsCiAgQkZEX1JFTE9DX1BQQ19KTVBfU0xPVCwKICBCRkRfUkVMT0NfUFBDX1JFTEFU
SVZFLAogIEJGRF9SRUxPQ19QUENfTE9DQUwyNFBDLAogIEJGRF9SRUxPQ19QUENfRU1CX05BRERS
MzIsCiAgQkZEX1JFTE9DX1BQQ19FTUJfTkFERFIxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9OQURE
UjE2X0xPLAogIEJGRF9SRUxPQ19QUENfRU1CX05BRERSMTZfSEksCiAgQkZEX1JFTE9DX1BQQ19F
TUJfTkFERFIxNl9IQSwKICBCRkRfUkVMT0NfUFBDX0VNQl9TREFJMTYsCiAgQkZEX1JFTE9DX1BQ
Q19FTUJfU0RBMkkxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9TREEyUkVMLAogIEJGRF9SRUxPQ19Q
UENfRU1CX1NEQTIxLAogIEJGRF9SRUxPQ19QUENfRU1CX01SS1JFRiwKICBCRkRfUkVMT0NfUFBD
X0VNQl9SRUxTRUMxNiwKICBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9MTywKICBCRkRfUkVMT0Nf
UFBDX0VNQl9SRUxTVF9ISSwKICBCRkRfUkVMT0NfUFBDX0VNQl9SRUxTVF9IQSwKICBCRkRfUkVM
T0NfUFBDX0VNQl9CSVRfRkxELAogIEJGRF9SRUxPQ19QUENfRU1CX1JFTFNEQSwKICBCRkRfUkVM
T0NfUFBDNjRfSElHSEVSLAogIEJGRF9SRUxPQ19QUEM2NF9ISUdIRVJfUywKICBCRkRfUkVMT0Nf
UFBDNjRfSElHSEVTVCwKICBCRkRfUkVMT0NfUFBDNjRfSElHSEVTVF9TLAogIEJGRF9SRUxPQ19Q
UEM2NF9UT0MxNl9MTywKICBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfSEksCiAgQkZEX1JFTE9DX1BQ
QzY0X1RPQzE2X0hBLAogIEJGRF9SRUxPQ19QUEM2NF9UT0MsCiAgQkZEX1JFTE9DX1BQQzY0X1BM
VEdPVDE2LAogIEJGRF9SRUxPQ19QUEM2NF9QTFRHT1QxNl9MTywKICBCRkRfUkVMT0NfUFBDNjRf
UExUR09UMTZfSEksCiAgQkZEX1JFTE9DX1BQQzY0X1BMVEdPVDE2X0hBLAogIEJGRF9SRUxPQ19Q
UEM2NF9BRERSMTZfRFMsCiAgQkZEX1JFTE9DX1BQQzY0X0FERFIxNl9MT19EUywKICBCRkRfUkVM
T0NfUFBDNjRfR09UMTZfRFMsCiAgQkZEX1JFTE9DX1BQQzY0X0dPVDE2X0xPX0RTLAogIEJGRF9S
RUxPQ19QUEM2NF9QTFQxNl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfU0VDVE9GRl9EUywKICBC
RkRfUkVMT0NfUFBDNjRfU0VDVE9GRl9MT19EUywKICBCRkRfUkVMT0NfUFBDNjRfVE9DMTZfRFMs
CiAgQkZEX1JFTE9DX1BQQzY0X1RPQzE2X0xPX0RTLAogIEJGRF9SRUxPQ19QUEM2NF9QTFRHT1Qx
Nl9EUywKICBCRkRfUkVMT0NfUFBDNjRfUExUR09UMTZfTE9fRFMsCgoKICBCRkRfUkVMT0NfUFBD
X1RMUywKICBCRkRfUkVMT0NfUFBDX0RUUE1PRCwKICBCRkRfUkVMT0NfUFBDX1RQUkVMMTYsCiAg
QkZEX1JFTE9DX1BQQ19UUFJFTDE2X0xPLAogIEJGRF9SRUxPQ19QUENfVFBSRUwxNl9ISSwKICBC
RkRfUkVMT0NfUFBDX1RQUkVMMTZfSEEsCiAgQkZEX1JFTE9DX1BQQ19UUFJFTCwKICBCRkRfUkVM
T0NfUFBDX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19QUENfRFRQUkVMMTZfTE8sCiAgQkZEX1JFTE9D
X1BQQ19EVFBSRUwxNl9ISSwKICBCRkRfUkVMT0NfUFBDX0RUUFJFTDE2X0hBLAogIEJGRF9SRUxP
Q19QUENfRFRQUkVMLAogIEJGRF9SRUxPQ19QUENfR09UX1RMU0dEMTYsCiAgQkZEX1JFTE9DX1BQ
Q19HT1RfVExTR0QxNl9MTywKICBCRkRfUkVMT0NfUFBDX0dPVF9UTFNHRDE2X0hJLAogIEJGRF9S
RUxPQ19QUENfR09UX1RMU0dEMTZfSEEsCiAgQkZEX1JFTE9DX1BQQ19HT1RfVExTTEQxNiwKICBC
RkRfUkVMT0NfUFBDX0dPVF9UTFNMRDE2X0xPLAogIEJGRF9SRUxPQ19QUENfR09UX1RMU0xEMTZf
SEksCiAgQkZEX1JFTE9DX1BQQ19HT1RfVExTTEQxNl9IQSwKICBCRkRfUkVMT0NfUFBDX0dPVF9U
UFJFTDE2LAogIEJGRF9SRUxPQ19QUENfR09UX1RQUkVMMTZfTE8sCiAgQkZEX1JFTE9DX1BQQ19H
T1RfVFBSRUwxNl9ISSwKICBCRkRfUkVMT0NfUFBDX0dPVF9UUFJFTDE2X0hBLAogIEJGRF9SRUxP
Q19QUENfR09UX0RUUFJFTDE2LAogIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0xPLAogIEJG
RF9SRUxPQ19QUENfR09UX0RUUFJFTDE2X0hJLAogIEJGRF9SRUxPQ19QUENfR09UX0RUUFJFTDE2
X0hBLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0RTLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJF
TDE2X0xPX0RTLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFUiwKICBCRkRfUkVMT0Nf
UFBDNjRfVFBSRUwxNl9ISUdIRVJBLAogIEJGRF9SRUxPQ19QUEM2NF9UUFJFTDE2X0hJR0hFU1Qs
CiAgQkZEX1JFTE9DX1BQQzY0X1RQUkVMMTZfSElHSEVTVEEsCiAgQkZEX1JFTE9DX1BQQzY0X0RU
UFJFTDE2X0RTLAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9MT19EUywKICBCRkRfUkVMT0Nf
UFBDNjRfRFRQUkVMMTZfSElHSEVSLAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVJB
LAogIEJGRF9SRUxPQ19QUEM2NF9EVFBSRUwxNl9ISUdIRVNULAogIEJGRF9SRUxPQ19QUEM2NF9E
VFBSRUwxNl9ISUdIRVNUQSwKCgogIEJGRF9SRUxPQ19JMzcwX0QxMiwKCgoKCiAgQkZEX1JFTE9D
X0NUT1IsCgoKCiAgQkZEX1JFTE9DX0FSTV9QQ1JFTF9CUkFOQ0gsCgoKCgogIEJGRF9SRUxPQ19B
Uk1fUENSRUxfQkxYLAoKCgoKICBCRkRfUkVMT0NfVEhVTUJfUENSRUxfQkxYLAoKCgogIEJGRF9S
RUxPQ19BUk1fSU1NRURJQVRFLAogIEJGRF9SRUxPQ19BUk1fQURSTF9JTU1FRElBVEUsCiAgQkZE
X1JFTE9DX0FSTV9PRkZTRVRfSU1NLAogIEJGRF9SRUxPQ19BUk1fU0hJRlRfSU1NLAogIEJGRF9S
RUxPQ19BUk1fU1dJLAogIEJGRF9SRUxPQ19BUk1fTVVMVEksCiAgQkZEX1JFTE9DX0FSTV9DUF9P
RkZfSU1NLAogIEJGRF9SRUxPQ19BUk1fQURSX0lNTSwKICBCRkRfUkVMT0NfQVJNX0xEUl9JTU0s
CiAgQkZEX1JFTE9DX0FSTV9MSVRFUkFMLAogIEJGRF9SRUxPQ19BUk1fSU5fUE9PTCwKICBCRkRf
UkVMT0NfQVJNX09GRlNFVF9JTU04LAogIEJGRF9SRUxPQ19BUk1fSFdMSVRFUkFMLAogIEJGRF9S
RUxPQ19BUk1fVEhVTUJfQURELAogIEJGRF9SRUxPQ19BUk1fVEhVTUJfSU1NLAogIEJGRF9SRUxP
Q19BUk1fVEhVTUJfU0hJRlQsCiAgQkZEX1JFTE9DX0FSTV9USFVNQl9PRkZTRVQsCiAgQkZEX1JF
TE9DX0FSTV9HT1QxMiwKICBCRkRfUkVMT0NfQVJNX0dPVDMyLAogIEJGRF9SRUxPQ19BUk1fSlVN
UF9TTE9ULAogIEJGRF9SRUxPQ19BUk1fQ09QWSwKICBCRkRfUkVMT0NfQVJNX0dMT0JfREFULAog
IEJGRF9SRUxPQ19BUk1fUExUMzIsCiAgQkZEX1JFTE9DX0FSTV9SRUxBVElWRSwKICBCRkRfUkVM
T0NfQVJNX0dPVE9GRiwKICBCRkRfUkVMT0NfQVJNX0dPVFBDLAoKCiAgQkZEX1JFTE9DX1NIX1BD
RElTUDhCWTIsCiAgQkZEX1JFTE9DX1NIX1BDRElTUDEyQlkyLAogIEJGRF9SRUxPQ19TSF9JTU00
LAogIEJGRF9SRUxPQ19TSF9JTU00QlkyLAogIEJGRF9SRUxPQ19TSF9JTU00Qlk0LAogIEJGRF9S
RUxPQ19TSF9JTU04LAogIEJGRF9SRUxPQ19TSF9JTU04QlkyLAogIEJGRF9SRUxPQ19TSF9JTU04
Qlk0LAogIEJGRF9SRUxPQ19TSF9QQ1JFTElNTThCWTIsCiAgQkZEX1JFTE9DX1NIX1BDUkVMSU1N
OEJZNCwKICBCRkRfUkVMT0NfU0hfU1dJVENIMTYsCiAgQkZEX1JFTE9DX1NIX1NXSVRDSDMyLAog
IEJGRF9SRUxPQ19TSF9VU0VTLAogIEJGRF9SRUxPQ19TSF9DT1VOVCwKICBCRkRfUkVMT0NfU0hf
QUxJR04sCiAgQkZEX1JFTE9DX1NIX0NPREUsCiAgQkZEX1JFTE9DX1NIX0RBVEEsCiAgQkZEX1JF
TE9DX1NIX0xBQkVMLAogIEJGRF9SRUxPQ19TSF9MT09QX1NUQVJULAogIEJGRF9SRUxPQ19TSF9M
T09QX0VORCwKICBCRkRfUkVMT0NfU0hfQ09QWSwKICBCRkRfUkVMT0NfU0hfR0xPQl9EQVQsCiAg
QkZEX1JFTE9DX1NIX0pNUF9TTE9ULAogIEJGRF9SRUxPQ19TSF9SRUxBVElWRSwKICBCRkRfUkVM
T0NfU0hfR09UUEMsCiAgQkZEX1JFTE9DX1NIX0dPVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09U
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hfR09U
X0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVFBMVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UUExU
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RQTFRfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hf
R09UUExUX0hJMTYsCiAgQkZEX1JFTE9DX1NIX1BMVF9MT1cxNiwKICBCRkRfUkVMT0NfU0hfUExU
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9QTFRfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hfUExU
X0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVE9GRl9MT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UT0ZG
X01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9HT1RPRkZfTUVESEkxNiwKICBCRkRfUkVMT0NfU0hf
R09UT0ZGX0hJMTYsCiAgQkZEX1JFTE9DX1NIX0dPVFBDX0xPVzE2LAogIEJGRF9SRUxPQ19TSF9H
T1RQQ19NRURMT1cxNiwKICBCRkRfUkVMT0NfU0hfR09UUENfTUVESEkxNiwKICBCRkRfUkVMT0Nf
U0hfR09UUENfSEkxNiwKICBCRkRfUkVMT0NfU0hfQ09QWTY0LAogIEJGRF9SRUxPQ19TSF9HTE9C
X0RBVDY0LAogIEJGRF9SRUxPQ19TSF9KTVBfU0xPVDY0LAogIEJGRF9SRUxPQ19TSF9SRUxBVElW
RTY0LAogIEJGRF9SRUxPQ19TSF9HT1QxMEJZNCwKICBCRkRfUkVMT0NfU0hfR09UMTBCWTgsCiAg
QkZEX1JFTE9DX1NIX0dPVFBMVDEwQlk0LAogIEJGRF9SRUxPQ19TSF9HT1RQTFQxMEJZOCwKICBC
RkRfUkVMT0NfU0hfR09UUExUMzIsCiAgQkZEX1JFTE9DX1NIX1NITUVESUFfQ09ERSwKICBCRkRf
UkVMT0NfU0hfSU1NVTUsCiAgQkZEX1JFTE9DX1NIX0lNTVM2LAogIEJGRF9SRUxPQ19TSF9JTU1T
NkJZMzIsCiAgQkZEX1JFTE9DX1NIX0lNTVU2LAogIEJGRF9SRUxPQ19TSF9JTU1TMTAsCiAgQkZE
X1JFTE9DX1NIX0lNTVMxMEJZMiwKICBCRkRfUkVMT0NfU0hfSU1NUzEwQlk0LAogIEJGRF9SRUxP
Q19TSF9JTU1TMTBCWTgsCiAgQkZEX1JFTE9DX1NIX0lNTVMxNiwKICBCRkRfUkVMT0NfU0hfSU1N
VTE2LAogIEJGRF9SRUxPQ19TSF9JTU1fTE9XMTYsCiAgQkZEX1JFTE9DX1NIX0lNTV9MT1cxNl9Q
Q1JFTCwKICBCRkRfUkVMT0NfU0hfSU1NX01FRExPVzE2LAogIEJGRF9SRUxPQ19TSF9JTU1fTUVE
TE9XMTZfUENSRUwsCiAgQkZEX1JFTE9DX1NIX0lNTV9NRURISTE2LAogIEJGRF9SRUxPQ19TSF9J
TU1fTUVESEkxNl9QQ1JFTCwKICBCRkRfUkVMT0NfU0hfSU1NX0hJMTYsCiAgQkZEX1JFTE9DX1NI
X0lNTV9ISTE2X1BDUkVMLAogIEJGRF9SRUxPQ19TSF9QVF8xNiwKICBCRkRfUkVMT0NfU0hfVExT
X0dEXzMyLAogIEJGRF9SRUxPQ19TSF9UTFNfTERfMzIsCiAgQkZEX1JFTE9DX1NIX1RMU19MRE9f
MzIsCiAgQkZEX1JFTE9DX1NIX1RMU19JRV8zMiwKICBCRkRfUkVMT0NfU0hfVExTX0xFXzMyLAog
IEJGRF9SRUxPQ19TSF9UTFNfRFRQTU9EMzIsCiAgQkZEX1JFTE9DX1NIX1RMU19EVFBPRkYzMiwK
ICBCRkRfUkVMT0NfU0hfVExTX1RQT0ZGMzIsCgoKCiAgQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JS
QU5DSDksCiAgQkZEX1JFTE9DX1RIVU1CX1BDUkVMX0JSQU5DSDEyLAogIEJGRF9SRUxPQ19USFVN
Ql9QQ1JFTF9CUkFOQ0gyMywKCgoKCgogIEJGRF9SRUxPQ19BUkNfQjIyX1BDUkVMLAoKCgoKICBC
RkRfUkVMT0NfQVJDX0IyNiwKCgoKCiAgQkZEX1JFTE9DX0QxMFZfMTBfUENSRUxfUiwKCgoKCgoK
ICBCRkRfUkVMT0NfRDEwVl8xMF9QQ1JFTF9MLAoKCgogIEJGRF9SRUxPQ19EMTBWXzE4LAoKCgog
IEJGRF9SRUxPQ19EMTBWXzE4X1BDUkVMLAoKCgogIEJGRF9SRUxPQ19EMzBWXzYsCgoKCiAgQkZE
X1JFTE9DX0QzMFZfOV9QQ1JFTCwKCgoKCgogIEJGRF9SRUxPQ19EMzBWXzlfUENSRUxfUiwKCgoK
ICBCRkRfUkVMT0NfRDMwVl8xNSwKCgoKICBCRkRfUkVMT0NfRDMwVl8xNV9QQ1JFTCwKCgoKCgog
IEJGRF9SRUxPQ19EMzBWXzE1X1BDUkVMX1IsCgoKCiAgQkZEX1JFTE9DX0QzMFZfMjEsCgoKCiAg
QkZEX1JFTE9DX0QzMFZfMjFfUENSRUwsCgoKCgoKICBCRkRfUkVMT0NfRDMwVl8yMV9QQ1JFTF9S
LAoKCiAgQkZEX1JFTE9DX0QzMFZfMzIsCgoKICBCRkRfUkVMT0NfRDMwVl8zMl9QQ1JFTCwKCgog
IEJGRF9SRUxPQ19ETFhfSEkxNl9TLAoKCiAgQkZEX1JFTE9DX0RMWF9MTzE2LAoKCiAgQkZEX1JF
TE9DX0RMWF9KTVAyNiwKCgoKICBCRkRfUkVMT0NfTTMyUl8yNCwKCgogIEJGRF9SRUxPQ19NMzJS
XzEwX1BDUkVMLAoKCiAgQkZEX1JFTE9DX00zMlJfMThfUENSRUwsCgoKICBCRkRfUkVMT0NfTTMy
Ul8yNl9QQ1JFTCwKCgoKICBCRkRfUkVMT0NfTTMyUl9ISTE2X1VMTywKCgoKICBCRkRfUkVMT0Nf
TTMyUl9ISTE2X1NMTywKCgogIEJGRF9SRUxPQ19NMzJSX0xPMTYsCgoKCiAgQkZEX1JFTE9DX00z
MlJfU0RBMTYsCgoKICBCRkRfUkVMT0NfVjg1MF85X1BDUkVMLAoKCiAgQkZEX1JFTE9DX1Y4NTBf
MjJfUENSRUwsCgoKICBCRkRfUkVMT0NfVjg1MF9TREFfMTZfMTZfT0ZGU0VULAoKCgogIEJGRF9S
RUxPQ19WODUwX1NEQV8xNV8xNl9PRkZTRVQsCgoKICBCRkRfUkVMT0NfVjg1MF9aREFfMTZfMTZf
T0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUwX1pEQV8xNV8xNl9PRkZTRVQsCgoKCiAgQkZEX1JF
TE9DX1Y4NTBfVERBXzZfOF9PRkZTRVQsCgoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzdfOF9PRkZT
RVQsCgoKICBCRkRfUkVMT0NfVjg1MF9UREFfN183X09GRlNFVCwKCgogIEJGRF9SRUxPQ19WODUw
X1REQV8xNl8xNl9PRkZTRVQsCgoKCiAgQkZEX1JFTE9DX1Y4NTBfVERBXzRfNV9PRkZTRVQsCgoK
ICBCRkRfUkVMT0NfVjg1MF9UREFfNF80X09GRlNFVCwKCgoKICBCRkRfUkVMT0NfVjg1MF9TREFf
MTZfMTZfU1BMSVRfT0ZGU0VULAoKCgogIEJGRF9SRUxPQ19WODUwX1pEQV8xNl8xNl9TUExJVF9P
RkZTRVQsCgoKICBCRkRfUkVMT0NfVjg1MF9DQUxMVF82XzdfT0ZGU0VULAoKCiAgQkZEX1JFTE9D
X1Y4NTBfQ0FMTFRfMTZfMTZfT0ZGU0VULAoKCiAgQkZEX1JFTE9DX1Y4NTBfTE9OR0NBTEwsCgoK
ICBCRkRfUkVMT0NfVjg1MF9MT05HSlVNUCwKCgogIEJGRF9SRUxPQ19WODUwX0FMSUdOLAoKCgog
IEJGRF9SRUxPQ19NTjEwMzAwXzMyX1BDUkVMLAoKCgogIEJGRF9SRUxPQ19NTjEwMzAwXzE2X1BD
UkVMLAoKCgoKICBCRkRfUkVMT0NfVElDMzBfTERQLAoKCgoKICBCRkRfUkVMT0NfVElDNTRYX1BB
UlRMUzcsCgoKCgogIEJGRF9SRUxPQ19USUM1NFhfUEFSVE1TOSwKCgogIEJGRF9SRUxPQ19USUM1
NFhfMjMsCgoKCgogIEJGRF9SRUxPQ19USUM1NFhfMTZfT0ZfMjMsCgoKCgogIEJGRF9SRUxPQ19U
SUM1NFhfTVM3X09GXzIzLAoKCiAgQkZEX1JFTE9DX0ZSMzBfNDgsCgoKCiAgQkZEX1JFTE9DX0ZS
MzBfMjAsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfNl9JTl80LAoKCgogIEJGRF9SRUxPQ19GUjMwXzhf
SU5fOCwKCgoKICBCRkRfUkVMT0NfRlIzMF85X0lOXzgsCgoKCiAgQkZEX1JFTE9DX0ZSMzBfMTBf
SU5fOCwKCgoKICBCRkRfUkVMT0NfRlIzMF85X1BDUkVMLAoKCgogIEJGRF9SRUxPQ19GUjMwXzEy
X1BDUkVMLAoKCiAgQkZEX1JFTE9DX01DT1JFX1BDUkVMX0lNTThCWTQsCiAgQkZEX1JFTE9DX01D
T1JFX1BDUkVMX0lNTTExQlkyLAogIEJGRF9SRUxPQ19NQ09SRV9QQ1JFTF9JTU00QlkyLAogIEJG
RF9SRUxPQ19NQ09SRV9QQ1JFTF8zMiwKICBCRkRfUkVMT0NfTUNPUkVfUENSRUxfSlNSX0lNTTEx
QlkyLAogIEJGRF9SRUxPQ19NQ09SRV9SVkEsCgoKICBCRkRfUkVMT0NfTU1JWF9HRVRBLAogIEJG
RF9SRUxPQ19NTUlYX0dFVEFfMSwKICBCRkRfUkVMT0NfTU1JWF9HRVRBXzIsCiAgQkZEX1JFTE9D
X01NSVhfR0VUQV8zLAoKCiAgQkZEX1JFTE9DX01NSVhfQ0JSQU5DSCwKICBCRkRfUkVMT0NfTU1J
WF9DQlJBTkNIX0osCiAgQkZEX1JFTE9DX01NSVhfQ0JSQU5DSF8xLAogIEJGRF9SRUxPQ19NTUlY
X0NCUkFOQ0hfMiwKICBCRkRfUkVMT0NfTU1JWF9DQlJBTkNIXzMsCgoKICBCRkRfUkVMT0NfTU1J
WF9QVVNISiwKICBCRkRfUkVMT0NfTU1JWF9QVVNISl8xLAogIEJGRF9SRUxPQ19NTUlYX1BVU0hK
XzIsCiAgQkZEX1JFTE9DX01NSVhfUFVTSEpfMywKCgogIEJGRF9SRUxPQ19NTUlYX0pNUCwKICBC
RkRfUkVMT0NfTU1JWF9KTVBfMSwKICBCRkRfUkVMT0NfTU1JWF9KTVBfMiwKICBCRkRfUkVMT0Nf
TU1JWF9KTVBfMywKCgoKICBCRkRfUkVMT0NfTU1JWF9BRERSMTksCgoKICBCRkRfUkVMT0NfTU1J
WF9BRERSMjcsCgoKCiAgQkZEX1JFTE9DX01NSVhfUkVHX09SX0JZVEUsCgoKCiAgQkZEX1JFTE9D
X01NSVhfUkVHLAoKCgogIEJGRF9SRUxPQ19NTUlYX0JBU0VfUExVU19PRkZTRVQsCgoKCiAgQkZE
X1JFTE9DX01NSVhfTE9DQUwsCgoKCiAgQkZEX1JFTE9DX0FWUl83X1BDUkVMLAoKCgogIEJGRF9S
RUxPQ19BVlJfMTNfUENSRUwsCgoKCiAgQkZEX1JFTE9DX0FWUl8xNl9QTSwKCgoKICBCRkRfUkVM
T0NfQVZSX0xPOF9MREksCgoKCiAgQkZEX1JFTE9DX0FWUl9ISThfTERJLAoKCgogIEJGRF9SRUxP
Q19BVlJfSEg4X0xESSwKCgoKICBCRkRfUkVMT0NfQVZSX0xPOF9MRElfTkVHLAoKCgoKICBCRkRf
UkVMT0NfQVZSX0hJOF9MRElfTkVHLAoKCgoKICBCRkRfUkVMT0NfQVZSX0hIOF9MRElfTkVHLAoK
CgogIEJGRF9SRUxPQ19BVlJfTE84X0xESV9QTSwKCgoKICBCRkRfUkVMT0NfQVZSX0hJOF9MRElf
UE0sCgoKCiAgQkZEX1JFTE9DX0FWUl9ISDhfTERJX1BNLAoKCgogIEJGRF9SRUxPQ19BVlJfTE84
X0xESV9QTV9ORUcsCgoKCgogIEJGRF9SRUxPQ19BVlJfSEk4X0xESV9QTV9ORUcsCgoKCgogIEJG
RF9SRUxPQ19BVlJfSEg4X0xESV9QTV9ORUcsCgoKCiAgQkZEX1JFTE9DX0FWUl9DQUxMLAoKCiAg
QkZEX1JFTE9DXzM5MF8xMiwKCgogIEJGRF9SRUxPQ18zOTBfR09UMTIsCgoKICBCRkRfUkVMT0Nf
MzkwX1BMVDMyLAoKCiAgQkZEX1JFTE9DXzM5MF9DT1BZLAoKCiAgQkZEX1JFTE9DXzM5MF9HTE9C
X0RBVCwKCgogIEJGRF9SRUxPQ18zOTBfSk1QX1NMT1QsCgoKICBCRkRfUkVMT0NfMzkwX1JFTEFU
SVZFLAoKCiAgQkZEX1JFTE9DXzM5MF9HT1RQQywKCgogIEJGRF9SRUxPQ18zOTBfR09UMTYsCgoK
ICBCRkRfUkVMT0NfMzkwX1BDMTZEQkwsCgoKICBCRkRfUkVMT0NfMzkwX1BMVDE2REJMLAoKCiAg
QkZEX1JFTE9DXzM5MF9QQzMyREJMLAoKCiAgQkZEX1JFTE9DXzM5MF9QTFQzMkRCTCwKCgogIEJG
RF9SRUxPQ18zOTBfR09UUENEQkwsCgoKICBCRkRfUkVMT0NfMzkwX0dPVDY0LAoKCiAgQkZEX1JF
TE9DXzM5MF9QTFQ2NCwKCgogIEJGRF9SRUxPQ18zOTBfR09URU5ULAoKCiAgQkZEX1JFTE9DXzM5
MF9HT1RPRkY2NCwKCgogIEJGRF9SRUxPQ18zOTBfR09UUExUMTIsCgoKICBCRkRfUkVMT0NfMzkw
X0dPVFBMVDE2LAoKCiAgQkZEX1JFTE9DXzM5MF9HT1RQTFQzMiwKCgogIEJGRF9SRUxPQ18zOTBf
R09UUExUNjQsCgoKICBCRkRfUkVMT0NfMzkwX0dPVFBMVEVOVCwKCgogIEJGRF9SRUxPQ18zOTBf
UExUT0ZGMTYsCgoKICBCRkRfUkVMT0NfMzkwX1BMVE9GRjMyLAoKCiAgQkZEX1JFTE9DXzM5MF9Q
TFRPRkY2NCwKCgogIEJGRF9SRUxPQ18zOTBfVExTX0xPQUQsCiAgQkZEX1JFTE9DXzM5MF9UTFNf
R0RDQUxMLAogIEJGRF9SRUxPQ18zOTBfVExTX0xEQ0FMTCwKICBCRkRfUkVMT0NfMzkwX1RMU19H
RDMyLAogIEJGRF9SRUxPQ18zOTBfVExTX0dENjQsCiAgQkZEX1JFTE9DXzM5MF9UTFNfR09USUUx
MiwKICBCRkRfUkVMT0NfMzkwX1RMU19HT1RJRTMyLAogIEJGRF9SRUxPQ18zOTBfVExTX0dPVElF
NjQsCiAgQkZEX1JFTE9DXzM5MF9UTFNfTERNMzIsCiAgQkZEX1JFTE9DXzM5MF9UTFNfTERNNjQs
CiAgQkZEX1JFTE9DXzM5MF9UTFNfSUUzMiwKICBCRkRfUkVMT0NfMzkwX1RMU19JRTY0LAogIEJG
RF9SRUxPQ18zOTBfVExTX0lFRU5ULAogIEJGRF9SRUxPQ18zOTBfVExTX0xFMzIsCiAgQkZEX1JF
TE9DXzM5MF9UTFNfTEU2NCwKICBCRkRfUkVMT0NfMzkwX1RMU19MRE8zMiwKICBCRkRfUkVMT0Nf
MzkwX1RMU19MRE82NCwKICBCRkRfUkVMT0NfMzkwX1RMU19EVFBNT0QsCiAgQkZEX1JFTE9DXzM5
MF9UTFNfRFRQT0ZGLAogIEJGRF9SRUxPQ18zOTBfVExTX1RQT0ZGLAoKCiAgQkZEX1JFTE9DX0lQ
MktfRlI5LAoKCiAgQkZEX1JFTE9DX0lQMktfQkFOSywKCgogIEJGRF9SRUxPQ19JUDJLX0FERFIx
NkNKUCwKCgogIEJGRF9SRUxPQ19JUDJLX1BBR0UzLAoKCiAgQkZEX1JFTE9DX0lQMktfTE84REFU
QSwKICBCRkRfUkVMT0NfSVAyS19ISThEQVRBLAogIEJGRF9SRUxPQ19JUDJLX0VYOERBVEEsCgoK
ICBCRkRfUkVMT0NfSVAyS19MTzhJTlNOLAogIEJGRF9SRUxPQ19JUDJLX0hJOElOU04sCgoKICBC
RkRfUkVMT0NfSVAyS19QQ19TS0lQLAoKCiAgQkZEX1JFTE9DX0lQMktfVEVYVCwKCgogIEJGRF9S
RUxPQ19JUDJLX0ZSX09GRlNFVCwKCgogIEJGRF9SRUxPQ19WUEU0S01BVEhfREFUQSwKICBCRkRf
UkVMT0NfVlBFNEtNQVRIX0lOU04sCiMgMzE5OCAiLi4vYmZkL2JmZC5oIgogIEJGRF9SRUxPQ19W
VEFCTEVfSU5IRVJJVCwKICBCRkRfUkVMT0NfVlRBQkxFX0VOVFJZLAoKCiAgQkZEX1JFTE9DX0lB
NjRfSU1NMTQsCiAgQkZEX1JFTE9DX0lBNjRfSU1NMjIsCiAgQkZEX1JFTE9DX0lBNjRfSU1NNjQs
CiAgQkZEX1JFTE9DX0lBNjRfRElSMzJNU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElSMzJMU0IsCiAg
QkZEX1JFTE9DX0lBNjRfRElSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfRElSNjRMU0IsCiAgQkZE
X1JFTE9DX0lBNjRfR1BSRUwyMiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0SSwKICBCRkRfUkVM
T0NfSUE2NF9HUFJFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0dQUkVMMzJMU0IsCiAgQkZEX1JF
TE9DX0lBNjRfR1BSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9HUFJFTDY0TFNCLAogIEJGRF9S
RUxPQ19JQTY0X0xUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkY2NEksCiAgQkZEX1JFTE9D
X0lBNjRfUExUT0ZGMjIsCiAgQkZEX1JFTE9DX0lBNjRfUExUT0ZGNjRJLAogIEJGRF9SRUxPQ19J
QTY0X1BMVE9GRjY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BMVE9GRjY0TFNCLAogIEJGRF9SRUxP
Q19JQTY0X0ZQVFI2NEksCiAgQkZEX1JFTE9DX0lBNjRfRlBUUjMyTVNCLAogIEJGRF9SRUxPQ19J
QTY0X0ZQVFIzMkxTQiwKICBCRkRfUkVMT0NfSUE2NF9GUFRSNjRNU0IsCiAgQkZEX1JFTE9DX0lB
NjRfRlBUUjY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMMjFCLAogIEJGRF9SRUxPQ19JQTY0
X1BDUkVMMjFCSSwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIxTSwKICBCRkRfUkVMT0NfSUE2NF9Q
Q1JFTDIxRiwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDIyLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVM
NjBCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRJLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMMzJN
U0IsCiAgQkZEX1JFTE9DX0lBNjRfUENSRUwzMkxTQiwKICBCRkRfUkVMT0NfSUE2NF9QQ1JFTDY0
TVNCLAogIEJGRF9SRUxPQ19JQTY0X1BDUkVMNjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZf
RlBUUjIyLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFI2NEksCiAgQkZEX1JFTE9DX0lBNjRf
TFRPRkZfRlBUUjMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0ZQVFIzMkxTQiwKICBCRkRf
UkVMT0NfSUE2NF9MVE9GRl9GUFRSNjRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZfRlBUUjY0
TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JF
TDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFR1JFTDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X1NF
R1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDMyTVNCLAogIEJGRF9SRUxPQ19JQTY0
X1NFQ1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1NFQ1JFTDY0TVNCLAogIEJGRF9SRUxPQ19J
QTY0X1NFQ1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDMyTVNCLAogIEJGRF9SRUxPQ19J
QTY0X1JFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X1JFTDY0TVNCLAogIEJGRF9SRUxPQ19JQTY0
X1JFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjMyTVNCLAogIEJGRF9SRUxPQ19JQTY0X0xU
VjMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjY0TVNCLAogIEJGRF9SRUxPQ19JQTY0X0xUVjY0
TFNCLAogIEJGRF9SRUxPQ19JQTY0X0lQTFRNU0IsCiAgQkZEX1JFTE9DX0lBNjRfSVBMVExTQiwK
ICBCRkRfUkVMT0NfSUE2NF9DT1BZLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGMjJYLAogIEJGRF9S
RUxPQ19JQTY0X0xEWE1PViwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDE0LAogIEJGRF9SRUxPQ19J
QTY0X1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfVFBSRUw2NEksCiAgQkZEX1JFTE9DX0lBNjRf
VFBSRUw2NE1TQiwKICBCRkRfUkVMT0NfSUE2NF9UUFJFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0
X0xUT0ZGX1RQUkVMMjIsCiAgQkZEX1JFTE9DX0lBNjRfRFRQTU9ENjRNU0IsCiAgQkZEX1JFTE9D
X0lBNjRfRFRQTU9ENjRMU0IsCiAgQkZEX1JFTE9DX0lBNjRfTFRPRkZfRFRQTU9EMjIsCiAgQkZE
X1JFTE9DX0lBNjRfRFRQUkVMMTQsCiAgQkZEX1JFTE9DX0lBNjRfRFRQUkVMMjIsCiAgQkZEX1JF
TE9DX0lBNjRfRFRQUkVMNjRJLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDMyTVNCLAogIEJGRF9S
RUxPQ19JQTY0X0RUUFJFTDMyTFNCLAogIEJGRF9SRUxPQ19JQTY0X0RUUFJFTDY0TVNCLAogIEJG
RF9SRUxPQ19JQTY0X0RUUFJFTDY0TFNCLAogIEJGRF9SRUxPQ19JQTY0X0xUT0ZGX0RUUFJFTDIy
LAoKCgogIEJGRF9SRUxPQ19NNjhIQzExX0hJOCwKCgoKICBCRkRfUkVMT0NfTTY4SEMxMV9MTzgs
CgoKCiAgQkZEX1JFTE9DX002OEhDMTFfM0IsCgoKCgoKCiAgQkZEX1JFTE9DX002OEhDMTFfUkxf
SlVNUCwKCgoKCgogIEJGRF9SRUxPQ19NNjhIQzExX1JMX0dST1VQLAoKCgoKCiAgQkZEX1JFTE9D
X002OEhDMTFfTE8xNiwKCgoKCgogIEJGRF9SRUxPQ19NNjhIQzExX1BBR0UsCgoKCgoKICBCRkRf
UkVMT0NfTTY4SEMxMV8yNCwKCgoKICBCRkRfUkVMT0NfQ1JJU19CRElTUDgsCiAgQkZEX1JFTE9D
X0NSSVNfVU5TSUdORURfNSwKICBCRkRfUkVMT0NfQ1JJU19TSUdORURfNiwKICBCRkRfUkVMT0Nf
Q1JJU19VTlNJR05FRF82LAogIEJGRF9SRUxPQ19DUklTX1VOU0lHTkVEXzQsCgoKICBCRkRfUkVM
T0NfQ1JJU19DT1BZLAogIEJGRF9SRUxPQ19DUklTX0dMT0JfREFULAogIEJGRF9SRUxPQ19DUklT
X0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfQ1JJU19SRUxBVElWRSwKCgogIEJGRF9SRUxPQ19DUklT
XzMyX0dPVCwKCgogIEJGRF9SRUxPQ19DUklTXzE2X0dPVCwKCgogIEJGRF9SRUxPQ19DUklTXzMy
X0dPVFBMVCwKCgogIEJGRF9SRUxPQ19DUklTXzE2X0dPVFBMVCwKCgogIEJGRF9SRUxPQ19DUklT
XzMyX0dPVFJFTCwKCgogIEJGRF9SRUxPQ19DUklTXzMyX1BMVF9HT1RSRUwsCgoKICBCRkRfUkVM
T0NfQ1JJU18zMl9QTFRfUENSRUwsCgoKICBCRkRfUkVMT0NfODYwX0NPUFksCiAgQkZEX1JFTE9D
Xzg2MF9HTE9CX0RBVCwKICBCRkRfUkVMT0NfODYwX0pVTVBfU0xPVCwKICBCRkRfUkVMT0NfODYw
X1JFTEFUSVZFLAogIEJGRF9SRUxPQ184NjBfUEMyNiwKICBCRkRfUkVMT0NfODYwX1BMVDI2LAog
IEJGRF9SRUxPQ184NjBfUEMxNiwKICBCRkRfUkVMT0NfODYwX0xPVzAsCiAgQkZEX1JFTE9DXzg2
MF9TUExJVDAsCiAgQkZEX1JFTE9DXzg2MF9MT1cxLAogIEJGRF9SRUxPQ184NjBfU1BMSVQxLAog
IEJGRF9SRUxPQ184NjBfTE9XMiwKICBCRkRfUkVMT0NfODYwX1NQTElUMiwKICBCRkRfUkVMT0Nf
ODYwX0xPVzMsCiAgQkZEX1JFTE9DXzg2MF9MT0dPVDAsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVDAs
CiAgQkZEX1JFTE9DXzg2MF9MT0dPVDEsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVDEsCiAgQkZEX1JF
TE9DXzg2MF9MT0dPVE9GRjAsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVE9GRjAsCiAgQkZEX1JFTE9D
Xzg2MF9MT0dPVE9GRjEsCiAgQkZEX1JFTE9DXzg2MF9TUEdPVE9GRjEsCiAgQkZEX1JFTE9DXzg2
MF9MT0dPVE9GRjIsCiAgQkZEX1JFTE9DXzg2MF9MT0dPVE9GRjMsCiAgQkZEX1JFTE9DXzg2MF9M
T1BDLAogIEJGRF9SRUxPQ184NjBfSElHSEFESiwKICBCRkRfUkVMT0NfODYwX0hBR09ULAogIEJG
RF9SRUxPQ184NjBfSEFHT1RPRkYsCiAgQkZEX1JFTE9DXzg2MF9IQVBDLAogIEJGRF9SRUxPQ184
NjBfSElHSCwKICBCRkRfUkVMT0NfODYwX0hJR09ULAogIEJGRF9SRUxPQ184NjBfSElHT1RPRkYs
CgoKICBCRkRfUkVMT0NfT1BFTlJJU0NfQUJTXzI2LAogIEJGRF9SRUxPQ19PUEVOUklTQ19SRUxf
MjYsCgoKICBCRkRfUkVMT0NfSDhfRElSMTZBOCwKICBCRkRfUkVMT0NfSDhfRElSMTZSOCwKICBC
RkRfUkVMT0NfSDhfRElSMjRBOCwKICBCRkRfUkVMT0NfSDhfRElSMjRSOCwKICBCRkRfUkVMT0Nf
SDhfRElSMzJBMTYsCgoKICBCRkRfUkVMT0NfWFNUT1JNWTE2X1JFTF8xMiwKICBCRkRfUkVMT0Nf
WFNUT1JNWTE2XzEyLAogIEJGRF9SRUxPQ19YU1RPUk1ZMTZfMjQsCiAgQkZEX1JFTE9DX1hTVE9S
TVkxNl9GUFRSMTYsCgoKICBCRkRfUkVMT0NfVkFYX0dMT0JfREFULAogIEJGRF9SRUxPQ19WQVhf
Sk1QX1NMT1QsCiAgQkZEX1JFTE9DX1ZBWF9SRUxBVElWRSwKCgogIEJGRF9SRUxPQ19NU1A0MzBf
MTBfUENSRUwsCiAgQkZEX1JFTE9DX01TUDQzMF8xNl9QQ1JFTCwKICBCRkRfUkVMT0NfTVNQNDMw
XzE2LAogIEJGRF9SRUxPQ19NU1A0MzBfMTZfUENSRUxfQllURSwKICBCRkRfUkVMT0NfTVNQNDMw
XzE2X0JZVEUsCgoKICBCRkRfUkVMT0NfSVEyMDAwX09GRlNFVF8xNiwKICBCRkRfUkVMT0NfSVEy
MDAwX09GRlNFVF8yMSwKICBCRkRfUkVMT0NfSVEyMDAwX1VISTE2LAogIEJGRF9SRUxPQ19VTlVT
RUQgfTsKdHlwZWRlZiBlbnVtIGJmZF9yZWxvY19jb2RlX3JlYWwgYmZkX3JlbG9jX2NvZGVfcmVh
bF90eXBlOwpyZWxvY19ob3d0b190eXBlICoKYmZkX3JlbG9jX3R5cGVfbG9va3VwIChiZmQgKmFi
ZmQsIGJmZF9yZWxvY19jb2RlX3JlYWxfdHlwZSBjb2RlKTsKCmNvbnN0IGNoYXIgKgpiZmRfZ2V0
X3JlbG9jX2NvZGVfbmFtZSAoYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlIGNvZGUpOwoKCgp0eXBl
ZGVmIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkKewojIDM0NDggIi4uL2JmZC9iZmQuaCIKICBz
dHJ1Y3QgYmZkICp0aGVfYmZkOwoKCgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgogIHN5bXZhbHVl
IHZhbHVlOwojIDM1NDQgIi4uL2JmZC9iZmQuaCIKICBmbGFnd29yZCBmbGFnczsKCgoKCiAgc3Ry
dWN0IHNlYyAqc2VjdGlvbjsKCgogIHVuaW9uCiAgICB7CiAgICAgIHZvaWQgKiBwOwogICAgICBi
ZmRfdm1hIGk7CiAgICB9CiAgdWRhdGE7Cn0KYXN5bWJvbDsKCgoKCmJmZF9ib29sZWFuCmJmZF9p
c19sb2NhbF9sYWJlbCAoYmZkICphYmZkLCBhc3ltYm9sICpzeW0pOwoKYmZkX2Jvb2xlYW4KYmZk
X2lzX2xvY2FsX2xhYmVsX25hbWUgKGJmZCAqYWJmZCwgY29uc3QgY2hhciAqbmFtZSk7CiMgMzU3
NyAiLi4vYmZkL2JmZC5oIgpiZmRfYm9vbGVhbgpiZmRfc2V0X3N5bXRhYiAoYmZkICphYmZkLCBh
c3ltYm9sICoqbG9jYXRpb24sIHVuc2lnbmVkIGludCBjb3VudCk7Cgp2b2lkCmJmZF9wcmludF9z
eW1ib2xfdmFuZGYgKGJmZCAqYWJmZCwgdm9pZCAqIGZpbGUsIGFzeW1ib2wgKnN5bWJvbCk7CgoK
Cgphc3ltYm9sICoKX2JmZF9nZW5lcmljX21ha2VfZW1wdHlfc3ltYm9sIChiZmQgKik7CgoKCgpp
bnQKYmZkX2RlY29kZV9zeW1jbGFzcyAoYXN5bWJvbCAqc3ltYm9sKTsKCmJmZF9ib29sZWFuCmJm
ZF9pc191bmRlZmluZWRfc3ltY2xhc3MgKGludCBzeW1jbGFzcyk7Cgp2b2lkCmJmZF9zeW1ib2xf
aW5mbyAoYXN5bWJvbCAqc3ltYm9sLCBzeW1ib2xfaW5mbyAqcmV0KTsKCmJmZF9ib29sZWFuCmJm
ZF9jb3B5X3ByaXZhdGVfc3ltYm9sX2RhdGEgKGJmZCAqaWJmZCwgYXN5bWJvbCAqaXN5bSwgYmZk
ICpvYmZkLCBhc3ltYm9sICpvc3ltKTsKCgoKCgoKc3RydWN0IGJmZAp7CgogIHVuc2lnbmVkIGlu
dCBpZDsKCgogIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwoKCiAgY29uc3Qgc3RydWN0IGJmZF90YXJn
ZXQgKnh2ZWM7CiMgMzYyNyAiLi4vYmZkL2JmZC5oIgogIHZvaWQgKiBpb3N0cmVhbTsKCgoKICBi
ZmRfYm9vbGVhbiBjYWNoZWFibGU7CgoKCgogIGJmZF9ib29sZWFuIHRhcmdldF9kZWZhdWx0ZWQ7
CgoKCiAgc3RydWN0IGJmZCAqbHJ1X3ByZXYsICpscnVfbmV4dDsKCgoKICB1ZmlsZV9wdHIgd2hl
cmU7CgoKICBiZmRfYm9vbGVhbiBvcGVuZWRfb25jZTsKCgoKICBiZmRfYm9vbGVhbiBtdGltZV9z
ZXQ7CgoKICBsb25nIG10aW1lOwoKCiAgaW50IGlmZDsKCgogIGJmZF9mb3JtYXQgZm9ybWF0OwoK
CiAgZW51bSBiZmRfZGlyZWN0aW9uCiAgICB7CiAgICAgIG5vX2RpcmVjdGlvbiA9IDAsCiAgICAg
IHJlYWRfZGlyZWN0aW9uID0gMSwKICAgICAgd3JpdGVfZGlyZWN0aW9uID0gMiwKICAgICAgYm90
aF9kaXJlY3Rpb24gPSAzCiAgICB9CiAgZGlyZWN0aW9uOwoKCiAgZmxhZ3dvcmQgZmxhZ3M7CgoK
CgogIHVmaWxlX3B0ciBvcmlnaW47CgoKCiAgYmZkX2Jvb2xlYW4gb3V0cHV0X2hhc19iZWd1bjsK
CgogIHN0cnVjdCBiZmRfaGFzaF90YWJsZSBzZWN0aW9uX2h0YWI7CgoKICBzdHJ1Y3Qgc2VjICpz
ZWN0aW9uczsKCgogIHN0cnVjdCBzZWMgKipzZWN0aW9uX3RhaWw7CgoKICB1bnNpZ25lZCBpbnQg
c2VjdGlvbl9jb3VudDsKCgoKICBiZmRfdm1hIHN0YXJ0X2FkZHJlc3M7CgoKICB1bnNpZ25lZCBp
bnQgc3ltY291bnQ7CgoKICBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICoqb3V0c3ltYm9sczsK
CgogIHVuc2lnbmVkIGludCBkeW5zeW1jb3VudDsKCgogIGNvbnN0IHN0cnVjdCBiZmRfYXJjaF9p
bmZvICphcmNoX2luZm87CgoKICB2b2lkICogYXJlbHRfZGF0YTsKICBzdHJ1Y3QgYmZkICpteV9h
cmNoaXZlOwogIHN0cnVjdCBiZmQgKm5leHQ7CiAgc3RydWN0IGJmZCAqYXJjaGl2ZV9oZWFkOwog
IGJmZF9ib29sZWFuIGhhc19hcm1hcDsKCgogIHN0cnVjdCBiZmQgKmxpbmtfbmV4dDsKCgoKICBp
bnQgYXJjaGl2ZV9wYXNzOwoKCiAgdW5pb24KICAgIHsKICAgICAgc3RydWN0IGFvdXRfZGF0YV9z
dHJ1Y3QgKmFvdXRfZGF0YTsKICAgICAgc3RydWN0IGFydGRhdGEgKmFvdXRfYXJfZGF0YTsKICAg
ICAgc3RydWN0IF9vYXN5c19kYXRhICpvYXN5c19vYmpfZGF0YTsKICAgICAgc3RydWN0IF9vYXN5
c19hcl9kYXRhICpvYXN5c19hcl9kYXRhOwogICAgICBzdHJ1Y3QgY29mZl90ZGF0YSAqY29mZl9v
YmpfZGF0YTsKICAgICAgc3RydWN0IHBlX3RkYXRhICpwZV9vYmpfZGF0YTsKICAgICAgc3RydWN0
IHhjb2ZmX3RkYXRhICp4Y29mZl9vYmpfZGF0YTsKICAgICAgc3RydWN0IGVjb2ZmX3RkYXRhICpl
Y29mZl9vYmpfZGF0YTsKICAgICAgc3RydWN0IGllZWVfZGF0YV9zdHJ1Y3QgKmllZWVfZGF0YTsK
ICAgICAgc3RydWN0IGllZWVfYXJfZGF0YV9zdHJ1Y3QgKmllZWVfYXJfZGF0YTsKICAgICAgc3Ry
dWN0IHNyZWNfZGF0YV9zdHJ1Y3QgKnNyZWNfZGF0YTsKICAgICAgc3RydWN0IGloZXhfZGF0YV9z
dHJ1Y3QgKmloZXhfZGF0YTsKICAgICAgc3RydWN0IHRla2hleF9kYXRhX3N0cnVjdCAqdGVraGV4
X2RhdGE7CiAgICAgIHN0cnVjdCBlbGZfb2JqX3RkYXRhICplbGZfb2JqX2RhdGE7CiAgICAgIHN0
cnVjdCBubG1fb2JqX3RkYXRhICpubG1fb2JqX2RhdGE7CiAgICAgIHN0cnVjdCBib3V0X2RhdGFf
c3RydWN0ICpib3V0X2RhdGE7CiAgICAgIHN0cnVjdCBtbW9fZGF0YV9zdHJ1Y3QgKm1tb19kYXRh
OwogICAgICBzdHJ1Y3Qgc3VuX2NvcmVfc3RydWN0ICpzdW5fY29yZV9kYXRhOwogICAgICBzdHJ1
Y3Qgc2NvNV9jb3JlX3N0cnVjdCAqc2NvNV9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCB0cmFkX2Nv
cmVfc3RydWN0ICp0cmFkX2NvcmVfZGF0YTsKICAgICAgc3RydWN0IHNvbV9kYXRhX3N0cnVjdCAq
c29tX2RhdGE7CiAgICAgIHN0cnVjdCBocHV4X2NvcmVfc3RydWN0ICpocHV4X2NvcmVfZGF0YTsK
ICAgICAgc3RydWN0IGhwcGFic2RfY29yZV9zdHJ1Y3QgKmhwcGFic2RfY29yZV9kYXRhOwogICAg
ICBzdHJ1Y3Qgc2dpX2NvcmVfc3RydWN0ICpzZ2lfY29yZV9kYXRhOwogICAgICBzdHJ1Y3QgbHlu
eF9jb3JlX3N0cnVjdCAqbHlueF9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCBvc2ZfY29yZV9zdHJ1
Y3QgKm9zZl9jb3JlX2RhdGE7CiAgICAgIHN0cnVjdCBjaXNjb19jb3JlX3N0cnVjdCAqY2lzY29f
Y29yZV9kYXRhOwogICAgICBzdHJ1Y3QgdmVyc2Fkb3NfZGF0YV9zdHJ1Y3QgKnZlcnNhZG9zX2Rh
dGE7CiAgICAgIHN0cnVjdCBuZXRic2RfY29yZV9zdHJ1Y3QgKm5ldGJzZF9jb3JlX2RhdGE7CiAg
ICAgIHN0cnVjdCBtYWNoX29fZGF0YV9zdHJ1Y3QgKm1hY2hfb19kYXRhOwogICAgICBzdHJ1Y3Qg
bWFjaF9vX2ZhdF9kYXRhX3N0cnVjdCAqbWFjaF9vX2ZhdF9kYXRhOwogICAgICBzdHJ1Y3QgYmZk
X3BlZl9kYXRhX3N0cnVjdCAqcGVmX2RhdGE7CiAgICAgIHN0cnVjdCBiZmRfcGVmX3hsaWJfZGF0
YV9zdHJ1Y3QgKnBlZl94bGliX2RhdGE7CiAgICAgIHN0cnVjdCBiZmRfc3ltX2RhdGFfc3RydWN0
ICpzeW1fZGF0YTsKICAgICAgdm9pZCAqIGFueTsKICAgIH0KICB0ZGF0YTsKCgogIHZvaWQgKiB1
c3JkYXRhOwoKCgoKICB2b2lkICogbWVtb3J5Owp9OwoKdHlwZWRlZiBlbnVtIGJmZF9lcnJvcgp7
CiAgYmZkX2Vycm9yX25vX2Vycm9yID0gMCwKICBiZmRfZXJyb3Jfc3lzdGVtX2NhbGwsCiAgYmZk
X2Vycm9yX2ludmFsaWRfdGFyZ2V0LAogIGJmZF9lcnJvcl93cm9uZ19mb3JtYXQsCiAgYmZkX2Vy
cm9yX3dyb25nX29iamVjdF9mb3JtYXQsCiAgYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uLAog
IGJmZF9lcnJvcl9ub19tZW1vcnksCiAgYmZkX2Vycm9yX25vX3N5bWJvbHMsCiAgYmZkX2Vycm9y
X25vX2FybWFwLAogIGJmZF9lcnJvcl9ub19tb3JlX2FyY2hpdmVkX2ZpbGVzLAogIGJmZF9lcnJv
cl9tYWxmb3JtZWRfYXJjaGl2ZSwKICBiZmRfZXJyb3JfZmlsZV9ub3RfcmVjb2duaXplZCwKICBi
ZmRfZXJyb3JfZmlsZV9hbWJpZ3VvdXNseV9yZWNvZ25pemVkLAogIGJmZF9lcnJvcl9ub19jb250
ZW50cywKICBiZmRfZXJyb3Jfbm9ucmVwcmVzZW50YWJsZV9zZWN0aW9uLAogIGJmZF9lcnJvcl9u
b19kZWJ1Z19zZWN0aW9uLAogIGJmZF9lcnJvcl9iYWRfdmFsdWUsCiAgYmZkX2Vycm9yX2ZpbGVf
dHJ1bmNhdGVkLAogIGJmZF9lcnJvcl9maWxlX3Rvb19iaWcsCiAgYmZkX2Vycm9yX2ludmFsaWRf
ZXJyb3JfY29kZQp9CmJmZF9lcnJvcl90eXBlOwoKYmZkX2Vycm9yX3R5cGUKYmZkX2dldF9lcnJv
ciAodm9pZCk7Cgp2b2lkCmJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl90eXBlIGVycm9yX3RhZyk7
Cgpjb25zdCBjaGFyICoKYmZkX2Vycm1zZyAoYmZkX2Vycm9yX3R5cGUgZXJyb3JfdGFnKTsKCnZv
aWQKYmZkX3BlcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSk7Cgp0eXBlZGVmIHZvaWQgKCpiZmRf
ZXJyb3JfaGFuZGxlcl90eXBlKSAoY29uc3QgY2hhciAqLCAuLi4pOwoKYmZkX2Vycm9yX2hhbmRs
ZXJfdHlwZQpiZmRfc2V0X2Vycm9yX2hhbmRsZXIgKGJmZF9lcnJvcl9oYW5kbGVyX3R5cGUpOwoK
dm9pZApiZmRfc2V0X2Vycm9yX3Byb2dyYW1fbmFtZSAoY29uc3QgY2hhciAqKTsKCmJmZF9lcnJv
cl9oYW5kbGVyX3R5cGUKYmZkX2dldF9lcnJvcl9oYW5kbGVyICh2b2lkKTsKCmNvbnN0IGNoYXIg
KgpiZmRfYXJjaGl2ZV9maWxlbmFtZSAoYmZkICopOwoKbG9uZwpiZmRfZ2V0X3JlbG9jX3VwcGVy
X2JvdW5kIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0KTsKCmxvbmcKYmZkX2Nhbm9uaWNhbGl6
ZV9yZWxvYyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBhcmVsZW50ICoqbG9jLCBhc3ltYm9s
ICoqc3ltcyk7CgoKCgp2b2lkCmJmZF9zZXRfcmVsb2MgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNl
YywgYXJlbGVudCAqKnJlbCwgdW5zaWduZWQgaW50IGNvdW50KTsKCmJmZF9ib29sZWFuCmJmZF9z
ZXRfZmlsZV9mbGFncyAoYmZkICphYmZkLCBmbGFnd29yZCBmbGFncyk7CgppbnQKYmZkX2dldF9h
cmNoX3NpemUgKGJmZCAqYWJmZCk7CgppbnQKYmZkX2dldF9zaWduX2V4dGVuZF92bWEgKGJmZCAq
YWJmZCk7CgpiZmRfYm9vbGVhbgpiZmRfc2V0X3N0YXJ0X2FkZHJlc3MgKGJmZCAqYWJmZCwgYmZk
X3ZtYSB2bWEpOwoKdW5zaWduZWQgaW50CmJmZF9nZXRfZ3Bfc2l6ZSAoYmZkICphYmZkKTsKCnZv
aWQKYmZkX3NldF9ncF9zaXplIChiZmQgKmFiZmQsIHVuc2lnbmVkIGludCBpKTsKCmJmZF92bWEK
YmZkX3NjYW5fdm1hIChjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKiplbmQsIGludCBi
YXNlKTsKCmJmZF9ib29sZWFuCmJmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEgKGJmZCAqaWJmZCwg
YmZkICpvYmZkKTsKCgoKCmJmZF9ib29sZWFuCmJmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhIChi
ZmQgKmliZmQsIGJmZCAqb2JmZCk7CgoKCgpiZmRfYm9vbGVhbgpiZmRfc2V0X3ByaXZhdGVfZmxh
Z3MgKGJmZCAqYWJmZCwgZmxhZ3dvcmQgZmxhZ3MpOwojIDM5NDcgIi4uL2JmZC9iZmQuaCIKZXh0
ZXJuIGJmZF9ieXRlICpiZmRfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzCiAgICAgICAo
YmZkICosIHN0cnVjdCBiZmRfbGlua19pbmZvICosIHN0cnVjdCBiZmRfbGlua19vcmRlciAqLCBi
ZmRfYnl0ZSAqLCBiZmRfYm9vbGVhbiwgYXN5bWJvbCAqKik7CgoKCmJmZF9ib29sZWFuCmJmZF9h
bHRfbWFjaF9jb2RlIChiZmQgKmFiZmQsIGludCBhbHRlcm5hdGl2ZSk7CgpzdHJ1Y3QgYmZkX3By
ZXNlcnZlCnsKICB2b2lkICogbWFya2VyOwogIHZvaWQgKiB0ZGF0YTsKICBmbGFnd29yZCBmbGFn
czsKICBjb25zdCBzdHJ1Y3QgYmZkX2FyY2hfaW5mbyAqYXJjaF9pbmZvOwogIHN0cnVjdCBzZWMg
KnNlY3Rpb25zOwogIHN0cnVjdCBzZWMgKipzZWN0aW9uX3RhaWw7CiAgdW5zaWduZWQgaW50IHNl
Y3Rpb25fY291bnQ7CiAgc3RydWN0IGJmZF9oYXNoX3RhYmxlIHNlY3Rpb25faHRhYjsKfTsKCmJm
ZF9ib29sZWFuCmJmZF9wcmVzZXJ2ZV9zYXZlIChiZmQgKiwgc3RydWN0IGJmZF9wcmVzZXJ2ZSAq
KTsKCnZvaWQKYmZkX3ByZXNlcnZlX3Jlc3RvcmUgKGJmZCAqLCBzdHJ1Y3QgYmZkX3ByZXNlcnZl
ICopOwoKdm9pZApiZmRfcHJlc2VydmVfZmluaXNoIChiZmQgKiwgc3RydWN0IGJmZF9wcmVzZXJ2
ZSAqKTsKCgpzeW1pbmRleApiZmRfZ2V0X25leHRfbWFwZW50IChiZmQgKmFiZmQsIHN5bWluZGV4
IHByZXZpb3VzLCBjYXJzeW0gKipzeW0pOwoKYmZkX2Jvb2xlYW4KYmZkX3NldF9hcmNoaXZlX2hl
YWQgKGJmZCAqb3V0cHV0LCBiZmQgKm5ld19oZWFkKTsKCmJmZCAqCmJmZF9vcGVucl9uZXh0X2Fy
Y2hpdmVkX2ZpbGUgKGJmZCAqYXJjaGl2ZSwgYmZkICpwcmV2aW91cyk7CgoKY29uc3QgY2hhciAq
CmJmZF9jb3JlX2ZpbGVfZmFpbGluZ19jb21tYW5kIChiZmQgKmFiZmQpOwoKaW50CmJmZF9jb3Jl
X2ZpbGVfZmFpbGluZ19zaWduYWwgKGJmZCAqYWJmZCk7CgpiZmRfYm9vbGVhbgpjb3JlX2ZpbGVf
bWF0Y2hlc19leGVjdXRhYmxlX3AgKGJmZCAqY29yZV9iZmQsIGJmZCAqZXhlY19iZmQpOwojIDQw
MTggIi4uL2JmZC9iZmQuaCIKZW51bSBiZmRfZmxhdm91cgp7CiAgYmZkX3RhcmdldF91bmtub3du
X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9hb3V0X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9jb2ZmX2Zs
YXZvdXIsCiAgYmZkX3RhcmdldF9lY29mZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfeGNvZmZfZmxh
dm91ciwKICBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyLAogIGJmZF90YXJnZXRfaWVlZV9mbGF2b3Vy
LAogIGJmZF90YXJnZXRfbmxtX2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9vYXN5c19mbGF2b3VyLAog
IGJmZF90YXJnZXRfdGVraGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zcmVjX2ZsYXZvdXIsCiAg
YmZkX3RhcmdldF9paGV4X2ZsYXZvdXIsCiAgYmZkX3RhcmdldF9zb21fZmxhdm91ciwKICBiZmRf
dGFyZ2V0X29zOWtfZmxhdm91ciwKICBiZmRfdGFyZ2V0X3ZlcnNhZG9zX2ZsYXZvdXIsCiAgYmZk
X3RhcmdldF9tc2Rvc19mbGF2b3VyLAogIGJmZF90YXJnZXRfb3ZheF9mbGF2b3VyLAogIGJmZF90
YXJnZXRfZXZheF9mbGF2b3VyLAogIGJmZF90YXJnZXRfbW1vX2ZsYXZvdXIsCiAgYmZkX3Rhcmdl
dF9tYWNoX29fZmxhdm91ciwKICBiZmRfdGFyZ2V0X3BlZl9mbGF2b3VyLAogIGJmZF90YXJnZXRf
cGVmX3hsaWJfZmxhdm91ciwKICBiZmRfdGFyZ2V0X3N5bV9mbGF2b3VyCn07CgplbnVtIGJmZF9l
bmRpYW4geyBCRkRfRU5ESUFOX0JJRywgQkZEX0VORElBTl9MSVRUTEUsIEJGRF9FTkRJQU5fVU5L
Tk9XTiB9OwoKCnR5cGVkZWYgc3RydWN0IGJmZF9saW5rX2luZm8gX2JmZF9saW5rX2luZm87Cgp0
eXBlZGVmIHN0cnVjdCBiZmRfdGFyZ2V0CnsKCiAgY2hhciAqbmFtZTsKCgoKICBlbnVtIGJmZF9m
bGF2b3VyIGZsYXZvdXI7CgoKICBlbnVtIGJmZF9lbmRpYW4gYnl0ZW9yZGVyOwoKCiAgZW51bSBi
ZmRfZW5kaWFuIGhlYWRlcl9ieXRlb3JkZXI7CgoKCiAgZmxhZ3dvcmQgb2JqZWN0X2ZsYWdzOwoK
CgogIGZsYWd3b3JkIHNlY3Rpb25fZmxhZ3M7CgoKCiAgY2hhciBzeW1ib2xfbGVhZGluZ19jaGFy
OwoKCiAgY2hhciBhcl9wYWRfY2hhcjsKCgogIHVuc2lnbmVkIHNob3J0IGFyX21heF9uYW1lbGVu
OwoKCgoKICBiZmRfdm1hICgqYmZkX2dldHg2NCkgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9z
aWduZWRfdm1hICgqYmZkX2dldHhfc2lnbmVkXzY0KSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9p
ZCAoKmJmZF9wdXR4NjQpIChiZmRfdm1hLCBiZmRfYnl0ZSAqKTsKICBiZmRfdm1hICgqYmZkX2dl
dHgzMikgKGNvbnN0IGJmZF9ieXRlICopOwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2dldHhfc2ln
bmVkXzMyKSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9wdXR4MzIpIChiZmRfdm1h
LCBiZmRfYnl0ZSAqKTsKICBiZmRfdm1hICgqYmZkX2dldHgxNikgKGNvbnN0IGJmZF9ieXRlICop
OwogIGJmZF9zaWduZWRfdm1hICgqYmZkX2dldHhfc2lnbmVkXzE2KSAoY29uc3QgYmZkX2J5dGUg
Kik7CiAgdm9pZCAoKmJmZF9wdXR4MTYpIChiZmRfdm1hLCBiZmRfYnl0ZSAqKTsKCgogIGJmZF92
bWEgKCpiZmRfaF9nZXR4NjQpIChjb25zdCBiZmRfYnl0ZSAqKTsKICBiZmRfc2lnbmVkX3ZtYSAo
KmJmZF9oX2dldHhfc2lnbmVkXzY0KSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9o
X3B1dHg2NCkgKGJmZF92bWEsIGJmZF9ieXRlICopOwogIGJmZF92bWEgKCpiZmRfaF9nZXR4MzIp
IChjb25zdCBiZmRfYnl0ZSAqKTsKICBiZmRfc2lnbmVkX3ZtYSAoKmJmZF9oX2dldHhfc2lnbmVk
XzMyKSAoY29uc3QgYmZkX2J5dGUgKik7CiAgdm9pZCAoKmJmZF9oX3B1dHgzMikgKGJmZF92bWEs
IGJmZF9ieXRlICopOwogIGJmZF92bWEgKCpiZmRfaF9nZXR4MTYpIChjb25zdCBiZmRfYnl0ZSAq
KTsKICBiZmRfc2lnbmVkX3ZtYSAoKmJmZF9oX2dldHhfc2lnbmVkXzE2KSAoY29uc3QgYmZkX2J5
dGUgKik7CiAgdm9pZCAoKmJmZF9oX3B1dHgxNikgKGJmZF92bWEsIGJmZF9ieXRlICopOwoKCgoK
CiAgY29uc3Qgc3RydWN0IGJmZF90YXJnZXQgKigqX2JmZF9jaGVja19mb3JtYXRbYmZkX3R5cGVf
ZW5kXSkgKGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9zZXRfZm9ybWF0W2JmZF90eXBl
X2VuZF0pIChiZmQgKik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfd3JpdGVfY29udGVudHNbYmZk
X3R5cGVfZW5kXSkgKGJmZCAqKTsKIyA0MTI5ICIuLi9iZmQvYmZkLmgiCiAgYmZkX2Jvb2xlYW4g
KCpfY2xvc2VfYW5kX2NsZWFudXApIChiZmQgKik7CgogIGJmZF9ib29sZWFuICgqX2JmZF9mcmVl
X2NhY2hlZF9pbmZvKSAoYmZkICopOwoKICBiZmRfYm9vbGVhbiAoKl9uZXdfc2VjdGlvbl9ob29r
KSAoYmZkICosIHNlY19wdHIpOwoKICBiZmRfYm9vbGVhbiAoKl9iZmRfZ2V0X3NlY3Rpb25fY29u
dGVudHMpCiAgICAoYmZkICosIHNlY19wdHIsIHZvaWQgKiwgZmlsZV9wdHIsIGJmZF9zaXplX3R5
cGUpOwogIGJmZF9ib29sZWFuICgqX2JmZF9nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cp
CiAgICAoYmZkICosIHNlY19wdHIsIGJmZF93aW5kb3cgKiwgZmlsZV9wdHIsIGJmZF9zaXplX3R5
cGUpOwojIDQxNTAgIi4uL2JmZC9iZmQuaCIKICBiZmRfYm9vbGVhbiAoKl9iZmRfY29weV9wcml2
YXRlX2JmZF9kYXRhKSAoYmZkICosIGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9tZXJn
ZV9wcml2YXRlX2JmZF9kYXRhKSAoYmZkICosIGJmZCAqKTsKCgogIGJmZF9ib29sZWFuICgqX2Jm
ZF9jb3B5X3ByaXZhdGVfc2VjdGlvbl9kYXRhKQogICAgKGJmZCAqLCBzZWNfcHRyLCBiZmQgKiwg
c2VjX3B0cik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfY29weV9wcml2YXRlX3N5bWJvbF9kYXRh
KQogICAgKGJmZCAqLCBhc3ltYm9sICosIGJmZCAqLCBhc3ltYm9sICopOwoKICBiZmRfYm9vbGVh
biAoKl9iZmRfc2V0X3ByaXZhdGVfZmxhZ3MpIChiZmQgKiwgZmxhZ3dvcmQpOwoKCiAgYmZkX2Jv
b2xlYW4gKCpfYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpIChiZmQgKiwgdm9pZCAqKTsKCgoK
CgoKICBjaGFyICogKCpfY29yZV9maWxlX2ZhaWxpbmdfY29tbWFuZCkgKGJmZCAqKTsKICBpbnQg
KCpfY29yZV9maWxlX2ZhaWxpbmdfc2lnbmFsKSAoYmZkICopOwogIGJmZF9ib29sZWFuICgqX2Nv
cmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGVfcCkgKGJmZCAqLCBiZmQgKik7CiMgNDE4OSAiLi4v
YmZkL2JmZC5oIgogIGJmZF9ib29sZWFuICgqX2JmZF9zbHVycF9hcm1hcCkgKGJmZCAqKTsKICBi
ZmRfYm9vbGVhbiAoKl9iZmRfc2x1cnBfZXh0ZW5kZWRfbmFtZV90YWJsZSkgKGJmZCAqKTsKICBi
ZmRfYm9vbGVhbiAoKl9iZmRfY29uc3RydWN0X2V4dGVuZGVkX25hbWVfdGFibGUpCiAgICAoYmZk
ICosIGNoYXIgKiosIGJmZF9zaXplX3R5cGUgKiwgY29uc3QgY2hhciAqKik7CiAgdm9pZCAoKl9i
ZmRfdHJ1bmNhdGVfYXJuYW1lKSAoYmZkICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKICBiZmRf
Ym9vbGVhbiAoKndyaXRlX2FybWFwKQogICAgKGJmZCAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBv
cmwgKiwgdW5zaWduZWQgaW50LCBpbnQpOwogIHZvaWQgKiAoKl9iZmRfcmVhZF9hcl9oZHJfZm4p
IChiZmQgKik7CiAgYmZkICogKCpvcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUpIChiZmQgKiwgYmZk
ICopOwoKICBiZmQgKiAoKl9iZmRfZ2V0X2VsdF9hdF9pbmRleCkgKGJmZCAqLCBzeW1pbmRleCk7
CiAgaW50ICgqX2JmZF9zdGF0X2FyY2hfZWx0KSAoYmZkICosIHN0cnVjdCBzdGF0ICopOwogIGJm
ZF9ib29sZWFuICgqX2JmZF91cGRhdGVfYXJtYXBfdGltZXN0YW1wKSAoYmZkICopOwojIDQyMTYg
Ii4uL2JmZC9iZmQuaCIKICBsb25nICgqX2JmZF9nZXRfc3ltdGFiX3VwcGVyX2JvdW5kKSAoYmZk
ICopOwogIGxvbmcgKCpfYmZkX2Nhbm9uaWNhbGl6ZV9zeW10YWIpIChiZmQgKiwgc3RydWN0IHN5
bWJvbF9jYWNoZV9lbnRyeSAqKik7CgogIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKgogICAg
ICAgICAgICAgICgqX2JmZF9tYWtlX2VtcHR5X3N5bWJvbCkgKGJmZCAqKTsKICB2b2lkICgqX2Jm
ZF9wcmludF9zeW1ib2wpCiAgICAoYmZkICosIHZvaWQgKiwgc3RydWN0IHN5bWJvbF9jYWNoZV9l
bnRyeSAqLCBiZmRfcHJpbnRfc3ltYm9sX3R5cGUpOwoKICB2b2lkICgqX2JmZF9nZXRfc3ltYm9s
X2luZm8pCiAgICAoYmZkICosIHN0cnVjdCBzeW1ib2xfY2FjaGVfZW50cnkgKiwgc3ltYm9sX2lu
Zm8gKik7CgogIGJmZF9ib29sZWFuICgqX2JmZF9pc19sb2NhbF9sYWJlbF9uYW1lKSAoYmZkICos
IGNvbnN0IGNoYXIgKik7CgogIGFsZW50ICogKCpfZ2V0X2xpbmVubykgKGJmZCAqLCBzdHJ1Y3Qg
c3ltYm9sX2NhY2hlX2VudHJ5ICopOwogIGJmZF9ib29sZWFuICgqX2JmZF9maW5kX25lYXJlc3Rf
bGluZSkKICAgIChiZmQgKiwgc3RydWN0IHNlYyAqLCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5
ICoqLCBiZmRfdm1hLCBjb25zdCBjaGFyICoqLCBjb25zdCBjaGFyICoqLCB1bnNpZ25lZCBpbnQg
Kik7CgoKCgogIGFzeW1ib2wgKiAoKl9iZmRfbWFrZV9kZWJ1Z19zeW1ib2wpCiAgICAoYmZkICos
IHZvaWQgKiwgdW5zaWduZWQgbG9uZyBzaXplKTsKCgogIGxvbmcgKCpfcmVhZF9taW5pc3ltYm9s
cykKICAgIChiZmQgKiwgYmZkX2Jvb2xlYW4sIHZvaWQgKiAqLCB1bnNpZ25lZCBpbnQgKik7CgoK
ICBhc3ltYm9sICogKCpfbWluaXN5bWJvbF90b19zeW1ib2wpCiAgICAoYmZkICosIGJmZF9ib29s
ZWFuLCBjb25zdCB2b2lkICosIGFzeW1ib2wgKik7CgoKCgoKCiAgbG9uZyAoKl9nZXRfcmVsb2Nf
dXBwZXJfYm91bmQpIChiZmQgKiwgc2VjX3B0cik7CiAgbG9uZyAoKl9iZmRfY2Fub25pY2FsaXpl
X3JlbG9jKQogICAgKGJmZCAqLCBzZWNfcHRyLCBhcmVsZW50ICoqLCBzdHJ1Y3Qgc3ltYm9sX2Nh
Y2hlX2VudHJ5ICoqKTsKCiAgcmVsb2NfaG93dG9fdHlwZSAqCiAgICAgICAgICAgICAgKCpyZWxv
Y190eXBlX2xvb2t1cCkgKGJmZCAqLCBiZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUpOwoKCgoKCiAg
YmZkX2Jvb2xlYW4gKCpfYmZkX3NldF9hcmNoX21hY2gpCiAgICAoYmZkICosIGVudW0gYmZkX2Fy
Y2hpdGVjdHVyZSwgdW5zaWduZWQgbG9uZyk7CiAgYmZkX2Jvb2xlYW4gKCpfYmZkX3NldF9zZWN0
aW9uX2NvbnRlbnRzKQogICAgKGJmZCAqLCBzZWNfcHRyLCB2b2lkICosIGZpbGVfcHRyLCBiZmRf
c2l6ZV90eXBlKTsKIyA0MjgyICIuLi9iZmQvYmZkLmgiCiAgaW50ICgqX2JmZF9zaXplb2ZfaGVh
ZGVycykgKGJmZCAqLCBiZmRfYm9vbGVhbik7CiAgYmZkX2J5dGUgKiAoKl9iZmRfZ2V0X3JlbG9j
YXRlZF9zZWN0aW9uX2NvbnRlbnRzKQogICAgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAq
LCBzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIgKiwgYmZkX2J5dGUgKiwgYmZkX2Jvb2xlYW4sIHN0cnVj
dCBzeW1ib2xfY2FjaGVfZW50cnkgKiopOwoKCiAgYmZkX2Jvb2xlYW4gKCpfYmZkX3JlbGF4X3Nl
Y3Rpb24pCiAgICAoYmZkICosIHN0cnVjdCBzZWMgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKiwg
YmZkX2Jvb2xlYW4gKik7CgoKCiAgc3RydWN0IGJmZF9saW5rX2hhc2hfdGFibGUgKgogICAgICAg
ICAgICAgICgqX2JmZF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKSAoYmZkICopOwoKCiAgdm9pZCAo
Kl9iZmRfbGlua19oYXNoX3RhYmxlX2ZyZWUpCiAgICAoc3RydWN0IGJmZF9saW5rX2hhc2hfdGFi
bGUgKik7CgoKICBiZmRfYm9vbGVhbiAoKl9iZmRfbGlua19hZGRfc3ltYm9scykKICAgIChiZmQg
Kiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CgoKICB2b2lkICgqX2JmZF9saW5rX2p1c3Rfc3lt
cykKICAgIChhc2VjdGlvbiAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgoKICBiZmRfYm9v
bGVhbiAoKl9iZmRfZmluYWxfbGluaykgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsK
CgogIGJmZF9ib29sZWFuICgqX2JmZF9saW5rX3NwbGl0X3NlY3Rpb24pIChiZmQgKiwgc3RydWN0
IHNlYyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9nY19zZWN0aW9ucykgKGJmZCAqLCBzdHJ1
Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2JmZF9tZXJnZV9zZWN0aW9u
cykgKGJmZCAqLCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKCgogIGJmZF9ib29sZWFuICgqX2Jm
ZF9kaXNjYXJkX2dyb3VwKSAoYmZkICosIHN0cnVjdCBzZWMgKik7CiMgNDMzMCAiLi4vYmZkL2Jm
ZC5oIgogIGxvbmcgKCpfYmZkX2dldF9keW5hbWljX3N5bXRhYl91cHBlcl9ib3VuZCkgKGJmZCAq
KTsKCiAgbG9uZyAoKl9iZmRfY2Fub25pY2FsaXplX2R5bmFtaWNfc3ltdGFiKQogICAgKGJmZCAq
LCBzdHJ1Y3Qgc3ltYm9sX2NhY2hlX2VudHJ5ICoqKTsKCiAgbG9uZyAoKl9iZmRfZ2V0X2R5bmFt
aWNfcmVsb2NfdXBwZXJfYm91bmQpIChiZmQgKik7CgogIGxvbmcgKCpfYmZkX2Nhbm9uaWNhbGl6
ZV9keW5hbWljX3JlbG9jKQogICAgKGJmZCAqLCBhcmVsZW50ICoqLCBzdHJ1Y3Qgc3ltYm9sX2Nh
Y2hlX2VudHJ5ICoqKTsKCgogIGNvbnN0IHN0cnVjdCBiZmRfdGFyZ2V0ICogYWx0ZXJuYXRpdmVf
dGFyZ2V0OwoKCgogIHZvaWQgKiBiYWNrZW5kX2RhdGE7Cgp9IGJmZF90YXJnZXQ7CgpiZmRfYm9v
bGVhbgpiZmRfc2V0X2RlZmF1bHRfdGFyZ2V0IChjb25zdCBjaGFyICpuYW1lKTsKCmNvbnN0IGJm
ZF90YXJnZXQgKgpiZmRfZmluZF90YXJnZXQgKGNvbnN0IGNoYXIgKnRhcmdldF9uYW1lLCBiZmQg
KmFiZmQpOwoKY29uc3QgY2hhciAqKgpiZmRfdGFyZ2V0X2xpc3QgKHZvaWQpOwoKY29uc3QgYmZk
X3RhcmdldCAqCmJmZF9zZWFyY2hfZm9yX3RhcmdldCAoaW50ICgqIHNlYXJjaF9mdW5jKSAoY29u
c3QgYmZkX3RhcmdldCAqLCB2b2lkICopLCB2b2lkICopOwoKCgoKYmZkX2Jvb2xlYW4KYmZkX2No
ZWNrX2Zvcm1hdCAoYmZkICphYmZkLCBiZmRfZm9ybWF0IGZvcm1hdCk7CgpiZmRfYm9vbGVhbgpi
ZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMgKGJmZCAqYWJmZCwgYmZkX2Zvcm1hdCBmb3JtYXQsIGNo
YXIgKioqbWF0Y2hpbmcpOwoKCmJmZF9ib29sZWFuCmJmZF9zZXRfZm9ybWF0IChiZmQgKmFiZmQs
IGJmZF9mb3JtYXQgZm9ybWF0KTsKCmNvbnN0IGNoYXIgKgpiZmRfZm9ybWF0X3N0cmluZyAoYmZk
X2Zvcm1hdCBmb3JtYXQpOwoKCmJmZF9ib29sZWFuCmJmZF9saW5rX3NwbGl0X3NlY3Rpb24gKGJm
ZCAqYWJmZCwgYXNlY3Rpb24gKnNlYyk7CgoKCgoKYmZkX2J5dGUgKgpiZmRfc2ltcGxlX2dldF9y
ZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjLCBiZmRf
Ynl0ZSAqb3V0YnVmKTsKIyA0MCAicmVhZGVsZi5jIiAyCgojIDEgIi4uL2luY2x1ZGUvZWxmL2Nv
bW1vbi5oIiAxCiMgNDIgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2V4dGVybmFs
LmgiIDEKIyA0MCAiLi4vaW5jbHVkZS9lbGYvZXh0ZXJuYWwuaCIKdHlwZWRlZiBzdHJ1Y3Qgewog
IHVuc2lnbmVkIGNoYXIgZV9pZGVudFsxNl07CiAgdW5zaWduZWQgY2hhciBlX3R5cGVbMl07CiAg
dW5zaWduZWQgY2hhciBlX21hY2hpbmVbMl07CiAgdW5zaWduZWQgY2hhciBlX3ZlcnNpb25bNF07
CiAgdW5zaWduZWQgY2hhciBlX2VudHJ5WzRdOwogIHVuc2lnbmVkIGNoYXIgZV9waG9mZls0XTsK
ICB1bnNpZ25lZCBjaGFyIGVfc2hvZmZbNF07CiAgdW5zaWduZWQgY2hhciBlX2ZsYWdzWzRdOwog
IHVuc2lnbmVkIGNoYXIgZV9laHNpemVbMl07CiAgdW5zaWduZWQgY2hhciBlX3BoZW50c2l6ZVsy
XTsKICB1bnNpZ25lZCBjaGFyIGVfcGhudW1bMl07CiAgdW5zaWduZWQgY2hhciBlX3NoZW50c2l6
ZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hudW1bMl07CiAgdW5zaWduZWQgY2hhciBlX3Noc3Ry
bmR4WzJdOwp9IEVsZjMyX0V4dGVybmFsX0VoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWdu
ZWQgY2hhciBlX2lkZW50WzE2XTsKICB1bnNpZ25lZCBjaGFyIGVfdHlwZVsyXTsKICB1bnNpZ25l
ZCBjaGFyIGVfbWFjaGluZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfdmVyc2lvbls0XTsKICB1bnNp
Z25lZCBjaGFyIGVfZW50cnlbOF07CiAgdW5zaWduZWQgY2hhciBlX3Bob2ZmWzhdOwogIHVuc2ln
bmVkIGNoYXIgZV9zaG9mZls4XTsKICB1bnNpZ25lZCBjaGFyIGVfZmxhZ3NbNF07CiAgdW5zaWdu
ZWQgY2hhciBlX2Voc2l6ZVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfcGhlbnRzaXplWzJdOwogIHVu
c2lnbmVkIGNoYXIgZV9waG51bVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hlbnRzaXplWzJdOwog
IHVuc2lnbmVkIGNoYXIgZV9zaG51bVsyXTsKICB1bnNpZ25lZCBjaGFyIGVfc2hzdHJuZHhbMl07
Cn0gRWxmNjRfRXh0ZXJuYWxfRWhkcjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNo
YXIgcF90eXBlWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hh
ciBwX3ZhZGRyWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9wYWRkcls0XTsKICB1bnNpZ25lZCBjaGFy
IHBfZmlsZXN6WzRdOwogIHVuc2lnbmVkIGNoYXIgcF9tZW1zels0XTsKICB1bnNpZ25lZCBjaGFy
IHBfZmxhZ3NbNF07CiAgdW5zaWduZWQgY2hhciBwX2FsaWduWzRdOwp9IEVsZjMyX0V4dGVybmFs
X1BoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBwX3R5cGVbNF07CiAgdW5z
aWduZWQgY2hhciBwX2ZsYWdzWzRdOwogIHVuc2lnbmVkIGNoYXIgcF9vZmZzZXRbOF07CiAgdW5z
aWduZWQgY2hhciBwX3ZhZGRyWzhdOwogIHVuc2lnbmVkIGNoYXIgcF9wYWRkcls4XTsKICB1bnNp
Z25lZCBjaGFyIHBfZmlsZXN6WzhdOwogIHVuc2lnbmVkIGNoYXIgcF9tZW1zels4XTsKICB1bnNp
Z25lZCBjaGFyIHBfYWxpZ25bOF07Cn0gRWxmNjRfRXh0ZXJuYWxfUGhkcjsKCgoKdHlwZWRlZiBz
dHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgc2hfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHNoX3R5
cGVbNF07CiAgdW5zaWduZWQgY2hhciBzaF9mbGFnc1s0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2Fk
ZHJbNF07CiAgdW5zaWduZWQgY2hhciBzaF9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hhciBzaF9z
aXplWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfbGlua1s0XTsKICB1bnNpZ25lZCBjaGFyIHNoX2lu
Zm9bNF07CiAgdW5zaWduZWQgY2hhciBzaF9hZGRyYWxpZ25bNF07CiAgdW5zaWduZWQgY2hhciBz
aF9lbnRzaXplWzRdOwp9IEVsZjMyX0V4dGVybmFsX1NoZHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAg
dW5zaWduZWQgY2hhciBzaF9uYW1lWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfdHlwZVs0XTsKICB1
bnNpZ25lZCBjaGFyIHNoX2ZsYWdzWzhdOwogIHVuc2lnbmVkIGNoYXIgc2hfYWRkcls4XTsKICB1
bnNpZ25lZCBjaGFyIHNoX29mZnNldFs4XTsKICB1bnNpZ25lZCBjaGFyIHNoX3NpemVbOF07CiAg
dW5zaWduZWQgY2hhciBzaF9saW5rWzRdOwogIHVuc2lnbmVkIGNoYXIgc2hfaW5mb1s0XTsKICB1
bnNpZ25lZCBjaGFyIHNoX2FkZHJhbGlnbls4XTsKICB1bnNpZ25lZCBjaGFyIHNoX2VudHNpemVb
OF07Cn0gRWxmNjRfRXh0ZXJuYWxfU2hkcjsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVk
IGNoYXIgc3RfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHN0X3ZhbHVlWzRdOwogIHVuc2lnbmVk
IGNoYXIgc3Rfc2l6ZVs0XTsKICB1bnNpZ25lZCBjaGFyIHN0X2luZm9bMV07CiAgdW5zaWduZWQg
Y2hhciBzdF9vdGhlclsxXTsKICB1bnNpZ25lZCBjaGFyIHN0X3NobmR4WzJdOwp9IEVsZjMyX0V4
dGVybmFsX1N5bTsKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIHN0X25hbWVbNF07
CiAgdW5zaWduZWQgY2hhciBzdF9pbmZvWzFdOwogIHVuc2lnbmVkIGNoYXIgc3Rfb3RoZXJbMV07
CiAgdW5zaWduZWQgY2hhciBzdF9zaG5keFsyXTsKICB1bnNpZ25lZCBjaGFyIHN0X3ZhbHVlWzhd
OwogIHVuc2lnbmVkIGNoYXIgc3Rfc2l6ZVs4XTsKfSBFbGY2NF9FeHRlcm5hbF9TeW07Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBlc3Rfc2huZHhbNF07Cn0gRWxmX0V4dGVybmFs
X1N5bV9TaG5keDsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgbmFtZXN6WzRd
OwogIHVuc2lnbmVkIGNoYXIgZGVzY3N6WzRdOwogIHVuc2lnbmVkIGNoYXIgdHlwZVs0XTsKICBj
aGFyIG5hbWVbMV07Cn0gRWxmX0V4dGVybmFsX05vdGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVu
c2lnbmVkIGNoYXIgcl9vZmZzZXRbNF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bNF07Cn0gRWxm
MzJfRXh0ZXJuYWxfUmVsOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgcl9vZmZz
ZXRbNF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bNF07CiAgdW5zaWduZWQgY2hhciByX2FkZGVu
ZFs0XTsKfSBFbGYzMl9FeHRlcm5hbF9SZWxhOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVk
IGNoYXIgcl9vZmZzZXRbOF07CiAgdW5zaWduZWQgY2hhciByX2luZm9bOF07Cn0gRWxmNjRfRXh0
ZXJuYWxfUmVsOwoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgcl9vZmZzZXRbOF07
CiAgdW5zaWduZWQgY2hhciByX2luZm9bOF07CiAgdW5zaWduZWQgY2hhciByX2FkZGVuZFs4XTsK
fSBFbGY2NF9FeHRlcm5hbF9SZWxhOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hh
ciBkX3RhZ1s0XTsKICB1bmlvbiB7CiAgICB1bnNpZ25lZCBjaGFyIGRfdmFsWzRdOwogICAgdW5z
aWduZWQgY2hhciBkX3B0cls0XTsKICB9IGRfdW47Cn0gRWxmMzJfRXh0ZXJuYWxfRHluOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgZF90YWdbOF07CiAgdW5pb24gewogICAgdW5z
aWduZWQgY2hhciBkX3ZhbFs4XTsKICAgIHVuc2lnbmVkIGNoYXIgZF9wdHJbOF07CiAgfSBkX3Vu
Owp9IEVsZjY0X0V4dGVybmFsX0R5bjsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25l
ZCBjaGFyIHZkX3ZlcnNpb25bMl07CiAgdW5zaWduZWQgY2hhciB2ZF9mbGFnc1syXTsKICB1bnNp
Z25lZCBjaGFyIHZkX25keFsyXTsKICB1bnNpZ25lZCBjaGFyIHZkX2NudFsyXTsKICB1bnNpZ25l
ZCBjaGFyIHZkX2hhc2hbNF07CiAgdW5zaWduZWQgY2hhciB2ZF9hdXhbNF07CiAgdW5zaWduZWQg
Y2hhciB2ZF9uZXh0WzRdOwp9IEVsZl9FeHRlcm5hbF9WZXJkZWY7CgoKCnR5cGVkZWYgc3RydWN0
IHsKICB1bnNpZ25lZCBjaGFyIHZkYV9uYW1lWzRdOwogIHVuc2lnbmVkIGNoYXIgdmRhX25leHRb
NF07Cn0gRWxmX0V4dGVybmFsX1ZlcmRhdXg7CgoKCnR5cGVkZWYgc3RydWN0IHsKICB1bnNpZ25l
ZCBjaGFyIHZuX3ZlcnNpb25bMl07CiAgdW5zaWduZWQgY2hhciB2bl9jbnRbMl07CiAgdW5zaWdu
ZWQgY2hhciB2bl9maWxlWzRdOwogIHVuc2lnbmVkIGNoYXIgdm5fYXV4WzRdOwogIHVuc2lnbmVk
IGNoYXIgdm5fbmV4dFs0XTsKfSBFbGZfRXh0ZXJuYWxfVmVybmVlZDsKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogIHVuc2lnbmVkIGNoYXIgdm5hX2hhc2hbNF07CiAgdW5zaWduZWQgY2hhciB2bmFfZmxh
Z3NbMl07CiAgdW5zaWduZWQgY2hhciB2bmFfb3RoZXJbMl07CiAgdW5zaWduZWQgY2hhciB2bmFf
bmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIHZuYV9uZXh0WzRdOwp9IEVsZl9FeHRlcm5hbF9WZXJu
YXV4OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIHVuc2lnbmVkIGNoYXIgdnNfdmVyc1syXTsKfQoK
ICBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkKCiAgRWxmX0V4dGVybmFsX1ZlcnN5bTsKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBzaV9ib3VuZHRvWzJdOwogIHVuc2lnbmVkIGNo
YXIgc2lfZmxhZ3NbMl07Cn0gRWxmX0V4dGVybmFsX1N5bWluZm87CiMgNDMgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL2ludGVybmFsLmgiIDEKIyA0NCAiLi4vaW5jbHVkZS9lbGYv
aW50ZXJuYWwuaCIKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX2VoZHIgewogIHVuc2lnbmVk
IGNoYXIgZV9pZGVudFsxNl07CiAgYmZkX3ZtYSBlX2VudHJ5OwogIGJmZF9zaXplX3R5cGUgZV9w
aG9mZjsKICBiZmRfc2l6ZV90eXBlIGVfc2hvZmY7CiAgdW5zaWduZWQgbG9uZyBlX3ZlcnNpb247
CiAgdW5zaWduZWQgbG9uZyBlX2ZsYWdzOwogIHVuc2lnbmVkIHNob3J0IGVfdHlwZTsKICB1bnNp
Z25lZCBzaG9ydCBlX21hY2hpbmU7CiAgdW5zaWduZWQgaW50IGVfZWhzaXplOwogIHVuc2lnbmVk
IGludCBlX3BoZW50c2l6ZTsKICB1bnNpZ25lZCBpbnQgZV9waG51bTsKICB1bnNpZ25lZCBpbnQg
ZV9zaGVudHNpemU7CiAgdW5zaWduZWQgaW50IGVfc2hudW07CiAgdW5zaWduZWQgaW50IGVfc2hz
dHJuZHg7Cn0gRWxmX0ludGVybmFsX0VoZHI7CgoKCnN0cnVjdCBlbGZfaW50ZXJuYWxfcGhkciB7
CiAgdW5zaWduZWQgbG9uZyBwX3R5cGU7CiAgdW5zaWduZWQgbG9uZyBwX2ZsYWdzOwogIGJmZF92
bWEgcF9vZmZzZXQ7CiAgYmZkX3ZtYSBwX3ZhZGRyOwogIGJmZF92bWEgcF9wYWRkcjsKICBiZmRf
dm1hIHBfZmlsZXN6OwogIGJmZF92bWEgcF9tZW1zejsKICBiZmRfdm1hIHBfYWxpZ247Cn07Cgp0
eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfcGhkciBFbGZfSW50ZXJuYWxfUGhkcjsKCgoKdHlw
ZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3NoZHIgewogIHVuc2lnbmVkIGludCBzaF9uYW1lOwog
IHVuc2lnbmVkIGludCBzaF90eXBlOwogIGJmZF92bWEgc2hfZmxhZ3M7CiAgYmZkX3ZtYSBzaF9h
ZGRyOwogIGJmZF9zaXplX3R5cGUgc2hfc2l6ZTsKICBiZmRfc2l6ZV90eXBlIHNoX2VudHNpemU7
CiAgdW5zaWduZWQgbG9uZyBzaF9saW5rOwogIHVuc2lnbmVkIGxvbmcgc2hfaW5mbzsKICBmaWxl
X3B0ciBzaF9vZmZzZXQ7CiAgdW5zaWduZWQgaW50IHNoX2FkZHJhbGlnbjsKCgogIGFzZWN0aW9u
ICogYmZkX3NlY3Rpb247CiAgdW5zaWduZWQgY2hhciAqY29udGVudHM7Cn0gRWxmX0ludGVybmFs
X1NoZHI7CgoKCnN0cnVjdCBlbGZfaW50ZXJuYWxfc3ltIHsKICBiZmRfdm1hIHN0X3ZhbHVlOwog
IGJmZF92bWEgc3Rfc2l6ZTsKICB1bnNpZ25lZCBsb25nIHN0X25hbWU7CiAgdW5zaWduZWQgY2hh
ciBzdF9pbmZvOwogIHVuc2lnbmVkIGNoYXIgc3Rfb3RoZXI7CiAgdW5zaWduZWQgaW50IHN0X3No
bmR4Owp9OwoKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3N5bSBFbGZfSW50ZXJuYWxfU3lt
OwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfbm90ZSB7CiAgdW5zaWduZWQgbG9uZyBu
YW1lc3o7CiAgdW5zaWduZWQgbG9uZyBkZXNjc3o7CiAgdW5zaWduZWQgbG9uZyB0eXBlOwogIGNo
YXIgKiBuYW1lZGF0YTsKICBjaGFyICogZGVzY2RhdGE7CiAgYmZkX3ZtYSBkZXNjcG9zOwp9IEVs
Zl9JbnRlcm5hbF9Ob3RlOwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfcmVsYSB7CiAg
YmZkX3ZtYSByX29mZnNldDsKICBiZmRfdm1hIHJfaW5mbzsKICBiZmRfdm1hIHJfYWRkZW5kOwp9
IEVsZl9JbnRlcm5hbF9SZWxhOwoKCgp0eXBlZGVmIHN0cnVjdCBlbGZfaW50ZXJuYWxfZHluIHsK
CiAgYmZkX3ZtYSBkX3RhZzsKICB1bmlvbiB7CgogICAgYmZkX3ZtYSBkX3ZhbDsKICAgIGJmZF92
bWEgZF9wdHI7CiAgfSBkX3VuOwp9IEVsZl9JbnRlcm5hbF9EeW47CgoKCnR5cGVkZWYgc3RydWN0
IGVsZl9pbnRlcm5hbF92ZXJkZWYgewogIHVuc2lnbmVkIHNob3J0IHZkX3ZlcnNpb247CiAgdW5z
aWduZWQgc2hvcnQgdmRfZmxhZ3M7CiAgdW5zaWduZWQgc2hvcnQgdmRfbmR4OwogIHVuc2lnbmVk
IHNob3J0IHZkX2NudDsKICB1bnNpZ25lZCBsb25nIHZkX2hhc2g7CiAgdW5zaWduZWQgbG9uZyB2
ZF9hdXg7CiAgdW5zaWduZWQgbG9uZyB2ZF9uZXh0OwoKCgogIGJmZCAqdmRfYmZkOwogIGNvbnN0
IGNoYXIgKnZkX25vZGVuYW1lOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxfdmVyZGVmICp2ZF9uZXh0
ZGVmOwogIHN0cnVjdCBlbGZfaW50ZXJuYWxfdmVyZGF1eCAqdmRfYXV4cHRyOwogIHVuc2lnbmVk
IGludCB2ZF9leHBfcmVmbm87Cn0gRWxmX0ludGVybmFsX1ZlcmRlZjsKCgoKdHlwZWRlZiBzdHJ1
Y3QgZWxmX2ludGVybmFsX3ZlcmRhdXggewogIHVuc2lnbmVkIGxvbmcgdmRhX25hbWU7CiAgdW5z
aWduZWQgbG9uZyB2ZGFfbmV4dDsKCgoKICBjb25zdCBjaGFyICp2ZGFfbm9kZW5hbWU7CiAgc3Ry
dWN0IGVsZl9pbnRlcm5hbF92ZXJkYXV4ICp2ZGFfbmV4dHB0cjsKfSBFbGZfSW50ZXJuYWxfVmVy
ZGF1eDsKCgoKdHlwZWRlZiBzdHJ1Y3QgZWxmX2ludGVybmFsX3Zlcm5lZWQgewogIHVuc2lnbmVk
IHNob3J0IHZuX3ZlcnNpb247CiAgdW5zaWduZWQgc2hvcnQgdm5fY250OwogIHVuc2lnbmVkIGxv
bmcgdm5fZmlsZTsKICB1bnNpZ25lZCBsb25nIHZuX2F1eDsKICB1bnNpZ25lZCBsb25nIHZuX25l
eHQ7CgoKCiAgYmZkICp2bl9iZmQ7CiAgY29uc3QgY2hhciAqdm5fZmlsZW5hbWU7CiAgc3RydWN0
IGVsZl9pbnRlcm5hbF92ZXJuYXV4ICp2bl9hdXhwdHI7CiAgc3RydWN0IGVsZl9pbnRlcm5hbF92
ZXJuZWVkICp2bl9uZXh0cmVmOwp9IEVsZl9JbnRlcm5hbF9WZXJuZWVkOwoKCgp0eXBlZGVmIHN0
cnVjdCBlbGZfaW50ZXJuYWxfdmVybmF1eCB7CiAgdW5zaWduZWQgbG9uZyB2bmFfaGFzaDsKICB1
bnNpZ25lZCBzaG9ydCB2bmFfZmxhZ3M7CiAgdW5zaWduZWQgc2hvcnQgdm5hX290aGVyOwogIHVu
c2lnbmVkIGxvbmcgdm5hX25hbWU7CiAgdW5zaWduZWQgbG9uZyB2bmFfbmV4dDsKCgoKICBjb25z
dCBjaGFyICp2bmFfbm9kZW5hbWU7CiAgc3RydWN0IGVsZl9pbnRlcm5hbF92ZXJuYXV4ICp2bmFf
bmV4dHB0cjsKfSBFbGZfSW50ZXJuYWxfVmVybmF1eDsKCgoKCnR5cGVkZWYgc3RydWN0IGVsZl9p
bnRlcm5hbF92ZXJzeW0gewogIHVuc2lnbmVkIHNob3J0IHZzX3ZlcnM7Cn0gRWxmX0ludGVybmFs
X1ZlcnN5bTsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgc2hvcnQgaW50IHNpX2JvdW5k
dG87CiAgdW5zaWduZWQgc2hvcnQgaW50IHNpX2ZsYWdzOwp9IEVsZl9JbnRlcm5hbF9TeW1pbmZv
OwoKCgoKCnN0cnVjdCBlbGZfc2VnbWVudF9tYXAKewoKICBzdHJ1Y3QgZWxmX3NlZ21lbnRfbWFw
ICpuZXh0OwoKICB1bnNpZ25lZCBsb25nIHBfdHlwZTsKCiAgdW5zaWduZWQgbG9uZyBwX2ZsYWdz
OwoKICBiZmRfdm1hIHBfcGFkZHI7CgoKICB1bnNpZ25lZCBpbnQgcF9mbGFnc192YWxpZCA6IDE7
CgoKICB1bnNpZ25lZCBpbnQgcF9wYWRkcl92YWxpZCA6IDE7CgogIHVuc2lnbmVkIGludCBpbmNs
dWRlc19maWxlaGRyIDogMTsKCiAgdW5zaWduZWQgaW50IGluY2x1ZGVzX3BoZHJzIDogMTsKCiAg
dW5zaWduZWQgaW50IGNvdW50OwoKICBhc2VjdGlvbiAqc2VjdGlvbnNbMV07Cn07CiMgNDQgInJl
YWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIiAxCiMgNDUgIi4uL2luY2x1
ZGUvZWxmL2R3YXJmMi5oIgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBsaV9sZW5n
dGggWzRdOwogIHVuc2lnbmVkIGNoYXIgbGlfdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBs
aV9wcm9sb2d1ZV9sZW5ndGggWzRdOwogIHVuc2lnbmVkIGNoYXIgbGlfbWluX2luc25fbGVuZ3Ro
IFsxXTsKICB1bnNpZ25lZCBjaGFyIGxpX2RlZmF1bHRfaXNfc3RtdCBbMV07CiAgdW5zaWduZWQg
Y2hhciBsaV9saW5lX2Jhc2UgWzFdOwogIHVuc2lnbmVkIGNoYXIgbGlfbGluZV9yYW5nZSBbMV07
CiAgdW5zaWduZWQgY2hhciBsaV9vcGNvZGVfYmFzZSBbMV07Cn0KRFdBUkYyX0V4dGVybmFsX0xp
bmVJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgbGlfbGVuZ3RoOwogIHVu
c2lnbmVkIHNob3J0IGxpX3ZlcnNpb247CiAgdW5zaWduZWQgaW50IGxpX3Byb2xvZ3VlX2xlbmd0
aDsKICB1bnNpZ25lZCBjaGFyIGxpX21pbl9pbnNuX2xlbmd0aDsKICB1bnNpZ25lZCBjaGFyIGxp
X2RlZmF1bHRfaXNfc3RtdDsKICBpbnQgbGlfbGluZV9iYXNlOwogIHVuc2lnbmVkIGNoYXIgbGlf
bGluZV9yYW5nZTsKICB1bnNpZ25lZCBjaGFyIGxpX29wY29kZV9iYXNlOwp9CkRXQVJGMl9JbnRl
cm5hbF9MaW5lSW5mbzsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBwbl9sZW5n
dGggWzRdOwogIHVuc2lnbmVkIGNoYXIgcG5fdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBw
bl9vZmZzZXQgWzRdOwogIHVuc2lnbmVkIGNoYXIgcG5fc2l6ZSBbNF07Cn0KRFdBUkYyX0V4dGVy
bmFsX1B1Yk5hbWVzOwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgcG5fbGVuZ3Ro
OwogIHVuc2lnbmVkIHNob3J0IHBuX3ZlcnNpb247CiAgdW5zaWduZWQgbG9uZyBwbl9vZmZzZXQ7
CiAgdW5zaWduZWQgbG9uZyBwbl9zaXplOwp9CkRXQVJGMl9JbnRlcm5hbF9QdWJOYW1lczsKCgp0
eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgY2hhciBjdV9sZW5ndGggWzRdOwogIHVuc2lnbmVk
IGNoYXIgY3VfdmVyc2lvbiBbMl07CiAgdW5zaWduZWQgY2hhciBjdV9hYmJyZXZfb2Zmc2V0IFs0
XTsKICB1bnNpZ25lZCBjaGFyIGN1X3BvaW50ZXJfc2l6ZSBbMV07Cn0KRFdBUkYyX0V4dGVybmFs
X0NvbXBVbml0OwoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVkIGxvbmcgY3VfbGVuZ3RoOwog
IHVuc2lnbmVkIHNob3J0IGN1X3ZlcnNpb247CiAgdW5zaWduZWQgbG9uZyBjdV9hYmJyZXZfb2Zm
c2V0OwogIHVuc2lnbmVkIGNoYXIgY3VfcG9pbnRlcl9zaXplOwp9CkRXQVJGMl9JbnRlcm5hbF9D
b21wVW5pdDsKCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBjaGFyIGFyX2xlbmd0aCBbNF07
CiAgdW5zaWduZWQgY2hhciBhcl92ZXJzaW9uIFsyXTsKICB1bnNpZ25lZCBjaGFyIGFyX2luZm9f
b2Zmc2V0IFs0XTsKICB1bnNpZ25lZCBjaGFyIGFyX3BvaW50ZXJfc2l6ZSBbMV07CiAgdW5zaWdu
ZWQgY2hhciBhcl9zZWdtZW50X3NpemUgWzFdOwp9CkRXQVJGMl9FeHRlcm5hbF9BUmFuZ2U7Cgp0
eXBlZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgbG9uZyBhcl9sZW5ndGg7CiAgdW5zaWduZWQgc2hv
cnQgYXJfdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIGFyX2luZm9fb2Zmc2V0OwogIHVuc2lnbmVk
IGNoYXIgYXJfcG9pbnRlcl9zaXplOwogIHVuc2lnbmVkIGNoYXIgYXJfc2VnbWVudF9zaXplOwp9
CkRXQVJGMl9JbnRlcm5hbF9BUmFuZ2U7CgoKCmVudW0gZHdhcmZfdGFnCiAgewogICAgRFdfVEFH
X3BhZGRpbmcgPSAweDAwLAogICAgRFdfVEFHX2FycmF5X3R5cGUgPSAweDAxLAogICAgRFdfVEFH
X2NsYXNzX3R5cGUgPSAweDAyLAogICAgRFdfVEFHX2VudHJ5X3BvaW50ID0gMHgwMywKICAgIERX
X1RBR19lbnVtZXJhdGlvbl90eXBlID0gMHgwNCwKICAgIERXX1RBR19mb3JtYWxfcGFyYW1ldGVy
ID0gMHgwNSwKICAgIERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbiA9IDB4MDgsCiAgICBEV19U
QUdfbGFiZWwgPSAweDBhLAogICAgRFdfVEFHX2xleGljYWxfYmxvY2sgPSAweDBiLAogICAgRFdf
VEFHX21lbWJlciA9IDB4MGQsCiAgICBEV19UQUdfcG9pbnRlcl90eXBlID0gMHgwZiwKICAgIERX
X1RBR19yZWZlcmVuY2VfdHlwZSA9IDB4MTAsCiAgICBEV19UQUdfY29tcGlsZV91bml0ID0gMHgx
MSwKICAgIERXX1RBR19zdHJpbmdfdHlwZSA9IDB4MTIsCiAgICBEV19UQUdfc3RydWN0dXJlX3R5
cGUgPSAweDEzLAogICAgRFdfVEFHX3N1YnJvdXRpbmVfdHlwZSA9IDB4MTUsCiAgICBEV19UQUdf
dHlwZWRlZiA9IDB4MTYsCiAgICBEV19UQUdfdW5pb25fdHlwZSA9IDB4MTcsCiAgICBEV19UQUdf
dW5zcGVjaWZpZWRfcGFyYW1ldGVycyA9IDB4MTgsCiAgICBEV19UQUdfdmFyaWFudCA9IDB4MTks
CiAgICBEV19UQUdfY29tbW9uX2Jsb2NrID0gMHgxYSwKICAgIERXX1RBR19jb21tb25faW5jbHVz
aW9uID0gMHgxYiwKICAgIERXX1RBR19pbmhlcml0YW5jZSA9IDB4MWMsCiAgICBEV19UQUdfaW5s
aW5lZF9zdWJyb3V0aW5lID0gMHgxZCwKICAgIERXX1RBR19tb2R1bGUgPSAweDFlLAogICAgRFdf
VEFHX3B0cl90b19tZW1iZXJfdHlwZSA9IDB4MWYsCiAgICBEV19UQUdfc2V0X3R5cGUgPSAweDIw
LAogICAgRFdfVEFHX3N1YnJhbmdlX3R5cGUgPSAweDIxLAogICAgRFdfVEFHX3dpdGhfc3RtdCA9
IDB4MjIsCiAgICBEV19UQUdfYWNjZXNzX2RlY2xhcmF0aW9uID0gMHgyMywKICAgIERXX1RBR19i
YXNlX3R5cGUgPSAweDI0LAogICAgRFdfVEFHX2NhdGNoX2Jsb2NrID0gMHgyNSwKICAgIERXX1RB
R19jb25zdF90eXBlID0gMHgyNiwKICAgIERXX1RBR19jb25zdGFudCA9IDB4MjcsCiAgICBEV19U
QUdfZW51bWVyYXRvciA9IDB4MjgsCiAgICBEV19UQUdfZmlsZV90eXBlID0gMHgyOSwKICAgIERX
X1RBR19mcmllbmQgPSAweDJhLAogICAgRFdfVEFHX25hbWVsaXN0ID0gMHgyYiwKICAgIERXX1RB
R19uYW1lbGlzdF9pdGVtID0gMHgyYywKICAgIERXX1RBR19wYWNrZWRfdHlwZSA9IDB4MmQsCiAg
ICBEV19UQUdfc3VicHJvZ3JhbSA9IDB4MmUsCiAgICBEV19UQUdfdGVtcGxhdGVfdHlwZV9wYXJh
bSA9IDB4MmYsCiAgICBEV19UQUdfdGVtcGxhdGVfdmFsdWVfcGFyYW0gPSAweDMwLAogICAgRFdf
VEFHX3Rocm93bl90eXBlID0gMHgzMSwKICAgIERXX1RBR190cnlfYmxvY2sgPSAweDMyLAogICAg
RFdfVEFHX3ZhcmlhbnRfcGFydCA9IDB4MzMsCiAgICBEV19UQUdfdmFyaWFibGUgPSAweDM0LAog
ICAgRFdfVEFHX3ZvbGF0aWxlX3R5cGUgPSAweDM1LAoKICAgIERXX1RBR19kd2FyZl9wcm9jZWR1
cmUgPSAweDM2LAogICAgRFdfVEFHX3Jlc3RyaWN0X3R5cGUgPSAweDM3LAogICAgRFdfVEFHX2lu
dGVyZmFjZV90eXBlID0gMHgzOCwKICAgIERXX1RBR19uYW1lc3BhY2UgPSAweDM5LAogICAgRFdf
VEFHX2ltcG9ydGVkX21vZHVsZSA9IDB4M2EsCiAgICBEV19UQUdfdW5zcGVjaWZpZWRfdHlwZSA9
IDB4M2IsCiAgICBEV19UQUdfcGFydGlhbF91bml0ID0gMHgzYywKICAgIERXX1RBR19pbXBvcnRl
ZF91bml0ID0gMHgzZCwKCiAgICBEV19UQUdfTUlQU19sb29wID0gMHg0MDgxLAoKICAgIERXX1RB
R19mb3JtYXRfbGFiZWwgPSAweDQxMDEsCiAgICBEV19UQUdfZnVuY3Rpb25fdGVtcGxhdGUgPSAw
eDQxMDIsCiAgICBEV19UQUdfY2xhc3NfdGVtcGxhdGUgPSAweDQxMDMsCiAgICBEV19UQUdfR05V
X0JJTkNMID0gMHg0MTA0LAogICAgRFdfVEFHX0dOVV9FSU5DTCA9IDB4NDEwNSwKCiAgICBEV19U
QUdfdXBjX3NoYXJlZF90eXBlID0gMHg4NzY1LAogICAgRFdfVEFHX3VwY19zdHJpY3RfdHlwZSA9
IDB4ODc2NiwKICAgIERXX1RBR191cGNfcmVsYXhlZF90eXBlID0gMHg4NzY3CiAgfTsKIyAyMTIg
Ii4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIgplbnVtIGR3YXJmX2Zvcm0KICB7CiAgICBEV19GT1JN
X2FkZHIgPSAweDAxLAogICAgRFdfRk9STV9ibG9jazIgPSAweDAzLAogICAgRFdfRk9STV9ibG9j
azQgPSAweDA0LAogICAgRFdfRk9STV9kYXRhMiA9IDB4MDUsCiAgICBEV19GT1JNX2RhdGE0ID0g
MHgwNiwKICAgIERXX0ZPUk1fZGF0YTggPSAweDA3LAogICAgRFdfRk9STV9zdHJpbmcgPSAweDA4
LAogICAgRFdfRk9STV9ibG9jayA9IDB4MDksCiAgICBEV19GT1JNX2Jsb2NrMSA9IDB4MGEsCiAg
ICBEV19GT1JNX2RhdGExID0gMHgwYiwKICAgIERXX0ZPUk1fZmxhZyA9IDB4MGMsCiAgICBEV19G
T1JNX3NkYXRhID0gMHgwZCwKICAgIERXX0ZPUk1fc3RycCA9IDB4MGUsCiAgICBEV19GT1JNX3Vk
YXRhID0gMHgwZiwKICAgIERXX0ZPUk1fcmVmX2FkZHIgPSAweDEwLAogICAgRFdfRk9STV9yZWYx
ID0gMHgxMSwKICAgIERXX0ZPUk1fcmVmMiA9IDB4MTIsCiAgICBEV19GT1JNX3JlZjQgPSAweDEz
LAogICAgRFdfRk9STV9yZWY4ID0gMHgxNCwKICAgIERXX0ZPUk1fcmVmX3VkYXRhID0gMHgxNSwK
ICAgIERXX0ZPUk1faW5kaXJlY3QgPSAweDE2CiAgfTsKCgoKZW51bSBkd2FyZl9hdHRyaWJ1dGUK
ICB7CiAgICBEV19BVF9zaWJsaW5nID0gMHgwMSwKICAgIERXX0FUX2xvY2F0aW9uID0gMHgwMiwK
ICAgIERXX0FUX25hbWUgPSAweDAzLAogICAgRFdfQVRfb3JkZXJpbmcgPSAweDA5LAogICAgRFdf
QVRfc3Vic2NyX2RhdGEgPSAweDBhLAogICAgRFdfQVRfYnl0ZV9zaXplID0gMHgwYiwKICAgIERX
X0FUX2JpdF9vZmZzZXQgPSAweDBjLAogICAgRFdfQVRfYml0X3NpemUgPSAweDBkLAogICAgRFdf
QVRfZWxlbWVudF9saXN0ID0gMHgwZiwKICAgIERXX0FUX3N0bXRfbGlzdCA9IDB4MTAsCiAgICBE
V19BVF9sb3dfcGMgPSAweDExLAogICAgRFdfQVRfaGlnaF9wYyA9IDB4MTIsCiAgICBEV19BVF9s
YW5ndWFnZSA9IDB4MTMsCiAgICBEV19BVF9tZW1iZXIgPSAweDE0LAogICAgRFdfQVRfZGlzY3Ig
PSAweDE1LAogICAgRFdfQVRfZGlzY3JfdmFsdWUgPSAweDE2LAogICAgRFdfQVRfdmlzaWJpbGl0
eSA9IDB4MTcsCiAgICBEV19BVF9pbXBvcnQgPSAweDE4LAogICAgRFdfQVRfc3RyaW5nX2xlbmd0
aCA9IDB4MTksCiAgICBEV19BVF9jb21tb25fcmVmZXJlbmNlID0gMHgxYSwKICAgIERXX0FUX2Nv
bXBfZGlyID0gMHgxYiwKICAgIERXX0FUX2NvbnN0X3ZhbHVlID0gMHgxYywKICAgIERXX0FUX2Nv
bnRhaW5pbmdfdHlwZSA9IDB4MWQsCiAgICBEV19BVF9kZWZhdWx0X3ZhbHVlID0gMHgxZSwKICAg
IERXX0FUX2lubGluZSA9IDB4MjAsCiAgICBEV19BVF9pc19vcHRpb25hbCA9IDB4MjEsCiAgICBE
V19BVF9sb3dlcl9ib3VuZCA9IDB4MjIsCiAgICBEV19BVF9wcm9kdWNlciA9IDB4MjUsCiAgICBE
V19BVF9wcm90b3R5cGVkID0gMHgyNywKICAgIERXX0FUX3JldHVybl9hZGRyID0gMHgyYSwKICAg
IERXX0FUX3N0YXJ0X3Njb3BlID0gMHgyYywKICAgIERXX0FUX3N0cmlkZV9zaXplID0gMHgyZSwK
ICAgIERXX0FUX3VwcGVyX2JvdW5kID0gMHgyZiwKICAgIERXX0FUX2Fic3RyYWN0X29yaWdpbiA9
IDB4MzEsCiAgICBEV19BVF9hY2Nlc3NpYmlsaXR5ID0gMHgzMiwKICAgIERXX0FUX2FkZHJlc3Nf
Y2xhc3MgPSAweDMzLAogICAgRFdfQVRfYXJ0aWZpY2lhbCA9IDB4MzQsCiAgICBEV19BVF9iYXNl
X3R5cGVzID0gMHgzNSwKICAgIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiA9IDB4MzYsCiAgICBE
V19BVF9jb3VudCA9IDB4MzcsCiAgICBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiA9IDB4Mzgs
CiAgICBEV19BVF9kZWNsX2NvbHVtbiA9IDB4MzksCiAgICBEV19BVF9kZWNsX2ZpbGUgPSAweDNh
LAogICAgRFdfQVRfZGVjbF9saW5lID0gMHgzYiwKICAgIERXX0FUX2RlY2xhcmF0aW9uID0gMHgz
YywKICAgIERXX0FUX2Rpc2NyX2xpc3QgPSAweDNkLAogICAgRFdfQVRfZW5jb2RpbmcgPSAweDNl
LAogICAgRFdfQVRfZXh0ZXJuYWwgPSAweDNmLAogICAgRFdfQVRfZnJhbWVfYmFzZSA9IDB4NDAs
CiAgICBEV19BVF9mcmllbmQgPSAweDQxLAogICAgRFdfQVRfaWRlbnRpZmllcl9jYXNlID0gMHg0
MiwKICAgIERXX0FUX21hY3JvX2luZm8gPSAweDQzLAogICAgRFdfQVRfbmFtZWxpc3RfaXRlbXMg
PSAweDQ0LAogICAgRFdfQVRfcHJpb3JpdHkgPSAweDQ1LAogICAgRFdfQVRfc2VnbWVudCA9IDB4
NDYsCiAgICBEV19BVF9zcGVjaWZpY2F0aW9uID0gMHg0NywKICAgIERXX0FUX3N0YXRpY19saW5r
ID0gMHg0OCwKICAgIERXX0FUX3R5cGUgPSAweDQ5LAogICAgRFdfQVRfdXNlX2xvY2F0aW9uID0g
MHg0YSwKICAgIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciA9IDB4NGIsCiAgICBEV19BVF92aXJ0
dWFsaXR5ID0gMHg0YywKICAgIERXX0FUX3Z0YWJsZV9lbGVtX2xvY2F0aW9uID0gMHg0ZCwKCiAg
ICBEV19BVF9hbGxvY2F0ZWQgPSAweDRlLAogICAgRFdfQVRfYXNzb2NpYXRlZCA9IDB4NGYsCiAg
ICBEV19BVF9kYXRhX2xvY2F0aW9uID0gMHg1MCwKICAgIERXX0FUX3N0cmlkZSA9IDB4NTEsCiAg
ICBEV19BVF9lbnRyeV9wYyA9IDB4NTIsCiAgICBEV19BVF91c2VfVVRGOCA9IDB4NTMsCiAgICBE
V19BVF9leHRlbnNpb24gPSAweDU0LAogICAgRFdfQVRfcmFuZ2VzID0gMHg1NSwKICAgIERXX0FU
X3RyYW1wb2xpbmUgPSAweDU2LAogICAgRFdfQVRfY2FsbF9jb2x1bW4gPSAweDU3LAogICAgRFdf
QVRfY2FsbF9maWxlID0gMHg1OCwKICAgIERXX0FUX2NhbGxfbGluZSA9IDB4NTksCgogICAgRFdf
QVRfTUlQU19mZGUgPSAweDIwMDEsCiAgICBEV19BVF9NSVBTX2xvb3BfYmVnaW4gPSAweDIwMDIs
CiAgICBEV19BVF9NSVBTX3RhaWxfbG9vcF9iZWdpbiA9IDB4MjAwMywKICAgIERXX0FUX01JUFNf
ZXBpbG9nX2JlZ2luID0gMHgyMDA0LAogICAgRFdfQVRfTUlQU19sb29wX3Vucm9sbF9mYWN0b3Ig
PSAweDIwMDUsCiAgICBEV19BVF9NSVBTX3NvZnR3YXJlX3BpcGVsaW5lX2RlcHRoID0gMHgyMDA2
LAogICAgRFdfQVRfTUlQU19saW5rYWdlX25hbWUgPSAweDIwMDcsCiAgICBEV19BVF9NSVBTX3N0
cmlkZSA9IDB4MjAwOCwKICAgIERXX0FUX01JUFNfYWJzdHJhY3RfbmFtZSA9IDB4MjAwOSwKICAg
IERXX0FUX01JUFNfY2xvbmVfb3JpZ2luID0gMHgyMDBhLAogICAgRFdfQVRfTUlQU19oYXNfaW5s
aW5lcyA9IDB4MjAwYiwKCiAgICBEV19BVF9zZl9uYW1lcyA9IDB4MjEwMSwKICAgIERXX0FUX3Ny
Y19pbmZvID0gMHgyMTAyLAogICAgRFdfQVRfbWFjX2luZm8gPSAweDIxMDMsCiAgICBEV19BVF9z
cmNfY29vcmRzID0gMHgyMTA0LAogICAgRFdfQVRfYm9keV9iZWdpbiA9IDB4MjEwNSwKICAgIERX
X0FUX2JvZHlfZW5kID0gMHgyMTA2LAogICAgRFdfQVRfR05VX3ZlY3RvciA9IDB4MjEwNywKCiAg
ICBEV19BVF9WTVNfcnRuYmVnX3BkX2FkZHJlc3MgPSAweDIyMDEsCgogICAgRFdfQVRfdXBjX3Ro
cmVhZHNfc2NhbGVkID0gMHgzMjEwCiAgfTsKCgoKCgplbnVtIGR3YXJmX2xvY2F0aW9uX2F0b20K
ICB7CiAgICBEV19PUF9hZGRyID0gMHgwMywKICAgIERXX09QX2RlcmVmID0gMHgwNiwKICAgIERX
X09QX2NvbnN0MXUgPSAweDA4LAogICAgRFdfT1BfY29uc3QxcyA9IDB4MDksCiAgICBEV19PUF9j
b25zdDJ1ID0gMHgwYSwKICAgIERXX09QX2NvbnN0MnMgPSAweDBiLAogICAgRFdfT1BfY29uc3Q0
dSA9IDB4MGMsCiAgICBEV19PUF9jb25zdDRzID0gMHgwZCwKICAgIERXX09QX2NvbnN0OHUgPSAw
eDBlLAogICAgRFdfT1BfY29uc3Q4cyA9IDB4MGYsCiAgICBEV19PUF9jb25zdHUgPSAweDEwLAog
ICAgRFdfT1BfY29uc3RzID0gMHgxMSwKICAgIERXX09QX2R1cCA9IDB4MTIsCiAgICBEV19PUF9k
cm9wID0gMHgxMywKICAgIERXX09QX292ZXIgPSAweDE0LAogICAgRFdfT1BfcGljayA9IDB4MTUs
CiAgICBEV19PUF9zd2FwID0gMHgxNiwKICAgIERXX09QX3JvdCA9IDB4MTcsCiAgICBEV19PUF94
ZGVyZWYgPSAweDE4LAogICAgRFdfT1BfYWJzID0gMHgxOSwKICAgIERXX09QX2FuZCA9IDB4MWEs
CiAgICBEV19PUF9kaXYgPSAweDFiLAogICAgRFdfT1BfbWludXMgPSAweDFjLAogICAgRFdfT1Bf
bW9kID0gMHgxZCwKICAgIERXX09QX211bCA9IDB4MWUsCiAgICBEV19PUF9uZWcgPSAweDFmLAog
ICAgRFdfT1Bfbm90ID0gMHgyMCwKICAgIERXX09QX29yID0gMHgyMSwKICAgIERXX09QX3BsdXMg
PSAweDIyLAogICAgRFdfT1BfcGx1c191Y29uc3QgPSAweDIzLAogICAgRFdfT1Bfc2hsID0gMHgy
NCwKICAgIERXX09QX3NociA9IDB4MjUsCiAgICBEV19PUF9zaHJhID0gMHgyNiwKICAgIERXX09Q
X3hvciA9IDB4MjcsCiAgICBEV19PUF9icmEgPSAweDI4LAogICAgRFdfT1BfZXEgPSAweDI5LAog
ICAgRFdfT1BfZ2UgPSAweDJhLAogICAgRFdfT1BfZ3QgPSAweDJiLAogICAgRFdfT1BfbGUgPSAw
eDJjLAogICAgRFdfT1BfbHQgPSAweDJkLAogICAgRFdfT1BfbmUgPSAweDJlLAogICAgRFdfT1Bf
c2tpcCA9IDB4MmYsCiAgICBEV19PUF9saXQwID0gMHgzMCwKICAgIERXX09QX2xpdDEgPSAweDMx
LAogICAgRFdfT1BfbGl0MiA9IDB4MzIsCiAgICBEV19PUF9saXQzID0gMHgzMywKICAgIERXX09Q
X2xpdDQgPSAweDM0LAogICAgRFdfT1BfbGl0NSA9IDB4MzUsCiAgICBEV19PUF9saXQ2ID0gMHgz
NiwKICAgIERXX09QX2xpdDcgPSAweDM3LAogICAgRFdfT1BfbGl0OCA9IDB4MzgsCiAgICBEV19P
UF9saXQ5ID0gMHgzOSwKICAgIERXX09QX2xpdDEwID0gMHgzYSwKICAgIERXX09QX2xpdDExID0g
MHgzYiwKICAgIERXX09QX2xpdDEyID0gMHgzYywKICAgIERXX09QX2xpdDEzID0gMHgzZCwKICAg
IERXX09QX2xpdDE0ID0gMHgzZSwKICAgIERXX09QX2xpdDE1ID0gMHgzZiwKICAgIERXX09QX2xp
dDE2ID0gMHg0MCwKICAgIERXX09QX2xpdDE3ID0gMHg0MSwKICAgIERXX09QX2xpdDE4ID0gMHg0
MiwKICAgIERXX09QX2xpdDE5ID0gMHg0MywKICAgIERXX09QX2xpdDIwID0gMHg0NCwKICAgIERX
X09QX2xpdDIxID0gMHg0NSwKICAgIERXX09QX2xpdDIyID0gMHg0NiwKICAgIERXX09QX2xpdDIz
ID0gMHg0NywKICAgIERXX09QX2xpdDI0ID0gMHg0OCwKICAgIERXX09QX2xpdDI1ID0gMHg0OSwK
ICAgIERXX09QX2xpdDI2ID0gMHg0YSwKICAgIERXX09QX2xpdDI3ID0gMHg0YiwKICAgIERXX09Q
X2xpdDI4ID0gMHg0YywKICAgIERXX09QX2xpdDI5ID0gMHg0ZCwKICAgIERXX09QX2xpdDMwID0g
MHg0ZSwKICAgIERXX09QX2xpdDMxID0gMHg0ZiwKICAgIERXX09QX3JlZzAgPSAweDUwLAogICAg
RFdfT1BfcmVnMSA9IDB4NTEsCiAgICBEV19PUF9yZWcyID0gMHg1MiwKICAgIERXX09QX3JlZzMg
PSAweDUzLAogICAgRFdfT1BfcmVnNCA9IDB4NTQsCiAgICBEV19PUF9yZWc1ID0gMHg1NSwKICAg
IERXX09QX3JlZzYgPSAweDU2LAogICAgRFdfT1BfcmVnNyA9IDB4NTcsCiAgICBEV19PUF9yZWc4
ID0gMHg1OCwKICAgIERXX09QX3JlZzkgPSAweDU5LAogICAgRFdfT1BfcmVnMTAgPSAweDVhLAog
ICAgRFdfT1BfcmVnMTEgPSAweDViLAogICAgRFdfT1BfcmVnMTIgPSAweDVjLAogICAgRFdfT1Bf
cmVnMTMgPSAweDVkLAogICAgRFdfT1BfcmVnMTQgPSAweDVlLAogICAgRFdfT1BfcmVnMTUgPSAw
eDVmLAogICAgRFdfT1BfcmVnMTYgPSAweDYwLAogICAgRFdfT1BfcmVnMTcgPSAweDYxLAogICAg
RFdfT1BfcmVnMTggPSAweDYyLAogICAgRFdfT1BfcmVnMTkgPSAweDYzLAogICAgRFdfT1BfcmVn
MjAgPSAweDY0LAogICAgRFdfT1BfcmVnMjEgPSAweDY1LAogICAgRFdfT1BfcmVnMjIgPSAweDY2
LAogICAgRFdfT1BfcmVnMjMgPSAweDY3LAogICAgRFdfT1BfcmVnMjQgPSAweDY4LAogICAgRFdf
T1BfcmVnMjUgPSAweDY5LAogICAgRFdfT1BfcmVnMjYgPSAweDZhLAogICAgRFdfT1BfcmVnMjcg
PSAweDZiLAogICAgRFdfT1BfcmVnMjggPSAweDZjLAogICAgRFdfT1BfcmVnMjkgPSAweDZkLAog
ICAgRFdfT1BfcmVnMzAgPSAweDZlLAogICAgRFdfT1BfcmVnMzEgPSAweDZmLAogICAgRFdfT1Bf
YnJlZzAgPSAweDcwLAogICAgRFdfT1BfYnJlZzEgPSAweDcxLAogICAgRFdfT1BfYnJlZzIgPSAw
eDcyLAogICAgRFdfT1BfYnJlZzMgPSAweDczLAogICAgRFdfT1BfYnJlZzQgPSAweDc0LAogICAg
RFdfT1BfYnJlZzUgPSAweDc1LAogICAgRFdfT1BfYnJlZzYgPSAweDc2LAogICAgRFdfT1BfYnJl
ZzcgPSAweDc3LAogICAgRFdfT1BfYnJlZzggPSAweDc4LAogICAgRFdfT1BfYnJlZzkgPSAweDc5
LAogICAgRFdfT1BfYnJlZzEwID0gMHg3YSwKICAgIERXX09QX2JyZWcxMSA9IDB4N2IsCiAgICBE
V19PUF9icmVnMTIgPSAweDdjLAogICAgRFdfT1BfYnJlZzEzID0gMHg3ZCwKICAgIERXX09QX2Jy
ZWcxNCA9IDB4N2UsCiAgICBEV19PUF9icmVnMTUgPSAweDdmLAogICAgRFdfT1BfYnJlZzE2ID0g
MHg4MCwKICAgIERXX09QX2JyZWcxNyA9IDB4ODEsCiAgICBEV19PUF9icmVnMTggPSAweDgyLAog
ICAgRFdfT1BfYnJlZzE5ID0gMHg4MywKICAgIERXX09QX2JyZWcyMCA9IDB4ODQsCiAgICBEV19P
UF9icmVnMjEgPSAweDg1LAogICAgRFdfT1BfYnJlZzIyID0gMHg4NiwKICAgIERXX09QX2JyZWcy
MyA9IDB4ODcsCiAgICBEV19PUF9icmVnMjQgPSAweDg4LAogICAgRFdfT1BfYnJlZzI1ID0gMHg4
OSwKICAgIERXX09QX2JyZWcyNiA9IDB4OGEsCiAgICBEV19PUF9icmVnMjcgPSAweDhiLAogICAg
RFdfT1BfYnJlZzI4ID0gMHg4YywKICAgIERXX09QX2JyZWcyOSA9IDB4OGQsCiAgICBEV19PUF9i
cmVnMzAgPSAweDhlLAogICAgRFdfT1BfYnJlZzMxID0gMHg4ZiwKICAgIERXX09QX3JlZ3ggPSAw
eDkwLAogICAgRFdfT1BfZmJyZWcgPSAweDkxLAogICAgRFdfT1BfYnJlZ3ggPSAweDkyLAogICAg
RFdfT1BfcGllY2UgPSAweDkzLAogICAgRFdfT1BfZGVyZWZfc2l6ZSA9IDB4OTQsCiAgICBEV19P
UF94ZGVyZWZfc2l6ZSA9IDB4OTUsCiAgICBEV19PUF9ub3AgPSAweDk2LAoKICAgIERXX09QX3B1
c2hfb2JqZWN0X2FkZHJlc3MgPSAweDk3LAogICAgRFdfT1BfY2FsbDIgPSAweDk4LAogICAgRFdf
T1BfY2FsbDQgPSAweDk5LAogICAgRFdfT1BfY2FsbF9yZWYgPSAweDlhLAoKICAgIERXX09QX0dO
VV9wdXNoX3Rsc19hZGRyZXNzID0gMHhlMAogIH07CgoKCgoKZW51bSBkd2FyZl90eXBlCiAgewog
ICAgRFdfQVRFX3ZvaWQgPSAweDAsCiAgICBEV19BVEVfYWRkcmVzcyA9IDB4MSwKICAgIERXX0FU
RV9ib29sZWFuID0gMHgyLAogICAgRFdfQVRFX2NvbXBsZXhfZmxvYXQgPSAweDMsCiAgICBEV19B
VEVfZmxvYXQgPSAweDQsCiAgICBEV19BVEVfc2lnbmVkID0gMHg1LAogICAgRFdfQVRFX3NpZ25l
ZF9jaGFyID0gMHg2LAogICAgRFdfQVRFX3Vuc2lnbmVkID0gMHg3LAogICAgRFdfQVRFX3Vuc2ln
bmVkX2NoYXIgPSAweDgsCgogICAgRFdfQVRFX2ltYWdpbmFyeV9mbG9hdCA9IDB4OQogIH07CgoK
CgoKZW51bSBkd2FyZl9hcnJheV9kaW1fb3JkZXJpbmcKICB7CiAgICBEV19PUkRfcm93X21ham9y
ID0gMCwKICAgIERXX09SRF9jb2xfbWFqb3IgPSAxCiAgfTsKCgplbnVtIGR3YXJmX2FjY2Vzc19h
dHRyaWJ1dGUKICB7CiAgICBEV19BQ0NFU1NfcHVibGljID0gMSwKICAgIERXX0FDQ0VTU19wcm90
ZWN0ZWQgPSAyLAogICAgRFdfQUNDRVNTX3ByaXZhdGUgPSAzCiAgfTsKCgplbnVtIGR3YXJmX3Zp
c2liaWxpdHlfYXR0cmlidXRlCiAgewogICAgRFdfVklTX2xvY2FsID0gMSwKICAgIERXX1ZJU19l
eHBvcnRlZCA9IDIsCiAgICBEV19WSVNfcXVhbGlmaWVkID0gMwogIH07CgoKZW51bSBkd2FyZl92
aXJ0dWFsaXR5X2F0dHJpYnV0ZQogIHsKICAgIERXX1ZJUlRVQUxJVFlfbm9uZSA9IDAsCiAgICBE
V19WSVJUVUFMSVRZX3ZpcnR1YWwgPSAxLAogICAgRFdfVklSVFVBTElUWV9wdXJlX3ZpcnR1YWwg
PSAyCiAgfTsKCgplbnVtIGR3YXJmX2lkX2Nhc2UKICB7CiAgICBEV19JRF9jYXNlX3NlbnNpdGl2
ZSA9IDAsCiAgICBEV19JRF91cF9jYXNlID0gMSwKICAgIERXX0lEX2Rvd25fY2FzZSA9IDIsCiAg
ICBEV19JRF9jYXNlX2luc2Vuc2l0aXZlID0gMwogIH07CgoKZW51bSBkd2FyZl9jYWxsaW5nX2Nv
bnZlbnRpb24KICB7CiAgICBEV19DQ19ub3JtYWwgPSAweDEsCiAgICBEV19DQ19wcm9ncmFtID0g
MHgyLAogICAgRFdfQ0Nfbm9jYWxsID0gMHgzCiAgfTsKCgoKCgplbnVtIGR3YXJmX2lubGluZV9h
dHRyaWJ1dGUKICB7CiAgICBEV19JTkxfbm90X2lubGluZWQgPSAwLAogICAgRFdfSU5MX2lubGlu
ZWQgPSAxLAogICAgRFdfSU5MX2RlY2xhcmVkX25vdF9pbmxpbmVkID0gMiwKICAgIERXX0lOTF9k
ZWNsYXJlZF9pbmxpbmVkID0gMwogIH07CgoKZW51bSBkd2FyZl9kaXNjcmltX2xpc3QKICB7CiAg
ICBEV19EU0NfbGFiZWwgPSAwLAogICAgRFdfRFNDX3JhbmdlID0gMQogIH07CgoKZW51bSBkd2Fy
Zl9saW5lX251bWJlcl9vcHMKICB7CiAgICBEV19MTlNfZXh0ZW5kZWRfb3AgPSAwLAogICAgRFdf
TE5TX2NvcHkgPSAxLAogICAgRFdfTE5TX2FkdmFuY2VfcGMgPSAyLAogICAgRFdfTE5TX2FkdmFu
Y2VfbGluZSA9IDMsCiAgICBEV19MTlNfc2V0X2ZpbGUgPSA0LAogICAgRFdfTE5TX3NldF9jb2x1
bW4gPSA1LAogICAgRFdfTE5TX25lZ2F0ZV9zdG10ID0gNiwKICAgIERXX0xOU19zZXRfYmFzaWNf
YmxvY2sgPSA3LAogICAgRFdfTE5TX2NvbnN0X2FkZF9wYyA9IDgsCiAgICBEV19MTlNfZml4ZWRf
YWR2YW5jZV9wYyA9IDksCgogICAgRFdfTE5TX3NldF9wcm9sb2d1ZV9lbmQgPSAxMCwKICAgIERX
X0xOU19zZXRfZXBpbG9ndWVfYmVnaW4gPSAxMSwKICAgIERXX0xOU19zZXRfaXNhID0gMTIKICB9
OwoKCmVudW0gZHdhcmZfbGluZV9udW1iZXJfeF9vcHMKICB7CiAgICBEV19MTkVfZW5kX3NlcXVl
bmNlID0gMSwKICAgIERXX0xORV9zZXRfYWRkcmVzcyA9IDIsCiAgICBEV19MTkVfZGVmaW5lX2Zp
bGUgPSAzCiAgfTsKCgplbnVtIGR3YXJmX2NhbGxfZnJhbWVfaW5mbwogIHsKICAgIERXX0NGQV9h
ZHZhbmNlX2xvYyA9IDB4NDAsCiAgICBEV19DRkFfb2Zmc2V0ID0gMHg4MCwKICAgIERXX0NGQV9y
ZXN0b3JlID0gMHhjMCwKICAgIERXX0NGQV9ub3AgPSAweDAwLAogICAgRFdfQ0ZBX3NldF9sb2Mg
PSAweDAxLAogICAgRFdfQ0ZBX2FkdmFuY2VfbG9jMSA9IDB4MDIsCiAgICBEV19DRkFfYWR2YW5j
ZV9sb2MyID0gMHgwMywKICAgIERXX0NGQV9hZHZhbmNlX2xvYzQgPSAweDA0LAogICAgRFdfQ0ZB
X29mZnNldF9leHRlbmRlZCA9IDB4MDUsCiAgICBEV19DRkFfcmVzdG9yZV9leHRlbmRlZCA9IDB4
MDYsCiAgICBEV19DRkFfdW5kZWZpbmVkID0gMHgwNywKICAgIERXX0NGQV9zYW1lX3ZhbHVlID0g
MHgwOCwKICAgIERXX0NGQV9yZWdpc3RlciA9IDB4MDksCiAgICBEV19DRkFfcmVtZW1iZXJfc3Rh
dGUgPSAweDBhLAogICAgRFdfQ0ZBX3Jlc3RvcmVfc3RhdGUgPSAweDBiLAogICAgRFdfQ0ZBX2Rl
Zl9jZmEgPSAweDBjLAogICAgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIgPSAweDBkLAogICAgRFdf
Q0ZBX2RlZl9jZmFfb2Zmc2V0ID0gMHgwZSwKCgogICAgRFdfQ0ZBX2RlZl9jZmFfZXhwcmVzc2lv
biA9IDB4MGYsCiAgICBEV19DRkFfZXhwcmVzc2lvbiA9IDB4MTAsCiAgICBEV19DRkFfb2Zmc2V0
X2V4dGVuZGVkX3NmID0gMHgxMSwKICAgIERXX0NGQV9kZWZfY2ZhX3NmID0gMHgxMiwKICAgIERX
X0NGQV9kZWZfY2ZhX29mZnNldF9zZiA9IDB4MTMsCgoKICAgIERXX0NGQV9NSVBTX2FkdmFuY2Vf
bG9jOCA9IDB4MWQsCgoKICAgIERXX0NGQV9HTlVfd2luZG93X3NhdmUgPSAweDJkLAogICAgRFdf
Q0ZBX0dOVV9hcmdzX3NpemUgPSAweDJlLAogICAgRFdfQ0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRf
ZXh0ZW5kZWQgPSAweDJmCiAgfTsKIyA2NjkgIi4uL2luY2x1ZGUvZWxmL2R3YXJmMi5oIgplbnVt
IGR3YXJmX3NvdXJjZV9sYW5ndWFnZQogIHsKICAgIERXX0xBTkdfQzg5ID0gMHgwMDAxLAogICAg
RFdfTEFOR19DID0gMHgwMDAyLAogICAgRFdfTEFOR19BZGE4MyA9IDB4MDAwMywKICAgIERXX0xB
TkdfQ19wbHVzX3BsdXMgPSAweDAwMDQsCiAgICBEV19MQU5HX0NvYm9sNzQgPSAweDAwMDUsCiAg
ICBEV19MQU5HX0NvYm9sODUgPSAweDAwMDYsCiAgICBEV19MQU5HX0ZvcnRyYW43NyA9IDB4MDAw
NywKICAgIERXX0xBTkdfRm9ydHJhbjkwID0gMHgwMDA4LAogICAgRFdfTEFOR19QYXNjYWw4MyA9
IDB4MDAwOSwKICAgIERXX0xBTkdfTW9kdWxhMiA9IDB4MDAwYSwKICAgIERXX0xBTkdfSmF2YSA9
IDB4MDAwYiwKCiAgICBEV19MQU5HX0M5OSA9IDB4MDAwYywKICAgIERXX0xBTkdfQWRhOTUgPSAw
eDAwMGQsCiAgICBEV19MQU5HX0ZvcnRyYW45NSA9IDB4MDAwZSwKCiAgICBEV19MQU5HX01pcHNf
QXNzZW1ibGVyID0gMHg4MDAxLAoKICAgIERXX0xBTkdfVXBjID0gMHg4NzY1CiAgfTsKCgoKCgpl
bnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUKICB7CiAgICBEV19NQUNJTkZPX2RlZmluZSA9
IDEsCiAgICBEV19NQUNJTkZPX3VuZGVmID0gMiwKICAgIERXX01BQ0lORk9fc3RhcnRfZmlsZSA9
IDMsCiAgICBEV19NQUNJTkZPX2VuZF9maWxlID0gNCwKICAgIERXX01BQ0lORk9fdmVuZG9yX2V4
dCA9IDI1NQogIH07CiMgNDUgInJlYWRlbGYuYyIgMgoKCgoKCgoKIyAxICIuLi9pbmNsdWRlL2Vs
Zi9hbHBoYS5oIiAxCiMgNTEgIi4uL2luY2x1ZGUvZWxmL2FscGhhLmgiCnR5cGVkZWYgc3RydWN0
CnsKCiAgdW5zaWduZWQgbG9uZyByaV9ncHJtYXNrOwoKICB1bnNpZ25lZCBsb25nIHJpX2Nwcm1h
c2tbNF07CgogIGxvbmcgcmlfZ3BfdmFsdWU7Cn0gRWxmNjRfUmVnSW5mbzsKCgoKCgoKIyAxICIu
Li9pbmNsdWRlL2VsZi9yZWxvYy1tYWNyb3MuaCIgMQojIDY3ICIuLi9pbmNsdWRlL2VsZi9hbHBo
YS5oIiAyCgoKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfYWxwaGFfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FscGhhX3JlbG9jX3R5cGUg
KHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAg
OiByZXR1cm4gIlJfQUxQSEFfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9BTFBIQV9SRUZM
T05HIiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0FMUEhBX1JFRlFVQUQiIDsKICBjYXNlIDMgOiBy
ZXR1cm4gIlJfQUxQSEFfR1BSRUwzMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9BTFBIQV9MSVRF
UkFMIiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX0FMUEhBX0xJVFVTRSIgOwogIGNhc2UgNiA6IHJl
dHVybiAiUl9BTFBIQV9HUERJU1AiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfQUxQSEFfQlJBRERS
IiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX0FMUEhBX0hJTlQiIDsKICBjYXNlIDkgOiByZXR1cm4g
IlJfQUxQSEFfU1JFTDE2IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9BTFBIQV9TUkVMMzIiIDsK
ICBjYXNlIDExIDogcmV0dXJuICJSX0FMUEhBX1NSRUw2NCIgOwoKCgogIGNhc2UgMTcgOiByZXR1
cm4gIlJfQUxQSEFfR1BSRUxISUdIIiA7CiAgY2FzZSAxOCA6IHJldHVybiAiUl9BTFBIQV9HUFJF
TExPVyIgOwogIGNhc2UgMTkgOiByZXR1cm4gIlJfQUxQSEFfR1BSRUwxNiIgOwoKCgoKICBjYXNl
IDI0IDogcmV0dXJuICJSX0FMUEhBX0NPUFkiIDsKICBjYXNlIDI1IDogcmV0dXJuICJSX0FMUEhB
X0dMT0JfREFUIiA7CiAgY2FzZSAyNiA6IHJldHVybiAiUl9BTFBIQV9KTVBfU0xPVCIgOwogIGNh
c2UgMjcgOiByZXR1cm4gIlJfQUxQSEFfUkVMQVRJVkUiIDsKCgoKCiAgY2FzZSAyOCA6IHJldHVy
biAiUl9BTFBIQV9CUlNHUCIgOwoKCiAgY2FzZSAyOSA6IHJldHVybiAiUl9BTFBIQV9UTFNHRCIg
OwogIGNhc2UgMzAgOiByZXR1cm4gIlJfQUxQSEFfVExTTERNIiA7CiAgY2FzZSAzMSA6IHJldHVy
biAiUl9BTFBIQV9EVFBNT0Q2NCIgOwogIGNhc2UgMzIgOiByZXR1cm4gIlJfQUxQSEFfR09URFRQ
UkVMIiA7CiAgY2FzZSAzMyA6IHJldHVybiAiUl9BTFBIQV9EVFBSRUw2NCIgOwogIGNhc2UgMzQg
OiByZXR1cm4gIlJfQUxQSEFfRFRQUkVMSEkiIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX0FMUEhB
X0RUUFJFTExPIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9BTFBIQV9EVFBSRUwxNiIgOwogIGNh
c2UgMzcgOiByZXR1cm4gIlJfQUxQSEFfR09UVFBSRUwiIDsKICBjYXNlIDM4IDogcmV0dXJuICJS
X0FMUEhBX1RQUkVMNjQiIDsKICBjYXNlIDM5IDogcmV0dXJuICJSX0FMUEhBX1RQUkVMSEkiIDsK
ICBjYXNlIDQwIDogcmV0dXJuICJSX0FMUEhBX1RQUkVMTE8iIDsKICBjYXNlIDQxIDogcmV0dXJu
ICJSX0FMUEhBX1RQUkVMMTYiIDsKCmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NTMgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2FyYy5oIiAxCiMgMzAgIi4uL2lu
Y2x1ZGUvZWxmL2FyYy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9hcmNfcmVsb2NfdHlwZSAo
dW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FyY19yZWxvY190
eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2Fz
ZSAwIDogcmV0dXJuICJSX0FSQ19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0FSQ18zMiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9BUkNfQjI2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0FS
Q19CMjJfUENSRUwiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA1NCAicmVh
ZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvYXJtLmgiIDEKIyA3MyAiLi4vaW5jbHVkZS9l
bGYvYXJtLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2FybV9yZWxvY190eXBlICh1bnNpZ25l
ZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfYXJtX3JlbG9jX3R5cGUgKHJ0
eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiBy
ZXR1cm4gIlJfQVJNX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfQVJNX1BDMjQiIDsKICBj
YXNlIDIgOiByZXR1cm4gIlJfQVJNX0FCUzMyIiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0FSTV9S
RUwzMiIgOwojIDkxICIuLi9pbmNsdWRlL2VsZi9hcm0uaCIKICBjYXNlIDQgOiByZXR1cm4gIlJf
QVJNX1BDMTMiIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfQVJNX0FCUzE2IiA7CiAgY2FzZSA2IDog
cmV0dXJuICJSX0FSTV9BQlMxMiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9BUk1fVEhNX0FCUzUi
IDsKICBjYXNlIDggOiByZXR1cm4gIlJfQVJNX0FCUzgiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJf
QVJNX1NCUkVMMzIiIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0FSTV9USE1fUEMyMiIgOwogIGNh
c2UgMTEgOiByZXR1cm4gIlJfQVJNX1RITV9QQzgiIDsKICBjYXNlIDEyIDogcmV0dXJuICJSX0FS
TV9BTVBfVkNBTEw5IiA7CiAgY2FzZSAxMyA6IHJldHVybiAiUl9BUk1fU1dJMjQiIDsKICBjYXNl
IDE0IDogcmV0dXJuICJSX0FSTV9USE1fU1dJOCIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfQVJN
X1hQQzI1IiA7CiAgY2FzZSAxNiA6IHJldHVybiAiUl9BUk1fVEhNX1hQQzIyIiA7CgogIGNhc2Ug
MjAgOiByZXR1cm4gIlJfQVJNX0NPUFkiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX0FSTV9HTE9C
X0RBVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJfQVJNX0pVTVBfU0xPVCIgOwogIGNhc2UgMjMg
OiByZXR1cm4gIlJfQVJNX1JFTEFUSVZFIiA7CiAgY2FzZSAyNCA6IHJldHVybiAiUl9BUk1fR09U
T0ZGIiA7CiAgY2FzZSAyNSA6IHJldHVybiAiUl9BUk1fR09UUEMiIDsKICBjYXNlIDI2IDogcmV0
dXJuICJSX0FSTV9HT1QzMiIgOwogIGNhc2UgMjcgOiByZXR1cm4gIlJfQVJNX1BMVDMyIiA7CgoK
CgogCiAKICBjYXNlIDMyIDogcmV0dXJuICJSX0FSTV9BTFVfUENSRUw3XzAiIDsKICBjYXNlIDMz
IDogcmV0dXJuICJSX0FSTV9BTFVfUENSRUwxNV84IiA7CiAgY2FzZSAzNCA6IHJldHVybiAiUl9B
Uk1fQUxVX1BDUkVMMjNfMTUiIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX0FSTV9MRFJfU0JSRUwx
MV8wIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9BUk1fQUxVX1NCUkVMMTlfMTIiIDsKICBjYXNl
IDM3IDogcmV0dXJuICJSX0FSTV9BTFVfU0JSRUwyN18yMCIgOwogCiAKICBjYXNlIDEwMCA6IHJl
dHVybiAiUl9BUk1fR05VX1ZURU5UUlkiIDsKICBjYXNlIDEwMSA6IHJldHVybiAiUl9BUk1fR05V
X1ZUSU5IRVJJVCIgOwogIGNhc2UgMTAyIDogcmV0dXJuICJSX0FSTV9USE1fUEMxMSIgOwogIGNh
c2UgMTAzIDogcmV0dXJuICJSX0FSTV9USE1fUEM5IiA7CiAKIAogIGNhc2UgMjQ5IDogcmV0dXJu
ICJSX0FSTV9SWFBDMjUiIDsKCiAgY2FzZSAyNTAgOiByZXR1cm4gIlJfQVJNX1JTQlJFTDMyIiA7
CiAgY2FzZSAyNTEgOiByZXR1cm4gIlJfQVJNX1RITV9SUEMyMiIgOwogIGNhc2UgMjUyIDogcmV0
dXJuICJSX0FSTV9SUkVMMzIiIDsKICBjYXNlIDI1MyA6IHJldHVybiAiUl9BUk1fUkFCUzMyIiA7
CiAgY2FzZSAyNTQgOiByZXR1cm4gIlJfQVJNX1JQQzI0IiA7CiAgY2FzZSAyNTUgOiByZXR1cm4g
IlJfQVJNX1JCQVNFIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNTUgInJl
YWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2F2ci5oIiAxCiMgMzYgIi4uL2luY2x1ZGUv
ZWxmL2F2ci5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9hdnJfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2F2cl9yZWxvY190eXBlIChy
dHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgICAgY2FzZSAw
IDogcmV0dXJuICJSX0FWUl9OT05FIiA7CiAgICAgY2FzZSAxIDogcmV0dXJuICJSX0FWUl8zMiIg
OwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9BVlJfN19QQ1JFTCIgOwogICAgIGNhc2UgMyA6IHJl
dHVybiAiUl9BVlJfMTNfUENSRUwiIDsKICAgICBjYXNlIDQgOiByZXR1cm4gIlJfQVZSXzE2IiA7
CiAgICAgY2FzZSA1IDogcmV0dXJuICJSX0FWUl8xNl9QTSIgOwogICAgIGNhc2UgNiA6IHJldHVy
biAiUl9BVlJfTE84X0xESSIgOwogICAgIGNhc2UgNyA6IHJldHVybiAiUl9BVlJfSEk4X0xESSIg
OwogICAgIGNhc2UgOCA6IHJldHVybiAiUl9BVlJfSEg4X0xESSIgOwogICAgIGNhc2UgOSA6IHJl
dHVybiAiUl9BVlJfTE84X0xESV9ORUciIDsKICAgICBjYXNlIDEwIDogcmV0dXJuICJSX0FWUl9I
SThfTERJX05FRyIgOwogICAgIGNhc2UgMTEgOiByZXR1cm4gIlJfQVZSX0hIOF9MRElfTkVHIiA7
CiAgICAgY2FzZSAxMiA6IHJldHVybiAiUl9BVlJfTE84X0xESV9QTSIgOwogICAgIGNhc2UgMTMg
OiByZXR1cm4gIlJfQVZSX0hJOF9MRElfUE0iIDsKICAgICBjYXNlIDE0IDogcmV0dXJuICJSX0FW
Ul9ISDhfTERJX1BNIiA7CiAgICAgY2FzZSAxNSA6IHJldHVybiAiUl9BVlJfTE84X0xESV9QTV9O
RUciIDsKICAgICBjYXNlIDE2IDogcmV0dXJuICJSX0FWUl9ISThfTERJX1BNX05FRyIgOwogICAg
IGNhc2UgMTcgOiByZXR1cm4gIlJfQVZSX0hIOF9MRElfUE1fTkVHIiA7CiAgICAgY2FzZSAxOCA6
IHJldHVybiAiUl9BVlJfQ0FMTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQoj
IDU2ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9jcmlzLmgiIDEKIyAyOCAiLi4v
aW5jbHVkZS9lbGYvY3Jpcy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9jcmlzX3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9jcmlzX3Jl
bG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsK
ICBjYXNlIDAgOiByZXR1cm4gIlJfQ1JJU19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0NS
SVNfOCIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9DUklTXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJu
ICJSX0NSSVNfMzIiIDsKCgogIGNhc2UgNCA6IHJldHVybiAiUl9DUklTXzhfUENSRUwiIDsKICBj
YXNlIDUgOiByZXR1cm4gIlJfQ1JJU18xNl9QQ1JFTCIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9D
UklTXzMyX1BDUkVMIiA7CgogIGNhc2UgNyA6IHJldHVybiAiUl9DUklTX0dOVV9WVElOSEVSSVQi
IDsKICBjYXNlIDggOiByZXR1cm4gIlJfQ1JJU19HTlVfVlRFTlRSWSIgOwoKCgogIGNhc2UgOSA6
IHJldHVybiAiUl9DUklTX0NPUFkiIDsKCgoKICBjYXNlIDEwIDogcmV0dXJuICJSX0NSSVNfR0xP
Ql9EQVQiIDsKCgoKICBjYXNlIDExIDogcmV0dXJuICJSX0NSSVNfSlVNUF9TTE9UIiA7CgoKCiAg
Y2FzZSAxMiA6IHJldHVybiAiUl9DUklTX1JFTEFUSVZFIiA7CgoKCgogIGNhc2UgMTMgOiByZXR1
cm4gIlJfQ1JJU18xNl9HT1QiIDsKCgoKCiAgY2FzZSAxNCA6IHJldHVybiAiUl9DUklTXzMyX0dP
VCIgOwoKCgoKICBjYXNlIDE1IDogcmV0dXJuICJSX0NSSVNfMTZfR09UUExUIiA7CgoKCgogIGNh
c2UgMTYgOiByZXR1cm4gIlJfQ1JJU18zMl9HT1RQTFQiIDsKCgoKCiAgY2FzZSAxNyA6IHJldHVy
biAiUl9DUklTXzMyX0dPVFJFTCIgOwoKCgoKICBjYXNlIDE4IDogcmV0dXJuICJSX0NSSVNfMzJf
UExUX0dPVFJFTCIgOwoKCgoKCiAgY2FzZSAxOSA6IHJldHVybiAiUl9DUklTXzMyX1BMVF9QQ1JF
TCIgOwoKCgpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDU3ICJyZWFkZWxmLmMi
IDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kMTB2LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYvZDEw
di5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMTB2X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxv
bmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMTB2X3JlbG9jX3R5cGUgKHJ0eXBl
KSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1
cm4gIlJfRDEwVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0QxMFZfMTBfUENSRUxfUiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9EMTBWXzEwX1BDUkVMX0wiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfRDEwVl8xNiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9EMTBWXzE4IiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX0QxMFZfMThfUENSRUwiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfRDEwVl8z
MiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9EMTBWX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDgg
OiByZXR1cm4gIlJfRDEwVl9HTlVfVlRFTlRSWSIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICop
MCk7IH0gfQojIDU4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kMzB2LmgiIDEK
IyAyNiAiLi4vaW5jbHVkZS9lbGYvZDMwdi5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kMzB2
X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9kMzB2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfRDMwVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0
dXJuICJSX0QzMFZfNiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9EMzBWXzlfUENSRUwiIDsKICBj
YXNlIDMgOiByZXR1cm4gIlJfRDMwVl85X1BDUkVMX1IiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJf
RDMwVl8xNSIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9EMzBWXzE1X1BDUkVMIiA7CiAgY2FzZSA2
IDogcmV0dXJuICJSX0QzMFZfMTVfUENSRUxfUiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9EMzBW
XzIxIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX0QzMFZfMjFfUENSRUwiIDsKICBjYXNlIDkgOiBy
ZXR1cm4gIlJfRDMwVl8yMV9QQ1JFTF9SIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9EMzBWXzMy
IiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl9EMzBWXzMyX1BDUkVMIiA7CiAgY2FzZSAxMiA6IHJl
dHVybiAiUl9EMzBWXzMyX05PUk1BTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0g
fQojIDU5ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9kbHguaCIgMQojIDM5ICIu
Li9pbmNsdWRlL2VsZi9kbHguaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZGx4X3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9kbHhfcmVs
b2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewog
ICAgIGNhc2UgMCA6IHJldHVybiAiUl9ETFhfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAi
Ul9ETFhfUkVMT0NfOCIgOwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9ETFhfUkVMT0NfMTYiIDsK
ICAgICBjYXNlIDMgOiByZXR1cm4gIlJfRExYX1JFTE9DXzMyIiA7CiAgICAgY2FzZSA0IDogcmV0
dXJuICJSX0RMWF9HTlVfVlRJTkhFUklUIiA7CiAgICAgY2FzZSA1IDogcmV0dXJuICJSX0RMWF9H
TlVfVlRFTlRSWSIgOwogICAgIGNhc2UgNiA6IHJldHVybiAiUl9ETFhfUkVMT0NfMTZfSEkiIDsK
ICAgICBjYXNlIDcgOiByZXR1cm4gIlJfRExYX1JFTE9DXzE2X0xPIiA7CiAgICAgY2FzZSA4IDog
cmV0dXJuICJSX0RMWF9SRUxPQ18xNl9QQ1JFTCIgOwogICAgIGNhc2UgOSA6IHJldHVybiAiUl9E
TFhfUkVMT0NfMjZfUENSRUwiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2
MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvZnIzMC5oIiAxCiMgMjYgIi4uL2lu
Y2x1ZGUvZWxmL2ZyMzAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZnIzMF9yZWxvY190eXBl
ICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfZnIzMF9yZWxv
Y190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAg
Y2FzZSAwIDogcmV0dXJuICJSX0ZSMzBfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9GUjMw
XzgiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfRlIzMF8yMCIgOwogIGNhc2UgMyA6IHJldHVybiAi
Ul9GUjMwXzMyIiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0ZSMzBfNDgiIDsKICBjYXNlIDUgOiBy
ZXR1cm4gIlJfRlIzMF82X0lOXzQiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfRlIzMF84X0lOXzgi
IDsKICBjYXNlIDcgOiByZXR1cm4gIlJfRlIzMF85X0lOXzgiIDsKICBjYXNlIDggOiByZXR1cm4g
IlJfRlIzMF8xMF9JTl84IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX0ZSMzBfOV9QQ1JFTCIgOwog
IGNhc2UgMTAgOiByZXR1cm4gIlJfRlIzMF8xMl9QQ1JFTCIgOwogIGNhc2UgMTEgOiByZXR1cm4g
IlJfRlIzMF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9GUjMwX0dOVV9W
VEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNjEgInJlYWRlbGYu
YyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2Zydi5oIiAxCiMgMjYgIi4uL2luY2x1ZGUvZWxmL2Zy
di5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9mcnZfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2Zydl9yZWxvY190eXBlIChydHlwZSkg
dW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJu
ICJSX0ZSVl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0ZSVl8zMiIgOwogIGNhc2UgMiA6
IHJldHVybiAiUl9GUlZfTEFCRUwxNiIgOwogIGNhc2UgMyA6IHJldHVybiAiUl9GUlZfTEFCRUwy
NCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9GUlZfTE8xNiIgOwogIGNhc2UgNSA6IHJldHVybiAi
Ul9GUlZfSEkxNiIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9GUlZfR1BSRUwxMiIgOwogIGNhc2Ug
NyA6IHJldHVybiAiUl9GUlZfR1BSRUxVMTIiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfRlJWX0dQ
UkVMMzIiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfRlJWX0dQUkVMSEkiIDsKICBjYXNlIDEwIDog
cmV0dXJuICJSX0ZSVl9HUFJFTExPIiA7CiAgY2FzZSAyMDAgOiByZXR1cm4gIlJfRlJWX0dOVV9W
VElOSEVSSVQiIDsKICBjYXNlIDIwMSA6IHJldHVybiAiUl9GUlZfR05VX1ZURU5UUlkiIDsKZGVm
YXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2MiAicmVhZGVsZi5jIiAyCiMgMSAiLi4v
aW5jbHVkZS9lbGYvaDguaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi9oOC5oIgpzdGF0aWMgY29u
c3QgY2hhciAqIGVsZl9oOF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfaDhfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5
cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVybiAiUl9IOF9OT05FIiA7CiAg
Y2FzZSAxIDogcmV0dXJuICJSX0g4X0RJUjMyIiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0g4X0RJ
UjMyXzI4IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX0g4X0RJUjMyXzI0IiA7CiAgY2FzZSA0IDog
cmV0dXJuICJSX0g4X0RJUjMyXzE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX0g4X0RJUjMyVSIg
OwogIGNhc2UgNyA6IHJldHVybiAiUl9IOF9ESVIzMlVfMjgiIDsKICBjYXNlIDggOiByZXR1cm4g
IlJfSDhfRElSMzJVXzI0IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX0g4X0RJUjMyVV8yMCIgOwog
IGNhc2UgMTAgOiByZXR1cm4gIlJfSDhfRElSMzJVXzE2IiA7CiAgY2FzZSAxMSA6IHJldHVybiAi
Ul9IOF9ESVIyNCIgOwogIGNhc2UgMTIgOiByZXR1cm4gIlJfSDhfRElSMjRfMjAiIDsKICBjYXNl
IDEzIDogcmV0dXJuICJSX0g4X0RJUjI0XzE2IiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9IOF9E
SVIyNFUiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX0g4X0RJUjI0VV8yMCIgOwogIGNhc2UgMTYg
OiByZXR1cm4gIlJfSDhfRElSMjRVXzE2IiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9IOF9ESVIx
NiIgOwogIGNhc2UgMTggOiByZXR1cm4gIlJfSDhfRElSMTZVIiA7CiAgY2FzZSAxOSA6IHJldHVy
biAiUl9IOF9ESVIxNlNfMzIiIDsKICBjYXNlIDIwIDogcmV0dXJuICJSX0g4X0RJUjE2U18yOCIg
OwogIGNhc2UgMjEgOiByZXR1cm4gIlJfSDhfRElSMTZTXzI0IiA7CiAgY2FzZSAyMiA6IHJldHVy
biAiUl9IOF9ESVIxNlNfMjAiIDsKICBjYXNlIDIzIDogcmV0dXJuICJSX0g4X0RJUjE2UyIgOwog
IGNhc2UgMjQgOiByZXR1cm4gIlJfSDhfRElSOCIgOwogIGNhc2UgMjUgOiByZXR1cm4gIlJfSDhf
RElSOFUiIDsKICBjYXNlIDI2IDogcmV0dXJuICJSX0g4X0RJUjhaXzMyIiA7CiAgY2FzZSAyNyA6
IHJldHVybiAiUl9IOF9ESVI4Wl8yOCIgOwogIGNhc2UgMjggOiByZXR1cm4gIlJfSDhfRElSOFpf
MjQiIDsKICBjYXNlIDI5IDogcmV0dXJuICJSX0g4X0RJUjhaXzIwIiA7CiAgY2FzZSAzMCA6IHJl
dHVybiAiUl9IOF9ESVI4Wl8xNiIgOwogIGNhc2UgMzEgOiByZXR1cm4gIlJfSDhfUENSRUwxNiIg
OwogIGNhc2UgMzIgOiByZXR1cm4gIlJfSDhfUENSRUw4IiA7CiAgY2FzZSAzMyA6IHJldHVybiAi
Ul9IOF9CUE9TIiA7CiAKIAogIGNhc2UgNTkgOiByZXR1cm4gIlJfSDhfRElSMTZBOCIgOwogIGNh
c2UgNjAgOiByZXR1cm4gIlJfSDhfRElSMTZSOCIgOwogIGNhc2UgNjEgOiByZXR1cm4gIlJfSDhf
RElSMjRBOCIgOwogIGNhc2UgNjIgOiByZXR1cm4gIlJfSDhfRElSMjRSOCIgOwogIGNhc2UgNjMg
OiByZXR1cm4gIlJfSDhfRElSMzJBMTYiIDsKICBjYXNlIDY1IDogcmV0dXJuICJSX0g4X0FCUzMy
IiA7CiAgY2FzZSAxMjcgOiByZXR1cm4gIlJfSDhfQUJTMzJBMTYiIDsKICBjYXNlIDEyOCA6IHJl
dHVybiAiUl9IOF9TWU0iIDsKICBjYXNlIDEyOSA6IHJldHVybiAiUl9IOF9PUG5lZyIgOwogIGNh
c2UgMTMwIDogcmV0dXJuICJSX0g4X09QYWRkIiA7CiAgY2FzZSAxMzEgOiByZXR1cm4gIlJfSDhf
T1BzdWIiIDsKICBjYXNlIDEzMiA6IHJldHVybiAiUl9IOF9PUG11bCIgOwogIGNhc2UgMTMzIDog
cmV0dXJuICJSX0g4X09QZGl2IiA7CiAgY2FzZSAxMzQgOiByZXR1cm4gIlJfSDhfT1BzaGxhIiA7
CiAgY2FzZSAxMzUgOiByZXR1cm4gIlJfSDhfT1BzaHJhIiA7CiAgY2FzZSAxMzYgOiByZXR1cm4g
IlJfSDhfT1BzY3RzaXplIiA7CiAgY2FzZSAxMzcgOiByZXR1cm4gIlJfSDhfT1Bod29yZCIgOwog
IGNhc2UgMTM4IDogcmV0dXJuICJSX0g4X09QbHdvcmQiIDsKICBjYXNlIDEzOSA6IHJldHVybiAi
Ul9IOF9PUGhpZ2giIDsKICBjYXNlIDE0MCA6IHJldHVybiAiUl9IOF9PUGxvdyIgOwogIGNhc2Ug
MTQxIDogcmV0dXJuICJSX0g4X09Qc2N0dG9wIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikw
KTsgfSB9CiMgNjMgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2hwcGEuaCIgMQoj
IDEwNSAiLi4vaW5jbHVkZS9lbGYvaHBwYS5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9ocHBh
X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9ocHBhX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKY2FzZSAwIDogcmV0dXJuICJSX1BBUklTQ19OT05FIiA7CgoKCmNhc2UgMSA6IHJl
dHVybiAiUl9QQVJJU0NfRElSMzIiIDsKCgpjYXNlIDIgOiByZXR1cm4gIlJfUEFSSVNDX0RJUjIx
TCIgOwoKCmNhc2UgMyA6IHJldHVybiAiUl9QQVJJU0NfRElSMTdSIiA7CgoKY2FzZSA0IDogcmV0
dXJuICJSX1BBUklTQ19ESVIxN0YiIDsKCgpjYXNlIDYgOiByZXR1cm4gIlJfUEFSSVNDX0RJUjE0
UiIgOwoKCmNhc2UgNyA6IHJldHVybiAiUl9QQVJJU0NfRElSMTRGIiA7CiMgMTQyICIuLi9pbmNs
dWRlL2VsZi9ocHBhLmgiCmNhc2UgOCA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxMkYiIDsKCgpj
YXNlIDkgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMzIiIDsKCgpjYXNlIDEwIDogcmV0dXJuICJS
X1BBUklTQ19QQ1JFTDIxTCIgOwoKCmNhc2UgMTEgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMTdS
IiA7CgoKY2FzZSAxMiA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxN0YiIDsKCgpjYXNlIDEzIDog
cmV0dXJuICJSX1BBUklTQ19QQ1JFTDE3QyIgOwoKCmNhc2UgMTQgOiByZXR1cm4gIlJfUEFSSVND
X1BDUkVMMTRSIiA7CgoKY2FzZSAxNSA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxNEYiIDsKCgoK
CmNhc2UgMTggOiByZXR1cm4gIlJfUEFSSVNDX0RQUkVMMjFMIiA7CgoKY2FzZSAxOSA6IHJldHVy
biAiUl9QQVJJU0NfRFBSRUwxNFdSIiA7CgoKY2FzZSAyMCA6IHJldHVybiAiUl9QQVJJU0NfRFBS
RUwxNERSIiA7CgoKY2FzZSAyMiA6IHJldHVybiAiUl9QQVJJU0NfRFBSRUwxNFIiIDsKCgpjYXNl
IDIzIDogcmV0dXJuICJSX1BBUklTQ19EUFJFTDE0RiIgOwojIDE5MCAiLi4vaW5jbHVkZS9lbGYv
aHBwYS5oIgpjYXNlIDI2IDogcmV0dXJuICJSX1BBUklTQ19ETFRSRUwyMUwiIDsKCgpjYXNlIDMw
IDogcmV0dXJuICJSX1BBUklTQ19ETFRSRUwxNFIiIDsKCgpjYXNlIDMxIDogcmV0dXJuICJSX1BB
UklTQ19ETFRSRUwxNEYiIDsKCgoKCmNhc2UgMzQgOiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDIx
TCIgOwoKCmNhc2UgMzggOiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDE0UiIgOwoKCmNhc2UgMzkg
OiByZXR1cm4gIlJfUEFSSVNDX0RMVElORDE0RiIgOwoKCgoKY2FzZSA0MCA6IHJldHVybiAiUl9Q
QVJJU0NfU0VUQkFTRSIgOwoKCmNhc2UgNDEgOiByZXR1cm4gIlJfUEFSSVNDX1NFQ1JFTDMyIiA7
CgoKY2FzZSA0MiA6IHJldHVybiAiUl9QQVJJU0NfQkFTRVJFTDIxTCIgOwoKCmNhc2UgNDMgOiBy
ZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxN1IiIDsKCgpjYXNlIDQ0IDogcmV0dXJuICJSX1BBUklT
Q19CQVNFUkVMMTdGIiA7CgoKY2FzZSA0NiA6IHJldHVybiAiUl9QQVJJU0NfQkFTRVJFTDE0UiIg
OwoKCmNhc2UgNDcgOiByZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxNEYiIDsKCgoKCmNhc2UgNDgg
OiByZXR1cm4gIlJfUEFSSVNDX1NFR0JBU0UiIDsKCgpjYXNlIDQ5IDogcmV0dXJuICJSX1BBUklT
Q19TRUdSRUwzMiIgOwoKCgoKY2FzZSA1MCA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMjFMIiA7
CgoKY2FzZSA1NCA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTRSIiA7CgoKY2FzZSA1NSA6IHJl
dHVybiAiUl9QQVJJU0NfUExUT0ZGMTRGIiA7CgoKCmNhc2UgNTcgOiByZXR1cm4gIlJfUEFSSVND
X0xUT0ZGX0ZQVFIzMiIgOwoKCmNhc2UgNTggOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIy
MUwiIDsKCgpjYXNlIDYyIDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9GUFRSMTRSIiA7CgoKCmNh
c2UgNjQgOiByZXR1cm4gIlJfUEFSSVNDX0ZQVFI2NCIgOwoKCgoKY2FzZSA2NSA6IHJldHVybiAi
Ul9QQVJJU0NfUExBQkVMMzIiIDsKCgpjYXNlIDY2IDogcmV0dXJuICJSX1BBUklTQ19QTEFCRUwy
MUwiIDsKCgpjYXNlIDcwIDogcmV0dXJuICJSX1BBUklTQ19QTEFCRUwxNFIiIDsKCgoKCmNhc2Ug
NzIgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMNjQiIDsKCgpjYXNlIDczIDogcmV0dXJuICJSX1BB
UklTQ19QQ1JFTDIyQyIgOwoKCmNhc2UgNzQgOiByZXR1cm4gIlJfUEFSSVNDX1BDUkVMMjJGIiA7
CgoKY2FzZSA3NSA6IHJldHVybiAiUl9QQVJJU0NfUENSRUwxNFdSIiA7CgoKY2FzZSA3NiA6IHJl
dHVybiAiUl9QQVJJU0NfUENSRUwxNERSIiA7CgoKY2FzZSA3NyA6IHJldHVybiAiUl9QQVJJU0Nf
UENSRUwxNkYiIDsKCgpjYXNlIDc4IDogcmV0dXJuICJSX1BBUklTQ19QQ1JFTDE2V0YiIDsKCgpj
YXNlIDc5IDogcmV0dXJuICJSX1BBUklTQ19QQ1JFTDE2REYiIDsKCgoKY2FzZSA4MCA6IHJldHVy
biAiUl9QQVJJU0NfRElSNjQiIDsKCgpjYXNlIDgxIDogcmV0dXJuICJSX1BBUklTQ19ESVI2NFdS
IiA7CgoKY2FzZSA4MiA6IHJldHVybiAiUl9QQVJJU0NfRElSNjREUiIgOwoKCmNhc2UgODMgOiBy
ZXR1cm4gIlJfUEFSSVNDX0RJUjE0V1IiIDsKCgpjYXNlIDg0IDogcmV0dXJuICJSX1BBUklTQ19E
SVIxNERSIiA7CgoKY2FzZSA4NSA6IHJldHVybiAiUl9QQVJJU0NfRElSMTZGIiA7CgoKY2FzZSA4
NiA6IHJldHVybiAiUl9QQVJJU0NfRElSMTZXRiIgOwoKCmNhc2UgODcgOiByZXR1cm4gIlJfUEFS
SVNDX0RJUjE2REYiIDsKCgpjYXNlIDg4IDogcmV0dXJuICJSX1BBUklTQ19HUFJFTDY0IiA7CgoK
Y2FzZSA5MSA6IHJldHVybiAiUl9QQVJJU0NfRExUUkVMMTRXUiIgOwoKCmNhc2UgOTIgOiByZXR1
cm4gIlJfUEFSSVNDX0RMVFJFTDE0RFIiIDsKCgpjYXNlIDkzIDogcmV0dXJuICJSX1BBUklTQ19H
UFJFTDE2RiIgOwoKCmNhc2UgOTQgOiByZXR1cm4gIlJfUEFSSVNDX0dQUkVMMTZXRiIgOwoKCmNh
c2UgOTUgOiByZXR1cm4gIlJfUEFSSVNDX0dQUkVMMTZERiIgOwoKCgpjYXNlIDk2IDogcmV0dXJu
ICJSX1BBUklTQ19MVE9GRjY0IiA7CgoKY2FzZSA5OSA6IHJldHVybiAiUl9QQVJJU0NfRExUSU5E
MTRXUiIgOwoKCmNhc2UgMTAwIDogcmV0dXJuICJSX1BBUklTQ19ETFRJTkQxNERSIiA7CgoKY2Fz
ZSAxMDEgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGMTZGIiA7CgoKY2FzZSAxMDIgOiByZXR1cm4g
IlJfUEFSSVNDX0xUT0ZGMTZXRiIgOwoKCmNhc2UgMTAzIDogcmV0dXJuICJSX1BBUklTQ19MVE9G
RjE2REYiIDsKCgoKY2FzZSAxMDQgOiByZXR1cm4gIlJfUEFSSVNDX1NFQ1JFTDY0IiA7CgoKY2Fz
ZSAxMDcgOiByZXR1cm4gIlJfUEFSSVNDX0JBU0VSRUwxNFdSIiA7CgoKY2FzZSAxMDggOiByZXR1
cm4gIlJfUEFSSVNDX0JBU0VSRUwxNERSIiA7CgoKCmNhc2UgMTEyIDogcmV0dXJuICJSX1BBUklT
Q19TRUdSRUw2NCIgOwoKCmNhc2UgMTE1IDogcmV0dXJuICJSX1BBUklTQ19QTFRPRkYxNFdSIiA7
CgoKY2FzZSAxMTYgOiByZXR1cm4gIlJfUEFSSVNDX1BMVE9GRjE0RFIiIDsKCgpjYXNlIDExNyA6
IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTZGIiA7CgoKY2FzZSAxMTggOiByZXR1cm4gIlJfUEFS
SVNDX1BMVE9GRjE2V0YiIDsKCgpjYXNlIDExOSA6IHJldHVybiAiUl9QQVJJU0NfUExUT0ZGMTZE
RiIgOwoKCgpjYXNlIDEyMCA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfRlBUUjY0IiA7CgoKY2Fz
ZSAxMjMgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIxNFdSIiA7CgoKY2FzZSAxMjQgOiBy
ZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX0ZQVFIxNERSIiA7CgoKY2FzZSAxMjUgOiByZXR1cm4gIlJf
UEFSSVNDX0xUT0ZGX0ZQVFIxNkYiIDsKCgpjYXNlIDEyNiA6IHJldHVybiAiUl9QQVJJU0NfTFRP
RkZfRlBUUjE2V0YiIDsKCgpjYXNlIDEyNyA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfRlBUUjE2
REYiIDsKCgoKY2FzZSAxMjggOiByZXR1cm4gIlJfUEFSSVNDX0NPUFkiIDsKCgpjYXNlIDEyOSA6
IHJldHVybiAiUl9QQVJJU0NfSVBMVCIgOwoKCmNhc2UgMTMwIDogcmV0dXJuICJSX1BBUklTQ19F
UExUIiA7CgoKCmNhc2UgMTUzIDogcmV0dXJuICJSX1BBUklTQ19UUFJFTDMyIiA7CgoKY2FzZSAx
NTQgOiByZXR1cm4gIlJfUEFSSVNDX1RQUkVMMjFMIiA7CgoKY2FzZSAxNTggOiByZXR1cm4gIlJf
UEFSSVNDX1RQUkVMMTRSIiA7CgoKCmNhc2UgMTYyIDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9U
UDIxTCIgOwoKCmNhc2UgMTY2IDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9UUDE0UiIgOwoKCmNh
c2UgMTY3IDogcmV0dXJuICJSX1BBUklTQ19MVE9GRl9UUDE0RiIgOwoKCgpjYXNlIDIxNiA6IHJl
dHVybiAiUl9QQVJJU0NfVFBSRUw2NCIgOwoKCmNhc2UgMjE5IDogcmV0dXJuICJSX1BBUklTQ19U
UFJFTDE0V1IiIDsKCgpjYXNlIDIyMCA6IHJldHVybiAiUl9QQVJJU0NfVFBSRUwxNERSIiA7CgoK
Y2FzZSAyMjEgOiByZXR1cm4gIlJfUEFSSVNDX1RQUkVMMTZGIiA7CgoKY2FzZSAyMjIgOiByZXR1
cm4gIlJfUEFSSVNDX1RQUkVMMTZXRiIgOwoKCmNhc2UgMjIzIDogcmV0dXJuICJSX1BBUklTQ19U
UFJFTDE2REYiIDsKCgoKY2FzZSAyMjQgOiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX1RQNjQiIDsK
CgpjYXNlIDIyNyA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfVFAxNFdSIiA7CgoKY2FzZSAyMjgg
OiByZXR1cm4gIlJfUEFSSVNDX0xUT0ZGX1RQMTREUiIgOwoKCmNhc2UgMjI5IDogcmV0dXJuICJS
X1BBUklTQ19MVE9GRl9UUDE2RiIgOwoKCmNhc2UgMjMwIDogcmV0dXJuICJSX1BBUklTQ19MVE9G
Rl9UUDE2V0YiIDsKCgpjYXNlIDIzMSA6IHJldHVybiAiUl9QQVJJU0NfTFRPRkZfVFAxNkRGIiA7
CgoKY2FzZSAyMzIgOiByZXR1cm4gIlJfUEFSSVNDX0dOVV9WVEVOVFJZIiA7CmNhc2UgMjMzIDog
cmV0dXJuICJSX1BBUklTQ19HTlVfVlRJTkhFUklUIiA7CgpkZWZhdWx0OiByZXR1cm4gKCh2b2lk
ICopMCk7IH0gfQojIDY0ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9pMzg2Lmgi
IDEKIyAyNSAiLi4vaW5jbHVkZS9lbGYvaTM4Ni5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9p
Mzg2X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAq
IGVsZl9pMzg2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRj
aCAocnR5cGUpIHsKICAgICBjYXNlIDAgOiByZXR1cm4gIlJfMzg2X05PTkUiIDsKICAgICBjYXNl
IDEgOiByZXR1cm4gIlJfMzg2XzMyIiA7CiAgICAgY2FzZSAyIDogcmV0dXJuICJSXzM4Nl9QQzMy
IiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSXzM4Nl9HT1QzMiIgOwogICAgIGNhc2UgNCA6IHJl
dHVybiAiUl8zODZfUExUMzIiIDsKICAgICBjYXNlIDUgOiByZXR1cm4gIlJfMzg2X0NPUFkiIDsK
ICAgICBjYXNlIDYgOiByZXR1cm4gIlJfMzg2X0dMT0JfREFUIiA7CiAgICAgY2FzZSA3IDogcmV0
dXJuICJSXzM4Nl9KVU1QX1NMT1QiIDsKICAgICBjYXNlIDggOiByZXR1cm4gIlJfMzg2X1JFTEFU
SVZFIiA7CiAgICAgY2FzZSA5IDogcmV0dXJuICJSXzM4Nl9HT1RPRkYiIDsKICAgICBjYXNlIDEw
IDogcmV0dXJuICJSXzM4Nl9HT1RQQyIgOwogICAgIGNhc2UgMTEgOiByZXR1cm4gIlJfMzg2XzMy
UExUIiA7CiAgICAKICAgIAogICAgIGNhc2UgMTQgOiByZXR1cm4gIlJfMzg2X1RMU19UUE9GRiIg
OwogICAgIGNhc2UgMTUgOiByZXR1cm4gIlJfMzg2X1RMU19JRSIgOwogICAgIGNhc2UgMTYgOiBy
ZXR1cm4gIlJfMzg2X1RMU19HT1RJRSIgOwogICAgIGNhc2UgMTcgOiByZXR1cm4gIlJfMzg2X1RM
U19MRSIgOwogICAgIGNhc2UgMTggOiByZXR1cm4gIlJfMzg2X1RMU19HRCIgOwogICAgIGNhc2Ug
MTkgOiByZXR1cm4gIlJfMzg2X1RMU19MRE0iIDsKICAgICBjYXNlIDIwIDogcmV0dXJuICJSXzM4
Nl8xNiIgOwogICAgIGNhc2UgMjEgOiByZXR1cm4gIlJfMzg2X1BDMTYiIDsKICAgICBjYXNlIDIy
IDogcmV0dXJuICJSXzM4Nl84IiA7CiAgICAgY2FzZSAyMyA6IHJldHVybiAiUl8zODZfUEM4IiA7
CiAgICAgY2FzZSAyNCA6IHJldHVybiAiUl8zODZfVExTX0dEXzMyIiA7CiAgICAgY2FzZSAyNSA6
IHJldHVybiAiUl8zODZfVExTX0dEX1BVU0giIDsKICAgICBjYXNlIDI2IDogcmV0dXJuICJSXzM4
Nl9UTFNfR0RfQ0FMTCIgOwogICAgIGNhc2UgMjcgOiByZXR1cm4gIlJfMzg2X1RMU19HRF9QT1Ai
IDsKICAgICBjYXNlIDI4IDogcmV0dXJuICJSXzM4Nl9UTFNfTERNXzMyIiA7CiAgICAgY2FzZSAy
OSA6IHJldHVybiAiUl8zODZfVExTX0xETV9QVVNIIiA7CiAgICAgY2FzZSAzMCA6IHJldHVybiAi
Ul8zODZfVExTX0xETV9DQUxMIiA7CiAgICAgY2FzZSAzMSA6IHJldHVybiAiUl8zODZfVExTX0xE
TV9QT1AiIDsKICAgICBjYXNlIDMyIDogcmV0dXJuICJSXzM4Nl9UTFNfTERPXzMyIiA7CiAgICAg
Y2FzZSAzMyA6IHJldHVybiAiUl8zODZfVExTX0lFXzMyIiA7CiAgICAgY2FzZSAzNCA6IHJldHVy
biAiUl8zODZfVExTX0xFXzMyIiA7CiAgICAgY2FzZSAzNSA6IHJldHVybiAiUl8zODZfVExTX0RU
UE1PRDMyIiA7CiAgICAgY2FzZSAzNiA6IHJldHVybiAiUl8zODZfVExTX0RUUE9GRjMyIiA7CiAg
ICAgY2FzZSAzNyA6IHJldHVybiAiUl8zODZfVExTX1RQT0ZGMzIiIDsKCgogICAgIGNhc2UgMjUw
IDogcmV0dXJuICJSXzM4Nl9HTlVfVlRJTkhFUklUIiA7CiAgICAgY2FzZSAyNTEgOiByZXR1cm4g
IlJfMzg2X0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NjUgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2kzNzAuaCIgMQojIDUzICIuLi9p
bmNsdWRlL2VsZi9pMzcwLmgiCnN0YXRpYyBjb25zdCBjaGFyICogaTM3MF9yZWxvY190eXBlICh1
bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBpMzcwX3JlbG9jX3R5cGUg
KHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAg
OiByZXR1cm4gIlJfSTM3MF9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0kzNzBfQUREUjMx
IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0kzNzBfQUREUjMyIiA7CiAgY2FzZSAzIDogcmV0dXJu
ICJSX0kzNzBfQUREUjE2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0kzNzBfUkVMMzEiIDsKICBj
YXNlIDUgOiByZXR1cm4gIlJfSTM3MF9SRUwzMiIgOwogIGNhc2UgNiA6IHJldHVybiAiUl9JMzcw
X0FERFIxMiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9JMzcwX1JFTDEyIiA7CiAgY2FzZSA4IDog
cmV0dXJuICJSX0kzNzBfQUREUjgiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfSTM3MF9SRUw4IiA7
CiAgY2FzZSAxMCA6IHJldHVybiAiUl9JMzcwX0NPUFkiIDsKICBjYXNlIDExIDogcmV0dXJuICJS
X0kzNzBfUkVMQVRJVkUiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2NiAi
cmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaTg2MC5oIiAxCiMgMjkgIi4uL2luY2x1
ZGUvZWxmL2k4NjAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaTg2MF9yZWxvY190eXBlICh1
bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaTg2MF9yZWxvY190
eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgICAg
Y2FzZSAweDAwIDogcmV0dXJuICJSXzg2MF9OT05FIiA7CiAgICAgY2FzZSAweDAxIDogcmV0dXJu
ICJSXzg2MF8zMiIgOwogICAgIGNhc2UgMHgwMiA6IHJldHVybiAiUl84NjBfQ09QWSIgOwogICAg
IGNhc2UgMHgwMyA6IHJldHVybiAiUl84NjBfR0xPQl9EQVQiIDsKICAgICBjYXNlIDB4MDQgOiBy
ZXR1cm4gIlJfODYwX0pVTVBfU0xPVCIgOwogICAgIGNhc2UgMHgwNSA6IHJldHVybiAiUl84NjBf
UkVMQVRJVkUiIDsKICAgICBjYXNlIDB4MzAgOiByZXR1cm4gIlJfODYwX1BDMjYiIDsKICAgICBj
YXNlIDB4MzEgOiByZXR1cm4gIlJfODYwX1BMVDI2IiA7CiAgICAgY2FzZSAweDMyIDogcmV0dXJu
ICJSXzg2MF9QQzE2IiA7CiAgICAgY2FzZSAweDQwIDogcmV0dXJuICJSXzg2MF9MT1cwIiA7CiAg
ICAgY2FzZSAweDQyIDogcmV0dXJuICJSXzg2MF9TUExJVDAiIDsKICAgICBjYXNlIDB4NDQgOiBy
ZXR1cm4gIlJfODYwX0xPVzEiIDsKICAgICBjYXNlIDB4NDYgOiByZXR1cm4gIlJfODYwX1NQTElU
MSIgOwogICAgIGNhc2UgMHg0OCA6IHJldHVybiAiUl84NjBfTE9XMiIgOwogICAgIGNhc2UgMHg0
QSA6IHJldHVybiAiUl84NjBfU1BMSVQyIiA7CiAgICAgY2FzZSAweDRDIDogcmV0dXJuICJSXzg2
MF9MT1czIiA7CiAgICAgY2FzZSAweDUwIDogcmV0dXJuICJSXzg2MF9MT0dPVDAiIDsKICAgICBj
YXNlIDB4NTIgOiByZXR1cm4gIlJfODYwX1NQR09UMCIgOwogICAgIGNhc2UgMHg1NCA6IHJldHVy
biAiUl84NjBfTE9HT1QxIiA7CiAgICAgY2FzZSAweDU2IDogcmV0dXJuICJSXzg2MF9TUEdPVDEi
IDsKICAgICBjYXNlIDB4NjAgOiByZXR1cm4gIlJfODYwX0xPR09UT0ZGMCIgOwogICAgIGNhc2Ug
MHg2MiA6IHJldHVybiAiUl84NjBfU1BHT1RPRkYwIiA7CiAgICAgY2FzZSAweDY0IDogcmV0dXJu
ICJSXzg2MF9MT0dPVE9GRjEiIDsKICAgICBjYXNlIDB4NjYgOiByZXR1cm4gIlJfODYwX1NQR09U
T0ZGMSIgOwogICAgIGNhc2UgMHg2OCA6IHJldHVybiAiUl84NjBfTE9HT1RPRkYyIiA7CiAgICAg
Y2FzZSAweDZDIDogcmV0dXJuICJSXzg2MF9MT0dPVE9GRjMiIDsKICAgICBjYXNlIDB4NzAgOiBy
ZXR1cm4gIlJfODYwX0xPUEMiIDsKICAgICBjYXNlIDB4ODAgOiByZXR1cm4gIlJfODYwX0hJR0hB
REoiIDsKICAgICBjYXNlIDB4OTAgOiByZXR1cm4gIlJfODYwX0hBR09UIiA7CiAgICAgY2FzZSAw
eEEwIDogcmV0dXJuICJSXzg2MF9IQUdPVE9GRiIgOwogICAgIGNhc2UgMHhCMCA6IHJldHVybiAi
Ul84NjBfSEFQQyIgOwogICAgIGNhc2UgMHhDMCA6IHJldHVybiAiUl84NjBfSElHSCIgOwogICAg
IGNhc2UgMHhEMCA6IHJldHVybiAiUl84NjBfSElHT1QiIDsKICAgICBjYXNlIDB4RTAgOiByZXR1
cm4gIlJfODYwX0hJR09UT0ZGIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
NjcgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL2k5NjAuaCIgMQojIDI2ICIuLi9p
bmNsdWRlL2VsZi9pOTYwLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2k5NjBfcmVsb2NfdHlw
ZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2k5NjBfcmVs
b2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewog
ICAgIGNhc2UgMCA6IHJldHVybiAiUl85NjBfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAi
Ul85NjBfMTIiIDsKICAgICBjYXNlIDIgOiByZXR1cm4gIlJfOTYwXzMyIiA7CiAgICAgY2FzZSAz
IDogcmV0dXJuICJSXzk2MF9JUDI0IiA7CiAgICAgY2FzZSA0IDogcmV0dXJuICJSXzk2MF9TVUIi
IDsKICAgICBjYXNlIDUgOiByZXR1cm4gIlJfOTYwX09QVENBTEwiIDsKICAgICBjYXNlIDYgOiBy
ZXR1cm4gIlJfOTYwX09QVENBTExYIiA7CiAgICAgY2FzZSA3IDogcmV0dXJuICJSXzk2MF9PUFRD
QUxMWEEiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA2OCAicmVhZGVsZi5j
IiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaWE2NC5oIiAxCiMgMTEzICIuLi9pbmNsdWRlL2VsZi9p
YTY0LmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lhNjRfcmVsb2NfdHlwZSAodW5zaWduZWQg
bG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lhNjRfcmVsb2NfdHlwZSAocnR5
cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMHgwMCA6
IHJldHVybiAiUl9JQTY0X05PTkUiIDsKCiAgY2FzZSAweDIxIDogcmV0dXJuICJSX0lBNjRfSU1N
MTQiIDsKICBjYXNlIDB4MjIgOiByZXR1cm4gIlJfSUE2NF9JTU0yMiIgOwogIGNhc2UgMHgyMyA6
IHJldHVybiAiUl9JQTY0X0lNTTY0IiA7CiAgY2FzZSAweDI0IDogcmV0dXJuICJSX0lBNjRfRElS
MzJNU0IiIDsKICBjYXNlIDB4MjUgOiByZXR1cm4gIlJfSUE2NF9ESVIzMkxTQiIgOwogIGNhc2Ug
MHgyNiA6IHJldHVybiAiUl9JQTY0X0RJUjY0TVNCIiA7CiAgY2FzZSAweDI3IDogcmV0dXJuICJS
X0lBNjRfRElSNjRMU0IiIDsKCiAgY2FzZSAweDJhIDogcmV0dXJuICJSX0lBNjRfR1BSRUwyMiIg
OwogIGNhc2UgMHgyYiA6IHJldHVybiAiUl9JQTY0X0dQUkVMNjRJIiA7CiAgY2FzZSAweDJjIDog
cmV0dXJuICJSX0lBNjRfR1BSRUwzMk1TQiIgOwogIGNhc2UgMHgyZCA6IHJldHVybiAiUl9JQTY0
X0dQUkVMMzJMU0IiIDsKICBjYXNlIDB4MmUgOiByZXR1cm4gIlJfSUE2NF9HUFJFTDY0TVNCIiA7
CiAgY2FzZSAweDJmIDogcmV0dXJuICJSX0lBNjRfR1BSRUw2NExTQiIgOwoKICBjYXNlIDB4MzIg
OiByZXR1cm4gIlJfSUE2NF9MVE9GRjIyIiA7CiAgY2FzZSAweDMzIDogcmV0dXJuICJSX0lBNjRf
TFRPRkY2NEkiIDsKCiAgY2FzZSAweDNhIDogcmV0dXJuICJSX0lBNjRfUExUT0ZGMjIiIDsKICBj
YXNlIDB4M2IgOiByZXR1cm4gIlJfSUE2NF9QTFRPRkY2NEkiIDsKICBjYXNlIDB4M2UgOiByZXR1
cm4gIlJfSUE2NF9QTFRPRkY2NE1TQiIgOwogIGNhc2UgMHgzZiA6IHJldHVybiAiUl9JQTY0X1BM
VE9GRjY0TFNCIiA7CgogIGNhc2UgMHg0MyA6IHJldHVybiAiUl9JQTY0X0ZQVFI2NEkiIDsKICBj
YXNlIDB4NDQgOiByZXR1cm4gIlJfSUE2NF9GUFRSMzJNU0IiIDsKICBjYXNlIDB4NDUgOiByZXR1
cm4gIlJfSUE2NF9GUFRSMzJMU0IiIDsKICBjYXNlIDB4NDYgOiByZXR1cm4gIlJfSUE2NF9GUFRS
NjRNU0IiIDsKICBjYXNlIDB4NDcgOiByZXR1cm4gIlJfSUE2NF9GUFRSNjRMU0IiIDsKCiAgY2Fz
ZSAweDQ4IDogcmV0dXJuICJSX0lBNjRfUENSRUw2MEIiIDsKICBjYXNlIDB4NDkgOiByZXR1cm4g
IlJfSUE2NF9QQ1JFTDIxQiIgOwogIGNhc2UgMHg0YSA6IHJldHVybiAiUl9JQTY0X1BDUkVMMjFN
IiA7CiAgY2FzZSAweDRiIDogcmV0dXJuICJSX0lBNjRfUENSRUwyMUYiIDsKICBjYXNlIDB4NGMg
OiByZXR1cm4gIlJfSUE2NF9QQ1JFTDMyTVNCIiA7CiAgY2FzZSAweDRkIDogcmV0dXJuICJSX0lB
NjRfUENSRUwzMkxTQiIgOwogIGNhc2UgMHg0ZSA6IHJldHVybiAiUl9JQTY0X1BDUkVMNjRNU0Ii
IDsKICBjYXNlIDB4NGYgOiByZXR1cm4gIlJfSUE2NF9QQ1JFTDY0TFNCIiA7CgogIGNhc2UgMHg1
MiA6IHJldHVybiAiUl9JQTY0X0xUT0ZGX0ZQVFIyMiIgOwogIGNhc2UgMHg1MyA6IHJldHVybiAi
Ul9JQTY0X0xUT0ZGX0ZQVFI2NEkiIDsKICBjYXNlIDB4NTQgOiByZXR1cm4gIlJfSUE2NF9MVE9G
Rl9GUFRSMzJNU0IiIDsKICBjYXNlIDB4NTUgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSMzJM
U0IiIDsKICBjYXNlIDB4NTYgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSNjRNU0IiIDsKICBj
YXNlIDB4NTcgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9GUFRSNjRMU0IiIDsKCiAgY2FzZSAweDVj
IDogcmV0dXJuICJSX0lBNjRfU0VHUkVMMzJNU0IiIDsKICBjYXNlIDB4NWQgOiByZXR1cm4gIlJf
SUE2NF9TRUdSRUwzMkxTQiIgOwogIGNhc2UgMHg1ZSA6IHJldHVybiAiUl9JQTY0X1NFR1JFTDY0
TVNCIiA7CiAgY2FzZSAweDVmIDogcmV0dXJuICJSX0lBNjRfU0VHUkVMNjRMU0IiIDsKCiAgY2Fz
ZSAweDY0IDogcmV0dXJuICJSX0lBNjRfU0VDUkVMMzJNU0IiIDsKICBjYXNlIDB4NjUgOiByZXR1
cm4gIlJfSUE2NF9TRUNSRUwzMkxTQiIgOwogIGNhc2UgMHg2NiA6IHJldHVybiAiUl9JQTY0X1NF
Q1JFTDY0TVNCIiA7CiAgY2FzZSAweDY3IDogcmV0dXJuICJSX0lBNjRfU0VDUkVMNjRMU0IiIDsK
CiAgY2FzZSAweDZjIDogcmV0dXJuICJSX0lBNjRfUkVMMzJNU0IiIDsKICBjYXNlIDB4NmQgOiBy
ZXR1cm4gIlJfSUE2NF9SRUwzMkxTQiIgOwogIGNhc2UgMHg2ZSA6IHJldHVybiAiUl9JQTY0X1JF
TDY0TVNCIiA7CiAgY2FzZSAweDZmIDogcmV0dXJuICJSX0lBNjRfUkVMNjRMU0IiIDsKCiAgY2Fz
ZSAweDc0IDogcmV0dXJuICJSX0lBNjRfTFRWMzJNU0IiIDsKICBjYXNlIDB4NzUgOiByZXR1cm4g
IlJfSUE2NF9MVFYzMkxTQiIgOwogIGNhc2UgMHg3NiA6IHJldHVybiAiUl9JQTY0X0xUVjY0TVNC
IiA7CiAgY2FzZSAweDc3IDogcmV0dXJuICJSX0lBNjRfTFRWNjRMU0IiIDsKCiAgY2FzZSAweDc5
IDogcmV0dXJuICJSX0lBNjRfUENSRUwyMUJJIiA7CiAgY2FzZSAweDdhIDogcmV0dXJuICJSX0lB
NjRfUENSRUwyMiIgOwogIGNhc2UgMHg3YiA6IHJldHVybiAiUl9JQTY0X1BDUkVMNjRJIiA7Cgog
IGNhc2UgMHg4MCA6IHJldHVybiAiUl9JQTY0X0lQTFRNU0IiIDsKICBjYXNlIDB4ODEgOiByZXR1
cm4gIlJfSUE2NF9JUExUTFNCIiA7CiAgY2FzZSAweDg0IDogcmV0dXJuICJSX0lBNjRfQ09QWSIg
OwogIGNhc2UgMHg4NiA6IHJldHVybiAiUl9JQTY0X0xUT0ZGMjJYIiA7CiAgY2FzZSAweDg3IDog
cmV0dXJuICJSX0lBNjRfTERYTU9WIiA7CgogIGNhc2UgMHg5MSA6IHJldHVybiAiUl9JQTY0X1RQ
UkVMMTQiIDsKICBjYXNlIDB4OTIgOiByZXR1cm4gIlJfSUE2NF9UUFJFTDIyIiA7CiAgY2FzZSAw
eDkzIDogcmV0dXJuICJSX0lBNjRfVFBSRUw2NEkiIDsKICBjYXNlIDB4OTYgOiByZXR1cm4gIlJf
SUE2NF9UUFJFTDY0TVNCIiA7CiAgY2FzZSAweDk3IDogcmV0dXJuICJSX0lBNjRfVFBSRUw2NExT
QiIgOwoKICBjYXNlIDB4OWEgOiByZXR1cm4gIlJfSUE2NF9MVE9GRl9UUFJFTDIyIiA7CgogIGNh
c2UgMHhhNiA6IHJldHVybiAiUl9JQTY0X0RUUE1PRDY0TVNCIiA7CiAgY2FzZSAweGE3IDogcmV0
dXJuICJSX0lBNjRfRFRQTU9ENjRMU0IiIDsKICBjYXNlIDB4YWEgOiByZXR1cm4gIlJfSUE2NF9M
VE9GRl9EVFBNT0QyMiIgOwoKICBjYXNlIDB4YjEgOiByZXR1cm4gIlJfSUE2NF9EVFBSRUwxNCIg
OwogIGNhc2UgMHhiMiA6IHJldHVybiAiUl9JQTY0X0RUUFJFTDIyIiA7CiAgY2FzZSAweGIzIDog
cmV0dXJuICJSX0lBNjRfRFRQUkVMNjRJIiA7CiAgY2FzZSAweGI0IDogcmV0dXJuICJSX0lBNjRf
RFRQUkVMMzJNU0IiIDsKICBjYXNlIDB4YjUgOiByZXR1cm4gIlJfSUE2NF9EVFBSRUwzMkxTQiIg
OwogIGNhc2UgMHhiNiA6IHJldHVybiAiUl9JQTY0X0RUUFJFTDY0TVNCIiA7CiAgY2FzZSAweGI3
IDogcmV0dXJuICJSX0lBNjRfRFRQUkVMNjRMU0IiIDsKCiAgY2FzZSAweGJhIDogcmV0dXJuICJS
X0lBNjRfTFRPRkZfRFRQUkVMMjIiIDsKCiAKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9
IH0KIyA2OSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvaXAyay5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL2lwMmsuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaXAya19yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfaXAy
a19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBl
KSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX0lQMktfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAi
Ul9JUDJLXzE2IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX0lQMktfMzIiIDsKICBjYXNlIDMgOiBy
ZXR1cm4gIlJfSVAyS19GUjkiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfSVAyS19CQU5LIiA7CiAg
Y2FzZSA1IDogcmV0dXJuICJSX0lQMktfQUREUjE2Q0pQIiA7CiAgY2FzZSA2IDogcmV0dXJuICJS
X0lQMktfUEFHRTMiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfSVAyS19MTzhEQVRBIiA7CiAgY2Fz
ZSA4IDogcmV0dXJuICJSX0lQMktfSEk4REFUQSIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9JUDJL
X0xPOElOU04iIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0lQMktfSEk4SU5TTiIgOwogIGNhc2Ug
MTEgOiByZXR1cm4gIlJfSVAyS19QQ19TS0lQIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9JUDJL
X1RFWFQiIDsKICBjYXNlIDEzIDogcmV0dXJuICJSX0lQMktfRlJfT0ZGU0VUIiA7CiAgY2FzZSAx
NCA6IHJldHVybiAiUl9JUDJLX0VYOERBVEEiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTAp
OyB9IH0KIyA3MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTMyci5oIiAxCiMg
MjYgIi4uL2luY2x1ZGUvZWxmL20zMnIuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTMycl9y
ZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZf
bTMycl9yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0
eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX00zMlJfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVy
biAiUl9NMzJSXzE2IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX00zMlJfMzIiIDsKICBjYXNlIDMg
OiByZXR1cm4gIlJfTTMyUl8yNCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NMzJSXzEwX1BDUkVM
IiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX00zMlJfMThfUENSRUwiIDsKICBjYXNlIDYgOiByZXR1
cm4gIlJfTTMyUl8yNl9QQ1JFTCIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9NMzJSX0hJMTZfVUxP
IiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX00zMlJfSEkxNl9TTE8iIDsKICBjYXNlIDkgOiByZXR1
cm4gIlJfTTMyUl9MTzE2IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9NMzJSX1NEQTE2IiA7CiAg
Y2FzZSAxMSA6IHJldHVybiAiUl9NMzJSX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDEyIDogcmV0
dXJuICJSX00zMlJfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9
IH0KIyA3MSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTY4ay5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL202OGsuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4a19yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4
a19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBl
KSB7CiAgY2FzZSAwIDogcmV0dXJuICJSXzY4S19OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJS
XzY4S18zMiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl82OEtfMTYiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfNjhLXzgiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfNjhLX1BDMzIiIDsKICBjYXNlIDUg
OiByZXR1cm4gIlJfNjhLX1BDMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfNjhLX1BDOCIgOwog
IGNhc2UgNyA6IHJldHVybiAiUl82OEtfR09UMzIiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfNjhL
X0dPVDE2IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSXzY4S19HT1Q4IiA7CiAgY2FzZSAxMCA6IHJl
dHVybiAiUl82OEtfR09UMzJPIiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl82OEtfR09UMTZPIiA7
CiAgY2FzZSAxMiA6IHJldHVybiAiUl82OEtfR09UOE8iIDsKICBjYXNlIDEzIDogcmV0dXJuICJS
XzY4S19QTFQzMiIgOwogIGNhc2UgMTQgOiByZXR1cm4gIlJfNjhLX1BMVDE2IiA7CiAgY2FzZSAx
NSA6IHJldHVybiAiUl82OEtfUExUOCIgOwogIGNhc2UgMTYgOiByZXR1cm4gIlJfNjhLX1BMVDMy
TyIgOwogIGNhc2UgMTcgOiByZXR1cm4gIlJfNjhLX1BMVDE2TyIgOwogIGNhc2UgMTggOiByZXR1
cm4gIlJfNjhLX1BMVDhPIiA7CiAgY2FzZSAxOSA6IHJldHVybiAiUl82OEtfQ09QWSIgOwogIGNh
c2UgMjAgOiByZXR1cm4gIlJfNjhLX0dMT0JfREFUIiA7CiAgY2FzZSAyMSA6IHJldHVybiAiUl82
OEtfSk1QX1NMT1QiIDsKICBjYXNlIDIyIDogcmV0dXJuICJSXzY4S19SRUxBVElWRSIgOwoKICBj
YXNlIDIzIDogcmV0dXJuICJSXzY4S19HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAyNCA6IHJldHVy
biAiUl82OEtfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0K
IyA3MiAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbTY4aGMxMS5oIiAxCiMgMjYg
Ii4uL2luY2x1ZGUvZWxmL202OGhjMTEuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbTY4aGMx
MV9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBl
bGZfbTY4aGMxMV9yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0
Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX002OEhDMTFfTk9ORSIgOwogIGNhc2Ug
MSA6IHJldHVybiAiUl9NNjhIQzExXzgiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfTTY4SEMxMV9I
STgiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJfTTY4SEMxMV9MTzgiIDsKICBjYXNlIDQgOiByZXR1
cm4gIlJfTTY4SEMxMV9QQ1JFTF84IiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX002OEhDMTFfMTYi
IDsKICBjYXNlIDYgOiByZXR1cm4gIlJfTTY4SEMxMV8zMiIgOwogIGNhc2UgNyA6IHJldHVybiAi
Ul9NNjhIQzExXzNCIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX002OEhDMTFfUENSRUxfMTYiIDsK
CgogIGNhc2UgOSA6IHJldHVybiAiUl9NNjhIQzExX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDEw
IDogcmV0dXJuICJSX002OEhDMTFfR05VX1ZURU5UUlkiIDsKCiAgY2FzZSAxMSA6IHJldHVybiAi
Ul9NNjhIQzExXzI0IiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9NNjhIQzExX0xPMTYiIDsKICBj
YXNlIDEzIDogcmV0dXJuICJSX002OEhDMTFfUEFHRSIgOwoKCgogIGNhc2UgMjAgOiByZXR1cm4g
IlJfTTY4SEMxMV9STF9KVU1QIiA7CgoKICBjYXNlIDIxIDogcmV0dXJuICJSX002OEhDMTFfUkxf
R1JPVVAiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA3MyAicmVhZGVsZi5j
IiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvbWNvcmUuaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi9t
Y29yZS5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tY29yZV9yZWxvY190eXBlICh1bnNpZ25l
ZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbWNvcmVfcmVsb2NfdHlwZSAo
cnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6
IHJldHVybiAiUl9NQ09SRV9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX01DT1JFX0FERFIz
MiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9NQ09SRV9QQ1JFTElNTThCWTQiIDsKICBjYXNlIDMg
OiByZXR1cm4gIlJfTUNPUkVfUENSRUxJTU0xMUJZMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9N
Q09SRV9QQ1JFTElNTTRCWTIiIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfTUNPUkVfUENSRUwzMiIg
OwogIGNhc2UgNiA6IHJldHVybiAiUl9NQ09SRV9QQ1JFTEpTUl9JTU0xMUJZMiIgOwogIGNhc2Ug
NyA6IHJldHVybiAiUl9NQ09SRV9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSA4IDogcmV0dXJuICJS
X01DT1JFX0dOVV9WVEVOVFJZIiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX01DT1JFX1JFTEFUSVZF
IiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9NQ09SRV9DT1BZIiA7CiAgY2FzZSAxMSA6IHJldHVy
biAiUl9NQ09SRV9HTE9CX0RBVCIgOwogIGNhc2UgMTIgOiByZXR1cm4gIlJfTUNPUkVfSlVNUF9T
TE9UIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNzQgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL21pcHMuaCIgMQojIDM0ICIuLi9pbmNsdWRlL2VsZi9taXBz
LmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX21pcHNfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX21pcHNfcmVsb2NfdHlwZSAocnR5cGUp
IHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVy
biAiUl9NSVBTX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfTUlQU18xNiIgOwogIGNhc2Ug
MiA6IHJldHVybiAiUl9NSVBTXzMyIiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX01JUFNfUkVMMzIi
IDsKICBjYXNlIDQgOiByZXR1cm4gIlJfTUlQU18yNiIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9N
SVBTX0hJMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfTUlQU19MTzE2IiA7CiAgY2FzZSA3IDog
cmV0dXJuICJSX01JUFNfR1BSRUwxNiIgOwogIGNhc2UgOCA6IHJldHVybiAiUl9NSVBTX0xJVEVS
QUwiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfTUlQU19HT1QxNiIgOwogIGNhc2UgMTAgOiByZXR1
cm4gIlJfTUlQU19QQzE2IiA7CiAgY2FzZSAxMSA6IHJldHVybiAiUl9NSVBTX0NBTEwxNiIgOwog
IGNhc2UgMTIgOiByZXR1cm4gIlJfTUlQU19HUFJFTDMyIiA7CgoKICBjYXNlIDEzIDogcmV0dXJu
ICJSX01JUFNfVU5VU0VEMSIgOwogIGNhc2UgMTQgOiByZXR1cm4gIlJfTUlQU19VTlVTRUQyIiA7
CiAgY2FzZSAxNSA6IHJldHVybiAiUl9NSVBTX1VOVVNFRDMiIDsKICBjYXNlIDE2IDogcmV0dXJu
ICJSX01JUFNfU0hJRlQ1IiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9NSVBTX1NISUZUNiIgOwog
IGNhc2UgMTggOiByZXR1cm4gIlJfTUlQU182NCIgOwogIGNhc2UgMTkgOiByZXR1cm4gIlJfTUlQ
U19HT1RfRElTUCIgOwogIGNhc2UgMjAgOiByZXR1cm4gIlJfTUlQU19HT1RfUEFHRSIgOwogIGNh
c2UgMjEgOiByZXR1cm4gIlJfTUlQU19HT1RfT0ZTVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJf
TUlQU19HT1RfSEkxNiIgOwogIGNhc2UgMjMgOiByZXR1cm4gIlJfTUlQU19HT1RfTE8xNiIgOwog
IGNhc2UgMjQgOiByZXR1cm4gIlJfTUlQU19TVUIiIDsKICBjYXNlIDI1IDogcmV0dXJuICJSX01J
UFNfSU5TRVJUX0EiIDsKICBjYXNlIDI2IDogcmV0dXJuICJSX01JUFNfSU5TRVJUX0IiIDsKICBj
YXNlIDI3IDogcmV0dXJuICJSX01JUFNfREVMRVRFIiA7CiAgY2FzZSAyOCA6IHJldHVybiAiUl9N
SVBTX0hJR0hFUiIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJfTUlQU19ISUdIRVNUIiA7CiAgY2Fz
ZSAzMCA6IHJldHVybiAiUl9NSVBTX0NBTExfSEkxNiIgOwogIGNhc2UgMzEgOiByZXR1cm4gIlJf
TUlQU19DQUxMX0xPMTYiIDsKICBjYXNlIDMyIDogcmV0dXJuICJSX01JUFNfU0NOX0RJU1AiIDsK
ICBjYXNlIDMzIDogcmV0dXJuICJSX01JUFNfUkVMMTYiIDsKICBjYXNlIDM0IDogcmV0dXJuICJS
X01JUFNfQUREX0lNTUVESUFURSIgOwogIGNhc2UgMzUgOiByZXR1cm4gIlJfTUlQU19QSlVNUCIg
OwogIGNhc2UgMzYgOiByZXR1cm4gIlJfTUlQU19SRUxHT1QiIDsKICBjYXNlIDM3IDogcmV0dXJu
ICJSX01JUFNfSkFMUiIgOwogIGNhc2UgMzggOiByZXR1cm4gIlJfTUlQU19tYXgiIDsKCiAgY2Fz
ZSAxMDAgOiByZXR1cm4gIlJfTUlQUzE2XzI2IiA7CiAgY2FzZSAxMDEgOiByZXR1cm4gIlJfTUlQ
UzE2X0dQUkVMIiA7CgogIGNhc2UgMjQ4IDogcmV0dXJuICJSX01JUFNfUEMzMiIgOwogIGNhc2Ug
MjQ5IDogcmV0dXJuICJSX01JUFNfUEM2NCIgOwogIGNhc2UgMjUwIDogcmV0dXJuICJSX01JUFNf
R05VX1JFTDE2X1MyIiA7CiAgY2FzZSAyNTEgOiByZXR1cm4gIlJfTUlQU19HTlVfUkVMX0xPMTYi
IDsKICBjYXNlIDI1MiA6IHJldHVybiAiUl9NSVBTX0dOVV9SRUxfSEkxNiIgOwoKICBjYXNlIDI1
MyA6IHJldHVybiAiUl9NSVBTX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDI1NCA6IHJldHVybiAi
Ul9NSVBTX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMg
MzQxICIuLi9pbmNsdWRlL2VsZi9taXBzLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgdW5zaWduZWQg
bG9uZyBsX25hbWU7CgogIHVuc2lnbmVkIGxvbmcgbF90aW1lX3N0YW1wOwoKICB1bnNpZ25lZCBs
b25nIGxfY2hlY2tzdW07CgogIHVuc2lnbmVkIGxvbmcgbF92ZXJzaW9uOwoKICB1bnNpZ25lZCBs
b25nIGxfZmxhZ3M7Cn0gRWxmMzJfTGliOwoKCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBj
aGFyIGxfbmFtZVs0XTsKICB1bnNpZ25lZCBjaGFyIGxfdGltZV9zdGFtcFs0XTsKICB1bnNpZ25l
ZCBjaGFyIGxfY2hlY2tzdW1bNF07CiAgdW5zaWduZWQgY2hhciBsX3ZlcnNpb25bNF07CiAgdW5z
aWduZWQgY2hhciBsX2ZsYWdzWzRdOwp9IEVsZjMyX0V4dGVybmFsX0xpYjsKIyAzODkgIi4uL2lu
Y2x1ZGUvZWxmL21pcHMuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEVsZjMyX0NvbmZsaWN0Owp0
eXBlZGVmIHVuc2lnbmVkIGNoYXIgRWxmMzJfRXh0ZXJuYWxfQ29uZmxpY3RbNF07Cgp0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgRWxmNjRfQ29uZmxpY3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBFbGY2
NF9FeHRlcm5hbF9Db25mbGljdFs4XTsKIyA0MDMgIi4uL2luY2x1ZGUvZWxmL21pcHMuaCIKdHlw
ZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgICB7CgogICAgICB1bnNpZ25lZCBsb25nIGd0X2N1cnJl
bnRfZ192YWx1ZTsKCiAgICAgIHVuc2lnbmVkIGxvbmcgZ3RfdW51c2VkOwogICAgfSBndF9oZWFk
ZXI7CiAgc3RydWN0CiAgICB7CgogICAgICB1bnNpZ25lZCBsb25nIGd0X2dfdmFsdWU7CgogICAg
ICB1bnNpZ25lZCBsb25nIGd0X2J5dGVzOwogICAgfSBndF9lbnRyeTsKfSBFbGYzMl9ncHRhYjsK
CgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0CiAgICB7CiAgICAgIHVuc2lnbmVkIGNoYXIgZ3Rf
Y3VycmVudF9nX3ZhbHVlWzRdOwogICAgICB1bnNpZ25lZCBjaGFyIGd0X3VudXNlZFs0XTsKICAg
IH0gZ3RfaGVhZGVyOwogIHN0cnVjdAogICAgewogICAgICB1bnNpZ25lZCBjaGFyIGd0X2dfdmFs
dWVbNF07CiAgICAgIHVuc2lnbmVkIGNoYXIgZ3RfYnl0ZXNbNF07CiAgICB9IGd0X2VudHJ5Owp9
IEVsZjMyX0V4dGVybmFsX2dwdGFiOwoKCgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGxv
bmcgcmlfZ3BybWFzazsKCiAgdW5zaWduZWQgbG9uZyByaV9jcHJtYXNrWzRdOwoKICBsb25nIHJp
X2dwX3ZhbHVlOwp9IEVsZjMyX1JlZ0luZm87CgoKdHlwZWRlZiBzdHJ1Y3QKewogIHVuc2lnbmVk
IGNoYXIgcmlfZ3BybWFza1s0XTsKICB1bnNpZ25lZCBjaGFyIHJpX2Nwcm1hc2tbNF1bNF07CiAg
dW5zaWduZWQgY2hhciByaV9ncF92YWx1ZVs0XTsKfSBFbGYzMl9FeHRlcm5hbF9SZWdJbmZvOwoK
CmV4dGVybiB2b2lkIGJmZF9taXBzX2VsZjMyX3N3YXBfcmVnaW5mb19pbgogIChiZmQgKiwgY29u
c3QgRWxmMzJfRXh0ZXJuYWxfUmVnSW5mbyAqLCBFbGYzMl9SZWdJbmZvICopOwpleHRlcm4gdm9p
ZCBiZmRfbWlwc19lbGYzMl9zd2FwX3JlZ2luZm9fb3V0CiAgKGJmZCAqLCBjb25zdCBFbGYzMl9S
ZWdJbmZvICosIEVsZjMyX0V4dGVybmFsX1JlZ0luZm8gKik7CiMgNzA2ICIuLi9pbmNsdWRlL2Vs
Zi9taXBzLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgdW5zaWduZWQgY2hhciByX29mZnNldFs4XTsK
CiAgdW5zaWduZWQgY2hhciByX3N5bVs0XTsKCiAgdW5zaWduZWQgY2hhciByX3NzeW1bMV07Cgog
IHVuc2lnbmVkIGNoYXIgcl90eXBlM1sxXTsKCiAgdW5zaWduZWQgY2hhciByX3R5cGUyWzFdOwoK
ICB1bnNpZ25lZCBjaGFyIHJfdHlwZVsxXTsKfSBFbGY2NF9NaXBzX0V4dGVybmFsX1JlbDsKCnR5
cGVkZWYgc3RydWN0CnsKCiAgYmZkX3ZtYSByX29mZnNldDsKCiAgdW5zaWduZWQgbG9uZyByX3N5
bTsKCiAgdW5zaWduZWQgY2hhciByX3NzeW07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlMzsKCiAg
dW5zaWduZWQgY2hhciByX3R5cGUyOwoKICB1bnNpZ25lZCBjaGFyIHJfdHlwZTsKfSBFbGY2NF9N
aXBzX0ludGVybmFsX1JlbDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewoKICB1bnNpZ25lZCBjaGFyIHJf
b2Zmc2V0WzhdOwoKICB1bnNpZ25lZCBjaGFyIHJfc3ltWzRdOwoKICB1bnNpZ25lZCBjaGFyIHJf
c3N5bVsxXTsKCiAgdW5zaWduZWQgY2hhciByX3R5cGUzWzFdOwoKICB1bnNpZ25lZCBjaGFyIHJf
dHlwZTJbMV07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlWzFdOwoKICB1bnNpZ25lZCBjaGFyIHJf
YWRkZW5kWzhdOwp9IEVsZjY0X01pcHNfRXh0ZXJuYWxfUmVsYTsKCnR5cGVkZWYgc3RydWN0CnsK
CiAgYmZkX3ZtYSByX29mZnNldDsKCiAgdW5zaWduZWQgbG9uZyByX3N5bTsKCiAgdW5zaWduZWQg
Y2hhciByX3NzeW07CgogIHVuc2lnbmVkIGNoYXIgcl90eXBlMzsKCiAgdW5zaWduZWQgY2hhciBy
X3R5cGUyOwoKICB1bnNpZ25lZCBjaGFyIHJfdHlwZTsKCiAgYmZkX3NpZ25lZF92bWEgcl9hZGRl
bmQ7Cn0gRWxmNjRfTWlwc19JbnRlcm5hbF9SZWxhOwojIDc5OSAiLi4vaW5jbHVkZS9lbGYvbWlw
cy5oIgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGNoYXIga2luZFsxXTsKCiAgdW5zaWdu
ZWQgY2hhciBzaXplWzFdOwoKICB1bnNpZ25lZCBjaGFyIHNlY3Rpb25bMl07CgogIHVuc2lnbmVk
IGNoYXIgaW5mb1s0XTsKfSBFbGZfRXh0ZXJuYWxfT3B0aW9uczsKCnR5cGVkZWYgc3RydWN0CnsK
CiAgdW5zaWduZWQgY2hhciBraW5kOwoKICB1bnNpZ25lZCBjaGFyIHNpemU7CgogIHVuc2lnbmVk
IHNob3J0IHNlY3Rpb247CgogIHVuc2lnbmVkIGxvbmcgaW5mbzsKfSBFbGZfSW50ZXJuYWxfT3B0
aW9uczsKCgpleHRlcm4gdm9pZCBiZmRfbWlwc19lbGZfc3dhcF9vcHRpb25zX2luCiAgKGJmZCAq
LCBjb25zdCBFbGZfRXh0ZXJuYWxfT3B0aW9ucyAqLCBFbGZfSW50ZXJuYWxfT3B0aW9ucyAqKTsK
ZXh0ZXJuIHZvaWQgYmZkX21pcHNfZWxmX3N3YXBfb3B0aW9uc19vdXQKICAoYmZkICosIGNvbnN0
IEVsZl9JbnRlcm5hbF9PcHRpb25zICosIEVsZl9FeHRlcm5hbF9PcHRpb25zICopOwojIDg2OSAi
Li4vaW5jbHVkZS9lbGYvbWlwcy5oIgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIGNoYXIg
cmlfZ3BybWFza1s0XTsKCiAgdW5zaWduZWQgY2hhciByaV9wYWRbNF07CgogIHVuc2lnbmVkIGNo
YXIgcmlfY3BybWFza1s0XVs0XTsKCiAgdW5zaWduZWQgY2hhciByaV9ncF92YWx1ZVs4XTsKfSBF
bGY2NF9FeHRlcm5hbF9SZWdJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QKewoKICB1bnNpZ25lZCBsb25n
IHJpX2dwcm1hc2s7CgogIHVuc2lnbmVkIGxvbmcgcmlfcGFkOwoKICB1bnNpZ25lZCBsb25nIHJp
X2Nwcm1hc2tbNF07CgogIGJmZF92bWEgcmlfZ3BfdmFsdWU7Cn0gRWxmNjRfSW50ZXJuYWxfUmVn
SW5mbzsKCnR5cGVkZWYgc3RydWN0CnsKCgogIHVuc2lnbmVkIGNoYXIgbXNfaGFzaF92YWx1ZVs0
XTsKCgoKCgoKCiAgdW5zaWduZWQgY2hhciBtc19pbmZvWzRdOwp9IEVsZjMyX0V4dGVybmFsX01z
eW07Cgp0eXBlZGVmIHN0cnVjdAp7CgoKICB1bnNpZ25lZCBsb25nIG1zX2hhc2hfdmFsdWU7CgoK
CgoKCgogIHVuc2lnbmVkIGxvbmcgbXNfaW5mbzsKfSBFbGYzMl9JbnRlcm5hbF9Nc3ltOwoKCgoK
CgpleHRlcm4gdm9pZCBiZmRfbWlwc19lbGY2NF9zd2FwX3JlZ2luZm9faW4KICAoYmZkICosIGNv
bnN0IEVsZjY0X0V4dGVybmFsX1JlZ0luZm8gKiwgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyAqKTsK
ZXh0ZXJuIHZvaWQgYmZkX21pcHNfZWxmNjRfc3dhcF9yZWdpbmZvX291dAogIChiZmQgKiwgY29u
c3QgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyAqLCBFbGY2NF9FeHRlcm5hbF9SZWdJbmZvICopOwoj
IDc1ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9tbWl4LmgiIDEKIyAyNyAiLi4v
aW5jbHVkZS9lbGYvbW1peC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tbWl4X3JlbG9jX3R5
cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9tbWl4X3Jl
bG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsK
ICBjYXNlIDAgOiByZXR1cm4gIlJfTU1JWF9OT05FIiA7CgoKICBjYXNlIDEgOiByZXR1cm4gIlJf
TU1JWF84IiA7CiAgY2FzZSAyIDogcmV0dXJuICJSX01NSVhfMTYiIDsKICBjYXNlIDMgOiByZXR1
cm4gIlJfTU1JWF8yNCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NTUlYXzMyIiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX01NSVhfNjQiIDsKCgogIGNhc2UgNiA6IHJldHVybiAiUl9NTUlYX1BDXzgi
IDsKICBjYXNlIDcgOiByZXR1cm4gIlJfTU1JWF9QQ18xNiIgOwogIGNhc2UgOCA6IHJldHVybiAi
Ul9NTUlYX1BDXzI0IiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX01NSVhfUENfMzIiIDsKICBjYXNl
IDEwIDogcmV0dXJuICJSX01NSVhfUENfNjQiIDsKCgogIGNhc2UgMTEgOiByZXR1cm4gIlJfTU1J
WF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMiA6IHJldHVybiAiUl9NTUlYX0dOVV9WVEVOVFJZ
IiA7CgoKICBjYXNlIDEzIDogcmV0dXJuICJSX01NSVhfR0VUQSIgOwogIGNhc2UgMTQgOiByZXR1
cm4gIlJfTU1JWF9HRVRBXzEiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX01NSVhfR0VUQV8yIiA7
CiAgY2FzZSAxNiA6IHJldHVybiAiUl9NTUlYX0dFVEFfMyIgOwoKCiAgY2FzZSAxNyA6IHJldHVy
biAiUl9NTUlYX0NCUkFOQ0giIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX01NSVhfQ0JSQU5DSF9K
IiA7CiAgY2FzZSAxOSA6IHJldHVybiAiUl9NTUlYX0NCUkFOQ0hfMSIgOwogIGNhc2UgMjAgOiBy
ZXR1cm4gIlJfTU1JWF9DQlJBTkNIXzIiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX01NSVhfQ0JS
QU5DSF8zIiA7CgoKICBjYXNlIDIyIDogcmV0dXJuICJSX01NSVhfUFVTSEoiIDsKICBjYXNlIDIz
IDogcmV0dXJuICJSX01NSVhfUFVTSEpfMSIgOwogIGNhc2UgMjQgOiByZXR1cm4gIlJfTU1JWF9Q
VVNISl8yIiA7CiAgY2FzZSAyNSA6IHJldHVybiAiUl9NTUlYX1BVU0hKXzMiIDsKCgogIGNhc2Ug
MjYgOiByZXR1cm4gIlJfTU1JWF9KTVAiIDsKICBjYXNlIDI3IDogcmV0dXJuICJSX01NSVhfSk1Q
XzEiIDsKICBjYXNlIDI4IDogcmV0dXJuICJSX01NSVhfSk1QXzIiIDsKICBjYXNlIDI5IDogcmV0
dXJuICJSX01NSVhfSk1QXzMiIDsKCgogIGNhc2UgMzAgOiByZXR1cm4gIlJfTU1JWF9BRERSMTki
IDsKCgogIGNhc2UgMzEgOiByZXR1cm4gIlJfTU1JWF9BRERSMjciIDsKCgogIGNhc2UgMzIgOiBy
ZXR1cm4gIlJfTU1JWF9SRUdfT1JfQllURSIgOwoKCiAgY2FzZSAzMyA6IHJldHVybiAiUl9NTUlY
X1JFRyIgOwoKCgoKCiAgY2FzZSAzNCA6IHJldHVybiAiUl9NTUlYX0JBU0VfUExVU19PRkZTRVQi
IDsKCgogIGNhc2UgMzUgOiByZXR1cm4gIlJfTU1JWF9MT0NBTCIgOwpkZWZhdWx0OiByZXR1cm4g
KCh2b2lkICopMCk7IH0gfQojIDE2MCAiLi4vaW5jbHVkZS9lbGYvbW1peC5oIgpleHRlcm4gYmZk
X2Jvb2xlYW4gX2JmZF9tbWl4X3ByZXBhcmVfbGlua2VyX2FsbG9jYXRlZF9ncmVncwogKGJmZCAq
LCBzdHJ1Y3QgYmZkX2xpbmtfaW5mbyAqKTsKZXh0ZXJuIGJmZF9ib29sZWFuIF9iZmRfbW1peF9m
aW5hbGl6ZV9saW5rZXJfYWxsb2NhdGVkX2dyZWdzCiAoYmZkICosIHN0cnVjdCBiZmRfbGlua19p
bmZvICopOwpleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9tbWl4X2NoZWNrX2FsbF9yZWxvY3MKIChi
ZmQgKiwgc3RydWN0IGJmZF9saW5rX2luZm8gKik7CiMgNzYgInJlYWRlbGYuYyIgMgojIDEgIi4u
L2luY2x1ZGUvZWxmL21uMTAyMDAuaCIgMQojIDI4ICIuLi9pbmNsdWRlL2VsZi9tbjEwMjAwLmgi
CnN0YXRpYyBjb25zdCBjaGFyICogZWxmX21uMTAyMDBfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9u
ZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX21uMTAyMDBfcmVsb2NfdHlwZSAocnR5
cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJl
dHVybiAiUl9NTjEwMjAwX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfTU4xMDIwMF8zMiIg
OwogIGNhc2UgMiA6IHJldHVybiAiUl9NTjEwMjAwXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJS
X01OMTAyMDBfOCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9NTjEwMjAwXzI0IiA7CiAgY2FzZSA1
IDogcmV0dXJuICJSX01OMTAyMDBfUENSRUw4IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX01OMTAy
MDBfUENSRUwxNiIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9NTjEwMjAwX1BDUkVMMjQiIDsKZGVm
YXVsdDogcmV0dXJuICgodm9pZCAqKTApOyB9IH0KIyA3NyAicmVhZGVsZi5jIiAyCiMgMSAiLi4v
aW5jbHVkZS9lbGYvbW4xMDMwMC5oIiAxCiMgMjggIi4uL2luY2x1ZGUvZWxmL21uMTAzMDAuaCIK
c3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbW4xMDMwMF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25n
IHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbW4xMDMwMF9yZWxvY190eXBlIChydHlw
ZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0
dXJuICJSX01OMTAzMDBfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9NTjEwMzAwXzMyIiA7
CiAgY2FzZSAyIDogcmV0dXJuICJSX01OMTAzMDBfMTYiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJf
TU4xMDMwMF84IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX01OMTAzMDBfUENSRUwzMiIgOwogIGNh
c2UgNSA6IHJldHVybiAiUl9NTjEwMzAwX1BDUkVMMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJf
TU4xMDMwMF9QQ1JFTDgiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfTU4xMDMwMF9HTlVfVlRJTkhF
UklUIiA7CiAgY2FzZSA4IDogcmV0dXJuICJSX01OMTAzMDBfR05VX1ZURU5UUlkiIDsKICBjYXNl
IDkgOiByZXR1cm4gIlJfTU4xMDMwMF8yNCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7
IH0gfQojIDc4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9tc3A0MzAuaCIgMQoj
IDQ0ICIuLi9pbmNsdWRlL2VsZi9tc3A0MzAuaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfbXNw
NDMwX3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAq
IGVsZl9tc3A0MzBfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dp
dGNoIChydHlwZSkgewogICAgIGNhc2UgMCA6IHJldHVybiAiUl9NU1A0MzBfTk9ORSIgOwogICAg
IGNhc2UgMSA6IHJldHVybiAiUl9NU1A0MzBfMzIiIDsKICAgICBjYXNlIDIgOiByZXR1cm4gIlJf
TVNQNDMwXzEwX1BDUkVMIiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSX01TUDQzMF8xNiIgOwog
ICAgIGNhc2UgNCA6IHJldHVybiAiUl9NU1A0MzBfMTZfUENSRUwiIDsKICAgICBjYXNlIDUgOiBy
ZXR1cm4gIlJfTVNQNDMwXzE2X0JZVEUiIDsKICAgICBjYXNlIDYgOiByZXR1cm4gIlJfTVNQNDMw
XzE2X1BDUkVMX0JZVEUiIDsKCmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgNzkg
InJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL29yMzIuaCIgMQojIDI3ICIuLi9pbmNs
dWRlL2VsZi9vcjMyLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX29yMzJfcmVsb2NfdHlwZSAo
dW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX29yMzJfcmVsb2Nf
dHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNh
c2UgMCA6IHJldHVybiAiUl9PUjMyX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfT1IzMl8z
MiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9PUjMyXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJS
X09SMzJfOCIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9PUjMyX0NPTlNUIiA7CiAgY2FzZSA1IDog
cmV0dXJuICJSX09SMzJfQ09OU1RIIiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX09SMzJfSlVNUFRB
UkciIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfT1IzMl9HTlVfVlRFTlRSWSIgOwogIGNhc2UgOCA6
IHJldHVybiAiUl9PUjMyX0dOVV9WVElOSEVSSVQiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAq
KTApOyB9IH0KIyA4MCAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYvcGouaCIgMQoj
IDI3ICIuLi9pbmNsdWRlL2VsZi9wai5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9wal9yZWxv
Y190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfcGpf
cmVsb2NfdHlwZSAocnR5cGUpIHVuc2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkg
ewogIGNhc2UgMCA6IHJldHVybiAiUl9QSl9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX1BK
X0RBVEFfRElSMzIiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfUEpfQ09ERV9SRUwzMiIgOwogIGNh
c2UgMyA6IHJldHVybiAiUl9QSl9DT0RFX1JFTDE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX1BK
X0NPREVfRElSMzIiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfUEpfQ09ERV9ESVIxNiIgOwogIGNh
c2UgMTMgOiByZXR1cm4gIlJfUEpfQ09ERV9MTzE2IiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9Q
Sl9DT0RFX0hJMTYiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX1BKX0dOVV9WVElOSEVSSVQiIDsK
ICBjYXNlIDE2IDogcmV0dXJuICJSX1BKX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODEgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3Bw
Yy5oIiAxCiMgMzQgIi4uL2luY2x1ZGUvZWxmL3BwYy5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVs
Zl9wcGNfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFy
ICogZWxmX3BwY19yZWxvY190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0
Y2ggKHJ0eXBlKSB7CiAgY2FzZSAwIDogcmV0dXJuICJSX1BQQ19OT05FIiA7CiAgY2FzZSAxIDog
cmV0dXJuICJSX1BQQ19BRERSMzIiIDsKICBjYXNlIDIgOiByZXR1cm4gIlJfUFBDX0FERFIyNCIg
OwogIGNhc2UgMyA6IHJldHVybiAiUl9QUENfQUREUjE2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJS
X1BQQ19BRERSMTZfTE8iIDsKICBjYXNlIDUgOiByZXR1cm4gIlJfUFBDX0FERFIxNl9ISSIgOwog
IGNhc2UgNiA6IHJldHVybiAiUl9QUENfQUREUjE2X0hBIiA7CiAgY2FzZSA3IDogcmV0dXJuICJS
X1BQQ19BRERSMTQiIDsKICBjYXNlIDggOiByZXR1cm4gIlJfUFBDX0FERFIxNF9CUlRBS0VOIiA7
CiAgY2FzZSA5IDogcmV0dXJuICJSX1BQQ19BRERSMTRfQlJOVEFLRU4iIDsKICBjYXNlIDEwIDog
cmV0dXJuICJSX1BQQ19SRUwyNCIgOwogIGNhc2UgMTEgOiByZXR1cm4gIlJfUFBDX1JFTDE0IiA7
CiAgY2FzZSAxMiA6IHJldHVybiAiUl9QUENfUkVMMTRfQlJUQUtFTiIgOwogIGNhc2UgMTMgOiBy
ZXR1cm4gIlJfUFBDX1JFTDE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9QUENf
R09UMTYiIDsKICBjYXNlIDE1IDogcmV0dXJuICJSX1BQQ19HT1QxNl9MTyIgOwogIGNhc2UgMTYg
OiByZXR1cm4gIlJfUFBDX0dPVDE2X0hJIiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9QUENfR09U
MTZfSEEiIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX1BQQ19QTFRSRUwyNCIgOwogIGNhc2UgMTkg
OiByZXR1cm4gIlJfUFBDX0NPUFkiIDsKICBjYXNlIDIwIDogcmV0dXJuICJSX1BQQ19HTE9CX0RB
VCIgOwogIGNhc2UgMjEgOiByZXR1cm4gIlJfUFBDX0pNUF9TTE9UIiA7CiAgY2FzZSAyMiA6IHJl
dHVybiAiUl9QUENfUkVMQVRJVkUiIDsKICBjYXNlIDIzIDogcmV0dXJuICJSX1BQQ19MT0NBTDI0
UEMiIDsKICBjYXNlIDI0IDogcmV0dXJuICJSX1BQQ19VQUREUjMyIiA7CiAgY2FzZSAyNSA6IHJl
dHVybiAiUl9QUENfVUFERFIxNiIgOwogIGNhc2UgMjYgOiByZXR1cm4gIlJfUFBDX1JFTDMyIiA7
CiAgY2FzZSAyNyA6IHJldHVybiAiUl9QUENfUExUMzIiIDsKICBjYXNlIDI4IDogcmV0dXJuICJS
X1BQQ19QTFRSRUwzMiIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJfUFBDX1BMVDE2X0xPIiA7CiAg
Y2FzZSAzMCA6IHJldHVybiAiUl9QUENfUExUMTZfSEkiIDsKICBjYXNlIDMxIDogcmV0dXJuICJS
X1BQQ19QTFQxNl9IQSIgOwogIGNhc2UgMzIgOiByZXR1cm4gIlJfUFBDX1NEQVJFTDE2IiA7CiAg
Y2FzZSAzMyA6IHJldHVybiAiUl9QUENfU0VDVE9GRiIgOwogIGNhc2UgMzQgOiByZXR1cm4gIlJf
UFBDX1NFQ1RPRkZfTE8iIDsKICBjYXNlIDM1IDogcmV0dXJuICJSX1BQQ19TRUNUT0ZGX0hJIiA7
CiAgY2FzZSAzNiA6IHJldHVybiAiUl9QUENfU0VDVE9GRl9IQSIgOwogIGNhc2UgMzcgOiByZXR1
cm4gIlJfUFBDX0FERFIzMCIgOwoKCiAgY2FzZSA2NyA6IHJldHVybiAiUl9QUENfVExTIiA7CiAg
Y2FzZSA2OCA6IHJldHVybiAiUl9QUENfRFRQTU9EMzIiIDsKICBjYXNlIDY5IDogcmV0dXJuICJS
X1BQQ19UUFJFTDE2IiA7CiAgY2FzZSA3MCA6IHJldHVybiAiUl9QUENfVFBSRUwxNl9MTyIgOwog
IGNhc2UgNzEgOiByZXR1cm4gIlJfUFBDX1RQUkVMMTZfSEkiIDsKICBjYXNlIDcyIDogcmV0dXJu
ICJSX1BQQ19UUFJFTDE2X0hBIiA7CiAgY2FzZSA3MyA6IHJldHVybiAiUl9QUENfVFBSRUwzMiIg
OwogIGNhc2UgNzQgOiByZXR1cm4gIlJfUFBDX0RUUFJFTDE2IiA7CiAgY2FzZSA3NSA6IHJldHVy
biAiUl9QUENfRFRQUkVMMTZfTE8iIDsKICBjYXNlIDc2IDogcmV0dXJuICJSX1BQQ19EVFBSRUwx
Nl9ISSIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfUFBDX0RUUFJFTDE2X0hBIiA7CiAgY2FzZSA3
OCA6IHJldHVybiAiUl9QUENfRFRQUkVMMzIiIDsKICBjYXNlIDc5IDogcmV0dXJuICJSX1BQQ19H
T1RfVExTR0QxNiIgOwogIGNhc2UgODAgOiByZXR1cm4gIlJfUFBDX0dPVF9UTFNHRDE2X0xPIiA7
CiAgY2FzZSA4MSA6IHJldHVybiAiUl9QUENfR09UX1RMU0dEMTZfSEkiIDsKICBjYXNlIDgyIDog
cmV0dXJuICJSX1BQQ19HT1RfVExTR0QxNl9IQSIgOwogIGNhc2UgODMgOiByZXR1cm4gIlJfUFBD
X0dPVF9UTFNMRDE2IiA7CiAgY2FzZSA4NCA6IHJldHVybiAiUl9QUENfR09UX1RMU0xEMTZfTE8i
IDsKICBjYXNlIDg1IDogcmV0dXJuICJSX1BQQ19HT1RfVExTTEQxNl9ISSIgOwogIGNhc2UgODYg
OiByZXR1cm4gIlJfUFBDX0dPVF9UTFNMRDE2X0hBIiA7CiAgY2FzZSA4NyA6IHJldHVybiAiUl9Q
UENfR09UX1RQUkVMMTYiIDsKICBjYXNlIDg4IDogcmV0dXJuICJSX1BQQ19HT1RfVFBSRUwxNl9M
TyIgOwogIGNhc2UgODkgOiByZXR1cm4gIlJfUFBDX0dPVF9UUFJFTDE2X0hJIiA7CiAgY2FzZSA5
MCA6IHJldHVybiAiUl9QUENfR09UX1RQUkVMMTZfSEEiIDsKICBjYXNlIDkxIDogcmV0dXJuICJS
X1BQQ19HT1RfRFRQUkVMMTYiIDsKICBjYXNlIDkyIDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVM
MTZfTE8iIDsKICBjYXNlIDkzIDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVMMTZfSEkiIDsKICBj
YXNlIDk0IDogcmV0dXJuICJSX1BQQ19HT1RfRFRQUkVMMTZfSEEiIDsKCgoKICBjYXNlIDEwMSA6
IHJldHVybiAiUl9QUENfRU1CX05BRERSMzIiIDsKICBjYXNlIDEwMiA6IHJldHVybiAiUl9QUENf
RU1CX05BRERSMTYiIDsKICBjYXNlIDEwMyA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfTE8i
IDsKICBjYXNlIDEwNCA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfSEkiIDsKICBjYXNlIDEw
NSA6IHJldHVybiAiUl9QUENfRU1CX05BRERSMTZfSEEiIDsKICBjYXNlIDEwNiA6IHJldHVybiAi
Ul9QUENfRU1CX1NEQUkxNiIgOwogIGNhc2UgMTA3IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMkkx
NiIgOwogIGNhc2UgMTA4IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMlJFTCIgOwogIGNhc2UgMTA5
IDogcmV0dXJuICJSX1BQQ19FTUJfU0RBMjEiIDsKICBjYXNlIDExMCA6IHJldHVybiAiUl9QUENf
RU1CX01SS1JFRiIgOwogIGNhc2UgMTExIDogcmV0dXJuICJSX1BQQ19FTUJfUkVMU0VDMTYiIDsK
ICBjYXNlIDExMiA6IHJldHVybiAiUl9QUENfRU1CX1JFTFNUX0xPIiA7CiAgY2FzZSAxMTMgOiBy
ZXR1cm4gIlJfUFBDX0VNQl9SRUxTVF9ISSIgOwogIGNhc2UgMTE0IDogcmV0dXJuICJSX1BQQ19F
TUJfUkVMU1RfSEEiIDsKICBjYXNlIDExNSA6IHJldHVybiAiUl9QUENfRU1CX0JJVF9GTEQiIDsK
ICBjYXNlIDExNiA6IHJldHVybiAiUl9QUENfRU1CX1JFTFNEQSIgOwoKCiAgY2FzZSAyNTMgOiBy
ZXR1cm4gIlJfUFBDX0dOVV9WVElOSEVSSVQiIDsKICBjYXNlIDI1NCA6IHJldHVybiAiUl9QUENf
R05VX1ZURU5UUlkiIDsKCgoKICBjYXNlIDI1NSA6IHJldHVybiAiUl9QUENfVE9DMTYiIDsKCmRl
ZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgODIgInJlYWRlbGYuYyIgMgojIDEgIi4u
L2luY2x1ZGUvZWxmL3BwYzY0LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYvcHBjNjQuaCIKc3Rh
dGljIGNvbnN0IGNoYXIgKiBlbGZfcHBjNjRfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlw
ZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX3BwYzY0X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNp
Z25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJf
UFBDNjRfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9QUEM2NF9BRERSMzIiIDsKICBjYXNl
IDIgOiByZXR1cm4gIlJfUFBDNjRfQUREUjI0IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX1BQQzY0
X0FERFIxNiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfTE8iIDsKICBjYXNl
IDUgOiByZXR1cm4gIlJfUFBDNjRfQUREUjE2X0hJIiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX1BQ
QzY0X0FERFIxNl9IQSIgOwogIGNhc2UgNyA6IHJldHVybiAiUl9QUEM2NF9BRERSMTQiIDsKICBj
YXNlIDggOiByZXR1cm4gIlJfUFBDNjRfQUREUjE0X0JSVEFLRU4iIDsKICBjYXNlIDkgOiByZXR1
cm4gIlJfUFBDNjRfQUREUjE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9QUEM2
NF9SRUwyNCIgOwogIGNhc2UgMTEgOiByZXR1cm4gIlJfUFBDNjRfUkVMMTQiIDsKICBjYXNlIDEy
IDogcmV0dXJuICJSX1BQQzY0X1JFTDE0X0JSVEFLRU4iIDsKICBjYXNlIDEzIDogcmV0dXJuICJS
X1BQQzY0X1JFTDE0X0JSTlRBS0VOIiA7CiAgY2FzZSAxNCA6IHJldHVybiAiUl9QUEM2NF9HT1Qx
NiIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfUFBDNjRfR09UMTZfTE8iIDsKICBjYXNlIDE2IDog
cmV0dXJuICJSX1BQQzY0X0dPVDE2X0hJIiA7CiAgY2FzZSAxNyA6IHJldHVybiAiUl9QUEM2NF9H
T1QxNl9IQSIgOwoKICBjYXNlIDE5IDogcmV0dXJuICJSX1BQQzY0X0NPUFkiIDsKICBjYXNlIDIw
IDogcmV0dXJuICJSX1BQQzY0X0dMT0JfREFUIiA7CiAgY2FzZSAyMSA6IHJldHVybiAiUl9QUEM2
NF9KTVBfU0xPVCIgOwogIGNhc2UgMjIgOiByZXR1cm4gIlJfUFBDNjRfUkVMQVRJVkUiIDsKCiAg
Y2FzZSAyNCA6IHJldHVybiAiUl9QUEM2NF9VQUREUjMyIiA7CiAgY2FzZSAyNSA6IHJldHVybiAi
Ul9QUEM2NF9VQUREUjE2IiA7CiAgY2FzZSAyNiA6IHJldHVybiAiUl9QUEM2NF9SRUwzMiIgOwog
IGNhc2UgMjcgOiByZXR1cm4gIlJfUFBDNjRfUExUMzIiIDsKICBjYXNlIDI4IDogcmV0dXJuICJS
X1BQQzY0X1BMVFJFTDMyIiA7CiAgY2FzZSAyOSA6IHJldHVybiAiUl9QUEM2NF9QTFQxNl9MTyIg
OwogIGNhc2UgMzAgOiByZXR1cm4gIlJfUFBDNjRfUExUMTZfSEkiIDsKICBjYXNlIDMxIDogcmV0
dXJuICJSX1BQQzY0X1BMVDE2X0hBIiA7CgogIGNhc2UgMzMgOiByZXR1cm4gIlJfUFBDNjRfU0VD
VE9GRiIgOwogIGNhc2UgMzQgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9GRl9MTyIgOwogIGNhc2Ug
MzUgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9GRl9ISSIgOwogIGNhc2UgMzYgOiByZXR1cm4gIlJf
UFBDNjRfU0VDVE9GRl9IQSIgOwogIGNhc2UgMzcgOiByZXR1cm4gIlJfUFBDNjRfUkVMMzAiIDsK
ICBjYXNlIDM4IDogcmV0dXJuICJSX1BQQzY0X0FERFI2NCIgOwogIGNhc2UgMzkgOiByZXR1cm4g
IlJfUFBDNjRfQUREUjE2X0hJR0hFUiIgOwogIGNhc2UgNDAgOiByZXR1cm4gIlJfUFBDNjRfQURE
UjE2X0hJR0hFUkEiIDsKICBjYXNlIDQxIDogcmV0dXJuICJSX1BQQzY0X0FERFIxNl9ISUdIRVNU
IiA7CiAgY2FzZSA0MiA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfSElHSEVTVEEiIDsKICBjYXNl
IDQzIDogcmV0dXJuICJSX1BQQzY0X1VBRERSNjQiIDsKICBjYXNlIDQ0IDogcmV0dXJuICJSX1BQ
QzY0X1JFTDY0IiA7CiAgY2FzZSA0NSA6IHJldHVybiAiUl9QUEM2NF9QTFQ2NCIgOwogIGNhc2Ug
NDYgOiByZXR1cm4gIlJfUFBDNjRfUExUUkVMNjQiIDsKICBjYXNlIDQ3IDogcmV0dXJuICJSX1BQ
QzY0X1RPQzE2IiA7CiAgY2FzZSA0OCA6IHJldHVybiAiUl9QUEM2NF9UT0MxNl9MTyIgOwogIGNh
c2UgNDkgOiByZXR1cm4gIlJfUFBDNjRfVE9DMTZfSEkiIDsKICBjYXNlIDUwIDogcmV0dXJuICJS
X1BQQzY0X1RPQzE2X0hBIiA7CiAgY2FzZSA1MSA6IHJldHVybiAiUl9QUEM2NF9UT0MiIDsKICBj
YXNlIDUyIDogcmV0dXJuICJSX1BQQzY0X1BMVEdPVDE2IiA7CiAgY2FzZSA1MyA6IHJldHVybiAi
Ul9QUEM2NF9QTFRHT1QxNl9MTyIgOwogIGNhc2UgNTQgOiByZXR1cm4gIlJfUFBDNjRfUExUR09U
MTZfSEkiIDsKICBjYXNlIDU1IDogcmV0dXJuICJSX1BQQzY0X1BMVEdPVDE2X0hBIiA7CgoKCiAg
Y2FzZSA1NiA6IHJldHVybiAiUl9QUEM2NF9BRERSMTZfRFMiIDsKICBjYXNlIDU3IDogcmV0dXJu
ICJSX1BQQzY0X0FERFIxNl9MT19EUyIgOwogIGNhc2UgNTggOiByZXR1cm4gIlJfUFBDNjRfR09U
MTZfRFMiIDsKICBjYXNlIDU5IDogcmV0dXJuICJSX1BQQzY0X0dPVDE2X0xPX0RTIiA7CiAgY2Fz
ZSA2MCA6IHJldHVybiAiUl9QUEM2NF9QTFQxNl9MT19EUyIgOwogIGNhc2UgNjEgOiByZXR1cm4g
IlJfUFBDNjRfU0VDVE9GRl9EUyIgOwogIGNhc2UgNjIgOiByZXR1cm4gIlJfUFBDNjRfU0VDVE9G
Rl9MT19EUyIgOwogIGNhc2UgNjMgOiByZXR1cm4gIlJfUFBDNjRfVE9DMTZfRFMiIDsKICBjYXNl
IDY0IDogcmV0dXJuICJSX1BQQzY0X1RPQzE2X0xPX0RTIiA7CiAgY2FzZSA2NSA6IHJldHVybiAi
Ul9QUEM2NF9QTFRHT1QxNl9EUyIgOwogIGNhc2UgNjYgOiByZXR1cm4gIlJfUFBDNjRfUExUR09U
MTZfTE9fRFMiIDsKCgogIGNhc2UgNjcgOiByZXR1cm4gIlJfUFBDNjRfVExTIiA7CiAgY2FzZSA2
OCA6IHJldHVybiAiUl9QUEM2NF9EVFBNT0Q2NCIgOwogIGNhc2UgNjkgOiByZXR1cm4gIlJfUFBD
NjRfVFBSRUwxNiIgOwogIGNhc2UgNzAgOiByZXR1cm4gIlJfUFBDNjRfVFBSRUwxNl9MTyIgOwog
IGNhc2UgNzEgOiByZXR1cm4gIlJfUFBDNjRfVFBSRUwxNl9ISSIgOwogIGNhc2UgNzIgOiByZXR1
cm4gIlJfUFBDNjRfVFBSRUwxNl9IQSIgOwogIGNhc2UgNzMgOiByZXR1cm4gIlJfUFBDNjRfVFBS
RUw2NCIgOwogIGNhc2UgNzQgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTYiIDsKICBjYXNlIDc1
IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDE2X0xPIiA7CiAgY2FzZSA3NiA6IHJldHVybiAiUl9Q
UEM2NF9EVFBSRUwxNl9ISSIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZf
SEEiIDsKICBjYXNlIDc4IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDY0IiA7CiAgY2FzZSA3OSA6
IHJldHVybiAiUl9QUEM2NF9HT1RfVExTR0QxNiIgOwogIGNhc2UgODAgOiByZXR1cm4gIlJfUFBD
NjRfR09UX1RMU0dEMTZfTE8iIDsKICBjYXNlIDgxIDogcmV0dXJuICJSX1BQQzY0X0dPVF9UTFNH
RDE2X0hJIiA7CiAgY2FzZSA4MiA6IHJldHVybiAiUl9QUEM2NF9HT1RfVExTR0QxNl9IQSIgOwog
IGNhc2UgODMgOiByZXR1cm4gIlJfUFBDNjRfR09UX1RMU0xEMTYiIDsKICBjYXNlIDg0IDogcmV0
dXJuICJSX1BQQzY0X0dPVF9UTFNMRDE2X0xPIiA7CiAgY2FzZSA4NSA6IHJldHVybiAiUl9QUEM2
NF9HT1RfVExTTEQxNl9ISSIgOwogIGNhc2UgODYgOiByZXR1cm4gIlJfUFBDNjRfR09UX1RMU0xE
MTZfSEEiIDsKICBjYXNlIDg3IDogcmV0dXJuICJSX1BQQzY0X0dPVF9UUFJFTDE2X0RTIiA7CiAg
Y2FzZSA4OCA6IHJldHVybiAiUl9QUEM2NF9HT1RfVFBSRUwxNl9MT19EUyIgOwogIGNhc2UgODkg
OiByZXR1cm4gIlJfUFBDNjRfR09UX1RQUkVMMTZfSEkiIDsKICBjYXNlIDkwIDogcmV0dXJuICJS
X1BQQzY0X0dPVF9UUFJFTDE2X0hBIiA7CiAgY2FzZSA5MSA6IHJldHVybiAiUl9QUEM2NF9HT1Rf
RFRQUkVMMTZfRFMiIDsKICBjYXNlIDkyIDogcmV0dXJuICJSX1BQQzY0X0dPVF9EVFBSRUwxNl9M
T19EUyIgOwogIGNhc2UgOTMgOiByZXR1cm4gIlJfUFBDNjRfR09UX0RUUFJFTDE2X0hJIiA7CiAg
Y2FzZSA5NCA6IHJldHVybiAiUl9QUEM2NF9HT1RfRFRQUkVMMTZfSEEiIDsKICBjYXNlIDk1IDog
cmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfRFMiIDsKICBjYXNlIDk2IDogcmV0dXJuICJSX1BQQzY0
X1RQUkVMMTZfTE9fRFMiIDsKICBjYXNlIDk3IDogcmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElH
SEVSIiA7CiAgY2FzZSA5OCA6IHJldHVybiAiUl9QUEM2NF9UUFJFTDE2X0hJR0hFUkEiIDsKICBj
YXNlIDk5IDogcmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElHSEVTVCIgOwogIGNhc2UgMTAwIDog
cmV0dXJuICJSX1BQQzY0X1RQUkVMMTZfSElHSEVTVEEiIDsKICBjYXNlIDEwMSA6IHJldHVybiAi
Ul9QUEM2NF9EVFBSRUwxNl9EUyIgOwogIGNhc2UgMTAyIDogcmV0dXJuICJSX1BQQzY0X0RUUFJF
TDE2X0xPX0RTIiA7CiAgY2FzZSAxMDMgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZfSElHSEVS
IiA7CiAgY2FzZSAxMDQgOiByZXR1cm4gIlJfUFBDNjRfRFRQUkVMMTZfSElHSEVSQSIgOwogIGNh
c2UgMTA1IDogcmV0dXJuICJSX1BQQzY0X0RUUFJFTDE2X0hJR0hFU1QiIDsKICBjYXNlIDEwNiA6
IHJldHVybiAiUl9QUEM2NF9EVFBSRUwxNl9ISUdIRVNUQSIgOwoKCiAgY2FzZSAyNTMgOiByZXR1
cm4gIlJfUFBDNjRfR05VX1ZUSU5IRVJJVCIgOwogIGNhc2UgMjU0IDogcmV0dXJuICJSX1BQQzY0
X0dOVV9WVEVOVFJZIiA7CgpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDgzICJy
ZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9zMzkwLmgiIDEKIyAzOCAiLi4vaW5jbHVk
ZS9lbGYvczM5MC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zMzkwX3JlbG9jX3R5cGUgKHVu
c2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zMzkwX3JlbG9jX3R5
cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICAgIGNh
c2UgMCA6IHJldHVybiAiUl8zOTBfTk9ORSIgOwogICAgY2FzZSAxIDogcmV0dXJuICJSXzM5MF84
IiA7CiAgICBjYXNlIDIgOiByZXR1cm4gIlJfMzkwXzEyIiA7CiAgICBjYXNlIDMgOiByZXR1cm4g
IlJfMzkwXzE2IiA7CiAgICBjYXNlIDQgOiByZXR1cm4gIlJfMzkwXzMyIiA7CiAgICBjYXNlIDUg
OiByZXR1cm4gIlJfMzkwX1BDMzIiIDsKICAgIGNhc2UgNiA6IHJldHVybiAiUl8zOTBfR09UMTIi
IDsKICAgIGNhc2UgNyA6IHJldHVybiAiUl8zOTBfR09UMzIiIDsKICAgIGNhc2UgOCA6IHJldHVy
biAiUl8zOTBfUExUMzIiIDsKICAgIGNhc2UgOSA6IHJldHVybiAiUl8zOTBfQ09QWSIgOwogICAg
Y2FzZSAxMCA6IHJldHVybiAiUl8zOTBfR0xPQl9EQVQiIDsKICAgIGNhc2UgMTEgOiByZXR1cm4g
IlJfMzkwX0pNUF9TTE9UIiA7CiAgICBjYXNlIDEyIDogcmV0dXJuICJSXzM5MF9SRUxBVElWRSIg
OwogICAgY2FzZSAxMyA6IHJldHVybiAiUl8zOTBfR09UT0ZGMzIiIDsKICAgIGNhc2UgMTQgOiBy
ZXR1cm4gIlJfMzkwX0dPVFBDIiA7CiAgICBjYXNlIDE1IDogcmV0dXJuICJSXzM5MF9HT1QxNiIg
OwogICAgY2FzZSAxNiA6IHJldHVybiAiUl8zOTBfUEMxNiIgOwogICAgY2FzZSAxNyA6IHJldHVy
biAiUl8zOTBfUEMxNkRCTCIgOwogICAgY2FzZSAxOCA6IHJldHVybiAiUl8zOTBfUExUMTZEQkwi
IDsKICAgIGNhc2UgMTkgOiByZXR1cm4gIlJfMzkwX1BDMzJEQkwiIDsKICAgIGNhc2UgMjAgOiBy
ZXR1cm4gIlJfMzkwX1BMVDMyREJMIiA7CiAgICBjYXNlIDIxIDogcmV0dXJuICJSXzM5MF9HT1RQ
Q0RCTCIgOwogICAgY2FzZSAyMiA6IHJldHVybiAiUl8zOTBfNjQiIDsKICAgIGNhc2UgMjMgOiBy
ZXR1cm4gIlJfMzkwX1BDNjQiIDsKICAgIGNhc2UgMjQgOiByZXR1cm4gIlJfMzkwX0dPVDY0IiA7
CiAgICBjYXNlIDI1IDogcmV0dXJuICJSXzM5MF9QTFQ2NCIgOwogICAgY2FzZSAyNiA6IHJldHVy
biAiUl8zOTBfR09URU5UIiA7CiAgICBjYXNlIDI3IDogcmV0dXJuICJSXzM5MF9HT1RPRkYxNiIg
OwogICAgY2FzZSAyOCA6IHJldHVybiAiUl8zOTBfR09UT0ZGNjQiIDsKICAgIGNhc2UgMjkgOiBy
ZXR1cm4gIlJfMzkwX0dPVFBMVDEyIiA7CiAgICBjYXNlIDMwIDogcmV0dXJuICJSXzM5MF9HT1RQ
TFQxNiIgOwogICAgY2FzZSAzMSA6IHJldHVybiAiUl8zOTBfR09UUExUMzIiIDsKICAgIGNhc2Ug
MzIgOiByZXR1cm4gIlJfMzkwX0dPVFBMVDY0IiA7CiAgICBjYXNlIDMzIDogcmV0dXJuICJSXzM5
MF9HT1RQTFRFTlQiIDsKICAgIGNhc2UgMzQgOiByZXR1cm4gIlJfMzkwX1BMVE9GRjE2IiA7CiAg
ICBjYXNlIDM1IDogcmV0dXJuICJSXzM5MF9QTFRPRkYzMiIgOwogICAgY2FzZSAzNiA6IHJldHVy
biAiUl8zOTBfUExUT0ZGNjQiIDsKICAgIGNhc2UgMzcgOiByZXR1cm4gIlJfMzkwX1RMU19MT0FE
IiA7CiAgICBjYXNlIDM4IDogcmV0dXJuICJSXzM5MF9UTFNfR0RDQUxMIiA7CgogICAgY2FzZSAz
OSA6IHJldHVybiAiUl8zOTBfVExTX0xEQ0FMTCIgOwoKICAgIGNhc2UgNDAgOiByZXR1cm4gIlJf
MzkwX1RMU19HRDMyIiA7CgogICAgY2FzZSA0MSA6IHJldHVybiAiUl8zOTBfVExTX0dENjQiIDsK
CiAgICBjYXNlIDQyIDogcmV0dXJuICJSXzM5MF9UTFNfR09USUUxMiIgOwoKICAgIGNhc2UgNDMg
OiByZXR1cm4gIlJfMzkwX1RMU19HT1RJRTMyIiA7CgogICAgY2FzZSA0NCA6IHJldHVybiAiUl8z
OTBfVExTX0dPVElFNjQiIDsKCiAgICBjYXNlIDQ1IDogcmV0dXJuICJSXzM5MF9UTFNfTERNMzIi
IDsKCiAgICBjYXNlIDQ2IDogcmV0dXJuICJSXzM5MF9UTFNfTERNNjQiIDsKCiAgICBjYXNlIDQ3
IDogcmV0dXJuICJSXzM5MF9UTFNfSUUzMiIgOwoKICAgIGNhc2UgNDggOiByZXR1cm4gIlJfMzkw
X1RMU19JRTY0IiA7CgogICAgY2FzZSA0OSA6IHJldHVybiAiUl8zOTBfVExTX0lFRU5UIiA7Cgog
ICAgY2FzZSA1MCA6IHJldHVybiAiUl8zOTBfVExTX0xFMzIiIDsKCiAgICBjYXNlIDUxIDogcmV0
dXJuICJSXzM5MF9UTFNfTEU2NCIgOwoKICAgIGNhc2UgNTIgOiByZXR1cm4gIlJfMzkwX1RMU19M
RE8zMiIgOwoKICAgIGNhc2UgNTMgOiByZXR1cm4gIlJfMzkwX1RMU19MRE82NCIgOwoKICAgIGNh
c2UgNTQgOiByZXR1cm4gIlJfMzkwX1RMU19EVFBNT0QiIDsKICAgIGNhc2UgNTUgOiByZXR1cm4g
IlJfMzkwX1RMU19EVFBPRkYiIDsKICAgIGNhc2UgNTYgOiByZXR1cm4gIlJfMzkwX1RMU19UUE9G
RiIgOwoKCiAgICBjYXNlIDI1MCA6IHJldHVybiAiUl8zOTBfR05VX1ZUSU5IRVJJVCIgOwogICAg
Y2FzZSAyNTEgOiByZXR1cm4gIlJfMzkwX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODQgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3No
LmgiIDEKIyA4NyAiLi4vaW5jbHVkZS9lbGYvc2guaCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZf
c2hfcmVsb2NfdHlwZSAodW5zaWduZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICog
ZWxmX3NoX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfU0hfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVy
biAiUl9TSF9ESVIzMiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9TSF9SRUwzMiIgOwogIGNhc2Ug
MyA6IHJldHVybiAiUl9TSF9ESVI4V1BOIiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX1NIX0lORDEy
VyIgOwogIGNhc2UgNSA6IHJldHVybiAiUl9TSF9ESVI4V1BMIiA7CiAgY2FzZSA2IDogcmV0dXJu
ICJSX1NIX0RJUjhXUFoiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfU0hfRElSOEJQIiA7CiAgY2Fz
ZSA4IDogcmV0dXJuICJSX1NIX0RJUjhXIiA7CiAgY2FzZSA5IDogcmV0dXJuICJSX1NIX0RJUjhM
IiA7CiAKIAogIGNhc2UgMjUgOiByZXR1cm4gIlJfU0hfU1dJVENIMTYiIDsKICBjYXNlIDI2IDog
cmV0dXJuICJSX1NIX1NXSVRDSDMyIiA7CiAgY2FzZSAyNyA6IHJldHVybiAiUl9TSF9VU0VTIiA7
CiAgY2FzZSAyOCA6IHJldHVybiAiUl9TSF9DT1VOVCIgOwogIGNhc2UgMjkgOiByZXR1cm4gIlJf
U0hfQUxJR04iIDsKICBjYXNlIDMwIDogcmV0dXJuICJSX1NIX0NPREUiIDsKICBjYXNlIDMxIDog
cmV0dXJuICJSX1NIX0RBVEEiIDsKICBjYXNlIDMyIDogcmV0dXJuICJSX1NIX0xBQkVMIiA7CiAg
Y2FzZSAzMyA6IHJldHVybiAiUl9TSF9TV0lUQ0g4IiA7CiAgY2FzZSAzNCA6IHJldHVybiAiUl9T
SF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAzNSA6IHJldHVybiAiUl9TSF9HTlVfVlRFTlRSWSIg
OwogIGNhc2UgMzYgOiByZXR1cm4gIlJfU0hfTE9PUF9TVEFSVCIgOwogIGNhc2UgMzcgOiByZXR1
cm4gIlJfU0hfTE9PUF9FTkQiIDsKIAogCiAgY2FzZSA0NSA6IHJldHVybiAiUl9TSF9ESVI1VSIg
OwogIGNhc2UgNDYgOiByZXR1cm4gIlJfU0hfRElSNlUiIDsKICBjYXNlIDQ3IDogcmV0dXJuICJS
X1NIX0RJUjZTIiA7CiAgY2FzZSA0OCA6IHJldHVybiAiUl9TSF9ESVIxMFMiIDsKICBjYXNlIDQ5
IDogcmV0dXJuICJSX1NIX0RJUjEwU1ciIDsKICBjYXNlIDUwIDogcmV0dXJuICJSX1NIX0RJUjEw
U0wiIDsKICBjYXNlIDUxIDogcmV0dXJuICJSX1NIX0RJUjEwU1EiIDsKIAogCiAgY2FzZSAxNDQg
OiByZXR1cm4gIlJfU0hfVExTX0dEXzMyIiA7CiAgY2FzZSAxNDUgOiByZXR1cm4gIlJfU0hfVExT
X0xEXzMyIiA7CiAgY2FzZSAxNDYgOiByZXR1cm4gIlJfU0hfVExTX0xET18zMiIgOwogIGNhc2Ug
MTQ3IDogcmV0dXJuICJSX1NIX1RMU19JRV8zMiIgOwogIGNhc2UgMTQ4IDogcmV0dXJuICJSX1NI
X1RMU19MRV8zMiIgOwogIGNhc2UgMTQ5IDogcmV0dXJuICJSX1NIX1RMU19EVFBNT0QzMiIgOwog
IGNhc2UgMTUwIDogcmV0dXJuICJSX1NIX1RMU19EVFBPRkYzMiIgOwogIGNhc2UgMTUxIDogcmV0
dXJuICJSX1NIX1RMU19UUE9GRjMyIiA7CiAKIAogIGNhc2UgMTYwIDogcmV0dXJuICJSX1NIX0dP
VDMyIiA7CiAgY2FzZSAxNjEgOiByZXR1cm4gIlJfU0hfUExUMzIiIDsKICBjYXNlIDE2MiA6IHJl
dHVybiAiUl9TSF9DT1BZIiA7CiAgY2FzZSAxNjMgOiByZXR1cm4gIlJfU0hfR0xPQl9EQVQiIDsK
ICBjYXNlIDE2NCA6IHJldHVybiAiUl9TSF9KTVBfU0xPVCIgOwogIGNhc2UgMTY1IDogcmV0dXJu
ICJSX1NIX1JFTEFUSVZFIiA7CiAgY2FzZSAxNjYgOiByZXR1cm4gIlJfU0hfR09UT0ZGIiA7CiAg
Y2FzZSAxNjcgOiByZXR1cm4gIlJfU0hfR09UUEMiIDsKICBjYXNlIDE2OCA6IHJldHVybiAiUl9T
SF9HT1RQTFQzMiIgOwogIGNhc2UgMTY5IDogcmV0dXJuICJSX1NIX0dPVF9MT1cxNiIgOwogIGNh
c2UgMTcwIDogcmV0dXJuICJSX1NIX0dPVF9NRURMT1cxNiIgOwogIGNhc2UgMTcxIDogcmV0dXJu
ICJSX1NIX0dPVF9NRURISTE2IiA7CiAgY2FzZSAxNzIgOiByZXR1cm4gIlJfU0hfR09UX0hJMTYi
IDsKICBjYXNlIDE3MyA6IHJldHVybiAiUl9TSF9HT1RQTFRfTE9XMTYiIDsKICBjYXNlIDE3NCA6
IHJldHVybiAiUl9TSF9HT1RQTFRfTUVETE9XMTYiIDsKICBjYXNlIDE3NSA6IHJldHVybiAiUl9T
SF9HT1RQTFRfTUVESEkxNiIgOwogIGNhc2UgMTc2IDogcmV0dXJuICJSX1NIX0dPVFBMVF9ISTE2
IiA7CiAgY2FzZSAxNzcgOiByZXR1cm4gIlJfU0hfUExUX0xPVzE2IiA7CiAgY2FzZSAxNzggOiBy
ZXR1cm4gIlJfU0hfUExUX01FRExPVzE2IiA7CiAgY2FzZSAxNzkgOiByZXR1cm4gIlJfU0hfUExU
X01FREhJMTYiIDsKICBjYXNlIDE4MCA6IHJldHVybiAiUl9TSF9QTFRfSEkxNiIgOwogIGNhc2Ug
MTgxIDogcmV0dXJuICJSX1NIX0dPVE9GRl9MT1cxNiIgOwogIGNhc2UgMTgyIDogcmV0dXJuICJS
X1NIX0dPVE9GRl9NRURMT1cxNiIgOwogIGNhc2UgMTgzIDogcmV0dXJuICJSX1NIX0dPVE9GRl9N
RURISTE2IiA7CiAgY2FzZSAxODQgOiByZXR1cm4gIlJfU0hfR09UT0ZGX0hJMTYiIDsKICBjYXNl
IDE4NSA6IHJldHVybiAiUl9TSF9HT1RQQ19MT1cxNiIgOwogIGNhc2UgMTg2IDogcmV0dXJuICJS
X1NIX0dPVFBDX01FRExPVzE2IiA7CiAgY2FzZSAxODcgOiByZXR1cm4gIlJfU0hfR09UUENfTUVE
SEkxNiIgOwogIGNhc2UgMTg4IDogcmV0dXJuICJSX1NIX0dPVFBDX0hJMTYiIDsKICBjYXNlIDE4
OSA6IHJldHVybiAiUl9TSF9HT1QxMEJZNCIgOwogIGNhc2UgMTkwIDogcmV0dXJuICJSX1NIX0dP
VFBMVDEwQlk0IiA7CiAgY2FzZSAxOTEgOiByZXR1cm4gIlJfU0hfR09UMTBCWTgiIDsKICBjYXNl
IDE5MiA6IHJldHVybiAiUl9TSF9HT1RQTFQxMEJZOCIgOwogIGNhc2UgMTkzIDogcmV0dXJuICJS
X1NIX0NPUFk2NCIgOwogIGNhc2UgMTk0IDogcmV0dXJuICJSX1NIX0dMT0JfREFUNjQiIDsKICBj
YXNlIDE5NSA6IHJldHVybiAiUl9TSF9KTVBfU0xPVDY0IiA7CiAgY2FzZSAxOTYgOiByZXR1cm4g
IlJfU0hfUkVMQVRJVkU2NCIgOwogCiAKICBjYXNlIDI0MiA6IHJldHVybiAiUl9TSF9TSE1FRElB
X0NPREUiIDsKICBjYXNlIDI0MyA6IHJldHVybiAiUl9TSF9QVF8xNiIgOwogIGNhc2UgMjQ0IDog
cmV0dXJuICJSX1NIX0lNTVMxNiIgOwogIGNhc2UgMjQ1IDogcmV0dXJuICJSX1NIX0lNTVUxNiIg
OwogIGNhc2UgMjQ2IDogcmV0dXJuICJSX1NIX0lNTV9MT1cxNiIgOwogIGNhc2UgMjQ3IDogcmV0
dXJuICJSX1NIX0lNTV9MT1cxNl9QQ1JFTCIgOwogIGNhc2UgMjQ4IDogcmV0dXJuICJSX1NIX0lN
TV9NRURMT1cxNiIgOwogIGNhc2UgMjQ5IDogcmV0dXJuICJSX1NIX0lNTV9NRURMT1cxNl9QQ1JF
TCIgOwogIGNhc2UgMjUwIDogcmV0dXJuICJSX1NIX0lNTV9NRURISTE2IiA7CiAgY2FzZSAyNTEg
OiByZXR1cm4gIlJfU0hfSU1NX01FREhJMTZfUENSRUwiIDsKICBjYXNlIDI1MiA6IHJldHVybiAi
Ul9TSF9JTU1fSEkxNiIgOwogIGNhc2UgMjUzIDogcmV0dXJuICJSX1NIX0lNTV9ISTE2X1BDUkVM
IiA7CiAgY2FzZSAyNTQgOiByZXR1cm4gIlJfU0hfNjQiIDsKICBjYXNlIDI1NSA6IHJldHVybiAi
Ul9TSF82NF9QQ1JFTCIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg1ICJy
ZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNsdWRlL2VsZi9zcGFyYy5oIiAxCiMgNjIgIi4uL2luY2x1
ZGUvZWxmL3NwYXJjLmgiCnN0YXRpYyBjb25zdCBjaGFyICogZWxmX3NwYXJjX3JlbG9jX3R5cGUg
KHVuc2lnbmVkIGxvbmcgcnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9zcGFyY19yZWxv
Y190eXBlIChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAg
Y2FzZSAwIDogcmV0dXJuICJSX1NQQVJDX05PTkUiIDsKICBjYXNlIDEgOiByZXR1cm4gIlJfU1BB
UkNfOCIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9TUEFSQ18xNiIgOwogIGNhc2UgMyA6IHJldHVy
biAiUl9TUEFSQ18zMiIgOwogIGNhc2UgNCA6IHJldHVybiAiUl9TUEFSQ19ESVNQOCIgOwogIGNh
c2UgNSA6IHJldHVybiAiUl9TUEFSQ19ESVNQMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfU1BB
UkNfRElTUDMyIiA7CiAgY2FzZSA3IDogcmV0dXJuICJSX1NQQVJDX1dESVNQMzAiIDsKICBjYXNl
IDggOiByZXR1cm4gIlJfU1BBUkNfV0RJU1AyMiIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9TUEFS
Q19ISTIyIiA7CiAgY2FzZSAxMCA6IHJldHVybiAiUl9TUEFSQ18yMiIgOwogIGNhc2UgMTEgOiBy
ZXR1cm4gIlJfU1BBUkNfMTMiIDsKICBjYXNlIDEyIDogcmV0dXJuICJSX1NQQVJDX0xPMTAiIDsK
ICBjYXNlIDEzIDogcmV0dXJuICJSX1NQQVJDX0dPVDEwIiA7CiAgY2FzZSAxNCA6IHJldHVybiAi
Ul9TUEFSQ19HT1QxMyIgOwogIGNhc2UgMTUgOiByZXR1cm4gIlJfU1BBUkNfR09UMjIiIDsKICBj
YXNlIDE2IDogcmV0dXJuICJSX1NQQVJDX1BDMTAiIDsKICBjYXNlIDE3IDogcmV0dXJuICJSX1NQ
QVJDX1BDMjIiIDsKICBjYXNlIDE4IDogcmV0dXJuICJSX1NQQVJDX1dQTFQzMCIgOwogIGNhc2Ug
MTkgOiByZXR1cm4gIlJfU1BBUkNfQ09QWSIgOwogIGNhc2UgMjAgOiByZXR1cm4gIlJfU1BBUkNf
R0xPQl9EQVQiIDsKICBjYXNlIDIxIDogcmV0dXJuICJSX1NQQVJDX0pNUF9TTE9UIiA7CiAgY2Fz
ZSAyMiA6IHJldHVybiAiUl9TUEFSQ19SRUxBVElWRSIgOwogIGNhc2UgMjMgOiByZXR1cm4gIlJf
U1BBUkNfVUEzMiIgOwoKCgoKCgogIGNhc2UgMjQgOiByZXR1cm4gIlJfU1BBUkNfUExUMzIiIDsK
ICBjYXNlIDI1IDogcmV0dXJuICJSX1NQQVJDX0hJUExUMjIiIDsKICBjYXNlIDI2IDogcmV0dXJu
ICJSX1NQQVJDX0xPUExUMTAiIDsKICBjYXNlIDI3IDogcmV0dXJuICJSX1NQQVJDX1BDUExUMzIi
IDsKICBjYXNlIDI4IDogcmV0dXJuICJSX1NQQVJDX1BDUExUMjIiIDsKICBjYXNlIDI5IDogcmV0
dXJuICJSX1NQQVJDX1BDUExUMTAiIDsKCgoKICBjYXNlIDMwIDogcmV0dXJuICJSX1NQQVJDXzEw
IiA7CiAgY2FzZSAzMSA6IHJldHVybiAiUl9TUEFSQ18xMSIgOwogIGNhc2UgMzIgOiByZXR1cm4g
IlJfU1BBUkNfNjQiIDsKICBjYXNlIDMzIDogcmV0dXJuICJSX1NQQVJDX09MTzEwIiA7CiAgY2Fz
ZSAzNCA6IHJldHVybiAiUl9TUEFSQ19ISDIyIiA7CiAgY2FzZSAzNSA6IHJldHVybiAiUl9TUEFS
Q19ITTEwIiA7CiAgY2FzZSAzNiA6IHJldHVybiAiUl9TUEFSQ19MTTIyIiA7CiAgY2FzZSAzNyA6
IHJldHVybiAiUl9TUEFSQ19QQ19ISDIyIiA7CiAgY2FzZSAzOCA6IHJldHVybiAiUl9TUEFSQ19Q
Q19ITTEwIiA7CiAgY2FzZSAzOSA6IHJldHVybiAiUl9TUEFSQ19QQ19MTTIyIiA7CiAgY2FzZSA0
MCA6IHJldHVybiAiUl9TUEFSQ19XRElTUDE2IiA7CiAgY2FzZSA0MSA6IHJldHVybiAiUl9TUEFS
Q19XRElTUDE5IiA7CiAgY2FzZSA0MiA6IHJldHVybiAiUl9TUEFSQ19VTlVTRURfNDIiIDsKICBj
YXNlIDQzIDogcmV0dXJuICJSX1NQQVJDXzciIDsKICBjYXNlIDQ0IDogcmV0dXJuICJSX1NQQVJD
XzUiIDsKICBjYXNlIDQ1IDogcmV0dXJuICJSX1NQQVJDXzYiIDsKICBjYXNlIDQ2IDogcmV0dXJu
ICJSX1NQQVJDX0RJU1A2NCIgOwogIGNhc2UgNDcgOiByZXR1cm4gIlJfU1BBUkNfUExUNjQiIDsK
ICBjYXNlIDQ4IDogcmV0dXJuICJSX1NQQVJDX0hJWDIyIiA7CiAgY2FzZSA0OSA6IHJldHVybiAi
Ul9TUEFSQ19MT1gxMCIgOwogIGNhc2UgNTAgOiByZXR1cm4gIlJfU1BBUkNfSDQ0IiA7CiAgY2Fz
ZSA1MSA6IHJldHVybiAiUl9TUEFSQ19NNDQiIDsKICBjYXNlIDUyIDogcmV0dXJuICJSX1NQQVJD
X0w0NCIgOwogIGNhc2UgNTMgOiByZXR1cm4gIlJfU1BBUkNfUkVHSVNURVIiIDsKICBjYXNlIDU0
IDogcmV0dXJuICJSX1NQQVJDX1VBNjQiIDsKICBjYXNlIDU1IDogcmV0dXJuICJSX1NQQVJDX1VB
MTYiIDsKCiAgY2FzZSA1NiA6IHJldHVybiAiUl9TUEFSQ19UTFNfR0RfSEkyMiIgOwogIGNhc2Ug
NTcgOiByZXR1cm4gIlJfU1BBUkNfVExTX0dEX0xPMTAiIDsKICBjYXNlIDU4IDogcmV0dXJuICJS
X1NQQVJDX1RMU19HRF9BREQiIDsKICBjYXNlIDU5IDogcmV0dXJuICJSX1NQQVJDX1RMU19HRF9D
QUxMIiA7CiAgY2FzZSA2MCA6IHJldHVybiAiUl9TUEFSQ19UTFNfTERNX0hJMjIiIDsKICBjYXNl
IDYxIDogcmV0dXJuICJSX1NQQVJDX1RMU19MRE1fTE8xMCIgOwogIGNhc2UgNjIgOiByZXR1cm4g
IlJfU1BBUkNfVExTX0xETV9BREQiIDsKICBjYXNlIDYzIDogcmV0dXJuICJSX1NQQVJDX1RMU19M
RE1fQ0FMTCIgOwogIGNhc2UgNjQgOiByZXR1cm4gIlJfU1BBUkNfVExTX0xET19ISVgyMiIgOwog
IGNhc2UgNjUgOiByZXR1cm4gIlJfU1BBUkNfVExTX0xET19MT1gxMCIgOwogIGNhc2UgNjYgOiBy
ZXR1cm4gIlJfU1BBUkNfVExTX0xET19BREQiIDsKICBjYXNlIDY3IDogcmV0dXJuICJSX1NQQVJD
X1RMU19JRV9ISTIyIiA7CiAgY2FzZSA2OCA6IHJldHVybiAiUl9TUEFSQ19UTFNfSUVfTE8xMCIg
OwogIGNhc2UgNjkgOiByZXR1cm4gIlJfU1BBUkNfVExTX0lFX0xEIiA7CiAgY2FzZSA3MCA6IHJl
dHVybiAiUl9TUEFSQ19UTFNfSUVfTERYIiA7CiAgY2FzZSA3MSA6IHJldHVybiAiUl9TUEFSQ19U
TFNfSUVfQUREIiA7CiAgY2FzZSA3MiA6IHJldHVybiAiUl9TUEFSQ19UTFNfTEVfSElYMjIiIDsK
ICBjYXNlIDczIDogcmV0dXJuICJSX1NQQVJDX1RMU19MRV9MT1gxMCIgOwogIGNhc2UgNzQgOiBy
ZXR1cm4gIlJfU1BBUkNfVExTX0RUUE1PRDMyIiA7CiAgY2FzZSA3NSA6IHJldHVybiAiUl9TUEFS
Q19UTFNfRFRQTU9ENjQiIDsKICBjYXNlIDc2IDogcmV0dXJuICJSX1NQQVJDX1RMU19EVFBPRkYz
MiIgOwogIGNhc2UgNzcgOiByZXR1cm4gIlJfU1BBUkNfVExTX0RUUE9GRjY0IiA7CiAgY2FzZSA3
OCA6IHJldHVybiAiUl9TUEFSQ19UTFNfVFBPRkYzMiIgOwogIGNhc2UgNzkgOiByZXR1cm4gIlJf
U1BBUkNfVExTX1RQT0ZGNjQiIDsKCiAKCiAgY2FzZSAyNTAgOiByZXR1cm4gIlJfU1BBUkNfR05V
X1ZUSU5IRVJJVCIgOwogIGNhc2UgMjUxIDogcmV0dXJuICJSX1NQQVJDX0dOVV9WVEVOVFJZIiA7
CiAgY2FzZSAyNTIgOiByZXR1cm4gIlJfU1BBUkNfUkVWMzIiIDsKCmRlZmF1bHQ6IHJldHVybiAo
KHZvaWQgKikwKTsgfSB9CiMgODYgInJlYWRlbGYuYyIgMgojIDEgIi4uL2luY2x1ZGUvZWxmL3Y4
NTAuaCIgMQojIDQ5ICIuLi9pbmNsdWRlL2VsZi92ODUwLmgiCnN0YXRpYyBjb25zdCBjaGFyICog
djg1MF9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGljIGNvbnN0IGNoYXIg
KiB2ODUwX3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBsb25nIHJ0eXBlOyB7IHN3aXRjaCAo
cnR5cGUpIHsKICAgICBjYXNlIDAgOiByZXR1cm4gIlJfVjg1MF9OT05FIiA7CiAgICAgY2FzZSAx
IDogcmV0dXJuICJSX1Y4NTBfOV9QQ1JFTCIgOwogICAgIGNhc2UgMiA6IHJldHVybiAiUl9WODUw
XzIyX1BDUkVMIiA7CiAgICAgY2FzZSAzIDogcmV0dXJuICJSX1Y4NTBfSEkxNl9TIiA7CiAgICAg
Y2FzZSA0IDogcmV0dXJuICJSX1Y4NTBfSEkxNiIgOwogICAgIGNhc2UgNSA6IHJldHVybiAiUl9W
ODUwX0xPMTYiIDsKICAgICBjYXNlIDYgOiByZXR1cm4gIlJfVjg1MF8zMiIgOwogICAgIGNhc2Ug
NyA6IHJldHVybiAiUl9WODUwXzE2IiA7CiAgICAgY2FzZSA4IDogcmV0dXJuICJSX1Y4NTBfOCIg
OwogICAgIGNhc2UgOSA6IHJldHVybiAiUl9WODUwX1NEQV8xNl8xNl9PRkZTRVQiIDsKICAgICBj
YXNlIDEwIDogcmV0dXJuICJSX1Y4NTBfU0RBXzE1XzE2X09GRlNFVCIgOwogICAgIGNhc2UgMTEg
OiByZXR1cm4gIlJfVjg1MF9aREFfMTZfMTZfT0ZGU0VUIiA7CiAgICAgY2FzZSAxMiA6IHJldHVy
biAiUl9WODUwX1pEQV8xNV8xNl9PRkZTRVQiIDsKICAgICBjYXNlIDEzIDogcmV0dXJuICJSX1Y4
NTBfVERBXzZfOF9PRkZTRVQiIDsKICAgICBjYXNlIDE0IDogcmV0dXJuICJSX1Y4NTBfVERBXzdf
OF9PRkZTRVQiIDsKICAgICBjYXNlIDE1IDogcmV0dXJuICJSX1Y4NTBfVERBXzdfN19PRkZTRVQi
IDsKICAgICBjYXNlIDE2IDogcmV0dXJuICJSX1Y4NTBfVERBXzE2XzE2X09GRlNFVCIgOwogICAg
IGNhc2UgMTcgOiByZXR1cm4gIlJfVjg1MF9UREFfNF81X09GRlNFVCIgOwogICAgIGNhc2UgMTgg
OiByZXR1cm4gIlJfVjg1MF9UREFfNF80X09GRlNFVCIgOwogICAgIGNhc2UgMTkgOiByZXR1cm4g
IlJfVjg1MF9TREFfMTZfMTZfU1BMSVRfT0ZGU0VUIiA7CiAgICAgY2FzZSAyMCA6IHJldHVybiAi
Ul9WODUwX1pEQV8xNl8xNl9TUExJVF9PRkZTRVQiIDsKICAgICBjYXNlIDIxIDogcmV0dXJuICJS
X1Y4NTBfQ0FMTFRfNl83X09GRlNFVCIgOwogICAgIGNhc2UgMjIgOiByZXR1cm4gIlJfVjg1MF9D
QUxMVF8xNl8xNl9PRkZTRVQiIDsKICAgICBjYXNlIDIzIDogcmV0dXJuICJSX1Y4NTBfR05VX1ZU
SU5IRVJJVCIgOwogICAgIGNhc2UgMjQgOiByZXR1cm4gIlJfVjg1MF9HTlVfVlRFTlRSWSIgOwog
ICAgIGNhc2UgMjUgOiByZXR1cm4gIlJfVjg1MF9MT05HQ0FMTCIgOwogICAgIGNhc2UgMjYgOiBy
ZXR1cm4gIlJfVjg1MF9MT05HSlVNUCIgOwogICAgIGNhc2UgMjcgOiByZXR1cm4gIlJfVjg1MF9B
TElHTiIgOwpkZWZhdWx0OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg3ICJyZWFkZWxmLmMi
IDIKIyAxICIuLi9pbmNsdWRlL2VsZi92YXguaCIgMQojIDI3ICIuLi9pbmNsdWRlL2VsZi92YXgu
aCIKc3RhdGljIGNvbnN0IGNoYXIgKiBlbGZfdmF4X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcg
cnR5cGUpOyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl92YXhfcmVsb2NfdHlwZSAocnR5cGUpIHVu
c2lnbmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogIGNhc2UgMCA6IHJldHVybiAi
Ul9WQVhfTk9ORSIgOwogIGNhc2UgMSA6IHJldHVybiAiUl9WQVhfMzIiIDsKICBjYXNlIDIgOiBy
ZXR1cm4gIlJfVkFYXzE2IiA7CiAgY2FzZSAzIDogcmV0dXJuICJSX1ZBWF84IiA7CiAgY2FzZSA0
IDogcmV0dXJuICJSX1ZBWF9QQzMyIiA7CiAgY2FzZSA1IDogcmV0dXJuICJSX1ZBWF9QQzE2IiA7
CiAgY2FzZSA2IDogcmV0dXJuICJSX1ZBWF9QQzgiIDsKICBjYXNlIDcgOiByZXR1cm4gIlJfVkFY
X0dPVDMyIiA7CiAgY2FzZSAxMyA6IHJldHVybiAiUl9WQVhfUExUMzIiIDsKICBjYXNlIDE5IDog
cmV0dXJuICJSX1ZBWF9DT1BZIiA7CiAgY2FzZSAyMCA6IHJldHVybiAiUl9WQVhfR0xPQl9EQVQi
IDsKICBjYXNlIDIxIDogcmV0dXJuICJSX1ZBWF9KTVBfU0xPVCIgOwogIGNhc2UgMjIgOiByZXR1
cm4gIlJfVkFYX1JFTEFUSVZFIiA7CgogIGNhc2UgMjMgOiByZXR1cm4gIlJfVkFYX0dOVV9WVElO
SEVSSVQiIDsKICBjYXNlIDI0IDogcmV0dXJuICJSX1ZBWF9HTlVfVlRFTlRSWSIgOwpkZWZhdWx0
OiByZXR1cm4gKCh2b2lkICopMCk7IH0gfQojIDg4ICJyZWFkZWxmLmMiIDIKIyAxICIuLi9pbmNs
dWRlL2VsZi94ODYtNjQuaCIgMQojIDI2ICIuLi9pbmNsdWRlL2VsZi94ODYtNjQuaCIKc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfeDg2XzY0X3JlbG9jX3R5cGUgKHVuc2lnbmVkIGxvbmcgcnR5cGUp
OyBzdGF0aWMgY29uc3QgY2hhciAqIGVsZl94ODZfNjRfcmVsb2NfdHlwZSAocnR5cGUpIHVuc2ln
bmVkIGxvbmcgcnR5cGU7IHsgc3dpdGNoIChydHlwZSkgewogICAgIGNhc2UgMCA6IHJldHVybiAi
Ul9YODZfNjRfTk9ORSIgOwogICAgIGNhc2UgMSA6IHJldHVybiAiUl9YODZfNjRfNjQiIDsKICAg
ICBjYXNlIDIgOiByZXR1cm4gIlJfWDg2XzY0X1BDMzIiIDsKICAgICBjYXNlIDMgOiByZXR1cm4g
IlJfWDg2XzY0X0dPVDMyIiA7CiAgICAgY2FzZSA0IDogcmV0dXJuICJSX1g4Nl82NF9QTFQzMiIg
OwogICAgIGNhc2UgNSA6IHJldHVybiAiUl9YODZfNjRfQ09QWSIgOwogICAgIGNhc2UgNiA6IHJl
dHVybiAiUl9YODZfNjRfR0xPQl9EQVQiIDsKICAgICBjYXNlIDcgOiByZXR1cm4gIlJfWDg2XzY0
X0pVTVBfU0xPVCIgOwogICAgIGNhc2UgOCA6IHJldHVybiAiUl9YODZfNjRfUkVMQVRJVkUiIDsK
ICAgICBjYXNlIDkgOiByZXR1cm4gIlJfWDg2XzY0X0dPVFBDUkVMIiA7CgogICAgIGNhc2UgMTAg
OiByZXR1cm4gIlJfWDg2XzY0XzMyIiA7CiAgICAgY2FzZSAxMSA6IHJldHVybiAiUl9YODZfNjRf
MzJTIiA7CiAgICAgY2FzZSAxMiA6IHJldHVybiAiUl9YODZfNjRfMTYiIDsKICAgICBjYXNlIDEz
IDogcmV0dXJuICJSX1g4Nl82NF9QQzE2IiA7CiAgICAgY2FzZSAxNCA6IHJldHVybiAiUl9YODZf
NjRfOCIgOwogICAgIGNhc2UgMTUgOiByZXR1cm4gIlJfWDg2XzY0X1BDOCIgOwogICAgIGNhc2Ug
MTYgOiByZXR1cm4gIlJfWDg2XzY0X0RUUE1PRDY0IiA7CiAgICAgY2FzZSAxNyA6IHJldHVybiAi
Ul9YODZfNjRfRFRQT0ZGNjQiIDsKICAgICBjYXNlIDE4IDogcmV0dXJuICJSX1g4Nl82NF9UUE9G
RjY0IiA7CiAgICAgY2FzZSAxOSA6IHJldHVybiAiUl9YODZfNjRfVExTR0QiIDsKICAgICBjYXNl
IDIwIDogcmV0dXJuICJSX1g4Nl82NF9UTFNMRCIgOwogICAgIGNhc2UgMjEgOiByZXR1cm4gIlJf
WDg2XzY0X0RUUE9GRjMyIiA7CiAgICAgY2FzZSAyMiA6IHJldHVybiAiUl9YODZfNjRfR09UVFBP
RkYiIDsKICAgICBjYXNlIDIzIDogcmV0dXJuICJSX1g4Nl82NF9UUE9GRjMyIiA7CiAgICAgY2Fz
ZSAyNTAgOiByZXR1cm4gIlJfWDg2XzY0X0dOVV9WVElOSEVSSVQiIDsKICAgICBjYXNlIDI1MSA6
IHJldHVybiAiUl9YODZfNjRfR05VX1ZURU5UUlkiIDsKZGVmYXVsdDogcmV0dXJuICgodm9pZCAq
KTApOyB9IH0KIyA4OSAicmVhZGVsZi5jIiAyCiMgMSAiLi4vaW5jbHVkZS9lbGYveHN0b3JteTE2
LmgiIDEKIyAyNiAiLi4vaW5jbHVkZS9lbGYveHN0b3JteTE2LmgiCnN0YXRpYyBjb25zdCBjaGFy
ICogZWxmX3hzdG9ybXkxNl9yZWxvY190eXBlICh1bnNpZ25lZCBsb25nIHJ0eXBlKTsgc3RhdGlj
IGNvbnN0IGNoYXIgKiBlbGZfeHN0b3JteTE2X3JlbG9jX3R5cGUgKHJ0eXBlKSB1bnNpZ25lZCBs
b25nIHJ0eXBlOyB7IHN3aXRjaCAocnR5cGUpIHsKICBjYXNlIDAgOiByZXR1cm4gIlJfWFNUT1JN
WTE2X05PTkUiIDsKCiAgY2FzZSAxIDogcmV0dXJuICJSX1hTVE9STVkxNl8zMiIgOwogIGNhc2Ug
MiA6IHJldHVybiAiUl9YU1RPUk1ZMTZfMTYiIDsKICBjYXNlIDMgOiByZXR1cm4gIlJfWFNUT1JN
WTE2XzgiIDsKICBjYXNlIDQgOiByZXR1cm4gIlJfWFNUT1JNWTE2X1BDMzIiIDsKICBjYXNlIDUg
OiByZXR1cm4gIlJfWFNUT1JNWTE2X1BDMTYiIDsKICBjYXNlIDYgOiByZXR1cm4gIlJfWFNUT1JN
WTE2X1BDOCIgOwoKICBjYXNlIDcgOiByZXR1cm4gIlJfWFNUT1JNWTE2X1JFTF8xMiIgOwogIGNh
c2UgOCA6IHJldHVybiAiUl9YU1RPUk1ZMTZfMjQiIDsKICBjYXNlIDkgOiByZXR1cm4gIlJfWFNU
T1JNWTE2X0ZQVFIxNiIgOwoKICBjYXNlIDEwIDogcmV0dXJuICJSX1hTVE9STVkxNl9MTzE2IiA7
CiAgY2FzZSAxMSA6IHJldHVybiAiUl9YU1RPUk1ZMTZfSEkxNiIgOwogIGNhc2UgMTIgOiByZXR1
cm4gIlJfWFNUT1JNWTE2XzEyIiA7CgogIGNhc2UgMTI4IDogcmV0dXJuICJSX1hTVE9STVkxNl9H
TlVfVlRJTkhFUklUIiA7CiAgY2FzZSAxMjkgOiByZXR1cm4gIlJfWFNUT1JNWTE2X0dOVV9WVEVO
VFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQgKikwKTsgfSB9CiMgOTAgInJlYWRlbGYuYyIg
MgojIDEgIi4uL2luY2x1ZGUvZWxmL2lxMjAwMC5oIiAxCiMgMjYgIi4uL2luY2x1ZGUvZWxmL2lx
MjAwMC5oIgpzdGF0aWMgY29uc3QgY2hhciAqIGVsZl9pcTIwMDBfcmVsb2NfdHlwZSAodW5zaWdu
ZWQgbG9uZyBydHlwZSk7IHN0YXRpYyBjb25zdCBjaGFyICogZWxmX2lxMjAwMF9yZWxvY190eXBl
IChydHlwZSkgdW5zaWduZWQgbG9uZyBydHlwZTsgeyBzd2l0Y2ggKHJ0eXBlKSB7CiAgY2FzZSAw
IDogcmV0dXJuICJSX0lRMjAwMF9OT05FIiA7CiAgY2FzZSAxIDogcmV0dXJuICJSX0lRMjAwMF8x
NiIgOwogIGNhc2UgMiA6IHJldHVybiAiUl9JUTIwMDBfMzIiIDsKICBjYXNlIDMgOiByZXR1cm4g
IlJfSVEyMDAwXzI2IiA7CiAgY2FzZSA0IDogcmV0dXJuICJSX0lRMjAwMF9QQzE2IiA7CiAgY2Fz
ZSA1IDogcmV0dXJuICJSX0lRMjAwMF9ISTE2IiA7CiAgY2FzZSA2IDogcmV0dXJuICJSX0lRMjAw
MF9MTzE2IiA7CiAgY2FzZSA3IDogcmV0dXJuICJSX0lRMjAwMF9PRkZTRVRfMTYiIDsKICBjYXNl
IDggOiByZXR1cm4gIlJfSVEyMDAwX09GRlNFVF8yMSIgOwogIGNhc2UgOSA6IHJldHVybiAiUl9J
UTIwMDBfVUhJMTYiIDsKICBjYXNlIDEwIDogcmV0dXJuICJSX0lRMjAwMF8zMl9ERUJVRyIgOwog
IGNhc2UgMjAwIDogcmV0dXJuICJSX0lRMjAwMF9HTlVfVlRJTkhFUklUIiA7CiAgY2FzZSAyMDEg
OiByZXR1cm4gIlJfSVEyMDAwX0dOVV9WVEVOVFJZIiA7CmRlZmF1bHQ6IHJldHVybiAoKHZvaWQg
KikwKTsgfSB9CiMgOTEgInJlYWRlbGYuYyIgMgoKIyAxICIuL2J1Y29tbS5oIiAxCiMgMjggIi4v
YnVjb21tLmgiCiMgMSAiLi9jb25maWcuaCIgMQojIDI5ICIuL2J1Y29tbS5oIiAyCiMgMSAiLi4v
aW5jbHVkZS9iaW4tYnVncy5oIiAxCiMgMzAgIi4vYnVjb21tLmgiIDIKCgojIDEgIi91c3IvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDEw
NSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjQvaW5jbHVkZS9zdGRhcmcu
aCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMzMgIi4vYnVjb21tLmgiIDIK
CgoKCgoKCiMgMSAiLi4vaW5jbHVkZS9mb3Blbi1zYW1lLmgiIDEKIyA0MSAiLi9idWNvbW0uaCIg
MgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvZXJy
bm8uaCIgMwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5o
IiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5j
bHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIg
MiAzCiMgMzggIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCAqX19lcnJu
b19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDM3ICIvdXNy
L2luY2x1ZGUvZXJybm8uaCIgMiAzCiMgNTUgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCmV4dGVy
biBjaGFyICpwcm9ncmFtX2ludm9jYXRpb25fbmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9y
dF9uYW1lOwoKCgoKIyA2OSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKdHlwZWRlZiBpbnQgZXJy
b3JfdDsKIyA0NCAiLi9idWNvbW0uaCIgMgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgojIDE3NSAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwojIDE3
NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9l
bnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMjQgIi91c3IvaW5j
bHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAyIDMKIyAxODAgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMiAzCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMDAgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMK
dHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwoKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNv
Y2tsZW5fdDsKIyAyNjAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2Vz
cyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKCgoKCmV4dGVybiBpbnQgZXVp
ZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKIyAyOTAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2Zm
X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwojIDMwMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNl
dCwgaW50IF9fd2hlbmNlKSA7CgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSA7CgoKCmV4
dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVz
KSA7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkKICAgICA7CmV4dGVybiBz
c2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24s
CiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNldCkgOwojIDM0MCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHByZWFkNjQgKGludCBfX2ZkLCB2b2lk
ICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICBfX29mZjY0
X3QgX19vZmZzZXQpIDsKCgpleHRlcm4gc3NpemVfdCBwd3JpdGU2NCAoaW50IF9fZmQsIF9fY29u
c3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICBfX29m
ZjY0X3QgX19vZmZzZXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcGlwZSAoaW50IF9fcGlwZWRlc1sy
XSkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiB1bnNpZ25lZCBpbnQg
YWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKIyAzNzEgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRz
KSA7CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1
ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgOwoKCgpleHRlcm4gaW50IHVzbGVlcCAo
X191c2Vjb25kc190IF9fdXNlY29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2b2lkKSA7
CgoKCmV4dGVybiBpbnQgY2hvd24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3du
ZXIsIF9fZ2lkX3QgX19ncm91cCkKICAgICA7CgoKCmV4dGVybiBpbnQgZmNob3duIChpbnQgX19m
ZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApIDsKCgoKCmV4dGVybiBpbnQgbGNo
b3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3Jv
dXApCiAgICAgOwoKCgoKZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsK
CgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSA7CiMgNDIzICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUp
IDsKCgoKCgpleHRlcm4gY2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUgKHZvaWQpIDsKCgoKCgoK
ZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGludCBkdXAgKGlu
dCBfX2ZkKSA7CgoKZXh0ZXJuIGludCBkdXAyIChpbnQgX19mZCwgaW50IF9fZmQyKSA7CgoKZXh0
ZXJuIGNoYXIgKipfX2Vudmlyb247CgpleHRlcm4gY2hhciAqKmVudmlyb247CgoKCgoKZXh0ZXJu
IGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltd
LAogICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCBfX2VudnBbXSkgOwoKCgoKZXh0ZXJu
IGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqX19j
b25zdCBfX2VudnBbXSkKICAgICA7CgoKCgpleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIg
Kl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAo
X19jb25zdCBjaGFyICpfX3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRl
cm4gaW50IGV4ZWNsIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywg
Li4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAq
X19jb25zdCBfX2FyZ3ZbXSkgOwoKCgoKZXh0ZXJuIGludCBleGVjbHAgKF9fY29uc3QgY2hhciAq
X19maWxlLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgbmljZSAo
aW50IF9faW5jKSA7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp
YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25m
bmFtZS5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAg
ewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBV
VCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JV
RiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BD
X1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENf
UFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAg
ICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAg
ICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9Q
Q19BTExPQ19TSVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgKCiAgfTsKCgplbnVtCiAgewog
ICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAgICBfU0NfQ0xLX1RDSywKCiAg
ICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoKICAgIF9TQ19TVFJFQU1fTUFY
LAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09OVFJPTCwKCiAgICBfU0NfU0FW
RURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAgIF9TQ19QUklPUklUWV9TQ0hF
RFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKCiAgICBf
U0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywKCiAgICBfU0NfRlNZ
TkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVN
TE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0Vf
UEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpF
Q1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0Nf
QUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFf
T1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9T
Q19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwK
CiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19U
SU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoK
ICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NP
TExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0NfRVhQUl9O
RVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgogICAgX1ND
X0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0NfMl9DX0JJ
TkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1NDXzJfRk9S
VF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgogICAgX1ND
X1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJX1NPQ0tFVCwKCiAgICBfU0NfUElJ
X0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9TQ19QT0xMLAoKICAgIF9TQ19TRUxF
Q1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElP
ViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RH
UkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBf
U0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKCiAgICBfU0NfVEhSRUFEUywKCiAg
ICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoK
ICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19MT0dJTl9OQU1FX01BWCwKCiAgICBf
U0NfVFRZX05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAoK
ICAgIF9TQ19USFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sCgogICAg
X1NDX1RIUkVBRF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoK
ICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAgX1NDX1RIUkVBRF9QUklPUklUWV9T
Q0hFRFVMSU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURf
UFJJT19QUk9URUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCgoKICAgIF9TQ19O
UFJPQ0VTU09SU19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAoKICAgIF9TQ19QSFlT
X1BBR0VTLAoKICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAgX1NDX0FURVhJVF9NQVgsCgogICAg
X1NDX1BBU1NfTUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fWENV
X1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAgX1NDX1hPUEVOX0NSWVBULAoKICAg
IF9TQ19YT1BFTl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9DSEFS
X1RFUk0sCgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1NDX1hP
UEVOX1hQRzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoKICAg
IF9TQ19DSEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoKICAg
IF9TQ19JTlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAgICBf
U0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAgIF9T
Q19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoKICAg
IF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwKCiAg
ICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFYLAoK
CiAgICBfU0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5HTUFYLAoKICAgIF9TQ19OTF9NU0dN
QVgsCgogICAgX1NDX05MX05NQVgsCgogICAgX1NDX05MX1NFVE1BWCwKCiAgICBfU0NfTkxfVEVY
VE1BWCwKCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZG
QklHLAoKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklH
LAoKCiAgICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKCiAgICBf
U0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1NDX0FEVklTT1JZX0lORk8sCgogICAg
X1NDX0JBUlJJRVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAg
ICBfU0NfQ19MQU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9T
Q19DUFVUSU1FLAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoK
ICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAg
IF9TQ19GRF9NR01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxF
X0FUVFJJQlVURVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0s
CgogICAgX1NDX01PTk9UT05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElfUFJPQ0VTUywKCiAgICBf
U0NfU0lOR0xFX1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9X
UklURVJfTE9DS1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBf
U0NfUkVHRVhfVkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAg
X1NDX1NQQVdOLAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1RIUkVBRF9TUE9S
QURJQ19TRVJWRVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKCiAgICBfU0NfU1lTVEVNX0RB
VEFCQVNFX1IsCgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNU
UywKCiAgICBfU0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VTRVJfR1JPVVBTX1IsCgogICAgX1ND
XzJfUEJTLAoKICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoKICAgIF9TQ18yX1BCU19MT0NBVEUs
CgogICAgX1NDXzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJfUEJTX1RSQUNLLAoKICAgIF9TQ19T
WU1MT09QX01BWCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwK
CgogICAgX1NDX1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19WNl9JTFAzMl9PRkZCSUcsCgogICAg
X1NDX1Y2X0xQNjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKCgogICAgX1NDX0hP
U1RfTkFNRV9NQVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIs
CgogICAgX1NDX1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RSQUNFX0xPRwoKICB9OwoKCgoKCmVu
dW0KICB7CiAgICBfQ1NfUEFUSCwKCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAg
X0NTX0xGU19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFH
UywKCiAgICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoKICAgIF9D
U19MRlM2NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKCgogICAgX0NTX1hCUzVf
SUxQMzJfT0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZM
QUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAg
X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklH
X0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJT
NV9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxBR1MsCgog
ICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElO
VEZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVf
TFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCgog
ICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUywKCgoKICAgIF9DU19QT1NJWF9WNl9J
TFAzMl9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1Ms
CgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0lM
UDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NGTEFH
UywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lY
X1Y2X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElO
VEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9T
SVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0xJ
QlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJ
WF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdf
TERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BP
U0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJ
Q1RFRF9FTlZTCgogIH07CiMgNTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVy
biBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIDsK
CgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSkgOwoKCmV4
dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAo
dm9pZCkgOwojIDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9f
Z2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRf
dCBfX3BpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlk
X3QgX19wZ2lkKSA7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz
ZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9f
cGlkX3Qgc2V0c2lkICh2b2lkKSA7CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBf
X3BpZCkgOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRf
dCBnZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGlu
dCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsKCgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIg
KF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQp
IDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVp
ZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgoKCmV4dGVy
biBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNldHJlZ2lkIChf
X2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZWdpZCAo
X19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSA7CgoKCgoK
CmV4dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUg
KGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19i
dWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgpleHRlcm4gaW50IGlzYXR0eSAoaW50IF9fZmQpIDsK
CgoKCgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgbGluayAoX19j
b25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgpleHRlcm4gaW50IHN5
bWxpbmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKCmV4
dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIg
Kl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoK
CgpleHRlcm4gaW50IHVubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50
IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBn
cnAgKGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90
IF9fcGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIDsKCgoKCmV4dGVy
biBpbnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBzaXplX3QgX19uYW1lX2xlbikgOwoKCgoK
ZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA3MjYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM2ICIu
Li9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7CiMgNTAgIi4uL2luY2x1
ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVycjsK
CgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgODIgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDMKc3RydWN0
IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKICBpbnQgaGFzX2FyZzsKICBpbnQg
KmZsYWc7CiAgaW50IHZhbDsKfTsKIyAxMTMgIi4uL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJu
IGludCBnZXRvcHQgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hv
cnRvcHRzKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBhcmdjLCBjaGFyICpj
b25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKZXh0ZXJuIGlu
dCBnZXRvcHRfbG9uZ19vbmx5IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdp
bmQpOwoKCmV4dGVybiBpbnQgX2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIgKmNvbnN0
ICphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25n
b3B0cywgaW50ICpsb25naW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsb25n
X29ubHkpOwojIDcyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKCgoKCmV4dGVybiBp
bnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVy
biBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsK
CgoKZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcgaW50IF9faWQpIDsKCgoKCgpleHRlcm4gaW50
IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQg
c2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoK
CmV4dGVybiBpbnQgdmhhbmd1cCAodm9pZCkgOwoKCmV4dGVybiBpbnQgcmV2b2tlIChfX2NvbnN0
IGNoYXIgKl9fZmlsZSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0
IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
c2l6ZV90IF9fb2Zmc2V0LCB1bnNpZ25lZCBpbnQgX19zY2FsZSkgOwoKCgoKCmV4dGVybiBpbnQg
YWNjdCAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVs
bCAodm9pZCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQg
c2V0dXNlcnNoZWxsICh2b2lkKSA7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24gKGludCBfX25vY2hk
aXIsIGludCBfX25vY2xvc2UpIDsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hh
ciAqX19wYXRoKSA7CgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChfX2NvbnN0IGNoYXIgKl9fcHJv
bXB0KSA7CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpIDsKCgoKCgoKZXh0ZXJuIGxv
bmcgaW50IGdldGhvc3RpZCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHN5bmMgKHZvaWQpIDsKCgoK
CmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZl90
IF9fbGVuZ3RoKSA7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCB0
cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoK
CgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4
NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQg
X19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXpl
ICh2b2lkKSA7CiMgODY2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBicmsg
KHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRh
KSA7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2Nh
bGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgOwojIDkwNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4p
IDsKIyA5MTcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGxvY2tmNjQgKGlu
dCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBfX2xlbikgOwojIDkzOCAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpIDsKCgoKCgoK
CmV4dGVybiBjaGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpf
X3NhbHQpIDsKCgoKZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRm
bGFnKSA7CgoKCgoKCmV4dGVybiB2b2lkIHN3YWIgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X2Zyb20sIHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgICAgICAgICAgICAgICAgc3NpemVfdCBf
X24pIDsKCgoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKIyA5ODMgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgq
X19wcmVwYXJlKSAodm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3Bh
cmVudCkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkg
KHZvaWQpKSA7CgoKCiMgNTAgIi4vYnVjb21tLmgiIDIKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAo
dm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9p
ZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3Zl
ICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgOwoK
CgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Ms
IHNpemVfdCBfX24pCiAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQg
Kl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0
IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgpleHRlcm4gY2hhciAq
c3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hh
ciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgojIDExNyAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAzCmV4dGVybiBpbnQgc3RyY29sbF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gc2l6ZV90IHN0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNo
YXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVf
dCBfX2wpIDsKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0
dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwojIDE2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKZXh0ZXJuIGNoYXIg
KnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j
KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVs
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4g
c2l6ZV90IHN0cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQp
CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAo
X19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9f
aGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAgICA7CgoKCgpleHRlcm4gY2hhciAq
X19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tf
ciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGlt
LAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsK
CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9f
Y29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90
IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVk
bGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90
IF9fbikgOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVf
dCBfX24pIDsKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19j
b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7
CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwg
c2l6ZV90IF9fYnVmbGVuKSA7CgoKCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNp
emVfdCBfX24pIDsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAqX19zcmMsIHZv
aWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkIGJ6ZXJvICh2b2lkICpfX3Ms
IHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19j
b25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgpf
X2V4dGVuc2lvbl9fIGV4dGVybiBpbnQgZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19z
MSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9f
czEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl
X3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY2Fz
ZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipf
X3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBj
aGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNo
YXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjKQogICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmlj
dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICA7CgoKCmV4dGVy
biBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsK
ZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7
CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAq
bWVtZnJvYiAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNl
bmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CiMgMzcyICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzczICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAxIDMKIyAzODkgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAq
X19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgOTE5ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90
Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkKewogIHJlZ2lz
dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19y
ZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgaW50IF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAo
X19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsIGludCBfX3JlamVjdDIpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJu
IF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19y
ZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0
MiwgaW50IF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MzIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MiwKICAgICAgICAg
ICAgICBpbnQgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3
aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3Qx
CiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5NzYg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkK
ewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRd
ID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVy
biBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19h
Y2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQy
KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Fj
Y2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9f
YWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3Nb
X19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAg
ICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CiMgMTAzMyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNj
ZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAn
XDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7
CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkg
X19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAn
ICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpf
X3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9p
ZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTA4NSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7
CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpf
X25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytfX3M7CiAgX19yZXN1bHQgPSAo
KHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAnXDAnKQogICAgewogICAgICBfX3Jlc3VsdCA9IF9f
cysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnKQogICAgICAgIGlmICgqX19zKysgPT0gX19z
ZXApCiAgICAgICAgICB7CiAgICAgICAgICAgIF9fc1stMV0gPSAnXDAnOwogICAgICAgICAgICBi
cmVhazsKICAgICAgICAgIH0KICAgICAgKl9fbmV4dHAgPSBfX3M7CiAgICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CiMgMTExNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBj
aGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19zdHJpbmdwLCBfX2NvbnN0IGNoYXIgKl9fZGVsaW0p
OwojIDExMzUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAg
cmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQg
KikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19y
ZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3Jl
dHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9ICgodm9p
ZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEs
IGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8yYyAoY2hh
ciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkKICAgIHsK
ICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoMSkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9
CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikK
ICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAnOwogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAgICAgICAgfQogICAgICAq
X19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBj
aGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWpl
Y3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3Jl
amVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIg
Kl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICopMCkpCiAgICB7CiAg
ICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKDEpCiAgICAg
ICAgewogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9PSBfX3JlamVjdDIgfHwg
Kl9fY3AgPT0gX19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgKl9fY3ArKyA9
ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICsrX19j
cDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJldHVybiBfX3JldHZhbDsK
fQojIDEyMTEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiMgNTUyICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKCgpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0
ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCiMgOTE0
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCiMgMTIxMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAyIDMKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0
cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMjM1ICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpf
X3N0cmluZywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoj
IDM3NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiMgNTQgIi4vYnVjb21tLmgiIDIK
IyA2NCAiLi9idWNvbW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDMzICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAyIDMKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMK
IyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93
YWl0c3RhdHVzLmgiIDEgMwojIDY1ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMK
dW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1czsKICAgIHN0cnVjdAogICAgICB7CgogICAg
ICAgIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3OwogICAgICAgIHVuc2lnbmVkIGludCBfX3df
Y29yZWR1bXA6MTsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsKICAgICAgICB1
bnNpZ25lZCBpbnQ6MTY7CgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3Ry
dWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAg
dW5zaWduZWQgaW50IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoK
CgogICAgICB9IF9fd2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCiMgNjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewog
ICAgdW5pb24gd2FpdCAqX191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVT
IF9fYXR0cmlidXRlX18gKChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5MyAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGlu
dCByZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90
OwogICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQg
cmVtOwogIH0gbGxkaXZfdDsKCgojIDEzNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVy
biBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBhdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbG9u
ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0cikgOwoKCgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyKSA7CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBz
dHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
CiAgICAgOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b3EgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9u
X18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgOwoKCgoKCl9fZXh0
ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgojIDIyOSAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90
IF9fbG9jKSA7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25fXwpl
eHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2xvYykgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25n
IGludCBzdHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFz
ZSwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4gZG91YmxlIHN0cnRvZF9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICA7CgpleHRlcm4g
ZmxvYXQgc3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19s
b2MpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9f
bG9jKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICA7CmV4dGVybiBmbG9h
dCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwg
aW50IF9fZ3JvdXApCiAgICAgOwpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGlu
dCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCkgOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3Jv
dXApIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2lu
dGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dy
b3VwKSA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19z
dHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkKICAgICA7CgoKCgoKCgoKZXh0ZXJuIF9faW5s
aW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9kX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKc3RydG9sIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
ICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGlu
dApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKCmV4dGVybiBfX2lu
bGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9mX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKc3RydG9sZCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIpCnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsK
fQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3Eg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChf
X25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s
aW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGlu
dApzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxf
aW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBj
aGFyICogX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAg
ICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIs
IF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2Yg
KF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAq
KikgKCh2b2lkICopMCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFy
ICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZv
aWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNo
YXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAq
KTApLCAxMCk7Cn0KCgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBp
bnQKYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0
ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCiMgNDA4ICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25n
IGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CiMgNDIxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAo
dm9pZCkgOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoK
CgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0
YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpl
eHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCBy
YW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAg
aW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAg
aW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5k
b21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAg
ICAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5k
b21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoK
ZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0
cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxl
biwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0
ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBz
cmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2ln
bmVkIGludCAqX19zZWVkKSA7CgoKCgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIDsK
ZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoK
CmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiBsb25nIGludCBtcmFu
ZDQ4ICh2b2lkKSA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg
X194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxvbmcgaW50IF9fc2VlZHZhbCkg
OwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBf
X3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9f
cGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hv
cnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5z
aWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgZXJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IGxyYW5kNDhf
ciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgbnJh
bmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQg
bXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJu
IGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0
ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19idWZmZXIpCiAgICAgOwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQg
aW50IF9fc2VlZDE2dlszXSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19idWZmZXIpIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQg
X19wYXJhbVs3XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f
YnVmZmVyKSA7CiMgNTYyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKZXh0ZXJuIHZvaWQg
KnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKCmV4dGVybiB2
b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIg
MSAzCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy40L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIvdXNyL2lu
Y2x1ZGUvYWxsb2NhLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9f
c2l6ZSkgOwoKCgoKCgojIDU3NyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVy
biB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgoKCgpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2b2lkICoqX19tZW1wdHIsIHNpemVf
dCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxs
b2NfXykpOwoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkg
OwoKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg
dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICA7CgoKCgoKCmV4dGVybiB2b2lkIGV4aXQg
KGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgpleHRl
cm4gdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCgoKCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoK
CgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoK
CgoKCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBpbnQg
c2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQg
X19yZXBsYWNlKQogICAgIDsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9f
bmFtZSkgOwoKCgoKCgpleHRlcm4gaW50IGNsZWFyZW52ICh2b2lkKSA7CiMgNjYxICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkg
OwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CiMgNjc4ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVt
cGxhdGUpIDsKIyA2ODggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWtk
dGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChfX2NvbnN0
IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxl
X25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNzEyICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
YW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkg
OwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19j
b25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJpc29uX2ZuX3Q7CgoK
CgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZv
aWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3Qg
X19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZv
aWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAg
ICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcg
aW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4
dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1l
ciwgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4g
bGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZf
dCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKIyA3NzYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAq
ZWN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVj
cHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRl
cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7
CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hh
ciAqX19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwg
aW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0
LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2
dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoK
ZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
biwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xl
bikgOwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbGVuKSA7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBf
X25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0
IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAgY2hh
ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCgpleHRlcm4gaW50IG1i
bGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWJ0b3dj
ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgd2N0b21iIChj
aGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICh3
Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0ZXJuIHNpemVfdCB3Y3N0
b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24pCiAgICAgOwoKCgoKCgoK
CmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpfX3Jlc3BvbnNlKSA7CiMgODU4ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9f
cmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lkIHNldGtleSAoX19jb25zdCBjaGFyICpfX2tl
eSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoK
CgpleHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQg
KGludCBfX2ZkKSA7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9fZmQpIDsKCgoKCgoK
ZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVm
bGVuKSA7CgoKZXh0ZXJuIGludCBnZXRwdCAodm9pZCkgOwoKCgoKCgpleHRlcm4gaW50IGdldGxv
YWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyA2NSAiLi9i
dWNvbW0uaCIgMgoKCgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyAyOSAiL3Vzci9p
bmNsdWRlL2ZjbnRsLmgiIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMSAz
CiMgMTM2ICIvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAzCnN0cnVjdCBmbG9jawogIHsKICAg
IHNob3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CgogICAgX19vZmZfdCBs
X3N0YXJ0OwogICAgX19vZmZfdCBsX2xlbjsKCgoKCiAgICBfX3BpZF90IGxfcGlkOwogIH07CgoK
c3RydWN0IGZsb2NrNjQKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwogICAgc2hvcnQgaW50IGxf
d2hlbmNlOwogICAgX19vZmY2NF90IGxfc3RhcnQ7CiAgICBfX29mZjY0X3QgbF9sZW47CiAgICBf
X3BpZF90IGxfcGlkOwogIH07CiMgMzQgIi91c3IvaW5jbHVkZS9mY250bC5oIiAyIDMKIyA2MCAi
L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBmY250bCAoaW50IF9fZmQsIGludCBf
X2NtZCwgLi4uKSA7CgoKCgoKZXh0ZXJuIGludCBvcGVuIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg
aW50IF9fb2ZsYWcsIC4uLikgOwojIDc2ICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g
aW50IG9wZW42NCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIDsKCgoK
CgoKZXh0ZXJuIGludCBjcmVhdCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9k
ZSkgOwojIDkzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4gaW50IGNyZWF0NjQgKF9f
Y29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIDsKIyAxMzAgIi91c3IvaW5jbHVk
ZS9mY250bC5oIiAzCmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZSAoaW50IF9fZmQsIF9fb2ZmX3Qg
X19vZmZzZXQsIHNpemVfdCBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19h
ZHZpc2UpIDsKIyAxNDIgIi91c3IvaW5jbHVkZS9mY250bC5oIiAzCmV4dGVybiBpbnQgcG9zaXhf
ZmFkdmlzZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19sZW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hZHZpc2UpIDsKCgoKCgpleHRlcm4gaW50
IHBvc2l4X2ZhbGxvY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZzZXQsIHNpemVfdCBfX2xl
bikgOwojIDE2MCAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKZXh0ZXJuIGludCBwb3NpeF9mYWxs
b2NhdGU2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNldCwgc2l6ZV90IF9fbGVuKQogICAg
IDsKCgoKCiMgNjkgIi4vYnVjb21tLmgiIDIKIyA5MCAiLi9idWNvbW0uaCIKZXh0ZXJuIGNoYXIg
KiplbnZpcm9uOwojIDEyOSAiLi9idWNvbW0uaCIKIyAxICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgi
IDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuNC9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9p
bmNsdWRlL2xvY2FsZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbGUuaCIgMSAz
CiMgMjcgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAzCmVudW0KewogIF9fTENfQ1RZUEUg
PSAwLAogIF9fTENfTlVNRVJJQyA9IDEsCiAgX19MQ19USU1FID0gMiwKICBfX0xDX0NPTExBVEUg
PSAzLAogIF9fTENfTU9ORVRBUlkgPSA0LAogIF9fTENfTUVTU0FHRVMgPSA1LAogIF9fTENfQUxM
ID0gNiwKICBfX0xDX1BBUEVSID0gNywKICBfX0xDX05BTUUgPSA4LAogIF9fTENfQUREUkVTUyA9
IDksCiAgX19MQ19URUxFUEhPTkUgPSAxMCwKICBfX0xDX01FQVNVUkVNRU5UID0gMTEsCiAgX19M
Q19JREVOVElGSUNBVElPTiA9IDEyCn07CiMgMzEgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMiAz
CgoKIyA1MiAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCnN0cnVjdCBsY29udgp7CgoKICBjaGFy
ICpkZWNpbWFsX3BvaW50OwogIGNoYXIgKnRob3VzYW5kc19zZXA7CgoKCgoKICBjaGFyICpncm91
cGluZzsKCgoKCgogIGNoYXIgKmludF9jdXJyX3N5bWJvbDsKICBjaGFyICpjdXJyZW5jeV9zeW1i
b2w7CiAgY2hhciAqbW9uX2RlY2ltYWxfcG9pbnQ7CiAgY2hhciAqbW9uX3Rob3VzYW5kc19zZXA7
CiAgY2hhciAqbW9uX2dyb3VwaW5nOwogIGNoYXIgKnBvc2l0aXZlX3NpZ247CiAgY2hhciAqbmVn
YXRpdmVfc2lnbjsKICBjaGFyIGludF9mcmFjX2RpZ2l0czsKICBjaGFyIGZyYWNfZGlnaXRzOwoK
ICBjaGFyIHBfY3NfcHJlY2VkZXM7CgogIGNoYXIgcF9zZXBfYnlfc3BhY2U7CgogIGNoYXIgbl9j
c19wcmVjZWRlczsKCiAgY2hhciBuX3NlcF9ieV9zcGFjZTsKCgoKCgoKICBjaGFyIHBfc2lnbl9w
b3NuOwogIGNoYXIgbl9zaWduX3Bvc247CgoKICBjaGFyIGludF9wX2NzX3ByZWNlZGVzOwoKICBj
aGFyIGludF9wX3NlcF9ieV9zcGFjZTsKCiAgY2hhciBpbnRfbl9jc19wcmVjZWRlczsKCiAgY2hh
ciBpbnRfbl9zZXBfYnlfc3BhY2U7CgoKCgoKCiAgY2hhciBpbnRfcF9zaWduX3Bvc247CiAgY2hh
ciBpbnRfbl9zaWduX3Bvc247CiMgMTE5ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDMKfTsKCgoK
CgpleHRlcm4gY2hhciAqc2V0bG9jYWxlIChpbnQgX19jYXRlZ29yeSwgX19jb25zdCBjaGFyICpf
X2xvY2FsZSkgOwoKCmV4dGVybiBzdHJ1Y3QgbGNvbnYgKmxvY2FsZWNvbnYgKHZvaWQpIDsKCgoj
IDE0OCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCnR5cGVkZWYgX19sb2NhbGVfdCBsb2NhbGVf
dDsKCgoKCgpleHRlcm4gX19sb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2NhdGVnb3J5X21hc2ss
IF9fY29uc3QgY2hhciAqX19sb2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19s
b2NhbGVfdCBfX2Jhc2UpIDsKIyAxODkgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMwpleHRlcm4g
X19sb2NhbGVfdCBkdXBsb2NhbGUgKF9fbG9jYWxlX3QgX19kYXRhc2V0KSA7CgoKCmV4dGVybiB2
b2lkIGZyZWVsb2NhbGUgKF9fbG9jYWxlX3QgX19kYXRhc2V0KSA7CgoKCgoKCmV4dGVybiBfX2xv
Y2FsZV90IHVzZWxvY2FsZSAoX19sb2NhbGVfdCBfX2RhdGFzZXQpIDsKCgoKCgoKCgojIDEzMCAi
Li9idWNvbW0uaCIgMgojIDE1MSAiLi9idWNvbW0uaCIKdm9pZCBiZmRfbm9uZmF0YWwKICAoY29u
c3QgY2hhciAqKTsKCnZvaWQgYmZkX2ZhdGFsCiAgKGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVf
XyAoKF9fbm9yZXR1cm5fXykpOwoKdm9pZCByZXBvcnQKICAoY29uc3QgY2hhciAqLCB2YV9saXN0
KTsKCnZvaWQgZmF0YWwKICAoY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCnZvaWQgbm9uX2ZhdGFsCiAgKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKCnZvaWQgc2V0X2RlZmF1bHRfYmZkX3Rh
cmdldAogICh2b2lkKTsKCnZvaWQgbGlzdF9tYXRjaGluZ19mb3JtYXRzCiAgKGNoYXIgKipwKTsK
CnZvaWQgbGlzdF9zdXBwb3J0ZWRfdGFyZ2V0cwogIChjb25zdCBjaGFyICosIEZJTEUgKik7Cgp2
b2lkIGxpc3Rfc3VwcG9ydGVkX2FyY2hpdGVjdHVyZXMKICAoY29uc3QgY2hhciAqLCBGSUxFICop
OwoKdm9pZCBwcmludF9hcmVsdF9kZXNjcgogIChGSUxFICpmaWxlLCBiZmQgKmFiZmQsIGJmZF9i
b29sZWFuIHZlcmJvc2UpOwoKY2hhciAqbWFrZV90ZW1wbmFtZQogIChjaGFyICopOwoKYmZkX3Zt
YSBwYXJzZV92bWEKICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKZXh0ZXJuIGNoYXIg
KnByb2dyYW1fbmFtZTsKCgp2b2lkIG1vZGVfc3RyaW5nCiAgKHVuc2lnbmVkIGxvbmcgbW9kZSwg
Y2hhciAqYnVmKTsKCgpleHRlcm4gdm9pZCBwcmludF92ZXJzaW9uCiAgKGNvbnN0IGNoYXIgKik7
CgoKZXh0ZXJuIHZvaWQgc2V0X3RpbWVzCiAgKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHN0
YXQgKik7CgpleHRlcm4gaW50IHNtYXJ0X3JlbmFtZQogIChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKiwgaW50KTsKCgp2b2lkICogeG1hbGxvYwogIChzaXplX3QpOwoKdm9pZCAqIHhyZWFsbG9j
CiAgKHZvaWQgKiwgc2l6ZV90KTsKIyA5MyAicmVhZGVsZi5jIiAyCgoKY2hhciAqcHJvZ3JhbV9u
YW1lID0gInJlYWRlbGYiOwp1bnNpZ25lZCBsb25nIGR5bmFtaWNfYWRkcjsKYmZkX3NpemVfdHlw
ZSBkeW5hbWljX3NpemU7CmNoYXIgKmR5bmFtaWNfc3RyaW5nczsKY2hhciAqc3RyaW5nX3RhYmxl
Owp1bnNpZ25lZCBsb25nIHN0cmluZ190YWJsZV9sZW5ndGg7CnVuc2lnbmVkIGxvbmcgbnVtX2R5
bmFtaWNfc3ltczsKRWxmX0ludGVybmFsX1N5bSAqZHluYW1pY19zeW1ib2xzOwpFbGZfSW50ZXJu
YWxfU3ltaW5mbyAqZHluYW1pY19zeW1pbmZvOwp1bnNpZ25lZCBsb25nIGR5bmFtaWNfc3ltaW5m
b19vZmZzZXQ7CnVuc2lnbmVkIGludCBkeW5hbWljX3N5bWluZm9fbmVudDsKY2hhciBwcm9ncmFt
X2ludGVycHJldGVyWzY0XTsKbG9uZyBkeW5hbWljX2luZm9bMjMgKyAxXTsKbG9uZyB2ZXJzaW9u
X2luZm9bMTZdOwpsb25nIGxvYWRhZGRyID0gMDsKRWxmX0ludGVybmFsX0VoZHIgZWxmX2hlYWRl
cjsKRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb25faGVhZGVyczsKRWxmX0ludGVybmFsX0R5biAq
ZHluYW1pY19zZWdtZW50OwpFbGZfSW50ZXJuYWxfU2hkciAqc3ltdGFiX3NobmR4X2hkcjsKaW50
IHNob3dfbmFtZTsKaW50IGRvX2R5bmFtaWM7CmludCBkb19zeW1zOwppbnQgZG9fcmVsb2M7Cmlu
dCBkb19zZWN0aW9uczsKaW50IGRvX3NlZ21lbnRzOwppbnQgZG9fdW53aW5kOwppbnQgZG9fdXNp
bmdfZHluYW1pYzsKaW50IGRvX2hlYWRlcjsKaW50IGRvX2R1bXA7CmludCBkb192ZXJzaW9uOwpp
bnQgZG9fd2lkZTsKaW50IGRvX2hpc3RvZ3JhbTsKaW50IGRvX2RlYnVnZ2luZzsKaW50IGRvX2Rl
YnVnX2luZm87CmludCBkb19kZWJ1Z19hYmJyZXZzOwppbnQgZG9fZGVidWdfbGluZXM7CmludCBk
b19kZWJ1Z19wdWJuYW1lczsKaW50IGRvX2RlYnVnX2FyYW5nZXM7CmludCBkb19kZWJ1Z19mcmFt
ZXM7CmludCBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwOwppbnQgZG9fZGVidWdfbWFjaW5mbzsKaW50
IGRvX2RlYnVnX3N0cjsKaW50IGRvX2RlYnVnX2xvYzsKaW50IGRvX2FyY2g7CmludCBkb19ub3Rl
czsKaW50IGlzXzMyYml0X2VsZjsKCgpjaGFyICpkdW1wX3NlY3RzID0gKCh2b2lkICopMCk7CnVu
c2lnbmVkIGludCBudW1fZHVtcF9zZWN0cyA9IDA7CgoKCgoKCnR5cGVkZWYgZW51bSBwcmludF9t
b2RlCnsKICBIRVgsCiAgREVDLAogIERFQ181LAogIFVOU0lHTkVELAogIFBSRUZJWF9IRVgsCiAg
RlVMTF9IRVgsCiAgTE9OR19IRVgKfQpwcmludF9tb2RlOwoKCnN0YXRpYyB2b2lkIHByaW50X3Zt
YQogIChiZmRfdm1hLCBwcmludF9tb2RlKTsKc3RhdGljIHZvaWQgcHJpbnRfc3ltYm9sCiAgKGlu
dCwgY29uc3QgY2hhciAqKTsKc3RhdGljIGJmZF92bWEgKCpieXRlX2dldCkKICAodW5zaWduZWQg
Y2hhciAqLCBpbnQpOwpzdGF0aWMgYmZkX3ZtYSBieXRlX2dldF9saXR0bGVfZW5kaWFuCiAgKHVu
c2lnbmVkIGNoYXIgKiwgaW50KTsKc3RhdGljIGJmZF92bWEgYnl0ZV9nZXRfYmlnX2VuZGlhbgog
ICh1bnNpZ25lZCBjaGFyICosIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19keW5h
bWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfc3BhcmM2
NF9keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRf
cHBjNjRfZHluYW1pY190eXBlCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY29uc3QgY2hhciAq
Z2V0X3BhcmlzY19keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBj
aGFyICpnZXRfaWE2NF9keW5hbWljX3R5cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfZHluYW1pY190eXBlCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgaW50IHNs
dXJwX3JlbGFfcmVsb2NzCiAgKEZJTEUgKiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
RWxmX0ludGVybmFsX1JlbGEgKiosIHVuc2lnbmVkIGxvbmcgKik7CgpzdGF0aWMgaW50IHNsdXJw
X3JlbF9yZWxvY3MKICAoRklMRSAqLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBFbGZf
SW50ZXJuYWxfUmVsYSAqKiwgdW5zaWduZWQgbG9uZyAqKTsKCnN0YXRpYyBpbnQgZHVtcF9yZWxv
Y2F0aW9ucwogIChGSUxFICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIEVsZl9JbnRl
cm5hbF9TeW0gKiwgdW5zaWduZWQgbG9uZywgY2hhciAqLCBpbnQpOwoKc3RhdGljIGNoYXIgKmdl
dF9maWxlX3R5cGUKICAodW5zaWduZWQpOwpzdGF0aWMgY2hhciAqZ2V0X21hY2hpbmVfbmFtZQog
ICh1bnNpZ25lZCk7CnN0YXRpYyB2b2lkIGRlY29kZV9BUk1fbWFjaGluZV9mbGFncwogICh1bnNp
Z25lZCwgY2hhcltdKTsKc3RhdGljIGNoYXIgKmdldF9tYWNoaW5lX2ZsYWdzCiAgKHVuc2lnbmVk
LCB1bnNpZ25lZCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19zZWdtZW50X3R5cGUKICAo
dW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfcGFyaXNjX3NlZ21lbnRfdHlw
ZQogICh1bnNpZ25lZCBsb25nKTsKc3RhdGljIGNvbnN0IGNoYXIgKmdldF9pYTY0X3NlZ21lbnRf
dHlwZQogICh1bnNpZ25lZCBsb25nKTsKc3RhdGljIGNvbnN0IGNoYXIgKmdldF9zZWdtZW50X3R5
cGUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfbWlwc19zZWN0aW9u
X3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAqZ2V0X3Bhcmlz
Y19zZWN0aW9uX3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAq
Z2V0X2lhNjRfc2VjdGlvbl90eXBlX25hbWUKICAodW5zaWduZWQgaW50KTsKc3RhdGljIGNvbnN0
IGNoYXIgKmdldF9zZWN0aW9uX3R5cGVfbmFtZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29u
c3QgY2hhciAqZ2V0X3N5bWJvbF9iaW5kaW5nCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfc3ltYm9sX3R5cGUKICAodW5zaWduZWQgaW50KTsKc3RhdGljIGNvbnN0IGNo
YXIgKmdldF9zeW1ib2xfdmlzaWJpbGl0eQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3Qg
Y2hhciAqZ2V0X3N5bWJvbF9pbmRleF90eXBlCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBjb25z
dCBjaGFyICpnZXRfZHluYW1pY19mbGFncwogIChiZmRfdm1hKTsKc3RhdGljIHZvaWQgdXNhZ2UK
ICAodm9pZCk7CnN0YXRpYyB2b2lkIHBhcnNlX2FyZ3MKICAoaW50LCBjaGFyICoqKTsKc3RhdGlj
IGludCBwcm9jZXNzX2ZpbGVfaGVhZGVyCiAgKHZvaWQpOwpzdGF0aWMgaW50IHByb2Nlc3NfcHJv
Z3JhbV9oZWFkZXJzCiAgKEZJTEUgKik7CnN0YXRpYyBpbnQgcHJvY2Vzc19zZWN0aW9uX2hlYWRl
cnMKICAoRklMRSAqKTsKc3RhdGljIGludCBwcm9jZXNzX3Vud2luZAogIChGSUxFICopOwpzdGF0
aWMgdm9pZCBkeW5hbWljX3NlZ21lbnRfbWlwc192YWwKICAoRWxmX0ludGVybmFsX0R5biAqKTsK
c3RhdGljIHZvaWQgZHluYW1pY19zZWdtZW50X3BhcmlzY192YWwKICAoRWxmX0ludGVybmFsX0R5
biAqKTsKc3RhdGljIHZvaWQgZHluYW1pY19zZWdtZW50X2lhNjRfdmFsCiAgKEVsZl9JbnRlcm5h
bF9EeW4gKik7CnN0YXRpYyBpbnQgcHJvY2Vzc19keW5hbWljX3NlZ21lbnQKICAoRklMRSAqKTsK
c3RhdGljIGludCBwcm9jZXNzX3N5bWJvbF90YWJsZQogIChGSUxFICopOwpzdGF0aWMgaW50IHBy
b2Nlc3Nfc3ltaW5mbwogIChGSUxFICopOwpzdGF0aWMgaW50IHByb2Nlc3Nfc2VjdGlvbl9jb250
ZW50cwogIChGSUxFICopOwpzdGF0aWMgdm9pZCBwcm9jZXNzX21pcHNfZnBlX2V4Y2VwdGlvbgog
IChpbnQpOwpzdGF0aWMgaW50IHByb2Nlc3NfbWlwc19zcGVjaWZpYwogIChGSUxFICopOwpzdGF0
aWMgaW50IHByb2Nlc3NfZmlsZQogIChjaGFyICopOwpzdGF0aWMgaW50IHByb2Nlc3NfcmVsb2Nz
CiAgKEZJTEUgKik7CnN0YXRpYyBpbnQgcHJvY2Vzc192ZXJzaW9uX3NlY3Rpb25zCiAgKEZJTEUg
Kik7CnN0YXRpYyBjaGFyICpnZXRfdmVyX2ZsYWdzCiAgKHVuc2lnbmVkIGludCk7CnN0YXRpYyBp
bnQgZ2V0XzMyYml0X3NlY3Rpb25faGVhZGVycwogIChGSUxFICosIHVuc2lnbmVkIGludCk7CnN0
YXRpYyBpbnQgZ2V0XzY0Yml0X3NlY3Rpb25faGVhZGVycwogIChGSUxFICosIHVuc2lnbmVkIGlu
dCk7CnN0YXRpYyBpbnQgZ2V0XzMyYml0X3Byb2dyYW1faGVhZGVycwogIChGSUxFICosIEVsZl9J
bnRlcm5hbF9QaGRyICopOwpzdGF0aWMgaW50IGdldF82NGJpdF9wcm9ncmFtX2hlYWRlcnMKICAo
RklMRSAqLCBFbGZfSW50ZXJuYWxfUGhkciAqKTsKc3RhdGljIGludCBnZXRfZmlsZV9oZWFkZXIK
ICAoRklMRSAqKTsKc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKmdldF8zMmJpdF9lbGZfc3ltYm9s
cwogIChGSUxFICosIEVsZl9JbnRlcm5hbF9TaGRyICopOwpzdGF0aWMgRWxmX0ludGVybmFsX1N5
bSAqZ2V0XzY0Yml0X2VsZl9zeW1ib2xzCiAgKEZJTEUgKiwgRWxmX0ludGVybmFsX1NoZHIgKik7
CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZWxmX3NlY3Rpb25fZmxhZ3MKICAoYmZkX3ZtYSk7CnN0
YXRpYyBpbnQgKmdldF9keW5hbWljX2RhdGEKICAoRklMRSAqLCB1bnNpZ25lZCBpbnQpOwpzdGF0
aWMgaW50IGdldF8zMmJpdF9keW5hbWljX3NlZ21lbnQKICAoRklMRSAqKTsKc3RhdGljIGludCBn
ZXRfNjRiaXRfZHluYW1pY19zZWdtZW50CiAgKEZJTEUgKik7CgoKCgpzdGF0aWMgaW50IGR1bXBf
c2VjdGlvbgogIChFbGZfSW50ZXJuYWxfU2hkciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3Bs
YXlfZGVidWdfc2VjdGlvbgogIChFbGZfSW50ZXJuYWxfU2hkciAqLCBGSUxFICopOwpzdGF0aWMg
aW50IGRpc3BsYXlfZGVidWdfaW5mbwogIChFbGZfSW50ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBj
aGFyICosIEZJTEUgKik7CnN0YXRpYyBpbnQgZGlzcGxheV9kZWJ1Z19ub3Rfc3VwcG9ydGVkCiAg
KEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGlu
dCBwcmVzY2FuX2RlYnVnX2luZm8KICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hh
ciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfbGluZXMKICAoRWxmX0ludGVy
bmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlf
ZGVidWdfcHVibmFtZXMKICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBG
SUxFICopOwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfYWJicmV2CiAgKEVsZl9JbnRlcm5hbF9T
aGRyICosIHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVn
X2FyYW5nZXMKICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICop
OwpzdGF0aWMgaW50IGRpc3BsYXlfZGVidWdfZnJhbWVzCiAgKEVsZl9JbnRlcm5hbF9TaGRyICos
IHVuc2lnbmVkIGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVnX21hY2lu
Zm8KICAoRWxmX0ludGVybmFsX1NoZHIgKiwgdW5zaWduZWQgY2hhciAqLCBGSUxFICopOwpzdGF0
aWMgaW50IGRpc3BsYXlfZGVidWdfc3RyCiAgKEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVk
IGNoYXIgKiwgRklMRSAqKTsKc3RhdGljIGludCBkaXNwbGF5X2RlYnVnX2xvYwogIChFbGZfSW50
ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBjaGFyICosIEZJTEUgKik7CnN0YXRpYyB1bnNpZ25lZCBj
aGFyICpwcm9jZXNzX2FiYnJldl9zZWN0aW9uCiAgKHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQg
Y2hhciAqKTsKc3RhdGljIHZvaWQgbG9hZF9kZWJ1Z19zdHIKICAoRklMRSAqKTsKc3RhdGljIHZv
aWQgZnJlZV9kZWJ1Z19zdHIKICAodm9pZCk7CnN0YXRpYyBjb25zdCBjaGFyICpmZXRjaF9pbmRp
cmVjdF9zdHJpbmcKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyB2b2lkIGxvYWRfZGVidWdfbG9j
CiAgKEZJTEUgKik7CnN0YXRpYyB2b2lkIGZyZWVfZGVidWdfbG9jCiAgKHZvaWQpOwpzdGF0aWMg
dW5zaWduZWQgbG9uZyByZWFkX2xlYjEyOAogICh1bnNpZ25lZCBjaGFyICosIGludCAqLCBpbnQp
OwpzdGF0aWMgaW50IHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcAogICh1bnNpZ25lZCBjaGFyICos
IGludCwgaW50KTsKc3RhdGljIHZvaWQgcmVzZXRfc3RhdGVfbWFjaGluZQogIChpbnQpOwpzdGF0
aWMgY2hhciAqZ2V0X1RBR19uYW1lCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY2hhciAqZ2V0
X0FUX25hbWUKICAodW5zaWduZWQgbG9uZyk7CnN0YXRpYyBjaGFyICpnZXRfRk9STV9uYW1lCiAg
KHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgdm9pZCBmcmVlX2FiYnJldnMKICAodm9pZCk7CnN0YXRp
YyB2b2lkIGFkZF9hYmJyZXYKICAodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgaW50KTsK
c3RhdGljIHZvaWQgYWRkX2FiYnJldl9hdHRyCiAgKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcpOwpzdGF0aWMgdW5zaWduZWQgY2hhciAqcmVhZF9hbmRfZGlzcGxheV9hdHRyCiAgKHVuc2ln
bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgdW5zaWduZWQgY2hhciAqcmVhZF9hbmRfZGlzcGxheV9h
dHRyX3ZhbHVlCiAgKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGNoYXIg
KiwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CgpzdGF0aWMgdW5zaWduZWQgY2hhciAq
ZGlzcGxheV9ibG9jawogICh1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMg
dm9pZCBkZWNvZGVfbG9jYXRpb25fZXhwcmVzc2lvbgogICh1bnNpZ25lZCBjaGFyICosIHVuc2ln
bmVkIGludCwgdW5zaWduZWQgbG9uZyk7CnN0YXRpYyB2b2lkIHJlcXVlc3RfZHVtcAogICh1bnNp
Z25lZCBpbnQsIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZWxmX2NsYXNzCiAgKHVuc2ln
bmVkIGludCk7CnN0YXRpYyBjb25zdCBjaGFyICpnZXRfZGF0YV9lbmNvZGluZwogICh1bnNpZ25l
ZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hhciAqZ2V0X29zYWJpX25hbWUKICAodW5zaWduZWQgaW50
KTsKc3RhdGljIGludCBndWVzc19pc19yZWxhCiAgKHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgY29u
c3QgY2hhciAqZ2V0X25vdGVfdHlwZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMgY29uc3QgY2hh
ciAqZ2V0X25ldGJzZF9lbGZjb3JlX25vdGVfdHlwZQogICh1bnNpZ25lZCBpbnQpOwpzdGF0aWMg
aW50IHByb2Nlc3Nfbm90ZQogIChFbGZfSW50ZXJuYWxfTm90ZSAqKTsKc3RhdGljIGludCBwcm9j
ZXNzX2NvcmVmaWxlX25vdGVfc2VnbWVudAogIChGSUxFICosIGJmZF92bWEsIGJmZF92bWEpOwpz
dGF0aWMgaW50IHByb2Nlc3NfY29yZWZpbGVfbm90ZV9zZWdtZW50cwogIChGSUxFICopOwpzdGF0
aWMgaW50IHByb2Nlc3NfY29yZWZpbGVfY29udGVudHMKICAoRklMRSAqKTsKc3RhdGljIGludCBw
cm9jZXNzX2FyY2hfc3BlY2lmaWMKICAoRklMRSAqKTsKc3RhdGljIGludCBwcm9jZXNzX2dudV9s
aWJsaXN0CiAgKEZJTEUgKik7Cgp0eXBlZGVmIGludCBFbGYzMl9Xb3JkOwojIDQzNSAicmVhZGVs
Zi5jIgpzdGF0aWMgdm9pZAplcnJvciAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQp7CiAgeyB2
YV9saXN0IGFyZ3M7IF9fYnVpbHRpbl92YV9zdGFydChhcmdzLG1lc3NhZ2UpOyB7IHN0cnVjdCBR
ZG15OwogIHN0cnVjdCBRZG15OwoKICBmcHJpbnRmIChzdGRlcnIsICgiJXM6IEVycm9yOiAiKSwg
cHJvZ3JhbV9uYW1lKTsKICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcmdzKTsKICB9IF9f
YnVpbHRpbl92YV9lbmQoYXJncyk7IH07Cn0KCnN0YXRpYyB2b2lkCndhcm4gKGNvbnN0IGNoYXIg
Km1lc3NhZ2UsIC4uLikKewogIHsgdmFfbGlzdCBhcmdzOyBfX2J1aWx0aW5fdmFfc3RhcnQoYXJn
cyxtZXNzYWdlKTsgeyBzdHJ1Y3QgUWRteTsKICBzdHJ1Y3QgUWRteTsKCiAgZnByaW50ZiAoc3Rk
ZXJyLCAoIiVzOiBXYXJuaW5nOiAiKSwgcHJvZ3JhbV9uYW1lKTsKICB2ZnByaW50ZiAoc3RkZXJy
LCBtZXNzYWdlLCBhcmdzKTsKICB9IF9fYnVpbHRpbl92YV9lbmQoYXJncyk7IH07Cn0KCnN0YXRp
YyB2b2lkICogZ2V0X2RhdGEgKHZvaWQgKiwgRklMRSAqLCBsb25nLCBzaXplX3QsIGNvbnN0IGNo
YXIgKik7CgpzdGF0aWMgdm9pZCAqCmdldF9kYXRhICh2YXIsIGZpbGUsIG9mZnNldCwgc2l6ZSwg
cmVhc29uKQogICAgIHZvaWQgKiB2YXI7CiAgICAgRklMRSAqZmlsZTsKICAgICBsb25nIG9mZnNl
dDsKICAgICBzaXplX3Qgc2l6ZTsKICAgICBjb25zdCBjaGFyICpyZWFzb247CnsKICB2b2lkICog
bXZhcjsKCiAgaWYgKHNpemUgPT0gMCkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgaWYgKGZz
ZWVrIChmaWxlLCBvZmZzZXQsIDApKQogICAgewogICAgICBlcnJvciAoKCJVbmFibGUgdG8gc2Vl
ayB0byAleCBmb3IgJXNcbiIpLCBvZmZzZXQsIHJlYXNvbik7CiAgICAgIHJldHVybiAoKHZvaWQg
KikwKTsKICAgIH0KCiAgbXZhciA9IHZhcjsKICBpZiAobXZhciA9PSAoKHZvaWQgKikwKSkKICAg
IHsKICAgICAgbXZhciA9ICh2b2lkICopIG1hbGxvYyAoc2l6ZSk7CgogICAgICBpZiAobXZhciA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
IGFsbG9jYXRpbmcgJWQgYnl0ZXMgZm9yICVzXG4iKSwKICAgICAgICAgICAgICAgICBzaXplLCBy
ZWFzb24pOwogICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgIH0KICAgIH0KCiAg
aWYgKGZyZWFkIChtdmFyLCBzaXplLCAxLCBmaWxlKSAhPSAxKQogICAgewogICAgICBlcnJvciAo
KCJVbmFibGUgdG8gcmVhZCBpbiAlZCBieXRlcyBvZiAlc1xuIiksIHNpemUsIHJlYXNvbik7CiAg
ICAgIGlmIChtdmFyICE9IHZhcikKICAgICAgICBmcmVlIChtdmFyKTsKICAgICAgcmV0dXJuICgo
dm9pZCAqKTApOwogICAgfQoKICByZXR1cm4gbXZhcjsKfQoKc3RhdGljIGJmZF92bWEKYnl0ZV9n
ZXRfbGl0dGxlX2VuZGlhbiAoZmllbGQsIHNpemUpCiAgICAgdW5zaWduZWQgY2hhciAqZmllbGQ7
CiAgICAgaW50IHNpemU7CnsKICBzd2l0Y2ggKHNpemUpCiAgICB7CiAgICBjYXNlIDE6CiAgICAg
IHJldHVybiAqZmllbGQ7CgogICAgY2FzZSAyOgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBpbnQp
IChmaWVsZFswXSkpCiAgICAgICAgfCAoKCh1bnNpZ25lZCBpbnQpIChmaWVsZFsxXSkpIDw8IDgp
OwojIDUyMyAicmVhZGVsZi5jIgogICAgY2FzZSA0OgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBs
b25nKSAoZmllbGRbMF0pKQogICAgICAgIHwgKCgodW5zaWduZWQgbG9uZykgKGZpZWxkWzFdKSkg
PDwgOCkKICAgICAgICB8ICgoKHVuc2lnbmVkIGxvbmcpIChmaWVsZFsyXSkpIDw8IDE2KQogICAg
ICAgIHwgKCgodW5zaWduZWQgbG9uZykgKGZpZWxkWzNdKSkgPDwgMjQpOwoKCiAgICBjYXNlIDg6
CiAgICBjYXNlIC04OgoKCgoKICAgICAgcmV0dXJuICgoYmZkX3ZtYSkgKGZpZWxkWzBdKSkKICAg
ICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFsxXSkpIDw8IDgpCiAgICAgICAgfCAoKChiZmRfdm1h
KSAoZmllbGRbMl0pKSA8PCAxNikKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFszXSkpIDw8
IDI0KQogICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzRdKSkgPDwgMzIpCiAgICAgICAgfCAo
KChiZmRfdm1hKSAoZmllbGRbNV0pKSA8PCA0MCkKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVs
ZFs2XSkpIDw8IDQ4KQogICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzddKSkgPDwgNTYpOwoK
ICAgIGRlZmF1bHQ6CiAgICAgIGVycm9yICgoIlVuaGFuZGxlZCBkYXRhIGxlbmd0aDogJWRcbiIp
LCBzaXplKTsKICAgICAgYWJvcnQgKCk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZApwcmludF92bWEg
KHZtYSwgbW9kZSkKICAgICBiZmRfdm1hIHZtYTsKICAgICBwcmludF9tb2RlIG1vZGU7CnsKCiAg
aWYgKGlzXzMyYml0X2VsZikKCiAgICB7CiAgICAgIHN3aXRjaCAobW9kZSkKICAgICAgICB7CiAg
ICAgICAgY2FzZSBGVUxMX0hFWDogcHJpbnRmICgiMHgiKTsKICAgICAgICBjYXNlIExPTkdfSEVY
OiBwcmludGYgKCIlOC44bHgiLCAodW5zaWduZWQgbG9uZykgdm1hKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSBQUkVGSVhfSEVYOiBwcmludGYgKCIweCIpOwogICAgICAgIGNhc2UgSEVYOiBwcmludGYg
KCIlbHgiLCAodW5zaWduZWQgbG9uZykgdm1hKTsgYnJlYWs7CiAgICAgICAgY2FzZSBERUM6IHBy
aW50ZiAoIiVsZCIsICh1bnNpZ25lZCBsb25nKSB2bWEpOyBicmVhazsKICAgICAgICBjYXNlIERF
Q181OiBwcmludGYgKCIlNWxkIiwgKGxvbmcpIHZtYSk7IGJyZWFrOwogICAgICAgIGNhc2UgVU5T
SUdORUQ6IHByaW50ZiAoIiVsdSIsICh1bnNpZ25lZCBsb25nKSB2bWEpOyBicmVhazsKICAgICAg
ICB9CiAgICB9CgogIGVsc2UKICAgIHsKICAgICAgc3dpdGNoIChtb2RlKQogICAgICAgIHsKICAg
ICAgICBjYXNlIEZVTExfSEVYOgogICAgICAgICAgcHJpbnRmICgiMHgiKTsKCgogICAgICAgIGNh
c2UgTE9OR19IRVg6CiAgICAgICAgICBmcHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAo
KHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpLCAoKHVuc2lnbmVk
IGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZmKSkpKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIFBSRUZJWF9IRVg6CiAgICAgICAgICBwcmludGYgKCIweCIpOwoKCiAgICAgICAgY2Fz
ZSBIRVg6CgoKCiAgICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpID4+IDMyKSAm
IDB4ZmZmZmZmZmYpKSkKICAgICAgICAgICAgcHJpbnRmICgiJWx4JTguOGx4IiwgKCh1bnNpZ25l
ZCBsb25nKSAoKCh2bWEpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50
ZiAoIiVseCIsICgodW5zaWduZWQgbG9uZykgKCgodm1hKSAmIDB4ZmZmZmZmZmYpKSkpOwoKICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIERFQzoKCgoKICAgICAgICAgIGlmICgoKHVuc2ln
bmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpKQoKICAgICAgICAgICAgcHJp
bnRmICgiKyslbGQiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZmKSkpKTsK
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJWxkIiwgKCh1bnNpZ25lZCBsb25n
KSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CgogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgREVDXzU6CgoKCiAgICAgICAgICBpZiAoKCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpID4+IDMy
KSAmIDB4ZmZmZmZmZmYpKSkKCiAgICAgICAgICAgIHByaW50ZiAoIisrJWxkIiwgKCh1bnNpZ25l
ZCBsb25nKSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgIHByaW50ZiAoIiU1bGQiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAweGZmZmZmZmZm
KSkpKTsKCiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBVTlNJR05FRDoKCgoKICAgICAg
ICAgIGlmICgoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgPj4gMzIpICYgMHhmZmZmZmZmZikpKQoK
ICAgICAgICAgICAgcHJpbnRmICgiKyslbHUiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHZtYSkgJiAw
eGZmZmZmZmZmKSkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJWx1Iiwg
KCh1bnNpZ25lZCBsb25nKSAoKCh2bWEpICYgMHhmZmZmZmZmZikpKSk7CgogICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQogICAgfQoKfQoKCgoKCgoKc3RhdGljIHZvaWQKcHJpbnRfc3ltYm9sICh3
aWR0aCwgc3ltYm9sKQogICAgIGludCB3aWR0aDsKICAgICBjb25zdCBjaGFyICpzeW1ib2w7CnsK
ICBpZiAoZG9fd2lkZSkKICAgIHByaW50ZiAoIiVzIiwgc3ltYm9sKTsKICBlbHNlIGlmICh3aWR0
aCA8IDApCiAgICBwcmludGYgKCIlLSouKnMiLCB3aWR0aCwgd2lkdGgsIHN5bWJvbCk7CiAgZWxz
ZQogICAgcHJpbnRmICgiJS0uKnMiLCB3aWR0aCwgc3ltYm9sKTsKfQoKc3RhdGljIGJmZF92bWEK
Ynl0ZV9nZXRfYmlnX2VuZGlhbiAoZmllbGQsIHNpemUpCiAgICAgdW5zaWduZWQgY2hhciAqZmll
bGQ7CiAgICAgaW50IHNpemU7CnsKICBzd2l0Y2ggKHNpemUpCiAgICB7CiAgICBjYXNlIDE6CiAg
ICAgIHJldHVybiAqZmllbGQ7CgogICAgY2FzZSAyOgogICAgICByZXR1cm4gKCh1bnNpZ25lZCBp
bnQpIChmaWVsZFsxXSkpIHwgKCgoaW50KSAoZmllbGRbMF0pKSA8PCA4KTsKCiAgICBjYXNlIDQ6
CiAgICAgIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpIChmaWVsZFszXSkpCiAgICAgICAgfCAoKCh1
bnNpZ25lZCBsb25nKSAoZmllbGRbMl0pKSA8PCA4KQogICAgICAgIHwgKCgodW5zaWduZWQgbG9u
ZykgKGZpZWxkWzFdKSkgPDwgMTYpCiAgICAgICAgfCAoKCh1bnNpZ25lZCBsb25nKSAoZmllbGRb
MF0pKSA8PCAyNCk7CiMgNjg3ICJyZWFkZWxmLmMiCiAgICBjYXNlIDg6CiAgICBjYXNlIC04OgoK
CgoKICAgICAgcmV0dXJuICgoYmZkX3ZtYSkgKGZpZWxkWzddKSkKICAgICAgICB8ICgoKGJmZF92
bWEpIChmaWVsZFs2XSkpIDw8IDgpCiAgICAgICAgfCAoKChiZmRfdm1hKSAoZmllbGRbNV0pKSA8
PCAxNikKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFs0XSkpIDw8IDI0KQogICAgICAgIHwg
KCgoYmZkX3ZtYSkgKGZpZWxkWzNdKSkgPDwgMzIpCiAgICAgICAgfCAoKChiZmRfdm1hKSAoZmll
bGRbMl0pKSA8PCA0MCkKICAgICAgICB8ICgoKGJmZF92bWEpIChmaWVsZFsxXSkpIDw8IDQ4KQog
ICAgICAgIHwgKCgoYmZkX3ZtYSkgKGZpZWxkWzBdKSkgPDwgNTYpOwoKCiAgICBkZWZhdWx0Ogog
ICAgICBlcnJvciAoKCJVbmhhbmRsZWQgZGF0YSBsZW5ndGg6ICVkXG4iKSwgc2l6ZSk7CiAgICAg
IGFib3J0ICgpOwogICAgfQp9CgoKCnN0YXRpYyBpbnQKZ3Vlc3NfaXNfcmVsYSAoZV9tYWNoaW5l
KQogICAgIHVuc2lnbmVkIGxvbmcgZV9tYWNoaW5lOwp7CiAgc3dpdGNoIChlX21hY2hpbmUpCiAg
ICB7CgogICAgY2FzZSA0MDoKICAgIGNhc2UgMzoKICAgIGNhc2UgNjoKICAgIGNhc2UgMTk6CiAg
ICBjYXNlIDB4NWFhNToKICAgIGNhc2UgOTI6CiAgICBjYXNlIDB4ODQ3MjoKICAgIGNhc2UgODg6
CiAgICBjYXNlIDB4OTA0MToKICAgIGNhc2UgODU6CiAgICBjYXNlIDB4NzY1MDoKICAgIGNhc2Ug
ODoKICAgIGNhc2UgMTA6CiAgICAgIHJldHVybiAwOwoKCiAgICBjYXNlIDQ6CiAgICBjYXNlIDQ2
OgogICAgY2FzZSA0NzoKICAgIGNhc2UgNDg6CiAgICBjYXNlIDE4OgogICAgY2FzZSA0MzoKICAg
IGNhc2UgMjoKICAgIGNhc2UgMjA6CiAgICBjYXNlIDIxOgogICAgY2FzZSA4NzoKICAgIGNhc2Ug
MHg5MDgwOgogICAgY2FzZSA4NjoKICAgIGNhc2UgMHg3Njc2OgogICAgY2FzZSA5MDoKICAgIGNh
c2UgMHhkZWFkOgogICAgY2FzZSA4OToKICAgIGNhc2UgMHhiZWVmOgogICAgY2FzZSA4NDoKICAg
IGNhc2UgMHgzMzMwOgogICAgY2FzZSAweDU0NDE6CiAgICBjYXNlIDQyOgogICAgY2FzZSAweDkw
MjY6CiAgICBjYXNlIDM5OgogICAgY2FzZSA1MDoKICAgIGNhc2UgODM6CiAgICBjYXNlIDB4MTA1
NzoKICAgIGNhc2UgNzY6CiAgICBjYXNlIDc6CiAgICBjYXNlIDYyOgogICAgY2FzZSAyMjoKICAg
IGNhc2UgMHhhMzkwOgogICAgY2FzZSA4MDoKICAgIGNhc2UgMTA1OgogICAgY2FzZSAweDEwNTk6
CiAgICBjYXNlIDB4YWQ0NToKICAgIGNhc2UgNzU6CiAgICBjYXNlIDEwMToKICAgIGNhc2UgMHg4
MjE3OgogICAgY2FzZSAweEZFQkE6CiAgICAgIHJldHVybiAxOwoKICAgIGNhc2UgNTQ6CiAgICBj
YXNlIDU1OgogICAgY2FzZSA1NjoKICAgIGNhc2UgNTc6CiAgICBjYXNlIDU4OgogICAgY2FzZSA1
OToKICAgIGNhc2UgNjA6CiAgICBjYXNlIDYxOgogICAgY2FzZSA2NjoKICAgIGNhc2UgNjc6CiAg
ICBjYXNlIDY4OgogICAgY2FzZSA2OToKICAgIGNhc2UgNzA6CiAgICBjYXNlIDcxOgogICAgY2Fz
ZSA3MjoKICAgIGNhc2UgNzM6CiAgICBjYXNlIDc0OgogICAgZGVmYXVsdDoKICAgICAgd2FybiAo
KCJEb24ndCBrbm93IGFib3V0IHJlbG9jYXRpb25zIG9uIHRoaXMgbWFjaGluZSBhcmNoaXRlY3R1
cmVcbiIpKTsKICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCnN0YXRpYyBpbnQKc2x1cnBfcmVsYV9y
ZWxvY3MgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9zaXplLCByZWxhc3AsIG5yZWxhc3ApCiAgICAg
RklMRSAqZmlsZTsKICAgICB1bnNpZ25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQg
bG9uZyByZWxfc2l6ZTsKICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqKnJlbGFzcDsKICAgICB1bnNp
Z25lZCBsb25nICpucmVsYXNwOwp7CiAgRWxmX0ludGVybmFsX1JlbGEgKnJlbGFzOwogIHVuc2ln
bmVkIGxvbmcgbnJlbGFzOwogIHVuc2lnbmVkIGludCBpOwoKICBpZiAoaXNfMzJiaXRfZWxmKQog
ICAgewogICAgICBFbGYzMl9FeHRlcm5hbF9SZWxhICplcmVsYXM7CgogICAgICBlcmVsYXMgPSAo
RWxmMzJfRXh0ZXJuYWxfUmVsYSAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHJlbF9v
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJlbGFzKQogICAgICAgIHJldHVybiAw
OwoKICAgICAgbnJlbGFzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbGEp
OwoKICAgICAgcmVsYXMgPSAoRWxmX0ludGVybmFsX1JlbGEgKikKICAgICAgICBtYWxsb2MgKG5y
ZWxhcyAqIHNpemVvZiAoRWxmX0ludGVybmFsX1JlbGEpKTsKCiAgICAgIGlmIChyZWxhcyA9PSAo
KHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkgcGFy
c2luZyByZWxvY3MiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3Ig
KGkgPSAwOyBpIDwgbnJlbGFzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsYXNbaV0ucl9v
ZmZzZXQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfb2Zmc2V0LCBzaXplb2YgKGVyZWxhc1tpXS5y
X29mZnNldCkpOwogICAgICAgICAgcmVsYXNbaV0ucl9pbmZvID0gYnl0ZV9nZXQgKGVyZWxhc1tp
XS5yX2luZm8sIHNpemVvZiAoZXJlbGFzW2ldLnJfaW5mbykpOwogICAgICAgICAgcmVsYXNbaV0u
cl9hZGRlbmQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfYWRkZW5kLCBzaXplb2YgKGVyZWxhc1tp
XS5yX2FkZGVuZCkpOwogICAgICAgIH0KCiAgICAgIGZyZWUgKGVyZWxhcyk7CiAgICB9CiAgZWxz
ZQogICAgewogICAgICBFbGY2NF9FeHRlcm5hbF9SZWxhICplcmVsYXM7CgogICAgICBlcmVsYXMg
PSAoRWxmNjRfRXh0ZXJuYWxfUmVsYSAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHJl
bF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJlbGFzKQogICAgICAgIHJldHVy
biAwOwoKICAgICAgbnJlbGFzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1Jl
bGEpOwoKICAgICAgcmVsYXMgPSAoRWxmX0ludGVybmFsX1JlbGEgKikKICAgICAgICBtYWxsb2Mg
KG5yZWxhcyAqIHNpemVvZiAoRWxmX0ludGVybmFsX1JlbGEpKTsKCiAgICAgIGlmIChyZWxhcyA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkg
cGFyc2luZyByZWxvY3MiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBm
b3IgKGkgPSAwOyBpIDwgbnJlbGFzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsYXNbaV0u
cl9vZmZzZXQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfb2Zmc2V0LCAtOCk7CiAgICAgICAgICBy
ZWxhc1tpXS5yX2luZm8gPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfaW5mbywgLTgpOwogICAgICAg
ICAgcmVsYXNbaV0ucl9hZGRlbmQgPSBieXRlX2dldCAoZXJlbGFzW2ldLnJfYWRkZW5kLCAtOCk7
CiAgICAgICAgfQoKICAgICAgZnJlZSAoZXJlbGFzKTsKICAgIH0KICAqcmVsYXNwID0gcmVsYXM7
CiAgKm5yZWxhc3AgPSBucmVsYXM7CiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKc2x1cnBfcmVs
X3JlbG9jcyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3NpemUsIHJlbHNwLCBucmVsc3ApCiAgICAg
RklMRSAqZmlsZTsKICAgICB1bnNpZ25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQg
bG9uZyByZWxfc2l6ZTsKICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqKnJlbHNwOwogICAgIHVuc2ln
bmVkIGxvbmcgKm5yZWxzcDsKewogIEVsZl9JbnRlcm5hbF9SZWxhICpyZWxzOwogIHVuc2lnbmVk
IGxvbmcgbnJlbHM7CiAgdW5zaWduZWQgaW50IGk7CgogIGlmIChpc18zMmJpdF9lbGYpCiAgICB7
CiAgICAgIEVsZjMyX0V4dGVybmFsX1JlbCAqZXJlbHM7CgogICAgICBlcmVscyA9IChFbGYzMl9F
eHRlcm5hbF9SZWwgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCByZWxfb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbF9zaXplLCAo
InJlbG9jcyIpKTsKICAgICAgaWYgKCFlcmVscykKICAgICAgICByZXR1cm4gMDsKCiAgICAgIG5y
ZWxzID0gcmVsX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1JlbCk7CgogICAgICByZWxz
ID0gKEVsZl9JbnRlcm5hbF9SZWxhICopIG1hbGxvYyAobnJlbHMgKiBzaXplb2YgKEVsZl9JbnRl
cm5hbF9SZWxhKSk7CgogICAgICBpZiAocmVscyA9PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAg
ICAgICAgICBlcnJvcigoIm91dCBvZiBtZW1vcnkgcGFyc2luZyByZWxvY3MiKSk7CiAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykK
ICAgICAgICB7CiAgICAgICAgICByZWxzW2ldLnJfb2Zmc2V0ID0gYnl0ZV9nZXQgKGVyZWxzW2ld
LnJfb2Zmc2V0LCBzaXplb2YgKGVyZWxzW2ldLnJfb2Zmc2V0KSk7CiAgICAgICAgICByZWxzW2ld
LnJfaW5mbyA9IGJ5dGVfZ2V0IChlcmVsc1tpXS5yX2luZm8sIHNpemVvZiAoZXJlbHNbaV0ucl9p
bmZvKSk7CiAgICAgICAgICByZWxzW2ldLnJfYWRkZW5kID0gMDsKICAgICAgICB9CgogICAgICBm
cmVlIChlcmVscyk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBFbGY2NF9FeHRlcm5hbF9SZWwg
KmVyZWxzOwoKICAgICAgZXJlbHMgPSAoRWxmNjRfRXh0ZXJuYWxfUmVsICopIGdldF9kYXRhICgo
KHZvaWQgKikwKSwgZmlsZSwgcmVsX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxfc2l6ZSwgKCJyZWxvY3MiKSk7CiAgICAgIGlmICghZXJl
bHMpCiAgICAgICAgcmV0dXJuIDA7CgogICAgICBucmVscyA9IHJlbF9zaXplIC8gc2l6ZW9mIChF
bGY2NF9FeHRlcm5hbF9SZWwpOwoKICAgICAgcmVscyA9IChFbGZfSW50ZXJuYWxfUmVsYSAqKSBt
YWxsb2MgKG5yZWxzICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfUmVsYSkpOwoKICAgICAgaWYgKHJl
bHMgPT0gKCh2b2lkICopMCkpCiAgICAgICAgewogICAgICAgICAgZXJyb3IoKCJvdXQgb2YgbWVt
b3J5IHBhcnNpbmcgcmVsb2NzIikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAg
ICAgZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCiAgICAgICAgewogICAgICAgICAgcmVsc1tp
XS5yX29mZnNldCA9IGJ5dGVfZ2V0IChlcmVsc1tpXS5yX29mZnNldCwgLTgpOwogICAgICAgICAg
cmVsc1tpXS5yX2luZm8gPSBieXRlX2dldCAoZXJlbHNbaV0ucl9pbmZvLCAtOCk7CiAgICAgICAg
ICByZWxzW2ldLnJfYWRkZW5kID0gMDsKICAgICAgICB9CgogICAgICBmcmVlIChlcmVscyk7CiAg
ICB9CiAgKnJlbHNwID0gcmVsczsKICAqbnJlbHNwID0gbnJlbHM7CiAgcmV0dXJuIDE7Cn0KCgpz
dGF0aWMgaW50CmR1bXBfcmVsb2NhdGlvbnMgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9zaXplLCBz
eW10YWIsIG5zeW1zLCBzdHJ0YWIsIGlzX3JlbGEpCiAgICAgRklMRSAqZmlsZTsKICAgICB1bnNp
Z25lZCBsb25nIHJlbF9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyByZWxfc2l6ZTsKICAgICBF
bGZfSW50ZXJuYWxfU3ltICpzeW10YWI7CiAgICAgdW5zaWduZWQgbG9uZyBuc3ltczsKICAgICBj
aGFyICpzdHJ0YWI7CiAgICAgaW50IGlzX3JlbGE7CnsKICB1bnNpZ25lZCBpbnQgaTsKICBFbGZf
SW50ZXJuYWxfUmVsYSAqcmVsczsKCgogIGlmIChpc19yZWxhID09IC0xKQogICAgaXNfcmVsYSA9
IGd1ZXNzX2lzX3JlbGEgKGVsZl9oZWFkZXIuZV9tYWNoaW5lKTsKCiAgaWYgKGlzX3JlbGEpCiAg
ICB7CiAgICAgIGlmICghc2x1cnBfcmVsYV9yZWxvY3MgKGZpbGUsIHJlbF9vZmZzZXQsIHJlbF9z
aXplLCAmcmVscywgJnJlbF9zaXplKSkKICAgICAgICByZXR1cm4gMDsKICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIGlmICghc2x1cnBfcmVsX3JlbG9jcyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3Np
emUsICZyZWxzLCAmcmVsX3NpemUpKQogICAgICAgIHJldHVybiAwOwogICAgfQoKICBpZiAoaXNf
MzJiaXRfZWxmKQogICAgewogICAgICBpZiAoaXNfcmVsYSkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoZG9fd2lkZSkKICAgICAgICAgICAgcHJpbnRmICgoIiBPZmZzZXQgICAgIEluZm8gICAgVHlw
ZSAgICAgICAgICAgICAgICBTeW0uIFZhbHVlICBTeW1ib2wncyBOYW1lICsgQWRkZW5kXG4iKSk7
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50ZiAoKCIgT2Zmc2V0ICAgICBJbmZvICAg
IFR5cGUgICAgICAgICAgICBTeW0uVmFsdWUgIFN5bS4gTmFtZSArIEFkZGVuZFxuIikpOwogICAg
ICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlmIChkb193aWRlKQogICAgICAg
ICAgICBwcmludGYgKCgiIE9mZnNldCAgICAgSW5mbyAgICBUeXBlICAgICAgICAgICAgICAgIFN5
bS4gVmFsdWUgIFN5bWJvbCdzIE5hbWVcbiIpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
cHJpbnRmICgoIiBPZmZzZXQgICAgIEluZm8gICAgVHlwZSAgICAgICAgICAgIFN5bS5WYWx1ZSAg
U3ltLiBOYW1lXG4iKSk7CiAgICAgICAgfQogICAgfQogIGVsc2UKICAgIHsKICAgICAgaWYgKGlz
X3JlbGEpCiAgICAgICAgewogICAgICAgICAgaWYgKGRvX3dpZGUpCiAgICAgICAgICAgIHByaW50
ZiAoKCIgICAgT2Zmc2V0ICAgICAgICAgICAgIEluZm8gICAgICAgICAgICBUeXBlICAgICAgICAg
ICAgICAgU3ltYm9sJ3MgVmFsdWUgIFN5bWJvbCdzIE5hbWUgKyBBZGRlbmRcbiIpKTsKICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0ICAgICAgICAgIEluZm8gICAg
ICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3ltLiBOYW1lICsgQWRkZW5kXG4i
KSk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgaWYgKGRvX3dpZGUp
CiAgICAgICAgICAgIHByaW50ZiAoKCIgICAgT2Zmc2V0ICAgICAgICAgICAgIEluZm8gICAgICAg
ICAgICBUeXBlICAgICAgICAgICAgICAgU3ltYm9sJ3MgVmFsdWUgIFN5bWJvbCdzIE5hbWVcbiIp
KTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0ICAgICAgICAg
IEluZm8gICAgICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3ltLiBOYW1lXG4i
KSk7CiAgICAgICAgfQogICAgfQoKICBmb3IgKGkgPSAwOyBpIDwgcmVsX3NpemU7IGkrKykKICAg
IHsKICAgICAgY29uc3QgY2hhciAqcnR5cGU7CiAgICAgIGNvbnN0IGNoYXIgKnJ0eXBlMiA9ICgo
dm9pZCAqKTApOwogICAgICBjb25zdCBjaGFyICpydHlwZTMgPSAoKHZvaWQgKikwKTsKICAgICAg
YmZkX3ZtYSBvZmZzZXQ7CiAgICAgIGJmZF92bWEgaW5mbzsKICAgICAgYmZkX3ZtYSBzeW10YWJf
aW5kZXg7CiAgICAgIGJmZF92bWEgdHlwZTsKICAgICAgYmZkX3ZtYSB0eXBlMiA9IChiZmRfdm1h
KSAoKHZvaWQgKikwKTsKICAgICAgYmZkX3ZtYSB0eXBlMyA9IChiZmRfdm1hKSAoKHZvaWQgKikw
KTsKCiAgICAgIG9mZnNldCA9IHJlbHNbaV0ucl9vZmZzZXQ7CiAgICAgIGluZm8gPSByZWxzW2ld
LnJfaW5mbzsKCiAgICAgIGlmIChpc18zMmJpdF9lbGYpCiAgICAgICAgewogICAgICAgICAgdHlw
ZSA9ICgoaW5mbykgJiAweGZmKTsKICAgICAgICAgIHN5bXRhYl9pbmRleCA9ICgoaW5mbykgPj4g
OCk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewoKCgoKICAgICAgICAgIGlmIChlbGZf
aGVhZGVyLmVfbWFjaGluZSA9PSA4KQogICAgICAgICAgICB7CgoKCgogICAgICAgICAgICAgIGlm
IChlbGZfaGVhZGVyLmVfaWRlbnRbNV0gIT0gMikKICAgICAgICAgICAgICAgIGluZm8gPSAoKChp
bmZvICYgMHhmZmZmZmZmZikgPDwgMzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZv
ID4+IDU2KSAmIDB4ZmYpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZvID4+IDQwKSAm
IDB4ZmYwMCkKICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGluZm8gPj4gMjQpICYgMHhmZjAw
MDApCiAgICAgICAgICAgICAgICAgICAgICAgIHwgKChpbmZvID4+IDgpICYgMHhmZjAwMDAwMCkp
OwogICAgICAgICAgICAgIHR5cGUgPSAoKGluZm8pICYgMHhmZik7CiAgICAgICAgICAgICAgdHlw
ZTIgPSAoKChpbmZvKSA+PiA4KSAmIDB4ZmYpOwogICAgICAgICAgICAgIHR5cGUzID0gKCgoaW5m
bykgPj4gMTYpICYgMHhmZik7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGVsZl9o
ZWFkZXIuZV9tYWNoaW5lID09IDQzKQogICAgICAgICAgICB0eXBlID0gKChpbmZvKSAmIDB4ZmYp
OwogICAgICAgICAgZWxzZQogICAgICAgICAgICB0eXBlID0gKChpbmZvKSAmIDB4ZmZmZmZmZmYp
OwoKICAgICAgICAgIHN5bXRhYl9pbmRleCA9ICgoaW5mbykgPj4gMzIpOwoKICAgICAgICB9Cgog
ICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHsKCiAgICAgICAgICBwcmludGYgKCIlOC44
bHggICU4LjhseCAiLCAoKHVuc2lnbmVkIGxvbmcpICgoKG9mZnNldCkgJiAweGZmZmZmZmZmKSkp
LCAoKHVuc2lnbmVkIGxvbmcpICgoKGluZm8pICYgMHhmZmZmZmZmZikpKSk7CgoKCiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgIHByaW50ZiAoZG9fd2lkZQogICAgICAg
ICAgICAgICAgICA/ICIlOC44bHglOC44bHggICU4LjhseCU4LjhseCAiCiAgICAgICAgICAgICAg
ICAgIDogIiU0LjRseCU4LjhseCAgJTQuNGx4JTguOGx4ICIsCiAgICAgICAgICAgICAgICAgICgo
dW5zaWduZWQgbG9uZykgKCgob2Zmc2V0KSA+PiAzMikgJiAweGZmZmZmZmZmKSksCiAgICAgICAg
ICAgICAgICAgICgodW5zaWduZWQgbG9uZykgKCgob2Zmc2V0KSAmIDB4ZmZmZmZmZmYpKSksCiAg
ICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZykgKCgoaW5mbykgPj4gMzIpICYgMHhmZmZm
ZmZmZikpLAogICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpICgoKGluZm8pICYgMHhm
ZmZmZmZmZikpKSk7CgoKCgoKCiAgICAgICAgfQoKICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVf
bWFjaGluZSkKICAgICAgICB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJ0eXBlID0gKCh2
b2lkICopMCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4ODoKICAgICAgICBjYXNl
IDB4OTA0MToKICAgICAgICAgIHJ0eXBlID0gZWxmX20zMnJfcmVsb2NfdHlwZSAodHlwZSk7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAzOgogICAgICAgIGNhc2UgNjoKICAgICAgICAg
IHJ0eXBlID0gZWxmX2kzODZfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSA3MDoKICAgICAgICBjYXNlIDUzOgogICAgICAgICAgcnR5cGUgPSBlbGZfbTY4
aGMxMV9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6
CiAgICAgICAgICBydHlwZSA9IGVsZl9tNjhrX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgMTk6CiAgICAgICAgICBydHlwZSA9IGVsZl9pOTYwX3JlbG9j
X3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODM6CiAgICAgICAg
Y2FzZSAweDEwNTc6CiAgICAgICAgICBydHlwZSA9IGVsZl9hdnJfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAxMToKICAgICAgICBjYXNlIDE4OgogICAg
ICAgIGNhc2UgNDM6CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgcnR5cGUgPSBlbGZfc3BhcmNf
cmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NzoKICAg
ICAgICBjYXNlIDB4OTA4MDoKICAgICAgICAgIHJ0eXBlID0gdjg1MF9yZWxvY190eXBlICh0eXBl
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg1OgogICAgICAgIGNhc2UgMHg3NjUw
OgogICAgICAgICAgcnR5cGUgPSBlbGZfZDEwdl9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIDg2OgogICAgICAgIGNhc2UgMHg3Njc2OgogICAgICAgICAg
cnR5cGUgPSBlbGZfZDMwdl9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIDB4NWFhNToKICAgICAgICAgIHJ0eXBlID0gZWxmX2RseF9yZWxvY190eXBlICh0
eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQyOgogICAgICAgICAgcnR5cGUg
PSBlbGZfc2hfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSA4OToKICAgICAgICBjYXNlIDB4YmVlZjoKICAgICAgICAgIHJ0eXBlID0gZWxmX21uMTAzMDBf
cmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MDoKICAg
ICAgICBjYXNlIDB4ZGVhZDoKICAgICAgICAgIHJ0eXBlID0gZWxmX21uMTAyMDBfcmVsb2NfdHlw
ZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NDoKICAgICAgICBjYXNl
IDB4MzMzMDoKICAgICAgICAgIHJ0eXBlID0gZWxmX2ZyMzBfcmVsb2NfdHlwZSAodHlwZSk7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDU0NDE6CiAgICAgICAgICBydHlwZSA9IGVs
Zl9mcnZfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAz
OToKICAgICAgICAgIHJ0eXBlID0gZWxmX21jb3JlX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgODA6CiAgICAgICAgICBydHlwZSA9IGVsZl9tbWl4X3Jl
bG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTA1OgogICAg
ICAgIGNhc2UgMHgxMDU5OgogICAgICAgICAgcnR5cGUgPSBlbGZfbXNwNDMwX3JlbG9jX3R5cGUg
KHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjA6CiAgICAgICAgICBydHlw
ZSA9IGVsZl9wcGNfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSAyMToKICAgICAgICAgIHJ0eXBlID0gZWxmX3BwYzY0X3JlbG9jX3R5cGUgKHR5cGUpOwog
ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgODoKICAgICAgICBjYXNlIDEwOgogICAgICAg
ICAgcnR5cGUgPSBlbGZfbWlwc19yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGlmICghaXNf
MzJiaXRfZWxmKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcnR5cGUyID0gZWxmX21pcHNf
cmVsb2NfdHlwZSAodHlwZTIpOwogICAgICAgICAgICAgIHJ0eXBlMyA9IGVsZl9taXBzX3JlbG9j
X3R5cGUgKHR5cGUzKTsKICAgICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHg5MDI2OgogICAgICAgICAgcnR5cGUgPSBlbGZfYWxwaGFfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA0MDoKICAgICAgICAgIHJ0eXBlID0gZWxm
X2FybV9yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ1
OgogICAgICAgICAgcnR5cGUgPSBlbGZfYXJjX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CgogICAgICAgIGNhc2UgMTU6CiAgICAgICAgICBydHlwZSA9IGVsZl9ocHBhX3JlbG9j
X3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNDY6CiAgICAgICAg
Y2FzZSA0NzoKICAgICAgICBjYXNlIDQ4OgogICAgICAgICAgcnR5cGUgPSBlbGZfaDhfcmVsb2Nf
dHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MjoKICAgICAgICBj
YXNlIDB4ODQ3MjoKICAgICAgICAgIHJ0eXBlID0gZWxmX29yMzJfcmVsb2NfdHlwZSAodHlwZSk7
CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5MToKICAgICAgICBjYXNlIDk5OgogICAg
ICAgICAgcnR5cGUgPSBlbGZfcGpfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlIDUwOgogICAgICAgICAgcnR5cGUgPSBlbGZfaWE2NF9yZWxvY190eXBlICh0
eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc2OgogICAgICAgICAgcnR5cGUg
PSBlbGZfY3Jpc19yZWxvY190eXBlICh0eXBlKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBj
YXNlIDc6CiAgICAgICAgICBydHlwZSA9IGVsZl9pODYwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNjI6CiAgICAgICAgICBydHlwZSA9IGVsZl94ODZf
NjRfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA5Ogog
ICAgICAgICAgcnR5cGUgPSBpMzcwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7
CgogICAgICAgIGNhc2UgMHhhMzkwOgogICAgICAgIGNhc2UgMjI6CiAgICAgICAgICBydHlwZSA9
IGVsZl9zMzkwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh
c2UgMHhhZDQ1OgogICAgICAgICAgcnR5cGUgPSBlbGZfeHN0b3JteTE2X3JlbG9jX3R5cGUgKHR5
cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgNzU6CiAgICAgICAgICBydHlwZSA9
IGVsZl92YXhfcmVsb2NfdHlwZSAodHlwZSk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2Fz
ZSAxMDE6CiAgICAgICAgY2FzZSAweDgyMTc6CiAgICAgICAgICBydHlwZSA9IGVsZl9pcDJrX3Jl
bG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHhGRUJBOgog
ICAgICAgICAgcnR5cGUgPSBlbGZfaXEyMDAwX3JlbG9jX3R5cGUgKHR5cGUpOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKHJ0eXBlID09ICgodm9pZCAqKTApKQoKICAgICAg
ICBwcmludGYgKCgidW5yZWNvZ25pemVkOiAlLTdseCIpLCAoKHVuc2lnbmVkIGxvbmcpICgoKHR5
cGUpICYgMHhmZmZmZmZmZikpKSk7CgoKCiAgICAgIGVsc2UKICAgICAgICBwcmludGYgKGRvX3dp
ZGUgPyAiJS0yMS4yMXMiIDogIiUtMTcuMTdzIiwgcnR5cGUpOwoKICAgICAgaWYgKHN5bXRhYl9p
bmRleCkKICAgICAgICB7CiAgICAgICAgICBpZiAoc3ltdGFiID09ICgodm9pZCAqKTApIHx8IHN5
bXRhYl9pbmRleCA+PSBuc3ltcykKICAgICAgICAgICAgcHJpbnRmICgiIGJhZCBzeW1ib2wgaW5k
ZXg6ICUwOGx4IiwgKHVuc2lnbmVkIGxvbmcpIHN5bXRhYl9pbmRleCk7CiAgICAgICAgICBlbHNl
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfU3ltICpwc3ltOwoKICAg
ICAgICAgICAgICBwc3ltID0gc3ltdGFiICsgc3ltdGFiX2luZGV4OwoKICAgICAgICAgICAgICBw
cmludGYgKCIgIik7CiAgICAgICAgICAgICAgcHJpbnRfdm1hIChwc3ltLT5zdF92YWx1ZSwgTE9O
R19IRVgpOwogICAgICAgICAgICAgIHByaW50ZiAoaXNfMzJiaXRfZWxmID8gIiAgICIgOiAiICIp
OwoKICAgICAgICAgICAgICBpZiAocHN5bS0+c3RfbmFtZSA9PSAwKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWNfbmFtZSA9ICI8bnVsbD4iOwogICAg
ICAgICAgICAgICAgICBjaGFyIG5hbWVfYnVmWzQwXTsKCiAgICAgICAgICAgICAgICAgIGlmICgo
KHBzeW0tPnN0X2luZm8pICYgMHhGKSA9PSAzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIGJmZF92bWEgc2VjX2luZGV4ID0gKGJmZF92bWEpIC0xOwoKICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwc3ltLT5zdF9zaG5keCA8IDB4RkYwMCkKICAgICAgICAgICAg
ICAgICAgICAgICAgc2VjX2luZGV4ID0gcHN5bS0+c3Rfc2huZHg7CiAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIGlmIChwc3ltLT5zdF9zaG5keCA+IDB4RkYwMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgc2VjX2luZGV4ID0gcHN5bS0+c3Rfc2huZHggLSAoMHhGRkZGICsgMQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDB4RkYwMCk7Cgog
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY19pbmRleCAhPSAoYmZkX3ZtYSkgLTEpCiAgICAg
ICAgICAgICAgICAgICAgICAgIHNlY19uYW1lID0gKChzZWN0aW9uX2hlYWRlcnMgKyBzZWNfaW5k
ZXgpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb25faGVhZGVycyArIHNlY19p
bmRleCktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlY3Rpb25faGVhZGVycyArIHNlY19pbmRleCktPnNoX25hbWUpKTsKICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGMSkKICAg
ICAgICAgICAgICAgICAgICAgICAgc2VjX25hbWUgPSAiQUJTIjsKICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGMikKICAgICAgICAgICAgICAgICAg
ICAgICAgc2VjX25hbWUgPSAiQ09NTU9OIjsKICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYg
KG5hbWVfYnVmLCAiPHNlY3Rpb24gMHgleD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh1bnNpZ25lZCBpbnQpIHBzeW0tPnN0X3NobmR4KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWNfbmFtZSA9IG5hbWVfYnVmOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBwcmludF9zeW1ib2wgKDIyLCBz
ZWNfbmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZiAoc3RydGFi
ID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcHJpbnRmICgoIjxzdHJpbmcgdGFibGUg
aW5kZXggJTNsZD4iKSwgcHN5bS0+c3RfbmFtZSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgcHJpbnRfc3ltYm9sICgyMiwgc3RydGFiICsgcHN5bS0+c3RfbmFtZSk7CgogICAg
ICAgICAgICAgIGlmIChpc19yZWxhKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICsgJWx4Iiwg
KHVuc2lnbmVkIGxvbmcpIHJlbHNbaV0ucl9hZGRlbmQpOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICBlbHNlIGlmIChpc19yZWxhKQogICAgICAgIHsKICAgICAgICAgIHByaW50ZiAoIiUq
YyIsIGlzXzMyYml0X2VsZiA/IChkb193aWRlID8gMzQgOiAyOCkgOiAoZG9fd2lkZSA/IDI2IDog
MjApLCAnICcpOwogICAgICAgICAgcHJpbnRfdm1hIChyZWxzW2ldLnJfYWRkZW5kLCBMT05HX0hF
WCk7CiAgICAgICAgfQoKICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQzCiAgICAg
ICAgICAmJiAhX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHJ0eXBlKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfU1BB
UkNfT0xPMTAiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHJ0eXBlKSwgX19zMl9sZW4gPSBzdHJs
ZW4gKCJSX1NQQVJDX09MTzEwIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHJ0eXBlKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShydHlwZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0g
NCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfU1BBUkNfT0xPMTAiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiUl9TUEFSQ19PTE8xMCIpID09IDEpIHx8IF9fczJfbGVu
ID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAocnR5cGUpLCAoX19jb25zdCBjaGFy
ICopICgiUl9TUEFSQ19PTE8xMCIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDog
X19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHJ0eXBlKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgocnR5cGUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHJ0
eXBlKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHJ0eXBlKSwgX19zMV9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfU1BBUkNfT0xPMTAiKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIlJfU1BBUkNfT0xPMTAiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiUl9TUEFSQ19PTE8xMCIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHJ0eXBlKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCJSX1NQQVJDX09MTzEwIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHJ0eXBlKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiUl9TUEFSQ19PTE8xMCIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChydHlwZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIlJfU1BBUkNfT0xPMTAiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVz
dWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHJ0eXBlKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9f
ZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpOyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAocnR5cGUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAocnR5cGUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAocnR5cGUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKHJ0eXBlKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDog
KF9fYnVpbHRpbl9jb25zdGFudF9wICgiUl9TUEFSQ19PTE8xMCIpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiUl9TUEFSQ19PTE8xMCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCJSX1NQQVJDX09MTzEwIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiUl9TUEFSQ19P
TE8xMCIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChydHlwZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHJ0eXBlKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShydHlwZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocnR5cGUp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIlJfU1BB
UkNfT0xPMTAiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocnR5
cGUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJS
X1NQQVJDX09MTzEwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHJ0eXBlKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiUl9TUEFSQ19PTE8xMCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAocnR5cGUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJSX1NQQVJDX09MTzEwIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJ0eXBlKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
X19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJS
X1NQQVJDX09MTzEwIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJSX1NQQVJDX09MTzEwIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiUl9TUEFSQ19PTE8xMCIpKVsyXSk7IGlmIChfX3MyX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX1NQQVJDX09MTzEwIikpWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChydHlwZSwgIlJfU1BBUkNfT0xPMTAiKSkpKTsg
fSkpCiAgICAgICAgcHJpbnRmICgiICsgJWx4IiwgKHVuc2lnbmVkIGxvbmcpICgoKGJmZF9zaWdu
ZWRfdm1hKSgoKGluZm8pICYgMHhmZmZmZmZmZikgPj4gOCkgXiAweDgwMDAwMCkgLSAweDgwMDAw
MCkpOwoKICAgICAgcHV0Y2hhciAoJ1xuJyk7CgogICAgICBpZiAoISBpc18zMmJpdF9lbGYgJiYg
ZWxmX2hlYWRlci5lX21hY2hpbmUgPT0gOCkKICAgICAgICB7CiAgICAgICAgICBwcmludGYgKCIg
ICAgICAgICAgICAgICAgICAgIFR5cGUyOiAiKTsKCiAgICAgICAgICBpZiAocnR5cGUyID09ICgo
dm9pZCAqKTApKQoKICAgICAgICAgICAgcHJpbnRmICgoInVucmVjb2duaXplZDogJS03bHgiKSwg
KCh1bnNpZ25lZCBsb25nKSAoKCh0eXBlMikgJiAweGZmZmZmZmZmKSkpKTsKCgoKICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJS0xNy4xN3MiLCBydHlwZTIpOwoKICAgICAgICAg
IHByaW50ZigiXG4gICAgICAgICAgICAgICAgICAgIFR5cGUzOiAiKTsKCiAgICAgICAgICBpZiAo
cnR5cGUzID09ICgodm9pZCAqKTApKQoKICAgICAgICAgICAgcHJpbnRmICgoInVucmVjb2duaXpl
ZDogJS03bHgiKSwgKCh1bnNpZ25lZCBsb25nKSAoKCh0eXBlMykgJiAweGZmZmZmZmZmKSkpKTsK
CgoKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiJS0xNy4xN3MiLCBydHlwZTMp
OwoKICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgIH0KICAgIH0KCiAgZnJlZSAocmVs
cyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9taXBzX2R5bmFtaWNf
dHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAg
ICB7CiAgICBjYXNlIDB4NzAwMDAwMDE6IHJldHVybiAiTUlQU19STERfVkVSU0lPTiI7CiAgICBj
YXNlIDB4NzAwMDAwMDI6IHJldHVybiAiTUlQU19USU1FX1NUQU1QIjsKICAgIGNhc2UgMHg3MDAw
MDAwMzogcmV0dXJuICJNSVBTX0lDSEVDS1NVTSI7CiAgICBjYXNlIDB4NzAwMDAwMDQ6IHJldHVy
biAiTUlQU19JVkVSU0lPTiI7CiAgICBjYXNlIDB4NzAwMDAwMDU6IHJldHVybiAiTUlQU19GTEFH
UyI7CiAgICBjYXNlIDB4NzAwMDAwMDY6IHJldHVybiAiTUlQU19CQVNFX0FERFJFU1MiOwogICAg
Y2FzZSAweDcwMDAwMDA3OiByZXR1cm4gIk1JUFNfTVNZTSI7CiAgICBjYXNlIDB4NzAwMDAwMDg6
IHJldHVybiAiTUlQU19DT05GTElDVCI7CiAgICBjYXNlIDB4NzAwMDAwMDk6IHJldHVybiAiTUlQ
U19MSUJMSVNUIjsKICAgIGNhc2UgMHg3MDAwMDAwYTogcmV0dXJuICJNSVBTX0xPQ0FMX0dPVE5P
IjsKICAgIGNhc2UgMHg3MDAwMDAwYjogcmV0dXJuICJNSVBTX0NPTkZMSUNUTk8iOwogICAgY2Fz
ZSAweDcwMDAwMDEwOiByZXR1cm4gIk1JUFNfTElCTElTVE5PIjsKICAgIGNhc2UgMHg3MDAwMDAx
MTogcmV0dXJuICJNSVBTX1NZTVRBQk5PIjsKICAgIGNhc2UgMHg3MDAwMDAxMjogcmV0dXJuICJN
SVBTX1VOUkVGRVhUTk8iOwogICAgY2FzZSAweDcwMDAwMDEzOiByZXR1cm4gIk1JUFNfR09UU1lN
IjsKICAgIGNhc2UgMHg3MDAwMDAxNDogcmV0dXJuICJNSVBTX0hJUEFHRU5PIjsKICAgIGNhc2Ug
MHg3MDAwMDAxNjogcmV0dXJuICJNSVBTX1JMRF9NQVAiOwogICAgY2FzZSAweDcwMDAwMDE3OiBy
ZXR1cm4gIk1JUFNfREVMVEFfQ0xBU1MiOwogICAgY2FzZSAweDcwMDAwMDE4OiByZXR1cm4gIk1J
UFNfREVMVEFfQ0xBU1NfTk8iOwogICAgY2FzZSAweDcwMDAwMDE5OiByZXR1cm4gIk1JUFNfREVM
VEFfSU5TVEFOQ0UiOwogICAgY2FzZSAweDcwMDAwMDFhOiByZXR1cm4gIk1JUFNfREVMVEFfSU5T
VEFOQ0VfTk8iOwogICAgY2FzZSAweDcwMDAwMDFiOiByZXR1cm4gIk1JUFNfREVMVEFfUkVMT0Mi
OwogICAgY2FzZSAweDcwMDAwMDFjOiByZXR1cm4gIk1JUFNfREVMVEFfUkVMT0NfTk8iOwogICAg
Y2FzZSAweDcwMDAwMDFkOiByZXR1cm4gIk1JUFNfREVMVEFfU1lNIjsKICAgIGNhc2UgMHg3MDAw
MDAxZTogcmV0dXJuICJNSVBTX0RFTFRBX1NZTV9OTyI7CiAgICBjYXNlIDB4NzAwMDAwMjA6IHJl
dHVybiAiTUlQU19ERUxUQV9DTEFTU1NZTSI7CiAgICBjYXNlIDB4NzAwMDAwMjE6IHJldHVybiAi
TUlQU19ERUxUQV9DTEFTU1NZTV9OTyI7CiAgICBjYXNlIDB4NzAwMDAwMjI6IHJldHVybiAiTUlQ
U19DWFhfRkxBR1MiOwogICAgY2FzZSAweDcwMDAwMDIzOiByZXR1cm4gIk1JUFNfUElYSUVfSU5J
VCI7CiAgICBjYXNlIDB4NzAwMDAwMjQ6IHJldHVybiAiTUlQU19TWU1CT0xfTElCIjsKICAgIGNh
c2UgMHg3MDAwMDAyNTogcmV0dXJuICJNSVBTX0xPQ0FMUEFHRV9HT1RJRFgiOwogICAgY2FzZSAw
eDcwMDAwMDI2OiByZXR1cm4gIk1JUFNfTE9DQUxfR09USURYIjsKICAgIGNhc2UgMHg3MDAwMDAy
NzogcmV0dXJuICJNSVBTX0hJRERFTl9HT1RJRFgiOwogICAgY2FzZSAweDcwMDAwMDI4OiByZXR1
cm4gIk1JUFNfUFJPVEVDVEVEX0dPVElEWCI7CiAgICBjYXNlIDB4NzAwMDAwMjk6IHJldHVybiAi
TUlQU19PUFRJT05TIjsKICAgIGNhc2UgMHg3MDAwMDAyYTogcmV0dXJuICJNSVBTX0lOVEVSRkFD
RSI7CiAgICBjYXNlIDB4NzAwMDAwMmI6IHJldHVybiAiTUlQU19EWU5TVFJfQUxJR04iOwogICAg
Y2FzZSAweDcwMDAwMDJjOiByZXR1cm4gIk1JUFNfSU5URVJGQUNFX1NJWkUiOwogICAgY2FzZSAw
eDcwMDAwMDJkOiByZXR1cm4gIk1JUFNfUkxEX1RFWFRfUkVTT0xWRV9BRERSIjsKICAgIGNhc2Ug
MHg3MDAwMDAyZTogcmV0dXJuICJNSVBTX1BFUkZfU1VGRklYIjsKICAgIGNhc2UgMHg3MDAwMDAy
ZjogcmV0dXJuICJNSVBTX0NPTVBBQ1RfU0laRSI7CiAgICBjYXNlIDB4NzAwMDAwMzA6IHJldHVy
biAiTUlQU19HUF9WQUxVRSI7CiAgICBjYXNlIDB4NzAwMDAwMzE6IHJldHVybiAiTUlQU19BVVhf
RFlOQU1JQyI7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gKCh2b2lkICopMCk7CiAgICB9Cn0K
CnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3NwYXJjNjRfZHluYW1pY190eXBlICh0eXBlKQogICAg
IHVuc2lnbmVkIGxvbmcgdHlwZTsKewogIHN3aXRjaCAodHlwZSkKICAgIHsKICAgIGNhc2UgMHg3
MDAwMDAwMTogcmV0dXJuICJTUEFSQ19SRUdJU1RFUiI7CiAgICBkZWZhdWx0OgogICAgICByZXR1
cm4gKCh2b2lkICopMCk7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3BwYzY0X2R5
bmFtaWNfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5
cGUpCiAgICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJldHVybiAiUFBDNjRfR0xJTksiOwogICAg
Y2FzZSAoMHg3MDAwMDAwMCArIDEpOiByZXR1cm4gIlBQQzY0X09QRCI7CiAgICBjYXNlICgweDcw
MDAwMDAwICsgMik6IHJldHVybiAiUFBDNjRfT1BEU1oiOwogICAgZGVmYXVsdDoKICAgICAgcmV0
dXJuICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9wYXJpc2Nf
ZHluYW1pY190eXBlICh0eXBlKQogICAgIHVuc2lnbmVkIGxvbmcgdHlwZTsKewogIHN3aXRjaCAo
dHlwZSkKICAgIHsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDApOiByZXR1cm4gIkhQX0xPQURf
TUFQIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDEpOiByZXR1cm4gIkhQX0RMRF9GTEFHUyI7
CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgyKTogcmV0dXJuICJIUF9ETERfSE9PSyI7CiAgICBj
YXNlICgweDYwMDAwMDAwICsgMHgzKTogcmV0dXJuICJIUF9VWDEwX0lOSVQiOwogICAgY2FzZSAo
MHg2MDAwMDAwMCArIDB4NCk6IHJldHVybiAiSFBfVVgxMF9JTklUU1oiOwogICAgY2FzZSAoMHg2
MDAwMDAwMCArIDB4NSk6IHJldHVybiAiSFBfUFJFSU5JVCI7CiAgICBjYXNlICgweDYwMDAwMDAw
ICsgMHg2KTogcmV0dXJuICJIUF9QUkVJTklUU1oiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4
Nyk6IHJldHVybiAiSFBfTkVFREVEIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDgpOiByZXR1
cm4gIkhQX1RJTUVfU1RBTVAiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4OSk6IHJldHVybiAi
SFBfQ0hFQ0tTVU0iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4YSk6IHJldHVybiAiSFBfR1NU
X1NJWkUiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4Yik6IHJldHVybiAiSFBfR1NUX1ZFUlNJ
T04iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4Yyk6IHJldHVybiAiSFBfR1NUX0hBU0hWQUwi
OwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMg
Y29uc3QgY2hhciAqCmdldF9pYTY0X2R5bmFtaWNfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBs
b25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlICgweDcwMDAwMDAwICsg
MCk6IHJldHVybiAiSUFfNjRfUExUX1JFU0VSVkUiOwogICAgZGVmYXVsdDoKICAgICAgcmV0dXJu
ICgodm9pZCAqKTApOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9keW5hbWljX3R5
cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0eXBlOwp7CiAgc3RhdGljIGNoYXIgYnVmZlsz
Ml07CgogIHN3aXRjaCAodHlwZSkKICAgIHsKICAgIGNhc2UgMDogcmV0dXJuICJOVUxMIjsKICAg
IGNhc2UgMTogcmV0dXJuICJORUVERUQiOwogICAgY2FzZSAyOiByZXR1cm4gIlBMVFJFTFNaIjsK
ICAgIGNhc2UgMzogcmV0dXJuICJQTFRHT1QiOwogICAgY2FzZSA0OiByZXR1cm4gIkhBU0giOwog
ICAgY2FzZSA1OiByZXR1cm4gIlNUUlRBQiI7CiAgICBjYXNlIDY6IHJldHVybiAiU1lNVEFCIjsK
ICAgIGNhc2UgNzogcmV0dXJuICJSRUxBIjsKICAgIGNhc2UgODogcmV0dXJuICJSRUxBU1oiOwog
ICAgY2FzZSA5OiByZXR1cm4gIlJFTEFFTlQiOwogICAgY2FzZSAxMDogcmV0dXJuICJTVFJTWiI7
CiAgICBjYXNlIDExOiByZXR1cm4gIlNZTUVOVCI7CiAgICBjYXNlIDEyOiByZXR1cm4gIklOSVQi
OwogICAgY2FzZSAxMzogcmV0dXJuICJGSU5JIjsKICAgIGNhc2UgMTQ6IHJldHVybiAiU09OQU1F
IjsKICAgIGNhc2UgMTU6IHJldHVybiAiUlBBVEgiOwogICAgY2FzZSAxNjogcmV0dXJuICJTWU1C
T0xJQyI7CiAgICBjYXNlIDE3OiByZXR1cm4gIlJFTCI7CiAgICBjYXNlIDE4OiByZXR1cm4gIlJF
TFNaIjsKICAgIGNhc2UgMTk6IHJldHVybiAiUkVMRU5UIjsKICAgIGNhc2UgMjA6IHJldHVybiAi
UExUUkVMIjsKICAgIGNhc2UgMjE6IHJldHVybiAiREVCVUciOwogICAgY2FzZSAyMjogcmV0dXJu
ICJURVhUUkVMIjsKICAgIGNhc2UgMjM6IHJldHVybiAiSk1QUkVMIjsKICAgIGNhc2UgMjQ6IHJl
dHVybiAiQklORF9OT1ciOwogICAgY2FzZSAyNTogcmV0dXJuICJJTklUX0FSUkFZIjsKICAgIGNh
c2UgMjY6IHJldHVybiAiRklOSV9BUlJBWSI7CiAgICBjYXNlIDI3OiByZXR1cm4gIklOSVRfQVJS
QVlTWiI7CiAgICBjYXNlIDI4OiByZXR1cm4gIkZJTklfQVJSQVlTWiI7CiAgICBjYXNlIDI5OiBy
ZXR1cm4gIlJVTlBBVEgiOwogICAgY2FzZSAzMDogcmV0dXJuICJGTEFHUyI7CgogICAgY2FzZSAz
MjogcmV0dXJuICJQUkVJTklUX0FSUkFZIjsKICAgIGNhc2UgMzM6IHJldHVybiAiUFJFSU5JVF9B
UlJBWVNaIjsKCiAgICBjYXNlIDB4NmZmZmZkZjg6IHJldHVybiAiQ0hFQ0tTVU0iOwogICAgY2Fz
ZSAweDZmZmZmZGY5OiByZXR1cm4gIlBMVFBBRFNaIjsKICAgIGNhc2UgMHg2ZmZmZmRmYTogcmV0
dXJuICJNT1ZFRU5UIjsKICAgIGNhc2UgMHg2ZmZmZmRmYjogcmV0dXJuICJNT1ZFU1oiOwogICAg
Y2FzZSAweDZmZmZmZGZjOiByZXR1cm4gIkZFQVRVUkUiOwogICAgY2FzZSAweDZmZmZmZGZkOiBy
ZXR1cm4gIlBPU0ZMQUdfMSI7CiAgICBjYXNlIDB4NmZmZmZkZmU6IHJldHVybiAiU1lNSU5TWiI7
CiAgICBjYXNlIDB4NmZmZmZkZmY6IHJldHVybiAiU1lNSU5FTlQiOwoKICAgIGNhc2UgMHg2ZmZm
ZmUwMDogcmV0dXJuICJBRERSUk5HTE8iOwogICAgY2FzZSAweDZmZmZmZWZhOiByZXR1cm4gIkNP
TkZJRyI7CiAgICBjYXNlIDB4NmZmZmZlZmI6IHJldHVybiAiREVQQVVESVQiOwogICAgY2FzZSAw
eDZmZmZmZWZjOiByZXR1cm4gIkFVRElUIjsKICAgIGNhc2UgMHg2ZmZmZmVmZDogcmV0dXJuICJQ
TFRQQUQiOwogICAgY2FzZSAweDZmZmZmZWZlOiByZXR1cm4gIk1PVkVUQUIiOwogICAgY2FzZSAw
eDZmZmZmZWZmOiByZXR1cm4gIlNZTUlORk8iOwoKICAgIGNhc2UgMHg2ZmZmZmZmMDogcmV0dXJu
ICJWRVJTWU0iOwoKICAgIGNhc2UgMHg2ZmZmZmZmOTogcmV0dXJuICJSRUxBQ09VTlQiOwogICAg
Y2FzZSAweDZmZmZmZmZhOiByZXR1cm4gIlJFTENPVU5UIjsKICAgIGNhc2UgMHg2ZmZmZmZmYjog
cmV0dXJuICJGTEFHU18xIjsKICAgIGNhc2UgMHg2ZmZmZmZmYzogcmV0dXJuICJWRVJERUYiOwog
ICAgY2FzZSAweDZmZmZmZmZkOiByZXR1cm4gIlZFUkRFRk5VTSI7CiAgICBjYXNlIDB4NmZmZmZm
ZmU6IHJldHVybiAiVkVSTkVFRCI7CiAgICBjYXNlIDB4NmZmZmZmZmY6IHJldHVybiAiVkVSTkVF
RE5VTSI7CgogICAgY2FzZSAweDdmZmZmZmZkOiByZXR1cm4gIkFVWElMSUFSWSI7CiAgICBjYXNl
IDB4N2ZmZmZmZmU6IHJldHVybiAiVVNFRCI7CiAgICBjYXNlIDB4N2ZmZmZmZmY6IHJldHVybiAi
RklMVEVSIjsKCiAgICBjYXNlIDB4NmZmZmZkZjU6IHJldHVybiAiR05VX1BSRUxJTktFRCI7CiAg
ICBjYXNlIDB4NmZmZmZlZjg6IHJldHVybiAiR05VX0NPTkZMSUNUIjsKICAgIGNhc2UgMHg2ZmZm
ZmRmNjogcmV0dXJuICJHTlVfQ09ORkxJQ1RTWiI7CiAgICBjYXNlIDB4NmZmZmZlZjk6IHJldHVy
biAiR05VX0xJQkxJU1QiOwogICAgY2FzZSAweDZmZmZmZGY3OiByZXR1cm4gIkdOVV9MSUJMSVNU
U1oiOwoKICAgIGRlZmF1bHQ6CiAgICAgIGlmICgodHlwZSA+PSAweDcwMDAwMDAwKSAmJiAodHlw
ZSA8PSAweDdmZmZmZmZmKSkKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7
CgogICAgICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewog
ICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgcmVz
dWx0ID0gZ2V0X21pcHNfZHluYW1pY190eXBlICh0eXBlKTsKICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgY2FzZSA0MzoKICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfc3BhcmM2NF9k
eW5hbWljX3R5cGUgKHR5cGUpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNl
IDIxOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wcGM2NF9keW5hbWljX3R5cGUgKHR5cGUp
OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAg
IHJlc3VsdCA9IGdldF9pYTY0X2R5bmFtaWNfdHlwZSAodHlwZSk7CiAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgcmVzdWx0ID0gKCh2b2lkICop
MCk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAocmVz
dWx0ICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICByZXR1cm4gcmVzdWx0OwoKICAgICAgICAg
IHNwcmludGYgKGJ1ZmYsICgiUHJvY2Vzc29yIFNwZWNpZmljOiAlbHgiKSwgdHlwZSk7CiAgICAg
ICAgfQogICAgICBlbHNlIGlmICgodHlwZSA+PSAweDYwMDAwMDBkKSAmJiAodHlwZSA8PSAweDZm
ZmYwMDAwKSkKICAgICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAg
ICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewogICAgICAgICAg
ICBjYXNlIDE1OgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wYXJpc2NfZHluYW1pY190eXBl
ICh0eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1bHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCJPcGVyYXRpbmcgU3lz
dGVtIHNwZWNpZmljOiAlbHgiKSwgdHlwZSk7CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAg
c3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVseCIpLCB0eXBlKTsKCiAgICAgIHJldHVybiBi
dWZmOwogICAgfQp9CgpzdGF0aWMgY2hhciAqCmdldF9maWxlX3R5cGUgKGVfdHlwZSkKICAgICB1
bnNpZ25lZCBlX3R5cGU7CnsKICBzdGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChlX3R5
cGUpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAoIk5PTkUgKE5vbmUpIik7CiAgICBjYXNlIDE6
IHJldHVybiAoIlJFTCAoUmVsb2NhdGFibGUgZmlsZSkiKTsKICAgIGNhc2UgMjogcmV0dXJuICgi
RVhFQyAoRXhlY3V0YWJsZSBmaWxlKSIpOwogICAgY2FzZSAzOiByZXR1cm4gKCJEWU4gKFNoYXJl
ZCBvYmplY3QgZmlsZSkiKTsKICAgIGNhc2UgNDogcmV0dXJuICgiQ09SRSAoQ29yZSBmaWxlKSIp
OwoKICAgIGRlZmF1bHQ6CiAgICAgIGlmICgoZV90eXBlID49IDB4RkYwMCkgJiYgKGVfdHlwZSA8
PSAweEZGRkYpKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICgiUHJvY2Vzc29yIFNwZWNpZmljOiAo
JXgpIiksIGVfdHlwZSk7CiAgICAgIGVsc2UgaWYgKChlX3R5cGUgPj0gMHhGRTAwKSAmJiAoZV90
eXBlIDw9IDB4RkVGRikpCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCJPUyBTcGVjaWZpYzogKCV4
KSIpLCBlX3R5cGUpOwogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93
bj46ICV4IiksIGVfdHlwZSk7CiAgICAgIHJldHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY2hh
ciAqCmdldF9tYWNoaW5lX25hbWUgKGVfbWFjaGluZSkKICAgICB1bnNpZ25lZCBlX21hY2hpbmU7
CnsKICBzdGF0aWMgY2hhciBidWZmWzY0XTsKCiAgc3dpdGNoIChlX21hY2hpbmUpCiAgICB7CiAg
ICBjYXNlIDA6IHJldHVybiAoIk5vbmUiKTsKICAgIGNhc2UgMTogcmV0dXJuICJXRTMyMTAwIjsK
ICAgIGNhc2UgMjogcmV0dXJuICJTcGFyYyI7CiAgICBjYXNlIDM6IHJldHVybiAiSW50ZWwgODAz
ODYiOwogICAgY2FzZSA0OiByZXR1cm4gIk1DNjgwMDAiOwogICAgY2FzZSA1OiByZXR1cm4gIk1D
ODgwMDAiOwogICAgY2FzZSA2OiByZXR1cm4gIkludGVsIDgwNDg2IjsKICAgIGNhc2UgNzogcmV0
dXJuICJJbnRlbCA4MDg2MCI7CiAgICBjYXNlIDg6IHJldHVybiAiTUlQUyBSMzAwMCI7CiAgICBj
YXNlIDk6IHJldHVybiAiSUJNIFN5c3RlbS8zNzAiOwogICAgY2FzZSAxMDogcmV0dXJuICJNSVBT
IFI0MDAwIGJpZy1lbmRpYW4iOwogICAgY2FzZSAxMTogcmV0dXJuICJTcGFyYyB2OSAob2xkKSI7
CiAgICBjYXNlIDE1OiByZXR1cm4gIkhQUEEiOwogICAgY2FzZSAxNzogcmV0dXJuICJQb3dlciBQ
QyAob2xkKSI7CiAgICBjYXNlIDE4OiByZXR1cm4gIlNwYXJjIHY4KyIgOwogICAgY2FzZSAxOTog
cmV0dXJuICJJbnRlbCA5MDg2MCI7CiAgICBjYXNlIDIwOiByZXR1cm4gIlBvd2VyUEMiOwogICAg
Y2FzZSAyMTogcmV0dXJuICJQb3dlclBDNjQiOwogICAgY2FzZSAzNjogcmV0dXJuICJORUMgVjgw
MCI7CiAgICBjYXNlIDM3OiByZXR1cm4gIkZ1aml0c3UgRlIyMCI7CiAgICBjYXNlIDM4OiByZXR1
cm4gIlRSVyBSSDMyIjsKICAgIGNhc2UgMzk6IHJldHVybiAiTUNPUkUiOwogICAgY2FzZSA0MDog
cmV0dXJuICJBUk0iOwogICAgY2FzZSA0MTogcmV0dXJuICJEaWdpdGFsIEFscGhhIChvbGQpIjsK
ICAgIGNhc2UgNDI6IHJldHVybiAiSGl0YWNoaSBTSCI7CiAgICBjYXNlIDQzOiByZXR1cm4gIlNw
YXJjIHY5IjsKICAgIGNhc2UgNDQ6IHJldHVybiAiU2llbWVucyBUcmljb3JlIjsKICAgIGNhc2Ug
NDU6IHJldHVybiAiQVJDIjsKICAgIGNhc2UgNDY6IHJldHVybiAiSGl0YWNoaSBIOC8zMDAiOwog
ICAgY2FzZSA0NzogcmV0dXJuICJIaXRhY2hpIEg4LzMwMEgiOwogICAgY2FzZSA0ODogcmV0dXJu
ICJIaXRhY2hpIEg4UyI7CiAgICBjYXNlIDQ5OiByZXR1cm4gIkhpdGFjaGkgSDgvNTAwIjsKICAg
IGNhc2UgNTA6IHJldHVybiAiSW50ZWwgSUEtNjQiOwogICAgY2FzZSA1MTogcmV0dXJuICJTdGFu
Zm9yZCBNSVBTLVgiOwogICAgY2FzZSA1MjogcmV0dXJuICJNb3Rvcm9sYSBDb2xkZmlyZSI7CiAg
ICBjYXNlIDUzOiByZXR1cm4gIk1vdG9yb2xhIE02OEhDMTIiOwogICAgY2FzZSAweDkwMjY6IHJl
dHVybiAiQWxwaGEiOwogICAgY2FzZSAweDc2NTA6CiAgICBjYXNlIDg1OiByZXR1cm4gImQxMHYi
OwogICAgY2FzZSAweDc2NzY6CiAgICBjYXNlIDg2OiByZXR1cm4gImQzMHYiOwogICAgY2FzZSAw
eDkwNDE6CiAgICBjYXNlIDg4OiByZXR1cm4gIk1pdHN1YmlzaGkgTTMyciI7CiAgICBjYXNlIDB4
OTA4MDoKICAgIGNhc2UgODc6IHJldHVybiAiTkVDIHY4NTAiOwogICAgY2FzZSAweGJlZWY6CiAg
ICBjYXNlIDg5OiByZXR1cm4gIm1uMTAzMDAiOwogICAgY2FzZSAweGRlYWQ6CiAgICBjYXNlIDkw
OiByZXR1cm4gIm1uMTAyMDAiOwogICAgY2FzZSAweDMzMzA6CiAgICBjYXNlIDg0OiByZXR1cm4g
IkZ1aml0c3UgRlIzMCI7CiAgICBjYXNlIDB4NTQ0MTogcmV0dXJuICJGdWppdHN1IEZSLVYiOwog
ICAgY2FzZSA5OToKICAgIGNhc2UgOTE6IHJldHVybiAicGljb0phdmEiOwogICAgY2FzZSA1NDog
cmV0dXJuICJGdWppdHN1IE11bHRpbWVkaWEgQWNjZWxlcmF0b3IiOwogICAgY2FzZSA1NTogcmV0
dXJuICJTaWVtZW5zIFBDUCI7CiAgICBjYXNlIDU2OiByZXR1cm4gIlNvbnkgbkNQVSBlbWJlZGRl
ZCBSSVNDIHByb2Nlc3NvciI7CiAgICBjYXNlIDU3OiByZXR1cm4gIkRlbnNvIE5EUjEgbWljcm9w
cm9jZXNzcHIiOwogICAgY2FzZSA1ODogcmV0dXJuICJNb3Rvcm9sYSBTdGFyKkNvcmUgcHJvY2Vz
c29yIjsKICAgIGNhc2UgNTk6IHJldHVybiAiVG95b3RhIE1FMTYgcHJvY2Vzc29yIjsKICAgIGNh
c2UgNjA6IHJldHVybiAiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMTAwIHByb2Nlc3NvciI7CiAgICBj
YXNlIDYxOiByZXR1cm4gIkFkdmFuY2VkIExvZ2ljIENvcnAuIFRpbnlKIGVtYmVkZGVkIHByb2Nl
c3NvciI7CiAgICBjYXNlIDY2OiByZXR1cm4gIlNpZW1lbnMgRlg2NiBtaWNyb2NvbnRyb2xsZXIi
OwogICAgY2FzZSA2NzogcmV0dXJuICJTVE1pY3JvZWxlY3Ryb25pY3MgU1Q5KyA4LzE2IGJpdCBt
aWNyb2NvbnRyb2xsZXIiOwogICAgY2FzZSA2ODogcmV0dXJuICJTVE1pY3JvZWxlY3Ryb25pY3Mg
U1Q3IDgtYml0IG1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDY5OiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzE2IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcwOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzExIE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcxOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzA4IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDcyOiByZXR1cm4gIk1vdG9yb2xh
IE1DNjhIQzA1IE1pY3JvY29udHJvbGxlciI7CiAgICBjYXNlIDczOiByZXR1cm4gIlNpbGljb24g
R3JhcGhpY3MgU1Z4IjsKICAgIGNhc2UgNzQ6IHJldHVybiAiU1RNaWNyb2VsZWN0cm9uaWNzIFNU
MTkgOC1iaXQgbWljcm9jb250cm9sbGVyIjsKICAgIGNhc2UgNzU6IHJldHVybiAiRGlnaXRhbCBW
QVgiOwogICAgY2FzZSAweDEwNTc6CiAgICBjYXNlIDgzOiByZXR1cm4gIkF0bWVsIEFWUiA4LWJp
dCBtaWNyb2NvbnRyb2xsZXIiOwogICAgY2FzZSA3NjogcmV0dXJuICJBeGlzIENvbW11bmljYXRp
b25zIDMyLWJpdCBlbWJlZGRlZCBwcm9jZXNzb3IiOwogICAgY2FzZSA3NzogcmV0dXJuICJJbmZp
bmVvbiBUZWNobm9sb2dpZXMgMzItYml0IGVtYmVkZGVkIGNwdSI7CiAgICBjYXNlIDc4OiByZXR1
cm4gIkVsZW1lbnQgMTQgNjQtYml0IERTUCBwcm9jZXNzb3IiOwogICAgY2FzZSA3OTogcmV0dXJu
ICJMU0kgTG9naWMncyAxNi1iaXQgRFNQIHByb2Nlc3NvciI7CiAgICBjYXNlIDgwOiByZXR1cm4g
IkRvbmFsZCBLbnV0aCdzIGVkdWNhdGlvbmFsIDY0LWJpdCBwcm9jZXNzb3IiOwogICAgY2FzZSA4
MTogcmV0dXJuICJIYXJ2YXJkIFVuaXZlcnNpdHlzJ3MgbWFjaGluZS1pbmRlcGVuZGVudCBvYmpl
Y3QgZm9ybWF0IjsKICAgIGNhc2UgODI6IHJldHVybiAiVml0ZXNzZSBQcmlzbSI7CiAgICBjYXNl
IDYyOiByZXR1cm4gIkFkdmFuY2VkIE1pY3JvIERldmljZXMgWDg2LTY0IjsKICAgIGNhc2UgMHhh
MzkwOgogICAgY2FzZSAyMjogcmV0dXJuICJJQk0gUy8zOTAiOwogICAgY2FzZSAweGFkNDU6IHJl
dHVybiAiU2FueW8gWHN0b3JteTE2IENQVSBjb3JlIjsKICAgIGNhc2UgOTI6CiAgICBjYXNlIDB4
ODQ3MjogcmV0dXJuICJPcGVuUklTQyI7CiAgICBjYXNlIDB4NWFhNTogcmV0dXJuICJPcGVuRExY
IjsKICAgIGNhc2UgMHg4MjE3OgogICAgY2FzZSAxMDE6IHJldHVybiAiVWJpY29tIElQMnh4eCA4
LWJpdCBtaWNyb2NvbnRyb2xsZXJzIjsKICAgIGNhc2UgMHhGRUJBOiByZXR1cm4gIlZpdGVzc2Ug
SVEyMDAwIjsKICAgIGRlZmF1bHQ6CiAgICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd24+OiAl
eCIpLCBlX21hY2hpbmUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KfQoKc3RhdGljIHZvaWQK
ZGVjb2RlX0FSTV9tYWNoaW5lX2ZsYWdzIChlX2ZsYWdzLCBidWYpCiAgICAgdW5zaWduZWQgZV9m
bGFnczsKICAgICBjaGFyIGJ1ZltdOwp7CiAgdW5zaWduZWQgZWFiaTsKICBpbnQgdW5rbm93biA9
IDA7CgogIGVhYmkgPSAoKGVfZmxhZ3MpICYgMHhGRjAwMDAwMCk7CiAgZV9mbGFncyAmPSB+IDB4
RkYwMDAwMDA7CgoKICBpZiAoZV9mbGFncyAmIDB4MDEpCiAgICB7CiAgICAgIHN0cmNhdCAoYnVm
LCAiLCByZWxvY2F0YWJsZSBleGVjdXRhYmxlIik7CiAgICAgIGVfZmxhZ3MgJj0gfiAweDAxOwog
ICAgfQoKICBpZiAoZV9mbGFncyAmIDB4MDIpCiAgICB7CiAgICAgIHN0cmNhdCAoYnVmLCAiLCBo
YXMgZW50cnkgcG9pbnQiKTsKICAgICAgZV9mbGFncyAmPSB+IDB4MDI7CiAgICB9CgoKICBzd2l0
Y2ggKGVhYmkpCiAgICB7CiAgICBkZWZhdWx0OgogICAgICBzdHJjYXQgKGJ1ZiwgIiwgPHVucmVj
b2duaXplZCBFQUJJPiIpOwogICAgICBpZiAoZV9mbGFncykKICAgICAgICB1bmtub3duID0gMTsK
ICAgICAgYnJlYWs7CgogICAgY2FzZSAweDAxMDAwMDAwOgogICAgICBzdHJjYXQgKGJ1ZiwgIiwg
VmVyc2lvbjEgRUFCSSIpOwogICAgICB3aGlsZSAoZV9mbGFncykKICAgICAgICB7CiAgICAgICAg
ICB1bnNpZ25lZCBmbGFnOwoKCiAgICAgICAgICBmbGFnID0gZV9mbGFncyAmIC0gZV9mbGFnczsK
ICAgICAgICAgIGVfZmxhZ3MgJj0gfiBmbGFnOwoKICAgICAgICAgIHN3aXRjaCAoZmxhZykKICAg
ICAgICAgICAgewogICAgICAgICAgICBjYXNlIDB4MDQ6CiAgICAgICAgICAgICAgc3RyY2F0IChi
dWYsICIsIHNvcnRlZCBzeW1ib2wgdGFibGVzIik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHVua25vd24gPSAxOwogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIDB4
MDIwMDAwMDA6CiAgICAgIHN0cmNhdCAoYnVmLCAiLCBWZXJzaW9uMiBFQUJJIik7CiAgICAgIHdo
aWxlIChlX2ZsYWdzKQogICAgICAgIHsKICAgICAgICAgIHVuc2lnbmVkIGZsYWc7CgoKICAgICAg
ICAgIGZsYWcgPSBlX2ZsYWdzICYgLSBlX2ZsYWdzOwogICAgICAgICAgZV9mbGFncyAmPSB+IGZs
YWc7CgogICAgICAgICAgc3dpdGNoIChmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNh
c2UgMHgwNDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgc29ydGVkIHN5bWJvbCB0YWJs
ZXMiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHgwODoKICAgICAg
ICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgZHluYW1pYyBzeW1ib2xzIHVzZSBzZWdtZW50IGluZGV4
Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4MTA6CiAgICAgICAg
ICAgICAgc3RyY2F0IChidWYsICIsIG1hcHBpbmcgc3ltYm9scyBwcmVjZWRlIG90aGVycyIpOwog
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB1
bmtub3duID0gMTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgICAgYnJlYWs7CgogICAgY2FzZSAweDAwMDAwMDAwOgogICAgICBzdHJjYXQgKGJ1ZiwgIiwg
R05VIEVBQkkiKTsKICAgICAgd2hpbGUgKGVfZmxhZ3MpCiAgICAgICAgewogICAgICAgICAgdW5z
aWduZWQgZmxhZzsKCgogICAgICAgICAgZmxhZyA9IGVfZmxhZ3MgJiAtIGVfZmxhZ3M7CiAgICAg
ICAgICBlX2ZsYWdzICY9IH4gZmxhZzsKCiAgICAgICAgICBzd2l0Y2ggKGZsYWcpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgY2FzZSAweDA0OgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAi
LCBpbnRlcndvcmtpbmcgZW5hYmxlZCIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSAweDA4OgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB1c2VzIEFQQ1MvMjYi
KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHgxMDoKICAgICAgICAg
ICAgICBzdHJjYXQgKGJ1ZiwgIiwgdXNlcyBBUENTL2Zsb2F0Iik7CiAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgICBjYXNlIDB4MjA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHBvc2l0aW9uIGluZGVwZW5kZW50Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICBjYXNlIDB4NDA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIDggYml0IHN0cnVjdHVy
ZSBhbGlnbm1lbnQiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMHg4
MDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdXNlcyBuZXcgQUJJIik7CiAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4MTAwOgogICAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCB1c2VzIG9sZCBBQkkiKTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgMHgyMDA6CiAgICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHNvZnR3YXJlIEZQ
Iik7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDB4ODAwOgogICAgICAg
ICAgICAgIHN0cmNhdCAoYnVmLCAiLCBNYXZlcmljayBGUCIpOwogICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB1bmtub3duID0gMTsKICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgaWYgKHVua25v
d24pCiAgICBzdHJjYXQgKGJ1ZiwiLCA8dW5rbm93bj4iKTsKfQoKc3RhdGljIGNoYXIgKgpnZXRf
bWFjaGluZV9mbGFncyAoZV9mbGFncywgZV9tYWNoaW5lKQogICAgIHVuc2lnbmVkIGVfZmxhZ3M7
CiAgICAgdW5zaWduZWQgZV9tYWNoaW5lOwp7CiAgc3RhdGljIGNoYXIgYnVmWzEwMjRdOwoKICBi
dWZbMF0gPSAnXDAnOwoKICBpZiAoZV9mbGFncykKICAgIHsKICAgICAgc3dpdGNoIChlX21hY2hp
bmUpCiAgICAgICAgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKCiAgICAgICAg
Y2FzZSA0MDoKICAgICAgICAgIGRlY29kZV9BUk1fbWFjaGluZV9mbGFncyAoZV9mbGFncywgYnVm
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQ6CiAgICAgICAgICBpZiAoZV9mbGFn
cyAmIDB4MDA4MTAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBjcHUzMiIpOwogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAxMDAwMDAwKQogICAgICAgICAgICBzdHJjYXQgKGJ1Ziwg
IiwgbTY4MDAwIik7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyMDoKICAgICAgICAg
IGlmIChlX2ZsYWdzICYgMHg4MDAwMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIGVt
YiIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAxMDAwMCkKICAgICAgICAgICAgc3Ry
Y2F0IChidWYsICIsIHJlbG9jYXRhYmxlIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAw
MDA4MDAwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgcmVsb2NhdGFibGUtbGliIik7CiAg
ICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSA4NzoKICAgICAgICBjYXNlIDB4OTA4MDoKICAg
ICAgICAgIHN3aXRjaCAoZV9mbGFncyAmIDB4ZjAwMDAwMDApCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgY2FzZSAweDEwMDAwMDAwOgogICAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB2ODUw
ZSIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDAwMDAwMDA6CiAg
ICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHY4NTAiKTsKICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdW5rbm93
biB2ODUwIGFyY2hpdGVjdHVyZSB2YXJpYW50Iik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDg4OgogICAgICAgIGNhc2Ug
MHg5MDQxOgogICAgICAgICAgaWYgKChlX2ZsYWdzICYgMHgzMDAwMDAwMCkgPT0gMHgwMDAwMDAw
MCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG0zMnIiKTsKCiAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSA4OgogICAgICAgIGNhc2UgMTA6CiAgICAgICAgICBpZiAoZV9mbGFncyAm
IDB4MDAwMDAwMDEpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBub3Jlb3JkZXIiKTsKCiAg
ICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwMDIpCiAgICAgICAgICAgIHN0cmNhdCAoYnVm
LCAiLCBwaWMiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwMDQpCiAgICAgICAg
ICAgIHN0cmNhdCAoYnVmLCAiLCBjcGljIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAw
MDAwMDEwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdWdlbl9yZXNlcnZlZCIpOwoKICAg
ICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAwMDAyMCkKICAgICAgICAgICAgc3RyY2F0IChidWYs
ICIsIGFiaTIiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAwMDAwODApCiAgICAgICAg
ICAgIHN0cmNhdCAoYnVmLCAiLCBvZGsgZmlyc3QiKTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAm
IDB4MDAwMDAxMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCAzMmJpdG1vZGUiKTsKCiAg
ICAgICAgICBzd2l0Y2ggKChlX2ZsYWdzICYgMHgwMEZGMDAwMCkpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgY2FzZSAweDAwODEwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgMzkwMCIpOyBicmVhazsK
ICAgICAgICAgICAgY2FzZSAweDAwODIwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDAxMCIpOyBicmVh
azsKICAgICAgICAgICAgY2FzZSAweDAwODMwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDEwMCIpOyBi
cmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODgwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDExMSIp
OyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODcwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwgNDEy
MCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwODUwMDAwOiBzdHJjYXQgKGJ1ZiwgIiwg
NDY1MCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOTEwMDAwOiBzdHJjYXQgKGJ1Ziwg
IiwgNTQwMCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOTgwMDAwOiBzdHJjYXQgKGJ1
ZiwgIiwgNTUwMCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwOGEwMDAwOiBzdHJjYXQg
KGJ1ZiwgIiwgc2IxIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDA6CgoKCiAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAoYnVmLCAiLCB1bmtub3duIENQ
VSIpOyBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIHN3aXRjaCAoKGVfZmxhZ3MgJiAw
eDAwMDBGMDAwKSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDB4MDAwMDEwMDA6IHN0
cmNhdCAoYnVmLCAiLCBvMzIiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHgwMDAwMjAwMDog
c3RyY2F0IChidWYsICIsIG82NCIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDAwMDAzMDAw
OiBzdHJjYXQgKGJ1ZiwgIiwgZWFiaTMyIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDAw
MDQwMDA6IHN0cmNhdCAoYnVmLCAiLCBlYWJpNjQiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
MDoKCgoKCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAo
YnVmLCAiLCB1bmtub3duIEFCSSIpOyBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlm
IChlX2ZsYWdzICYgMHgwODAwMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG1kbXgi
KTsKCiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDQwMDAwMDApCiAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCBtaXBzMTYiKTsKCiAgICAgICAgICBzd2l0Y2ggKChlX2ZsYWdzICYgMHhmMDAw
MDAwMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSAweDAwMDAwMDAwOiBzdHJjYXQg
KGJ1ZiwgIiwgbWlwczEiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHgxMDAwMDAwMDogc3Ry
Y2F0IChidWYsICIsIG1pcHMyIik7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MjAwMDAwMDA6
IHN0cmNhdCAoYnVmLCAiLCBtaXBzMyIpOyBicmVhazsKICAgICAgICAgICAgY2FzZSAweDMwMDAw
MDAwOiBzdHJjYXQgKGJ1ZiwgIiwgbWlwczQiKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMHg0
MDAwMDAwMDogc3RyY2F0IChidWYsICIsIG1pcHM1Iik7IGJyZWFrOwogICAgICAgICAgICBjYXNl
IDB4NTAwMDAwMDA6IHN0cmNhdCAoYnVmLCAiLCBtaXBzMzIiKTsgYnJlYWs7CiAgICAgICAgICAg
IGNhc2UgMHg3MDAwMDAwMDogc3RyY2F0IChidWYsICIsIG1pcHMzMnIyIik7IGJyZWFrOwogICAg
ICAgICAgICBjYXNlIDB4NjAwMDAwMDA6IHN0cmNhdCAoYnVmLCAiLCBtaXBzNjQiKTsgYnJlYWs7
CiAgICAgICAgICAgIGRlZmF1bHQ6IHN0cmNhdCAoYnVmLCAiLCB1bmtub3duIElTQSIpOyBicmVh
azsKICAgICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDQzOgogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDEwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHY4KyIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAyMDApCiAgICAgICAgICAgIHN0
cmNhdCAoYnVmLCAiLCB1bHRyYXNwYXJjSSIpOwoKICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgw
MDA4MDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB1bHRyYXNwYXJjSUlJIik7CgogICAg
ICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDQwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IGhhbHIxIik7CgogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDgwMDAwMCkKICAgICAgICAgICAg
c3RyY2F0IChidWYsICIsIGxlZGF0YSIpOwoKICAgICAgICAgIGlmICgoZV9mbGFncyAmIDB4Mykg
PT0gMHgwKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgdHNvIik7CgogICAgICAgICAgaWYg
KChlX2ZsYWdzICYgMHgzKSA9PSAweDEpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBwc28i
KTsKCiAgICAgICAgICBpZiAoKGVfZmxhZ3MgJiAweDMpID09IDB4MikKICAgICAgICAgICAgc3Ry
Y2F0IChidWYsICIsIHJtbyIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMTU6CiAg
ICAgICAgICBzd2l0Y2ggKGVfZmxhZ3MgJiAweDAwMDBmZmZmKQogICAgICAgICAgICB7CiAgICAg
ICAgICAgIGNhc2UgMHgwMjBiOgogICAgICAgICAgICAgIHN0cmNweSAoYnVmLCAiLCBQQS1SSVND
IDEuMCIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDB4MDIxMDoKICAg
ICAgICAgICAgICBzdHJjcHkgKGJ1ZiwgIiwgUEEtUklTQyAxLjEiKTsKICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgY2FzZSAweDAyMTQ6CiAgICAgICAgICAgICAgc3RyY3B5IChidWYs
ICIsIFBBLVJJU0MgMi4wIik7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIGlmIChlX2Zs
YWdzICYgMHgwMDAxMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIHRyYXBuaWwiKTsK
ICAgICAgICAgIGlmIChlX2ZsYWdzICYgMHgwMDAyMDAwMCkKICAgICAgICAgICAgc3RyY2F0IChi
dWYsICIsIGV4dCIpOwogICAgICAgICAgaWYgKGVfZmxhZ3MgJiAweDAwMDQwMDAwKQogICAgICAg
ICAgICBzdHJjYXQgKGJ1ZiwgIiwgbHNiIik7CiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDAw
ODAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCB3aWRlIik7CiAgICAgICAgICBpZiAo
ZV9mbGFncyAmIDB4MDAxMDAwMDApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBubyBrYWJw
Iik7CiAgICAgICAgICBpZiAoZV9mbGFncyAmIDB4MDA0MDAwMDApCiAgICAgICAgICAgIHN0cmNh
dCAoYnVmLCAiLCBsYXp5c3dhcCIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgOTE6
CiAgICAgICAgY2FzZSA5OToKICAgICAgICAgIGlmICgoZV9mbGFncyAmIDB4MDAwMDAwMTApID09
IDB4MDAwMDAwMTApCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBuZXcgY2FsbGluZyBjb252
ZW50aW9uIik7CgogICAgICAgICAgaWYgKChlX2ZsYWdzICYgMHgwMDAwMDAyMCkgPT0gMHgwMDAw
MDAyMCkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIGdudSBjYWxsaW5nIGNvbnZlbnRpb24i
KTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDUwOgogICAgICAgICAgaWYgKChlX2Zs
YWdzICYgKDEgPDwgNCkpKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgNjQtYml0Iik7CiAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCAzMi1iaXQiKTsKICAgICAg
ICAgIGlmICgoZV9mbGFncyAmICgxIDw8IDUpKSkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIs
IHJlZHVjZWQgZnAgbW9kZWwiKTsKICAgICAgICAgIGlmICgoZV9mbGFncyAmICgxIDw8IDcpKSkK
ICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG5vIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLCBjb25z
dGFudCBncCIpOwogICAgICAgICAgZWxzZSBpZiAoKGVfZmxhZ3MgJiAoMSA8PCA2KSkpCiAgICAg
ICAgICAgIHN0cmNhdCAoYnVmLCAiLCBjb25zdGFudCBncCIpOwogICAgICAgICAgaWYgKChlX2Zs
YWdzICYgKDEgPDwgOCkpKQogICAgICAgICAgICBzdHJjYXQgKGJ1ZiwgIiwgYWJzb2x1dGUiKTsK
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDc1OgogICAgICAgICAgaWYgKChlX2ZsYWdz
ICYgMHgwMDAxKSkKICAgICAgICAgICAgc3RyY2F0IChidWYsICIsIG5vbi1QSUMiKTsKICAgICAg
ICAgIGlmICgoZV9mbGFncyAmIDB4MDEwMCkpCiAgICAgICAgICAgIHN0cmNhdCAoYnVmLCAiLCBE
LUZsb2F0Iik7CiAgICAgICAgICBpZiAoKGVfZmxhZ3MgJiAweDAyMDApKQogICAgICAgICAgICBz
dHJjYXQgKGJ1ZiwgIiwgRy1GbG9hdCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAg
fQoKICByZXR1cm4gYnVmOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9taXBzX3NlZ21lbnRf
dHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHR5cGU7CnsKICBzd2l0Y2ggKHR5cGUpCiAg
ICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6CiAgICAgIHJldHVybiAiUkVHSU5GTyI7CiAgICBjYXNl
IDB4NzAwMDAwMDE6CiAgICAgIHJldHVybiAiUlRQUk9DIjsKICAgIGNhc2UgMHg3MDAwMDAwMjoK
ICAgICAgcmV0dXJuICJPUFRJT05TIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoK
ICByZXR1cm4gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X3BhcmlzY19z
ZWdtZW50X3R5cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0eXBlOwp7CiAgc3dpdGNoICh0
eXBlKQogICAgewogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MCk6IHJldHVybiAiSFBfVExTIjsK
ICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDEpOiByZXR1cm4gIkhQX0NPUkVfTk9ORSI7CiAgICBj
YXNlICgweDYwMDAwMDAwICsgMHgyKTogcmV0dXJuICJIUF9DT1JFX1ZFUlNJT04iOwogICAgY2Fz
ZSAoMHg2MDAwMDAwMCArIDB4Myk6IHJldHVybiAiSFBfQ09SRV9LRVJORUwiOwogICAgY2FzZSAo
MHg2MDAwMDAwMCArIDB4NCk6IHJldHVybiAiSFBfQ09SRV9DT01NIjsKICAgIGNhc2UgKDB4NjAw
MDAwMDAgKyAweDUpOiByZXR1cm4gIkhQX0NPUkVfUFJPQyI7CiAgICBjYXNlICgweDYwMDAwMDAw
ICsgMHg2KTogcmV0dXJuICJIUF9DT1JFX0xPQURBQkxFIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAg
KyAweDcpOiByZXR1cm4gIkhQX0NPUkVfU1RBQ0siOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4
OCk6IHJldHVybiAiSFBfQ09SRV9TSE0iOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4OSk6IHJl
dHVybiAiSFBfQ09SRV9NTUYiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MTApOiByZXR1cm4g
IkhQX1BBUkFMTEVMIjsKICAgIGNhc2UgKDB4NjAwMDAwMDAgKyAweDExKTogcmV0dXJuICJIUF9G
QVNUQklORCI7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJldHVybiAiUEFSSVNDX0FSQ0hFWFQiOwog
ICAgY2FzZSAweDcwMDAwMDAxOiByZXR1cm4gIlBBUklTQ19VTldJTkQiOwogICAgZGVmYXVsdDoK
ICAgICAgYnJlYWs7CiAgICB9CgogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0
IGNoYXIgKgpnZXRfaWE2NF9zZWdtZW50X3R5cGUgKHR5cGUpCiAgICAgdW5zaWduZWQgbG9uZyB0
eXBlOwp7CiAgc3dpdGNoICh0eXBlKQogICAgewogICAgY2FzZSAoMHg3MDAwMDAwMCArIDApOiBy
ZXR1cm4gIklBXzY0X0FSQ0hFWFQiOwogICAgY2FzZSAoMHg3MDAwMDAwMCArIDEpOiByZXR1cm4g
IklBXzY0X1VOV0lORCI7CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgwKTogcmV0dXJuICJIUF9U
TFMiOwogICAgY2FzZSAoMHg2MDAwMDAwMCArIDB4MTIpOiByZXR1cm4gIkhQX09QVF9BTk5PVCI7
CiAgICBjYXNlICgweDYwMDAwMDAwICsgMHgxMyk6IHJldHVybiAiSFBfSFNMX0FOTk9UIjsKICAg
IGNhc2UgKDB4NjAwMDAwMDAgKyAweDE0KTogcmV0dXJuICJIUF9TVEFDSyI7CiAgICBkZWZhdWx0
OgogICAgICBicmVhazsKICAgIH0KCiAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpzdGF0aWMgY29u
c3QgY2hhciAqCmdldF9zZWdtZW50X3R5cGUgKHBfdHlwZSkKICAgICB1bnNpZ25lZCBsb25nIHBf
dHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICBzd2l0Y2ggKHBfdHlwZSkKICAgIHsK
ICAgIGNhc2UgMDogcmV0dXJuICJOVUxMIjsKICAgIGNhc2UgMTogcmV0dXJuICJMT0FEIjsKICAg
IGNhc2UgMjogcmV0dXJuICJEWU5BTUlDIjsKICAgIGNhc2UgMzogcmV0dXJuICJJTlRFUlAiOwog
ICAgY2FzZSA0OiByZXR1cm4gIk5PVEUiOwogICAgY2FzZSA1OiByZXR1cm4gIlNITElCIjsKICAg
IGNhc2UgNjogcmV0dXJuICJQSERSIjsKICAgIGNhc2UgNzogcmV0dXJuICJUTFMiOwoKICAgIGNh
c2UgKDB4NjAwMDAwMDAgKyAweDQ3NGU1NTApOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIkdOVV9FSF9GUkFNRSI7CgogICAgZGVmYXVsdDoKICAgICAgaWYgKChwX3R5cGUgPj0gMHg3
MDAwMDAwMCkgJiYgKHBfdHlwZSA8PSAweDdGRkZGRkZGKSkKICAgICAgICB7CiAgICAgICAgICBj
b25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAgICAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFjaGlu
ZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgMTA6
CiAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0X21pcHNfc2VnbWVudF90eXBlIChwX3R5cGUpOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIHJl
c3VsdCA9IGdldF9wYXJpc2Nfc2VnbWVudF90eXBlIChwX3R5cGUpOwogICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9pYTY0
X3NlZ21lbnRfdHlwZSAocF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikwKTsKICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1bHQgIT0gKCh2b2lkICop
MCkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwg
IkxPUFJPQyslbHgiLCBwX3R5cGUgLSAweDcwMDAwMDAwKTsKICAgICAgICB9CiAgICAgIGVsc2Ug
aWYgKChwX3R5cGUgPj0gMHg2MDAwMDAwMCkgJiYgKHBfdHlwZSA8PSAweDZmZmZmZmZmKSkKICAg
ICAgICB7CiAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQ7CgogICAgICAgICAgc3dpdGNoIChl
bGZfaGVhZGVyLmVfbWFjaGluZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIDE1Ogog
ICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9wYXJpc2Nfc2VnbWVudF90eXBlIChwX3R5cGUpOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgIHJl
c3VsdCA9IGdldF9pYTY0X3NlZ21lbnRfdHlwZSAocF90eXBlKTsKICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXN1bHQgPSAoKHZvaWQgKikw
KTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmIChyZXN1
bHQgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CgogICAgICAgICAg
c3ByaW50ZiAoYnVmZiwgIkxPT1MrJWx4IiwgcF90eXBlIC0gMHg2MDAwMDAwMCk7CiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVseCIpLCBw
X3R5cGUpOwoKICAgICAgcmV0dXJuIGJ1ZmY7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoK
Z2V0X21pcHNfc2VjdGlvbl90eXBlX25hbWUgKHNoX3R5cGUpCiAgICAgdW5zaWduZWQgaW50IHNo
X3R5cGU7CnsKICBzd2l0Y2ggKHNoX3R5cGUpCiAgICB7CiAgICBjYXNlIDB4NzAwMDAwMDA6IHJl
dHVybiAiTUlQU19MSUJMSVNUIjsKICAgIGNhc2UgMHg3MDAwMDAwMTogcmV0dXJuICJNSVBTX01T
WU0iOwogICAgY2FzZSAweDcwMDAwMDAyOiByZXR1cm4gIk1JUFNfQ09ORkxJQ1QiOwogICAgY2Fz
ZSAweDcwMDAwMDAzOiByZXR1cm4gIk1JUFNfR1BUQUIiOwogICAgY2FzZSAweDcwMDAwMDA0OiBy
ZXR1cm4gIk1JUFNfVUNPREUiOwogICAgY2FzZSAweDcwMDAwMDA1OiByZXR1cm4gIk1JUFNfREVC
VUciOwogICAgY2FzZSAweDcwMDAwMDA2OiByZXR1cm4gIk1JUFNfUkVHSU5GTyI7CiAgICBjYXNl
IDB4NzAwMDAwMDc6IHJldHVybiAiTUlQU19QQUNLQUdFIjsKICAgIGNhc2UgMHg3MDAwMDAwODog
cmV0dXJuICJNSVBTX1BBQ0tTWU0iOwogICAgY2FzZSAweDcwMDAwMDA5OiByZXR1cm4gIk1JUFNf
UkVMRCI7CiAgICBjYXNlIDB4NzAwMDAwMGI6IHJldHVybiAiTUlQU19JRkFDRSI7CiAgICBjYXNl
IDB4NzAwMDAwMGM6IHJldHVybiAiTUlQU19DT05URU5UIjsKICAgIGNhc2UgMHg3MDAwMDAwZDog
cmV0dXJuICJNSVBTX09QVElPTlMiOwogICAgY2FzZSAweDcwMDAwMDEwOiByZXR1cm4gIk1JUFNf
U0hEUiI7CiAgICBjYXNlIDB4NzAwMDAwMTE6IHJldHVybiAiTUlQU19GREVTQyI7CiAgICBjYXNl
IDB4NzAwMDAwMTI6IHJldHVybiAiTUlQU19FWFRTWU0iOwogICAgY2FzZSAweDcwMDAwMDEzOiBy
ZXR1cm4gIk1JUFNfREVOU0UiOwogICAgY2FzZSAweDcwMDAwMDE0OiByZXR1cm4gIk1JUFNfUERF
U0MiOwogICAgY2FzZSAweDcwMDAwMDE1OiByZXR1cm4gIk1JUFNfTE9DU1lNIjsKICAgIGNhc2Ug
MHg3MDAwMDAxNjogcmV0dXJuICJNSVBTX0FVWFNZTSI7CiAgICBjYXNlIDB4NzAwMDAwMTc6IHJl
dHVybiAiTUlQU19PUFRTWU0iOwogICAgY2FzZSAweDcwMDAwMDE4OiByZXR1cm4gIk1JUFNfTE9D
U1RSIjsKICAgIGNhc2UgMHg3MDAwMDAxOTogcmV0dXJuICJNSVBTX0xJTkUiOwogICAgY2FzZSAw
eDcwMDAwMDFhOiByZXR1cm4gIk1JUFNfUkZERVNDIjsKICAgIGNhc2UgMHg3MDAwMDAxYjogcmV0
dXJuICJNSVBTX0RFTFRBU1lNIjsKICAgIGNhc2UgMHg3MDAwMDAxYzogcmV0dXJuICJNSVBTX0RF
TFRBSU5TVCI7CiAgICBjYXNlIDB4NzAwMDAwMWQ6IHJldHVybiAiTUlQU19ERUxUQUNMQVNTIjsK
ICAgIGNhc2UgMHg3MDAwMDAxZTogcmV0dXJuICJNSVBTX0RXQVJGIjsKICAgIGNhc2UgMHg3MDAw
MDAxZjogcmV0dXJuICJNSVBTX0RFTFRBREVDTCI7CiAgICBjYXNlIDB4NzAwMDAwMjA6IHJldHVy
biAiTUlQU19TWU1CT0xfTElCIjsKICAgIGNhc2UgMHg3MDAwMDAyMTogcmV0dXJuICJNSVBTX0VW
RU5UUyI7CiAgICBjYXNlIDB4NzAwMDAwMjI6IHJldHVybiAiTUlQU19UUkFOU0xBVEUiOwogICAg
Y2FzZSAweDcwMDAwMDIzOiByZXR1cm4gIk1JUFNfUElYSUUiOwogICAgY2FzZSAweDcwMDAwMDI0
OiByZXR1cm4gIk1JUFNfWExBVEUiOwogICAgY2FzZSAweDcwMDAwMDI1OiByZXR1cm4gIk1JUFNf
WExBVEVfREVCVUciOwogICAgY2FzZSAweDcwMDAwMDI2OiByZXR1cm4gIk1JUFNfV0hJUkwiOwog
ICAgY2FzZSAweDcwMDAwMDI3OiByZXR1cm4gIk1JUFNfRUhfUkVHSU9OIjsKICAgIGNhc2UgMHg3
MDAwMDAyODogcmV0dXJuICJNSVBTX1hMQVRFX09MRCI7CiAgICBjYXNlIDB4NzAwMDAwMjk6IHJl
dHVybiAiTUlQU19QRFJfRVhDRVBUSU9OIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAg
fQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRfcGFyaXNj
X3NlY3Rpb25fdHlwZV9uYW1lIChzaF90eXBlKQogICAgIHVuc2lnbmVkIGludCBzaF90eXBlOwp7
CiAgc3dpdGNoIChzaF90eXBlKQogICAgewogICAgY2FzZSAweDcwMDAwMDAwOiByZXR1cm4gIlBB
UklTQ19FWFQiOwogICAgY2FzZSAweDcwMDAwMDAxOiByZXR1cm4gIlBBUklTQ19VTldJTkQiOwog
ICAgY2FzZSAweDcwMDAwMDAyOiByZXR1cm4gIlBBUklTQ19ET0MiOwogICAgZGVmYXVsdDoKICAg
ICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICgodm9pZCAqKTApOwp9CgpzdGF0aWMgY29uc3QgY2hh
ciAqCmdldF9pYTY0X3NlY3Rpb25fdHlwZV9uYW1lIChzaF90eXBlKQogICAgIHVuc2lnbmVkIGlu
dCBzaF90eXBlOwp7CgogIGlmICgoc2hfdHlwZSAmIDB4RkYwMDAwMDApID09ICgweDcwMDAwMDAw
ICsgMHg4MDAwMDAwKSkKICAgIHJldHVybiBnZXRfb3NhYmlfbmFtZSAoKHNoX3R5cGUgJiAweDAw
RkYwMDAwKSA+PiAxNik7CgogIHN3aXRjaCAoc2hfdHlwZSkKICAgIHsKICAgIGNhc2UgKDB4NzAw
MDAwMDAgKyAwKTogcmV0dXJuICJJQV82NF9FWFQiOwogICAgY2FzZSAoMHg3MDAwMDAwMCArIDEp
OiByZXR1cm4gIklBXzY0X1VOV0lORCI7CiAgICBjYXNlICgweDcwMDAwMDAwICsgMHg5MDAwMDAw
KTogcmV0dXJuICJJQV82NF9QUklPUklUWV9JTklUIjsKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFr
OwogICAgfQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRf
c2VjdGlvbl90eXBlX25hbWUgKHNoX3R5cGUpCiAgICAgdW5zaWduZWQgaW50IHNoX3R5cGU7CnsK
ICBzdGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChzaF90eXBlKQogICAgewogICAgY2Fz
ZSAwOiByZXR1cm4gIk5VTEwiOwogICAgY2FzZSAxOiByZXR1cm4gIlBST0dCSVRTIjsKICAgIGNh
c2UgMjogcmV0dXJuICJTWU1UQUIiOwogICAgY2FzZSAzOiByZXR1cm4gIlNUUlRBQiI7CiAgICBj
YXNlIDQ6IHJldHVybiAiUkVMQSI7CiAgICBjYXNlIDU6IHJldHVybiAiSEFTSCI7CiAgICBjYXNl
IDY6IHJldHVybiAiRFlOQU1JQyI7CiAgICBjYXNlIDc6IHJldHVybiAiTk9URSI7CiAgICBjYXNl
IDg6IHJldHVybiAiTk9CSVRTIjsKICAgIGNhc2UgOTogcmV0dXJuICJSRUwiOwogICAgY2FzZSAx
MDogcmV0dXJuICJTSExJQiI7CiAgICBjYXNlIDExOiByZXR1cm4gIkRZTlNZTSI7CiAgICBjYXNl
IDE0OiByZXR1cm4gIklOSVRfQVJSQVkiOwogICAgY2FzZSAxNTogcmV0dXJuICJGSU5JX0FSUkFZ
IjsKICAgIGNhc2UgMTY6IHJldHVybiAiUFJFSU5JVF9BUlJBWSI7CiAgICBjYXNlIDE3OiByZXR1
cm4gIkdST1VQIjsKICAgIGNhc2UgMTg6IHJldHVybiAiU1lNVEFCIFNFQ1RJT04gSU5ESUNJRVMi
OwogICAgY2FzZSAweDZmZmZmZmZkOiByZXR1cm4gIlZFUkRFRiI7CiAgICBjYXNlIDB4NmZmZmZm
ZmU6IHJldHVybiAiVkVSTkVFRCI7CiAgICBjYXNlIDB4NmZmZmZmZmY6IHJldHVybiAiVkVSU1lN
IjsKICAgIGNhc2UgMHg2ZmZmZmZmMDogcmV0dXJuICJWRVJTWU0iOwogICAgY2FzZSAweDZmZmZm
ZmZjOiByZXR1cm4gIlZFUkRFRiI7CiAgICBjYXNlIDB4N2ZmZmZmZmQ6IHJldHVybiAiQVVYSUxJ
QVJZIjsKICAgIGNhc2UgMHg3ZmZmZmZmZjogcmV0dXJuICJGSUxURVIiOwogICAgY2FzZSAweDZm
ZmZmZmY3OiByZXR1cm4gIkdOVV9MSUJMSVNUIjsKCiAgICBkZWZhdWx0OgogICAgICBpZiAoKHNo
X3R5cGUgPj0gMHg3MDAwMDAwMCkgJiYgKHNoX3R5cGUgPD0gMHg3RkZGRkZGRikpCiAgICAgICAg
ewogICAgICAgICAgY29uc3QgY2hhciAqcmVzdWx0OwoKICAgICAgICAgIHN3aXRjaCAoZWxmX2hl
YWRlci5lX21hY2hpbmUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAg
ICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9taXBzX3NlY3Rpb25fdHlw
ZV9uYW1lIChzaF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAx
NToKICAgICAgICAgICAgICByZXN1bHQgPSBnZXRfcGFyaXNjX3NlY3Rpb25fdHlwZV9uYW1lIChz
aF90eXBlKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1MDoKICAgICAg
ICAgICAgICByZXN1bHQgPSBnZXRfaWE2NF9zZWN0aW9uX3R5cGVfbmFtZSAoc2hfdHlwZSk7CiAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgcmVz
dWx0ID0gKCh2b2lkICopMCk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICBpZiAocmVzdWx0ICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwoKICAgICAgICAgIHNwcmludGYgKGJ1ZmYsICJMT1BST0MrJXgiLCBzaF90eXBlIC0gMHg3
MDAwMDAwMCk7CiAgICAgICAgfQogICAgICBlbHNlIGlmICgoc2hfdHlwZSA+PSAweDYwMDAwMDAw
KSAmJiAoc2hfdHlwZSA8PSAweDZmZmZmZmZmKSkKICAgICAgICBzcHJpbnRmIChidWZmLCAiTE9P
UysleCIsIHNoX3R5cGUgLSAweDYwMDAwMDAwKTsKICAgICAgZWxzZSBpZiAoKHNoX3R5cGUgPj0g
MHg4MDAwMDAwMCkgJiYgKHNoX3R5cGUgPD0gMHhGRkZGRkZGRikpCiAgICAgICAgc3ByaW50ZiAo
YnVmZiwgIkxPVVNFUisleCIsIHNoX3R5cGUgLSAweDgwMDAwMDAwKTsKICAgICAgZWxzZQogICAg
ICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd24+OiAleCIpLCBzaF90eXBlKTsKCiAgICAgIHJl
dHVybiBidWZmOwogICAgfQp9CgoKCnN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0KewogIHsiYWxs
IiwgMCwgMCwgJ2EnfSwKICB7ImZpbGUtaGVhZGVyIiwgMCwgMCwgJ2gnfSwKICB7InByb2dyYW0t
aGVhZGVycyIsIDAsIDAsICdsJ30sCiAgeyJoZWFkZXJzIiwgMCwgMCwgJ2UnfSwKICB7Imhpc3Rv
Z3JhbSIsIDAsIDAsICdJJ30sCiAgeyJzZWdtZW50cyIsIDAsIDAsICdsJ30sCiAgeyJzZWN0aW9u
cyIsIDAsIDAsICdTJ30sCiAgeyJzZWN0aW9uLWhlYWRlcnMiLCAwLCAwLCAnUyd9LAogIHsic3lt
Ym9scyIsIDAsIDAsICdzJ30sCiAgeyJzeW1zIiwgMCwgMCwgJ3MnfSwKICB7InJlbG9jcyIsIDAs
IDAsICdyJ30sCiAgeyJub3RlcyIsIDAsIDAsICduJ30sCiAgeyJkeW5hbWljIiwgMCwgMCwgJ2Qn
fSwKICB7ImFyY2gtc3BlY2lmaWMiLCAwLCAwLCAnQSd9LAogIHsidmVyc2lvbi1pbmZvIiwgMCwg
MCwgJ1YnfSwKICB7InVzZS1keW5hbWljIiwgMCwgMCwgJ0QnfSwKICB7ImhleC1kdW1wIiwgMSwg
MCwgJ3gnfSwKICB7ImRlYnVnLWR1bXAiLCAyLCAwLCA1MTJ9LAogIHsidW53aW5kIiwgMCwgMCwg
J3UnfSwKCgoKCiAgeyJ2ZXJzaW9uIiwgMCwgMCwgJ3YnfSwKICB7IndpZGUiLCAwLCAwLCAnVyd9
LAogIHsiaGVscCIsIDAsIDAsICdIJ30sCiAgezAsIDAsIDAsIDB9Cn07CgpzdGF0aWMgdm9pZAp1
c2FnZSAoKQp7CiAgZnByaW50ZiAoc3Rkb3V0LCAoIlVzYWdlOiByZWFkZWxmIDxvcHRpb24ocyk+
IGVsZi1maWxlKHMpXG4iKSk7CiAgZnByaW50ZiAoc3Rkb3V0LCAoIiBEaXNwbGF5IGluZm9ybWF0
aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiBFTEYgZm9ybWF0IGZpbGVzXG4iKSk7CiAgZnByaW50
ZiAoc3Rkb3V0LCAoIiBPcHRpb25zIGFyZTpcbiAgLWEgLS1hbGwgICAgICAgICAgICAgICBFcXVp
dmFsZW50IHRvOiAtaCAtbCAtUyAtcyAtciAtZCAtViAtQSAtSVxuICAtaCAtLWZpbGUtaGVhZGVy
ICAgICAgIERpc3BsYXkgdGhlIEVMRiBmaWxlIGhlYWRlclxuICAtbCAtLXByb2dyYW0taGVhZGVy
cyAgIERpc3BsYXkgdGhlIHByb2dyYW0gaGVhZGVyc1xuICAgICAtLXNlZ21lbnRzICAgICAgICAg
IEFuIGFsaWFzIGZvciAtLXByb2dyYW0taGVhZGVyc1xuICAtUyAtLXNlY3Rpb24taGVhZGVycyAg
IERpc3BsYXkgdGhlIHNlY3Rpb25zJyBoZWFkZXJcbiAgICAgLS1zZWN0aW9ucyAgICAgICAgICBB
biBhbGlhcyBmb3IgLS1zZWN0aW9uLWhlYWRlcnNcbiAgLWUgLS1oZWFkZXJzICAgICAgICAgICBF
cXVpdmFsZW50IHRvOiAtaCAtbCAtU1xuICAtcyAtLXN5bXMgICAgICAgICAgICAgIERpc3BsYXkg
dGhlIHN5bWJvbCB0YWJsZVxuICAgICAgLS1zeW1ib2xzICAgICAgICAgIEFuIGFsaWFzIGZvciAt
LXN5bXNcbiAgLW4gLS1ub3RlcyAgICAgICAgICAgICBEaXNwbGF5IHRoZSBjb3JlIG5vdGVzIChp
ZiBwcmVzZW50KVxuICAtciAtLXJlbG9jcyAgICAgICAgICAgIERpc3BsYXkgdGhlIHJlbG9jYXRp
b25zIChpZiBwcmVzZW50KVxuICAtdSAtLXVud2luZCAgICAgICAgICAgIERpc3BsYXkgdGhlIHVu
d2luZCBpbmZvIChpZiBwcmVzZW50KVxuICAtZCAtLWR5bmFtaWMgICAgICAgICAgIERpc3BsYXkg
dGhlIGR5bmFtaWMgc2VnbWVudCAoaWYgcHJlc2VudClcbiAgLVYgLS12ZXJzaW9uLWluZm8gICAg
ICBEaXNwbGF5IHRoZSB2ZXJzaW9uIHNlY3Rpb25zIChpZiBwcmVzZW50KVxuICAtQSAtLWFyY2gt
c3BlY2lmaWMgICAgIERpc3BsYXkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGluZm9ybWF0aW9uIChp
ZiBhbnkpLlxuICAtRCAtLXVzZS1keW5hbWljICAgICAgIFVzZSB0aGUgZHluYW1pYyBzZWN0aW9u
IGluZm8gd2hlbiBkaXNwbGF5aW5nIHN5bWJvbHNcbiAgLXggLS1oZXgtZHVtcD08bnVtYmVyPiBE
dW1wIHRoZSBjb250ZW50cyBvZiBzZWN0aW9uIDxudW1iZXI+XG4gIC13W2xpYXBybWZGc29dIG9y
XG4gIC0tZGVidWctZHVtcFs9bGluZSw9aW5mbyw9YWJicmV2LD1wdWJuYW1lcyw9cmFuZ2VzLD1t
YWNybyw9ZnJhbWVzLD1zdHIsPWxvY11cbiAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5
IHRoZSBjb250ZW50cyBvZiBEV0FSRjIgZGVidWcgc2VjdGlvbnNcbiIpKTsKIyAyNTA0ICJyZWFk
ZWxmLmMiCiAgZnByaW50ZiAoc3Rkb3V0LCAoIiAgLUkgLS1oaXN0b2dyYW0gICAgICAgICBEaXNw
bGF5IGhpc3RvZ3JhbSBvZiBidWNrZXQgbGlzdCBsZW5ndGhzXG4gIC1XIC0td2lkZSAgICAgICAg
ICAgICAgQWxsb3cgb3V0cHV0IHdpZHRoIHRvIGV4Y2VlZCA4MCBjaGFyYWN0ZXJzXG4gIC1IIC0t
aGVscCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uXG4gIC12IC0tdmVyc2lv
biAgICAgICAgICAgRGlzcGxheSB0aGUgdmVyc2lvbiBudW1iZXIgb2YgcmVhZGVsZlxuIikpOwoK
CgoKICBmcHJpbnRmIChzdGRvdXQsICgiUmVwb3J0IGJ1Z3MgdG8gJXNcbiIpLCAiYnVnLWJpbnV0
aWxzQGdudS5vcmciKTsKCiAgZXhpdCAoMCk7Cn0KCnN0YXRpYyB2b2lkCnJlcXVlc3RfZHVtcCAo
c2VjdGlvbiwgdHlwZSkKICAgICB1bnNpZ25lZCBpbnQgc2VjdGlvbjsKICAgICBpbnQgdHlwZTsK
ewogIGlmIChzZWN0aW9uID49IG51bV9kdW1wX3NlY3RzKQogICAgewogICAgICBjaGFyICpuZXdf
ZHVtcF9zZWN0czsKCiAgICAgIG5ld19kdW1wX3NlY3RzID0gKGNoYXIgKikgY2FsbG9jIChzZWN0
aW9uICsgMSwgMSk7CgogICAgICBpZiAobmV3X2R1bXBfc2VjdHMgPT0gKCh2b2lkICopMCkpCiAg
ICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeSBhbGxvY2F0aW5nIGR1bXAgcmVxdWVzdCB0YWJs
ZS4iKSk7CiAgICAgIGVsc2UKICAgICAgICB7CgogICAgICAgICAgbWVtY3B5IChuZXdfZHVtcF9z
ZWN0cywgZHVtcF9zZWN0cywgbnVtX2R1bXBfc2VjdHMpOwoKICAgICAgICAgIGZyZWUgKGR1bXBf
c2VjdHMpOwoKICAgICAgICAgIGR1bXBfc2VjdHMgPSBuZXdfZHVtcF9zZWN0czsKICAgICAgICAg
IG51bV9kdW1wX3NlY3RzID0gc2VjdGlvbiArIDE7CiAgICAgICAgfQogICAgfQoKICBpZiAoZHVt
cF9zZWN0cykKICAgIGR1bXBfc2VjdHNbc2VjdGlvbl0gfD0gdHlwZTsKCiAgcmV0dXJuOwp9Cgpz
dGF0aWMgdm9pZApwYXJzZV9hcmdzIChhcmdjLCBhcmd2KQogICAgIGludCBhcmdjOwogICAgIGNo
YXIgKiphcmd2Owp7CiAgaW50IGM7CgogIGlmIChhcmdjIDwgMikKICAgIHVzYWdlICgpOwoKICB3
aGlsZSAoKGMgPSBnZXRvcHRfbG9uZwogICAgICAgICAgKGFyZ2MsIGFyZ3YsICJlcnN1YWhubGRT
REFJdzo6eDppOnZWV0giLCBvcHRpb25zLCAoKHZvaWQgKikwKSkpICE9ICgtMSkpCiAgICB7CiAg
ICAgIGNoYXIgKmNwOwogICAgICBpbnQgc2VjdGlvbjsKCiAgICAgIHN3aXRjaCAoYykKICAgICAg
ICB7CiAgICAgICAgY2FzZSAwOgoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ0gnOgog
ICAgICAgICAgdXNhZ2UgKCk7CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnYSc6CiAg
ICAgICAgICBkb19zeW1zKys7CiAgICAgICAgICBkb19yZWxvYysrOwogICAgICAgICAgZG9fdW53
aW5kKys7CiAgICAgICAgICBkb19keW5hbWljKys7CiAgICAgICAgICBkb19oZWFkZXIrKzsKICAg
ICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAgICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAg
ZG9fdmVyc2lvbisrOwogICAgICAgICAgZG9faGlzdG9ncmFtKys7CiAgICAgICAgICBkb19hcmNo
Kys7CiAgICAgICAgICBkb19ub3RlcysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn
ZSc6CiAgICAgICAgICBkb19oZWFkZXIrKzsKICAgICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAg
ICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnQSc6CiAg
ICAgICAgICBkb19hcmNoKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdEJzoKICAg
ICAgICAgIGRvX3VzaW5nX2R5bmFtaWMrKzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
J3InOgogICAgICAgICAgZG9fcmVsb2MrKzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
J3UnOgogICAgICAgICAgZG9fdW53aW5kKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
ICdoJzoKICAgICAgICAgIGRvX2hlYWRlcisrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSAnbCc6CiAgICAgICAgICBkb19zZWdtZW50cysrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAg
Y2FzZSAncyc6CiAgICAgICAgICBkb19zeW1zKys7CiAgICAgICAgICBicmVhazsKICAgICAgICBj
YXNlICdTJzoKICAgICAgICAgIGRvX3NlY3Rpb25zKys7CiAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlICdkJzoKICAgICAgICAgIGRvX2R5bmFtaWMrKzsKICAgICAgICAgIGJyZWFrOwogICAg
ICAgIGNhc2UgJ0knOgogICAgICAgICAgZG9faGlzdG9ncmFtKys7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICduJzoKICAgICAgICAgIGRvX25vdGVzKys7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICd4JzoKICAgICAgICAgIGRvX2R1bXArKzsKICAgICAgICAgIHNlY3Rpb24g
PSBzdHJ0b3VsIChvcHRhcmcsICYgY3AsIDApOwogICAgICAgICAgaWYgKCEgKmNwICYmIHNlY3Rp
b24gPj0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHJlcXVlc3RfZHVtcCAoc2VjdGlv
biwgKDEgPDwgMCkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
ICBnb3RvIG9vcHM7CiAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICBkb19kdW1wKys7CiAgICAg
ICAgICBpZiAob3B0YXJnID09IDApCiAgICAgICAgICAgIGRvX2RlYnVnZ2luZyA9IDE7CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaW5kZXgg
PSAwOwoKICAgICAgICAgICAgICBkb19kZWJ1Z2dpbmcgPSAwOwoKICAgICAgICAgICAgICB3aGls
ZSAob3B0YXJnW2luZGV4XSkKICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0YXJnW2luZGV4Kytd
KQogICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAg
ICAgICAgICAgICBjYXNlICdJJzoKICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19pbmZvID0g
MTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgIGNhc2UgJ2En
OgogICAgICAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgICAgICAgICBkb19kZWJ1
Z19hYmJyZXZzID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgICBjYXNlICdMJzoKICAgICAgICAgICAgICAg
ICAgICBkb19kZWJ1Z19saW5lcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgICAgICAgY2FzZSAnUCc6CiAgICAg
ICAgICAgICAgICAgICAgZG9fZGVidWdfcHVibmFtZXMgPSAxOwogICAgICAgICAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICAgICAgIGNh
c2UgJ1InOgogICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2FyYW5nZXMgPSAxOwogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAg
ICAgICAgICAgICAgZG9fZGVidWdfZnJhbWVzX2ludGVycCA9IDE7CiAgICAgICAgICAgICAgICAg
IGNhc2UgJ2YnOgogICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2ZyYW1lcyA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICBjYXNlICdtJzoKICAgICAg
ICAgICAgICAgICAgY2FzZSAnTSc6CiAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfbWFjaW5m
byA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICBjYXNl
ICdzJzoKICAgICAgICAgICAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgICAgICAgICAgZG9f
ZGVidWdfc3RyID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgICAgICBjYXNlICdPJzoKICAgICAgICAgICAgICAg
ICAgICBkb19kZWJ1Z19sb2MgPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB3YXJuICgoIlVucmVjb2du
aXplZCBkZWJ1ZyBvcHRpb24gJyVzJ1xuIiksIG9wdGFyZyk7CiAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgYnJlYWs7
CiAgICAgICAgY2FzZSA1MTI6CiAgICAgICAgICBkb19kdW1wKys7CiAgICAgICAgICBpZiAob3B0
YXJnID09IDApCiAgICAgICAgICAgIGRvX2RlYnVnZ2luZyA9IDE7CiAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfZHVtcF9v
cHRbXQogICAgICAgICAgICAgICAgPSB7ICJsaW5lIiwgImluZm8iLCAiYWJicmV2IiwgInB1Ym5h
bWVzIiwgInJhbmdlcyIsCiAgICAgICAgICAgICAgICAgICAgIm1hY3JvIiwgImZyYW1lcyIsICJm
cmFtZXMtaW50ZXJwIiwgInN0ciIsICJsb2MiLCAoKHZvaWQgKikwKSB9OwogICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBpbmRleDsKICAgICAgICAgICAgICBjb25zdCBjaGFyICpwOwoKICAgICAg
ICAgICAgICBkb19kZWJ1Z2dpbmcgPSAwOwoKICAgICAgICAgICAgICBwID0gb3B0YXJnOwogICAg
ICAgICAgICAgIHdoaWxlICgqcCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
Zm9yIChpbmRleCA9IDA7IGRlYnVnX2R1bXBfb3B0W2luZGV4XTsgaW5kZXgrKykKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChk
ZWJ1Z19kdW1wX29wdFtpbmRleF0pOwoKICAgICAgICAgICAgICAgICAgICAgIGlmICgoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGxlbikgJiYgKChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAocCkgJiYgc3RybGVuIChwKSA8ICgoc2l6ZV90KSAobGVuKSkpIHx8IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKSAmJiBzdHJsZW4gKGRlYnVnX2R1bXBf
b3B0W2luZGV4XSkgPCAoKHNpemVfdCkgKGxlbikpKSkgPyBfX2V4dGVuc2lvbl9fICh7IHNpemVf
dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocCkgJiYgX19idWls
dGluX2NvbnN0YW50X3AgKGRlYnVnX2R1bXBfb3B0W2luZGV4XSkgJiYgKF9fczFfbGVuID0gc3Ry
bGVuIChwKSwgX19zMl9sZW4gPSBzdHJsZW4gKGRlYnVnX2R1bXBfb3B0W2luZGV4XSksICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKHApICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHAp
ID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRl
YnVnX2R1bXBfb3B0W2luZGV4XSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2Nv
bnN0IGNoYXIgKikgKHApLCAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtpbmRleF0p
LCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHApICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChwKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4g
KHApLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1Z19kdW1wX29wdFtpbmRl
eF0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2R1bXBfb3B0W2luZGV4XSkg
PT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShkZWJ1Z19kdW1wX29wdFtpbmRleF0p
KVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMV0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtp
bmRleF0pKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1w
X29wdFtpbmRleF0pKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkp
WzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9f
ICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKTsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHApKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cCkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChw
KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlb
M10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9w
IChkZWJ1Z19kdW1wX29wdFtpbmRleF0pICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1
Z19kdW1wX29wdFtpbmRleF0pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2R1
bXBfb3B0W2luZGV4XSkgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChwKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
cCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocCkpWzBdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShkZWJ1Z19kdW1wX29wdFtpbmRl
eF0pKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1wX29w
dFtpbmRleF0pKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwKSlb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
dW1wX29wdFtpbmRleF0pKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
cCkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVi
dWdfZHVtcF9vcHRbaW5kZXhdKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAocCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
dW1wX29wdFtpbmRleF0pKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWJ1Z19kdW1wX29wdFtpbmRleF0pKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZHVtcF9vcHRbaW5kZXhdKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kdW1w
X29wdFtpbmRleF0pKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAocCwgZGVidWdf
ZHVtcF9vcHRbaW5kZXhdKSkpKTsgfSkgOiBzdHJuY21wIChwLCBkZWJ1Z19kdW1wX29wdFtpbmRl
eF0sIGxlbikpKSA9PSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHBbbGVuXSA9PSAn
LCcgfHwgcFtsZW5dID09ICdcMCcpKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChwWzBdKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvX2RlYnVnX2luZm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhJzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfYWJicmV2cyA9IDE7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgJ2wnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocFsxXSA9PSAnaScp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfbGluZXMgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9fZGVidWdfbG9jID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncCc6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvX2RlYnVnX3B1Ym5hbWVzID0gMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2FyYW5nZXMgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA+IDYp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fZGVidWdfZnJhbWVzX2ludGVycCA9
IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2RlYnVnX2ZyYW1lcyA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ20nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19kZWJ1Z19t
YWNpbmZvID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvX2RlYnVnX3N0ciA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
ICBwICs9IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIGlm
IChkZWJ1Z19kdW1wX29wdFtpbmRleF0gPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgd2FybiAoKCJVbnJlY29nbml6ZWQgZGVidWcgb3B0
aW9uICclcydcbiIpLCBwKTsKICAgICAgICAgICAgICAgICAgICAgIHAgPSAoX19leHRlbnNpb25f
XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCcsJykgJiYgKCcsJykgPT0gJ1wwJyA/IChjaGFyICop
IF9fcmF3bWVtY2hyIChwLCAnLCcpIDogc3RyY2hyIChwLCAnLCcpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICBpZiAocCA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgaWYgKCpwID09ICcs
JykKICAgICAgICAgICAgICAgICAgICBwKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KICAgICAgICAgIGJyZWFrOwojIDI3ODggInJlYWRlbGYuYyIKICAgICAgICBjYXNlICd2JzoK
ICAgICAgICAgIHByaW50X3ZlcnNpb24gKHByb2dyYW1fbmFtZSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICBjYXNlICdWJzoKICAgICAgICAgIGRvX3ZlcnNpb24rKzsKICAgICAgICAgIGJyZWFr
OwogICAgICAgIGNhc2UgJ1cnOgogICAgICAgICAgZG9fd2lkZSsrOwogICAgICAgICAgYnJlYWs7
CiAgICAgICAgZGVmYXVsdDoKICAgICAgICBvb3BzOgoKICAgICAgICAgIGVycm9yICgoIkludmFs
aWQgb3B0aW9uICctJWMnXG4iKSwgYyk7CgogICAgICAgIGNhc2UgJz8nOgogICAgICAgICAgdXNh
Z2UgKCk7CiAgICAgICAgfQogICAgfQoKICBpZiAoIWRvX2R5bmFtaWMgJiYgIWRvX3N5bXMgJiYg
IWRvX3JlbG9jICYmICFkb191bndpbmQgJiYgIWRvX3NlY3Rpb25zCiAgICAgICYmICFkb19zZWdt
ZW50cyAmJiAhZG9faGVhZGVyICYmICFkb19kdW1wICYmICFkb192ZXJzaW9uCiAgICAgICYmICFk
b19oaXN0b2dyYW0gJiYgIWRvX2RlYnVnZ2luZyAmJiAhZG9fYXJjaCAmJiAhZG9fbm90ZXMpCiAg
ICB1c2FnZSAoKTsKICBlbHNlIGlmIChhcmdjIDwgMykKICAgIHsKICAgICAgd2FybiAoKCJOb3Ro
aW5nIHRvIGRvLlxuIikpOwogICAgICB1c2FnZSgpOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hh
ciAqCmdldF9lbGZfY2xhc3MgKGVsZl9jbGFzcykKICAgICB1bnNpZ25lZCBpbnQgZWxmX2NsYXNz
Owp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07CgogIHN3aXRjaCAoZWxmX2NsYXNzKQogICAgewog
ICAgY2FzZSAwOiByZXR1cm4gKCJub25lIik7CiAgICBjYXNlIDE6IHJldHVybiAiRUxGMzIiOwog
ICAgY2FzZSAyOiByZXR1cm4gIkVMRjY0IjsKICAgIGRlZmF1bHQ6CiAgICAgIHNwcmludGYgKGJ1
ZmYsICgiPHVua25vd246ICV4PiIpLCBlbGZfY2xhc3MpOwogICAgICByZXR1cm4gYnVmZjsKICAg
IH0KfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRfZGF0YV9lbmNvZGluZyAoZW5jb2RpbmcpCiAg
ICAgdW5zaWduZWQgaW50IGVuY29kaW5nOwp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07CgogIHN3
aXRjaCAoZW5jb2RpbmcpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAoIm5vbmUiKTsKICAgIGNh
c2UgMTogcmV0dXJuICgiMidzIGNvbXBsZW1lbnQsIGxpdHRsZSBlbmRpYW4iKTsKICAgIGNhc2Ug
MjogcmV0dXJuICgiMidzIGNvbXBsZW1lbnQsIGJpZyBlbmRpYW4iKTsKICAgIGRlZmF1bHQ6CiAg
ICAgIHNwcmludGYgKGJ1ZmYsICgiPHVua25vd246ICV4PiIpLCBlbmNvZGluZyk7CiAgICAgIHJl
dHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9vc2FiaV9uYW1lIChv
c2FiaSkKICAgICB1bnNpZ25lZCBpbnQgb3NhYmk7CnsKICBzdGF0aWMgY2hhciBidWZmWzMyXTsK
CiAgc3dpdGNoIChvc2FiaSkKICAgIHsKICAgIGNhc2UgMDogcmV0dXJuICJVTklYIC0gU3lzdGVt
IFYiOwogICAgY2FzZSAxOiByZXR1cm4gIlVOSVggLSBIUC1VWCI7CiAgICBjYXNlIDI6IHJldHVy
biAiVU5JWCAtIE5ldEJTRCI7CiAgICBjYXNlIDM6IHJldHVybiAiVU5JWCAtIExpbnV4IjsKICAg
IGNhc2UgNDogcmV0dXJuICJHTlUvSHVyZCI7CiAgICBjYXNlIDY6IHJldHVybiAiVU5JWCAtIFNv
bGFyaXMiOwogICAgY2FzZSA3OiByZXR1cm4gIlVOSVggLSBBSVgiOwogICAgY2FzZSA4OiByZXR1
cm4gIlVOSVggLSBJUklYIjsKICAgIGNhc2UgOTogcmV0dXJuICJVTklYIC0gRnJlZUJTRCI7CiAg
ICBjYXNlIDEwOiByZXR1cm4gIlVOSVggLSBUUlU2NCI7CiAgICBjYXNlIDExOiByZXR1cm4gIk5v
dmVsbCAtIE1vZGVzdG8iOwogICAgY2FzZSAxMjogcmV0dXJuICJVTklYIC0gT3BlbkJTRCI7CiAg
ICBjYXNlIDEzOiByZXR1cm4gIlZNUyAtIE9wZW5WTVMiOwogICAgY2FzZSAxNDogcmV0dXJuICJI
UCAtIE5vbi1TdG9wIEtlcm5lbCI7CiAgICBjYXNlIDE1OiByZXR1cm4gIkFtaWdhIFJlc2VhcmNo
IE9TIjsKICAgIGNhc2UgMjU1OiByZXR1cm4gKCJTdGFuZGFsb25lIEFwcCIpOwogICAgY2FzZSA5
NzogcmV0dXJuICJBUk0iOwogICAgZGVmYXVsdDoKICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5r
bm93bjogJXg+IiksIG9zYWJpKTsKICAgICAgcmV0dXJuIGJ1ZmY7CiAgICB9Cn0KCgpzdGF0aWMg
aW50CnByb2Nlc3NfZmlsZV9oZWFkZXIgKCkKewogIGlmICggZWxmX2hlYWRlci5lX2lkZW50WzBd
ICE9IDB4N0YKICAgICAgfHwgZWxmX2hlYWRlci5lX2lkZW50WzFdICE9ICdFJwogICAgICB8fCBl
bGZfaGVhZGVyLmVfaWRlbnRbMl0gIT0gJ0wnCiAgICAgIHx8IGVsZl9oZWFkZXIuZV9pZGVudFsz
XSAhPSAnRicpCiAgICB7CiAgICAgIGVycm9yCiAgICAgICAgKCgiTm90IGFuIEVMRiBmaWxlIC0g
aXQgaGFzIHRoZSB3cm9uZyBtYWdpYyBieXRlcyBhdCB0aGUgc3RhcnRcbiIpKTsKICAgICAgcmV0
dXJuIDA7CiAgICB9CgogIGlmIChkb19oZWFkZXIpCiAgICB7CiAgICAgIGludCBpOwoKICAgICAg
cHJpbnRmICgoIkVMRiBIZWFkZXI6XG4iKSk7CiAgICAgIHByaW50ZiAoKCIgIE1hZ2ljOiAgICIp
KTsKICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCiAgICAgICAgcHJpbnRmICgiJTIuMngg
IiwgZWxmX2hlYWRlci5lX2lkZW50W2ldKTsKICAgICAgcHJpbnRmICgiXG4iKTsKICAgICAgcHJp
bnRmICgoIiAgQ2xhc3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlc1xuIiksCiAgICAg
ICAgICAgICAgZ2V0X2VsZl9jbGFzcyAoZWxmX2hlYWRlci5lX2lkZW50WzRdKSk7CiAgICAgIHBy
aW50ZiAoKCIgIERhdGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAg
ICAgICAgICAgIGdldF9kYXRhX2VuY29kaW5nIChlbGZfaGVhZGVyLmVfaWRlbnRbNV0pKTsKICAg
ICAgcHJpbnRmICgoIiAgVmVyc2lvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAlZCAlc1xu
IiksCiAgICAgICAgICAgICAgZWxmX2hlYWRlci5lX2lkZW50WzZdLAogICAgICAgICAgICAgIChl
bGZfaGVhZGVyLmVfaWRlbnRbNl0gPT0gMQogICAgICAgICAgICAgICA/ICIoY3VycmVudCkiCiAg
ICAgICAgICAgICAgIDogKGVsZl9oZWFkZXIuZV9pZGVudFs2XSAhPSAwCiAgICAgICAgICAgICAg
ICAgID8gIjx1bmtub3duOiAlbHg+IgogICAgICAgICAgICAgICAgICA6ICIiKSkpOwogICAgICBw
cmludGYgKCgiICBPUy9BQkk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICVzXG4iKSwKICAg
ICAgICAgICAgICBnZXRfb3NhYmlfbmFtZSAoZWxmX2hlYWRlci5lX2lkZW50WzddKSk7CiAgICAg
IHByaW50ZiAoKCIgIEFCSSBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgICAgJWRcbiIpLAog
ICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9pZGVudFs4XSk7CiAgICAgIHByaW50ZiAoKCIgIFR5
cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAgICAgICAgICAgIGdl
dF9maWxlX3R5cGUgKGVsZl9oZWFkZXIuZV90eXBlKSk7CiAgICAgIHByaW50ZiAoKCIgIE1hY2hp
bmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIpLAogICAgICAgICAgICAgIGdldF9t
YWNoaW5lX25hbWUgKGVsZl9oZWFkZXIuZV9tYWNoaW5lKSk7CiAgICAgIHByaW50ZiAoKCIgIFZl
cnNpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHglbHhcbiIpLAogICAgICAgICAgICAg
ICh1bnNpZ25lZCBsb25nKSBlbGZfaGVhZGVyLmVfdmVyc2lvbik7CgogICAgICBwcmludGYgKCgi
ICBFbnRyeSBwb2ludCBhZGRyZXNzOiAgICAgICAgICAgICAgICIpKTsKICAgICAgcHJpbnRfdm1h
ICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX2VudHJ5LCBQUkVGSVhfSEVYKTsKICAgICAgcHJpbnRm
ICgoIlxuICBTdGFydCBvZiBwcm9ncmFtIGhlYWRlcnM6ICAgICAgICAgICIpKTsKICAgICAgcHJp
bnRfdm1hICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX3Bob2ZmLCBERUMpOwogICAgICBwcmludGYg
KCgiIChieXRlcyBpbnRvIGZpbGUpXG4gIFN0YXJ0IG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAg
ICAgIikpOwogICAgICBwcmludF92bWEgKChiZmRfdm1hKSBlbGZfaGVhZGVyLmVfc2hvZmYsIERF
Qyk7CiAgICAgIHByaW50ZiAoKCIgKGJ5dGVzIGludG8gZmlsZSlcbiIpKTsKCiAgICAgIHByaW50
ZiAoKCIgIEZsYWdzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHglbHglc1xuIiksCiAg
ICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIGVsZl9oZWFkZXIuZV9mbGFncywKICAgICAgICAg
ICAgICBnZXRfbWFjaGluZV9mbGFncyAoZWxmX2hlYWRlci5lX2ZsYWdzLCBlbGZfaGVhZGVyLmVf
bWFjaGluZSkpOwogICAgICBwcmludGYgKCgiICBTaXplIG9mIHRoaXMgaGVhZGVyOiAgICAgICAg
ICAgICAgICVsZCAoYnl0ZXMpXG4iKSwKICAgICAgICAgICAgICAobG9uZykgZWxmX2hlYWRlci5l
X2Voc2l6ZSk7CiAgICAgIHByaW50ZiAoKCIgIFNpemUgb2YgcHJvZ3JhbSBoZWFkZXJzOiAgICAg
ICAgICAgJWxkIChieXRlcylcbiIpLAogICAgICAgICAgICAgIChsb25nKSBlbGZfaGVhZGVyLmVf
cGhlbnRzaXplKTsKICAgICAgcHJpbnRmICgoIiAgTnVtYmVyIG9mIHByb2dyYW0gaGVhZGVyczog
ICAgICAgICAlbGRcbiIpLAogICAgICAgICAgICAgIChsb25nKSBlbGZfaGVhZGVyLmVfcGhudW0p
OwogICAgICBwcmludGYgKCgiICBTaXplIG9mIHNlY3Rpb24gaGVhZGVyczogICAgICAgICAgICVs
ZCAoYnl0ZXMpXG4iKSwKICAgICAgICAgICAgICAobG9uZykgZWxmX2hlYWRlci5lX3NoZW50c2l6
ZSk7CiAgICAgIHByaW50ZiAoKCIgIE51bWJlciBvZiBzZWN0aW9uIGhlYWRlcnM6ICAgICAgICAg
JWxkIiksCiAgICAgICAgICAgICAgKGxvbmcpIGVsZl9oZWFkZXIuZV9zaG51bSk7CiAgICAgIGlm
IChzZWN0aW9uX2hlYWRlcnMgIT0gKCh2b2lkICopMCkgJiYgZWxmX2hlYWRlci5lX3NobnVtID09
IDApCiAgICAgICAgcHJpbnRmICgiICglbGQpIiwgKGxvbmcpIHNlY3Rpb25faGVhZGVyc1swXS5z
aF9zaXplKTsKICAgICAgX0lPX3B1dGMgKCdcbicsIHN0ZG91dCk7CiAgICAgIHByaW50ZiAoKCIg
IFNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZSBpbmRleDogJWxkIiksCiAgICAgICAgICAgICAg
KGxvbmcpIGVsZl9oZWFkZXIuZV9zaHN0cm5keCk7CiAgICAgIGlmIChzZWN0aW9uX2hlYWRlcnMg
IT0gKCh2b2lkICopMCkgJiYgZWxmX2hlYWRlci5lX3Noc3RybmR4ID09IDB4RkZGRikKICAgICAg
ICBwcmludGYgKCIgKCVsZCkiLCAobG9uZykgc2VjdGlvbl9oZWFkZXJzWzBdLnNoX2xpbmspOwog
ICAgICBfSU9fcHV0YyAoJ1xuJywgc3Rkb3V0KTsKICAgIH0KCiAgaWYgKHNlY3Rpb25faGVhZGVy
cyAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgaWYgKGVsZl9oZWFkZXIuZV9zaG51bSA9PSAw
KQogICAgICAgIGVsZl9oZWFkZXIuZV9zaG51bSA9IHNlY3Rpb25faGVhZGVyc1swXS5zaF9zaXpl
OwogICAgICBpZiAoZWxmX2hlYWRlci5lX3Noc3RybmR4ID09IDB4RkZGRikKICAgICAgICBlbGZf
aGVhZGVyLmVfc2hzdHJuZHggPSBzZWN0aW9uX2hlYWRlcnNbMF0uc2hfbGluazsKICAgICAgZnJl
ZSAoc2VjdGlvbl9oZWFkZXJzKTsKICAgICAgc2VjdGlvbl9oZWFkZXJzID0gKCh2b2lkICopMCk7
CiAgICB9CgogIHJldHVybiAxOwp9CgoKc3RhdGljIGludApnZXRfMzJiaXRfcHJvZ3JhbV9oZWFk
ZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpCiAgICAgRklMRSAqZmlsZTsKICAgICBFbGZfSW50
ZXJuYWxfUGhkciAqcHJvZ3JhbV9oZWFkZXJzOwp7CiAgRWxmMzJfRXh0ZXJuYWxfUGhkciAqcGhk
cnM7CiAgRWxmMzJfRXh0ZXJuYWxfUGhkciAqZXh0ZXJuYWw7CiAgRWxmX0ludGVybmFsX1BoZHIg
KmludGVybmFsOwogIHVuc2lnbmVkIGludCBpOwoKICBwaGRycyA9ICgoRWxmMzJfRXh0ZXJuYWxf
UGhkciAqKQogICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgZWxmX2hlYWRl
ci5lX3Bob2ZmLAogICAgICAgICAgICAgICAgICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplICog
ZWxmX2hlYWRlci5lX3BobnVtLAogICAgICAgICAgICAgICAgICAgICAoInByb2dyYW0gaGVhZGVy
cyIpKSk7CiAgaWYgKCFwaGRycykKICAgIHJldHVybiAwOwoKICBmb3IgKGkgPSAwLCBpbnRlcm5h
bCA9IHByb2dyYW1faGVhZGVycywgZXh0ZXJuYWwgPSBwaGRyczsKICAgICAgIGkgPCBlbGZfaGVh
ZGVyLmVfcGhudW07CiAgICAgICBpKyssIGludGVybmFsKyssIGV4dGVybmFsKyspCiAgICB7CiAg
ICAgIGludGVybmFsLT5wX3R5cGUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBfdHlwZSwgc2l6ZW9m
IChleHRlcm5hbC0+cF90eXBlKSk7CiAgICAgIGludGVybmFsLT5wX29mZnNldCA9IGJ5dGVfZ2V0
IChleHRlcm5hbC0+cF9vZmZzZXQsIHNpemVvZiAoZXh0ZXJuYWwtPnBfb2Zmc2V0KSk7CiAgICAg
IGludGVybmFsLT5wX3ZhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3ZhZGRyLCBzaXplb2Yg
KGV4dGVybmFsLT5wX3ZhZGRyKSk7CiAgICAgIGludGVybmFsLT5wX3BhZGRyID0gYnl0ZV9nZXQg
KGV4dGVybmFsLT5wX3BhZGRyLCBzaXplb2YgKGV4dGVybmFsLT5wX3BhZGRyKSk7CiAgICAgIGlu
dGVybmFsLT5wX2ZpbGVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cF9maWxlc3osIHNpemVvZiAo
ZXh0ZXJuYWwtPnBfZmlsZXN6KSk7CiAgICAgIGludGVybmFsLT5wX21lbXN6ID0gYnl0ZV9nZXQg
KGV4dGVybmFsLT5wX21lbXN6LCBzaXplb2YgKGV4dGVybmFsLT5wX21lbXN6KSk7CiAgICAgIGlu
dGVybmFsLT5wX2ZsYWdzID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX2ZsYWdzLCBzaXplb2YgKGV4
dGVybmFsLT5wX2ZsYWdzKSk7CiAgICAgIGludGVybmFsLT5wX2FsaWduID0gYnl0ZV9nZXQgKGV4
dGVybmFsLT5wX2FsaWduLCBzaXplb2YgKGV4dGVybmFsLT5wX2FsaWduKSk7CiAgICB9CgogIGZy
ZWUgKHBoZHJzKTsKCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZ2V0XzY0Yml0X3Byb2dyYW1f
aGVhZGVycyAoZmlsZSwgcHJvZ3JhbV9oZWFkZXJzKQogICAgIEZJTEUgKmZpbGU7CiAgICAgRWxm
X0ludGVybmFsX1BoZHIgKnByb2dyYW1faGVhZGVyczsKewogIEVsZjY0X0V4dGVybmFsX1BoZHIg
KnBoZHJzOwogIEVsZjY0X0V4dGVybmFsX1BoZHIgKmV4dGVybmFsOwogIEVsZl9JbnRlcm5hbF9Q
aGRyICppbnRlcm5hbDsKICB1bnNpZ25lZCBpbnQgaTsKCiAgcGhkcnMgPSAoKEVsZjY0X0V4dGVy
bmFsX1BoZHIgKikKICAgICAgICAgICBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIGVsZl9o
ZWFkZXIuZV9waG9mZiwKICAgICAgICAgICAgICAgICAgICAgZWxmX2hlYWRlci5lX3BoZW50c2l6
ZSAqIGVsZl9oZWFkZXIuZV9waG51bSwKICAgICAgICAgICAgICAgICAgICAgKCJwcm9ncmFtIGhl
YWRlcnMiKSkpOwogIGlmICghcGhkcnMpCiAgICByZXR1cm4gMDsKCiAgZm9yIChpID0gMCwgaW50
ZXJuYWwgPSBwcm9ncmFtX2hlYWRlcnMsIGV4dGVybmFsID0gcGhkcnM7CiAgICAgICBpIDwgZWxm
X2hlYWRlci5lX3BobnVtOwogICAgICAgaSsrLCBpbnRlcm5hbCsrLCBleHRlcm5hbCsrKQogICAg
ewogICAgICBpbnRlcm5hbC0+cF90eXBlID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3R5cGUsIHNp
emVvZiAoZXh0ZXJuYWwtPnBfdHlwZSkpOwogICAgICBpbnRlcm5hbC0+cF9mbGFncyA9IGJ5dGVf
Z2V0IChleHRlcm5hbC0+cF9mbGFncywgc2l6ZW9mIChleHRlcm5hbC0+cF9mbGFncykpOwogICAg
ICBpbnRlcm5hbC0+cF9vZmZzZXQgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBfb2Zmc2V0LCAtOCk7
CiAgICAgIGludGVybmFsLT5wX3ZhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3ZhZGRyLCAt
OCk7CiAgICAgIGludGVybmFsLT5wX3BhZGRyID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5wX3BhZGRy
LCAtOCk7CiAgICAgIGludGVybmFsLT5wX2ZpbGVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cF9m
aWxlc3osIC04KTsKICAgICAgaW50ZXJuYWwtPnBfbWVtc3ogPSBieXRlX2dldCAoZXh0ZXJuYWwt
PnBfbWVtc3osIC04KTsKICAgICAgaW50ZXJuYWwtPnBfYWxpZ24gPSBieXRlX2dldCAoZXh0ZXJu
YWwtPnBfYWxpZ24sIC04KTsKICAgIH0KCiAgZnJlZSAocGhkcnMpOwoKICByZXR1cm4gMTsKfQoK
CgpzdGF0aWMgaW50CnByb2Nlc3NfcHJvZ3JhbV9oZWFkZXJzIChmaWxlKQogICAgIEZJTEUgKmZp
bGU7CnsKICBFbGZfSW50ZXJuYWxfUGhkciAqcHJvZ3JhbV9oZWFkZXJzOwogIEVsZl9JbnRlcm5h
bF9QaGRyICpzZWdtZW50OwogIHVuc2lnbmVkIGludCBpOwoKICBpZiAoZWxmX2hlYWRlci5lX3Bo
bnVtID09IDApCiAgICB7CiAgICAgIGlmIChkb19zZWdtZW50cykKICAgICAgICBwcmludGYgKCgi
XG5UaGVyZSBhcmUgbm8gcHJvZ3JhbSBoZWFkZXJzIGluIHRoaXMgZmlsZS5cbiIpKTsKICAgICAg
cmV0dXJuIDA7CiAgICB9CgogIGlmIChkb19zZWdtZW50cyAmJiAhZG9faGVhZGVyKQogICAgewog
ICAgICBwcmludGYgKCgiXG5FbGYgZmlsZSB0eXBlIGlzICVzXG4iKSwgZ2V0X2ZpbGVfdHlwZSAo
ZWxmX2hlYWRlci5lX3R5cGUpKTsKICAgICAgcHJpbnRmICgoIkVudHJ5IHBvaW50ICIpKTsKICAg
ICAgcHJpbnRfdm1hICgoYmZkX3ZtYSkgZWxmX2hlYWRlci5lX2VudHJ5LCBQUkVGSVhfSEVYKTsK
ICAgICAgcHJpbnRmICgoIlxuVGhlcmUgYXJlICVkIHByb2dyYW0gaGVhZGVycywgc3RhcnRpbmcg
YXQgb2Zmc2V0ICIpLAogICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9waG51bSk7CiAgICAgIHBy
aW50X3ZtYSAoKGJmZF92bWEpIGVsZl9oZWFkZXIuZV9waG9mZiwgREVDKTsKICAgICAgcHJpbnRm
ICgiXG4iKTsKICAgIH0KCiAgcHJvZ3JhbV9oZWFkZXJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICop
IG1hbGxvYwogICAgKGVsZl9oZWFkZXIuZV9waG51bSAqIHNpemVvZiAoRWxmX0ludGVybmFsX1Bo
ZHIpKTsKCiAgaWYgKHByb2dyYW1faGVhZGVycyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAg
ZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYg
KGlzXzMyYml0X2VsZikKICAgIGkgPSBnZXRfMzJiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBw
cm9ncmFtX2hlYWRlcnMpOwogIGVsc2UKICAgIGkgPSBnZXRfNjRiaXRfcHJvZ3JhbV9oZWFkZXJz
IChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwoKICBpZiAoaSA9PSAwKQogICAgewogICAgICBmcmVl
IChwcm9ncmFtX2hlYWRlcnMpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYgKGRvX3NlZ21l
bnRzKQogICAgewogICAgICBpZiAoZWxmX2hlYWRlci5lX3BobnVtID4gMSkKICAgICAgICBwcmlu
dGYgKCgiXG5Qcm9ncmFtIEhlYWRlcnM6XG4iKSk7CiAgICAgIGVsc2UKICAgICAgICBwcmludGYg
KCgiXG5Qcm9ncmFtIEhlYWRlcnM6XG4iKSk7CgogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAg
ICAgIHByaW50ZgogICAgICAgICAgKCgiICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRk
ciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnblxuIikpOwogICAgICBlbHNl
IGlmIChkb193aWRlKQogICAgICAgIHByaW50ZgogICAgICAgICAgKCgiICBUeXBlICAgICAgICAg
ICBPZmZzZXQgICBWaXJ0QWRkciAgICAgICAgICAgUGh5c0FkZHIgICAgICAgICAgIEZpbGVTaXog
IE1lbVNpeiAgIEZsZyBBbGlnblxuIikpOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAg
cHJpbnRmCiAgICAgICAgICAgICgoIiAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgICAgICAgICAg
IFZpcnRBZGRyICAgICAgICAgICBQaHlzQWRkclxuIikpOwogICAgICAgICAgcHJpbnRmCiAgICAg
ICAgICAgICgoIiAgICAgICAgICAgICAgICAgRmlsZVNpeiAgICAgICAgICAgIE1lbVNpeiAgICAg
ICAgICAgICAgRmxhZ3MgIEFsaWduXG4iKSk7CiAgICAgICAgfQogICAgfQoKICBsb2FkYWRkciA9
IC0xOwogIGR5bmFtaWNfYWRkciA9IDA7CiAgZHluYW1pY19zaXplID0gMDsKCiAgZm9yIChpID0g
MCwgc2VnbWVudCA9IHByb2dyYW1faGVhZGVyczsKICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfcGhu
dW07CiAgICAgICBpKyssIHNlZ21lbnQrKykKICAgIHsKICAgICAgaWYgKGRvX3NlZ21lbnRzKQog
ICAgICAgIHsKICAgICAgICAgIHByaW50ZiAoIiAgJS0xNC4xNHMgIiwgZ2V0X3NlZ21lbnRfdHlw
ZSAoc2VnbWVudC0+cF90eXBlKSk7CgogICAgICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIHByaW50ZiAoIjB4JTYuNmx4ICIsICh1bnNpZ25lZCBsb25n
KSBzZWdtZW50LT5wX29mZnNldCk7CiAgICAgICAgICAgICAgcHJpbnRmICgiMHglOC44bHggIiwg
KHVuc2lnbmVkIGxvbmcpIHNlZ21lbnQtPnBfdmFkZHIpOwogICAgICAgICAgICAgIHByaW50ZiAo
IjB4JTguOGx4ICIsICh1bnNpZ25lZCBsb25nKSBzZWdtZW50LT5wX3BhZGRyKTsKICAgICAgICAg
ICAgICBwcmludGYgKCIweCU1LjVseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9maWxl
c3opOwogICAgICAgICAgICAgIHByaW50ZiAoIjB4JTUuNWx4ICIsICh1bnNpZ25lZCBsb25nKSBz
ZWdtZW50LT5wX21lbXN6KTsKICAgICAgICAgICAgICBwcmludGYgKCIlYyVjJWMgIiwKICAgICAg
ICAgICAgICAgICAgICAgIChzZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMikgPyAnUicgOiAnICcp
LAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3MgJiAoMSA8PCAxKSA/ICdX
JyA6ICcgJyksCiAgICAgICAgICAgICAgICAgICAgICAoc2VnbWVudC0+cF9mbGFncyAmICgxIDw8
IDApID8gJ0UnIDogJyAnKSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiJSNseCIsICh1bnNpZ25l
ZCBsb25nKSBzZWdtZW50LT5wX2FsaWduKTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZSBp
ZiAoZG9fd2lkZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
Zykgc2VnbWVudC0+cF9vZmZzZXQgPT0gc2VnbWVudC0+cF9vZmZzZXQpCiAgICAgICAgICAgICAg
ICBwcmludGYgKCIweCU2LjZseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9vZmZzZXQp
OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
cHJpbnRfdm1hIChzZWdtZW50LT5wX29mZnNldCwgRlVMTF9IRVgpOwogICAgICAgICAgICAgICAg
ICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludF92
bWEgKHNlZ21lbnQtPnBfdmFkZHIsIEZVTExfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgn
ICcpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAoc2VnbWVudC0+cF9wYWRkciwgRlVMTF9IRVgp
OwogICAgICAgICAgICAgIHB1dGNoYXIgKCcgJyk7CgogICAgICAgICAgICAgIGlmICgodW5zaWdu
ZWQgbG9uZykgc2VnbWVudC0+cF9maWxlc3ogPT0gc2VnbWVudC0+cF9maWxlc3opCiAgICAgICAg
ICAgICAgICBwcmludGYgKCIweCU2LjZseCAiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9m
aWxlc3opOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgcHJpbnRfdm1hIChzZWdtZW50LT5wX2ZpbGVzeiwgRlVMTF9IRVgpOwogICAgICAgICAg
ICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBp
ZiAoKHVuc2lnbmVkIGxvbmcpIHNlZ21lbnQtPnBfbWVtc3ogPT0gc2VnbWVudC0+cF9tZW1zeikK
ICAgICAgICAgICAgICAgIHByaW50ZiAoIjB4JTYuNmx4IiwgKHVuc2lnbmVkIGxvbmcpIHNlZ21l
bnQtPnBfbWVtc3opOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgcHJpbnRfdm1hIChzZWdtZW50LT5wX29mZnNldCwgRlVMTF9IRVgpOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludGYgKCIgJWMlYyVjICIsCiAgICAgICAg
ICAgICAgICAgICAgICAoc2VnbWVudC0+cF9mbGFncyAmICgxIDw8IDIpID8gJ1InIDogJyAnKSwK
ICAgICAgICAgICAgICAgICAgICAgIChzZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMSkgPyAnVycg
OiAnICcpLAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3MgJiAoMSA8PCAw
KSA/ICdFJyA6ICcgJykpOwoKICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHNlZ21l
bnQtPnBfYWxpZ24gPT0gc2VnbWVudC0+cF9hbGlnbikKICAgICAgICAgICAgICAgIHByaW50ZiAo
IiUjbHgiLCAodW5zaWduZWQgbG9uZykgc2VnbWVudC0+cF9hbGlnbik7CiAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21l
bnQtPnBfYWxpZ24sIFBSRUZJWF9IRVgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludF92bWEgKHNl
Z21lbnQtPnBfb2Zmc2V0LCBGVUxMX0hFWCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsK
ICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21lbnQtPnBfdmFkZHIsIEZVTExfSEVYKTsKICAg
ICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAoc2VnbWVu
dC0+cF9wYWRkciwgRlVMTF9IRVgpOwogICAgICAgICAgICAgIHByaW50ZiAoIlxuICAgICAgICAg
ICAgICAgICAiKTsKICAgICAgICAgICAgICBwcmludF92bWEgKHNlZ21lbnQtPnBfZmlsZXN6LCBG
VUxMX0hFWCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgICBwcmlu
dF92bWEgKHNlZ21lbnQtPnBfbWVtc3osIEZVTExfSEVYKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgICVjJWMlYyAgICAiLAogICAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnQtPnBfZmxhZ3Mg
JiAoMSA8PCAyKSA/ICdSJyA6ICcgJyksCiAgICAgICAgICAgICAgICAgICAgICAoc2VnbWVudC0+
cF9mbGFncyAmICgxIDw8IDEpID8gJ1cnIDogJyAnKSwKICAgICAgICAgICAgICAgICAgICAgIChz
ZWdtZW50LT5wX2ZsYWdzICYgKDEgPDwgMCkgPyAnRScgOiAnICcpKTsKICAgICAgICAgICAgICBw
cmludF92bWEgKHNlZ21lbnQtPnBfYWxpZ24sIEhFWCk7CiAgICAgICAgICAgIH0KICAgICAgICB9
CgogICAgICBzd2l0Y2ggKHNlZ21lbnQtPnBfdHlwZSkKICAgICAgICB7CiAgICAgICAgY2FzZSAx
OgogICAgICAgICAgaWYgKGxvYWRhZGRyID09IC0xKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBhbGlnbl9tYXNrID0gLXNlZ21lbnQtPnBfYWxpZ247CgogICAgICAg
ICAgICAgIGlmIChhbGlnbl9tYXNrID09IDApCiAgICAgICAgICAgICAgICAtLWFsaWduX21hc2s7
CiAgICAgICAgICAgICAgbG9hZGFkZHIgPSAoKHNlZ21lbnQtPnBfdmFkZHIgJiBhbGlnbl9tYXNr
KQogICAgICAgICAgICAgICAgICAgICAgICAgIC0gKHNlZ21lbnQtPnBfb2Zmc2V0ICYgYWxpZ25f
bWFzaykpOwogICAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgog
ICAgICAgICAgaWYgKGR5bmFtaWNfYWRkcikKICAgICAgICAgICAgZXJyb3IgKCgibW9yZSB0aGFu
IG9uZSBkeW5hbWljIHNlZ21lbnRcbiIpKTsKCiAgICAgICAgICBkeW5hbWljX2FkZHIgPSBzZWdt
ZW50LT5wX29mZnNldDsKICAgICAgICAgIGR5bmFtaWNfc2l6ZSA9IHNlZ21lbnQtPnBfZmlsZXN6
OwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgIGlmIChmc2VlayAo
ZmlsZSwgKGxvbmcpIHNlZ21lbnQtPnBfb2Zmc2V0LCAwKSkKICAgICAgICAgICAgZXJyb3IgKCgi
VW5hYmxlIHRvIGZpbmQgcHJvZ3JhbSBpbnRlcnByZXRlciBuYW1lXG4iKSk7CiAgICAgICAgICBl
bHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcm9ncmFtX2ludGVycHJldGVyWzBdID0g
MDsKICAgICAgICAgICAgICBmc2NhbmYgKGZpbGUsICIlNjNzIiwgcHJvZ3JhbV9pbnRlcnByZXRl
cik7CgogICAgICAgICAgICAgIGlmIChkb19zZWdtZW50cykKICAgICAgICAgICAgICAgIHByaW50
ZiAoKCJcbiAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6ICVzXSIpLAogICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1faW50ZXJwcmV0ZXIpOwogICAgICAgICAgICB9CiAgICAg
ICAgICBicmVhazsKICAgICAgICB9CgogICAgICBpZiAoZG9fc2VnbWVudHMpCiAgICAgICAgX0lP
X3B1dGMgKCdcbicsIHN0ZG91dCk7CiAgICB9CgogIGlmIChsb2FkYWRkciA9PSAtMSkKICAgIHsK
CiAgICAgIGxvYWRhZGRyID0gMDsKICAgIH0KCiAgaWYgKGRvX3NlZ21lbnRzICYmIHNlY3Rpb25f
aGVhZGVycyAhPSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgcHJpbnRmICgoIlxuIFNlY3Rpb24g
dG8gU2VnbWVudCBtYXBwaW5nOlxuIikpOwogICAgICBwcmludGYgKCgiICBTZWdtZW50IFNlY3Rp
b25zLi4uXG4iKSk7CgogICAgICAoKHZvaWQpICgoc3RyaW5nX3RhYmxlICE9ICgodm9pZCAqKTAp
KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoInN0cmluZ190YWJsZSAhPSAoKHZvaWQgKikwKSIsICJy
ZWFkZWxmLmMiLCAzMjUzLCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpKTsKCiAgICAgIGZvciAo
aSA9IDA7IGkgPCBlbGZfaGVhZGVyLmVfcGhudW07IGkrKykKICAgICAgICB7CiAgICAgICAgICB1
bnNpZ25lZCBpbnQgajsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwoKICAg
ICAgICAgIHNlZ21lbnQgPSBwcm9ncmFtX2hlYWRlcnMgKyBpOwogICAgICAgICAgc2VjdGlvbiA9
IHNlY3Rpb25faGVhZGVyczsKCiAgICAgICAgICBwcmludGYgKCIgICAlMi4yZCAgICAgIiwgaSk7
CgogICAgICAgICAgZm9yIChqID0gMTsgaiA8IGVsZl9oZWFkZXIuZV9zaG51bTsgaisrLCBzZWN0
aW9uKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoc2VjdGlvbi0+c2hfc2l6ZSA+
IDAKCgogICAgICAgICAgICAgICAgICAmJiAoc2VjdGlvbi0+c2hfZmxhZ3MgJiAoMSA8PCAxKQog
ICAgICAgICAgICAgICAgICAgICAgPyAoc2VjdGlvbi0+c2hfYWRkciA+PSBzZWdtZW50LT5wX3Zh
ZGRyCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzZWN0aW9uLT5zaF9hZGRyICsgc2VjdGlv
bi0+c2hfc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgPD0gc2VnbWVudC0+cF92YWRkciAr
IHNlZ21lbnQtPnBfbWVtc3opCiAgICAgICAgICAgICAgICAgICAgICA6ICgoYmZkX3ZtYSkgc2Vj
dGlvbi0+c2hfb2Zmc2V0ID49IHNlZ21lbnQtPnBfb2Zmc2V0CiAgICAgICAgICAgICAgICAgICAg
ICAgICAmJiAoc2VjdGlvbi0+c2hfb2Zmc2V0ICsgc2VjdGlvbi0+c2hfc2l6ZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw9IHNlZ21lbnQtPnBfb2Zmc2V0ICsgc2VnbWVudC0+cF9maWxl
c3opKSkpCiAgICAgICAgICAgICAgICBwcmludGYgKCIlcyAiLCAoKHNlY3Rpb24pID09ICgodm9p
ZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9s
ZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkp
KTsKICAgICAgICAgICAgfQoKICAgICAgICAgIF9JT19wdXRjICgnXG4nLCBzdGRvdXQpOwogICAg
ICAgIH0KICAgIH0KCiAgZnJlZSAocHJvZ3JhbV9oZWFkZXJzKTsKCiAgcmV0dXJuIDE7Cn0KCgpz
dGF0aWMgaW50CmdldF8zMmJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIG51bSkKICAgICBGSUxF
ICpmaWxlOwogICAgIHVuc2lnbmVkIGludCBudW07CnsKICBFbGYzMl9FeHRlcm5hbF9TaGRyICpz
aGRyczsKICBFbGZfSW50ZXJuYWxfU2hkciAqaW50ZXJuYWw7CiAgdW5zaWduZWQgaW50IGk7Cgog
IHNoZHJzID0gKChFbGYzMl9FeHRlcm5hbF9TaGRyICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgo
dm9pZCAqKTApLCBmaWxlLCBlbGZfaGVhZGVyLmVfc2hvZmYsCiAgICAgICAgICAgICAgICAgICAg
IGVsZl9oZWFkZXIuZV9zaGVudHNpemUgKiBudW0sCiAgICAgICAgICAgICAgICAgICAgICgic2Vj
dGlvbiBoZWFkZXJzIikpKTsKICBpZiAoIXNoZHJzKQogICAgcmV0dXJuIDA7CgogIHNlY3Rpb25f
aGVhZGVycyA9ICgoRWxmX0ludGVybmFsX1NoZHIgKikKICAgICAgICAgICAgICAgICAgICAgbWFs
bG9jIChudW0gKiBzaXplb2YgKEVsZl9JbnRlcm5hbF9TaGRyKSkpOwoKICBpZiAoc2VjdGlvbl9o
ZWFkZXJzID09ICgodm9pZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
XG4iKSk7CiAgICAgIHJldHVybiAwOwogICAgfQoKICBmb3IgKGkgPSAwLCBpbnRlcm5hbCA9IHNl
Y3Rpb25faGVhZGVyczsKICAgICAgIGkgPCBudW07CiAgICAgICBpKyssIGludGVybmFsKyspCiAg
ICB7CiAgICAgIGludGVybmFsLT5zaF9uYW1lID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX25hbWUs
IHNpemVvZiAoc2hkcnNbaV0uc2hfbmFtZSkpOwogICAgICBpbnRlcm5hbC0+c2hfdHlwZSA9IGJ5
dGVfZ2V0IChzaGRyc1tpXS5zaF90eXBlLCBzaXplb2YgKHNoZHJzW2ldLnNoX3R5cGUpKTsKICAg
ICAgaW50ZXJuYWwtPnNoX2ZsYWdzID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2ZsYWdzLCBzaXpl
b2YgKHNoZHJzW2ldLnNoX2ZsYWdzKSk7CiAgICAgIGludGVybmFsLT5zaF9hZGRyID0gYnl0ZV9n
ZXQgKHNoZHJzW2ldLnNoX2FkZHIsIHNpemVvZiAoc2hkcnNbaV0uc2hfYWRkcikpOwogICAgICBp
bnRlcm5hbC0+c2hfb2Zmc2V0ID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX29mZnNldCwgc2l6ZW9m
IChzaGRyc1tpXS5zaF9vZmZzZXQpKTsKICAgICAgaW50ZXJuYWwtPnNoX3NpemUgPSBieXRlX2dl
dCAoc2hkcnNbaV0uc2hfc2l6ZSwgc2l6ZW9mIChzaGRyc1tpXS5zaF9zaXplKSk7CiAgICAgIGlu
dGVybmFsLT5zaF9saW5rID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2xpbmssIHNpemVvZiAoc2hk
cnNbaV0uc2hfbGluaykpOwogICAgICBpbnRlcm5hbC0+c2hfaW5mbyA9IGJ5dGVfZ2V0IChzaGRy
c1tpXS5zaF9pbmZvLCBzaXplb2YgKHNoZHJzW2ldLnNoX2luZm8pKTsKICAgICAgaW50ZXJuYWwt
PnNoX2FkZHJhbGlnbiA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9hZGRyYWxpZ24sIHNpemVvZiAo
c2hkcnNbaV0uc2hfYWRkcmFsaWduKSk7CiAgICAgIGludGVybmFsLT5zaF9lbnRzaXplID0gYnl0
ZV9nZXQgKHNoZHJzW2ldLnNoX2VudHNpemUsIHNpemVvZiAoc2hkcnNbaV0uc2hfZW50c2l6ZSkp
OwogICAgfQoKICBmcmVlIChzaGRycyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50CmdldF82
NGJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIG51bSkKICAgICBGSUxFICpmaWxlOwogICAgIHVu
c2lnbmVkIGludCBudW07CnsKICBFbGY2NF9FeHRlcm5hbF9TaGRyICpzaGRyczsKICBFbGZfSW50
ZXJuYWxfU2hkciAqaW50ZXJuYWw7CiAgdW5zaWduZWQgaW50IGk7CgogIHNoZHJzID0gKChFbGY2
NF9FeHRlcm5hbF9TaGRyICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxl
LCBlbGZfaGVhZGVyLmVfc2hvZmYsCiAgICAgICAgICAgICAgICAgICAgIGVsZl9oZWFkZXIuZV9z
aGVudHNpemUgKiBudW0sCiAgICAgICAgICAgICAgICAgICAgICgic2VjdGlvbiBoZWFkZXJzIikp
KTsKICBpZiAoIXNoZHJzKQogICAgcmV0dXJuIDA7CgogIHNlY3Rpb25faGVhZGVycyA9ICgoRWxm
X0ludGVybmFsX1NoZHIgKikKICAgICAgICAgICAgICAgICAgICAgbWFsbG9jIChudW0gKiBzaXpl
b2YgKEVsZl9JbnRlcm5hbF9TaGRyKSkpOwoKICBpZiAoc2VjdGlvbl9oZWFkZXJzID09ICgodm9p
ZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgIHJl
dHVybiAwOwogICAgfQoKICBmb3IgKGkgPSAwLCBpbnRlcm5hbCA9IHNlY3Rpb25faGVhZGVyczsK
ICAgICAgIGkgPCBudW07CiAgICAgICBpKyssIGludGVybmFsKyspCiAgICB7CiAgICAgIGludGVy
bmFsLT5zaF9uYW1lID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX25hbWUsIHNpemVvZiAoc2hkcnNb
aV0uc2hfbmFtZSkpOwogICAgICBpbnRlcm5hbC0+c2hfdHlwZSA9IGJ5dGVfZ2V0IChzaGRyc1tp
XS5zaF90eXBlLCBzaXplb2YgKHNoZHJzW2ldLnNoX3R5cGUpKTsKICAgICAgaW50ZXJuYWwtPnNo
X2ZsYWdzID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2ZsYWdzLCAtOCk7CiAgICAgIGludGVybmFs
LT5zaF9hZGRyID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2FkZHIsIC04KTsKICAgICAgaW50ZXJu
YWwtPnNoX3NpemUgPSBieXRlX2dldCAoc2hkcnNbaV0uc2hfc2l6ZSwgLTgpOwogICAgICBpbnRl
cm5hbC0+c2hfZW50c2l6ZSA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9lbnRzaXplLCAtOCk7CiAg
ICAgIGludGVybmFsLT5zaF9saW5rID0gYnl0ZV9nZXQgKHNoZHJzW2ldLnNoX2xpbmssIHNpemVv
ZiAoc2hkcnNbaV0uc2hfbGluaykpOwogICAgICBpbnRlcm5hbC0+c2hfaW5mbyA9IGJ5dGVfZ2V0
IChzaGRyc1tpXS5zaF9pbmZvLCBzaXplb2YgKHNoZHJzW2ldLnNoX2luZm8pKTsKICAgICAgaW50
ZXJuYWwtPnNoX29mZnNldCA9IGJ5dGVfZ2V0IChzaGRyc1tpXS5zaF9vZmZzZXQsIHNpemVvZiAo
c2hkcnNbaV0uc2hfb2Zmc2V0KSk7CiAgICAgIGludGVybmFsLT5zaF9hZGRyYWxpZ24gPSBieXRl
X2dldCAoc2hkcnNbaV0uc2hfYWRkcmFsaWduLCBzaXplb2YgKHNoZHJzW2ldLnNoX2FkZHJhbGln
bikpOwogICAgfQoKICBmcmVlIChzaGRycyk7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgRWxmX0lu
dGVybmFsX1N5bSAqCmdldF8zMmJpdF9lbGZfc3ltYm9scyAoZmlsZSwgc2VjdGlvbikKICAgICBG
SUxFICpmaWxlOwogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwp7CiAgdW5zaWduZWQg
bG9uZyBudW1iZXI7CiAgRWxmMzJfRXh0ZXJuYWxfU3ltICplc3ltczsKICBFbGZfRXh0ZXJuYWxf
U3ltX1NobmR4ICpzaG5keDsKICBFbGZfSW50ZXJuYWxfU3ltICppc3ltczsKICBFbGZfSW50ZXJu
YWxfU3ltICpwc3ltOwogIHVuc2lnbmVkIGludCBqOwoKICBlc3ltcyA9ICgoRWxmMzJfRXh0ZXJu
YWxfU3ltICopCiAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9u
LT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24tPnNoX3NpemUsICgic3lt
Ym9scyIpKSk7CiAgaWYgKCFlc3ltcykKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgc2huZHgg
PSAoKHZvaWQgKikwKTsKICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSAoKHZvaWQgKikwKQogICAg
ICAmJiAoc3ltdGFiX3NobmR4X2hkci0+c2hfbGluawogICAgICAgICAgPT0gKHVuc2lnbmVkIGxv
bmcpICgoc2VjdGlvbiAtIHNlY3Rpb25faGVhZGVycykgPCAweEZGMDAgPyAoc2VjdGlvbiAtIHNl
Y3Rpb25faGVhZGVycykgOiAoc2VjdGlvbiAtIHNlY3Rpb25faGVhZGVycykgKyAoMHhGRkZGICsg
MSAtIDB4RkYwMCkpKSkKICAgIHsKICAgICAgc2huZHggPSAoKEVsZl9FeHRlcm5hbF9TeW1fU2hu
ZHggKikKICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzeW10YWJf
c2huZHhfaGRyLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzeW10YWJfc2hu
ZHhfaGRyLT5zaF9zaXplLCAoInN5bXRhYiBzaG5keCIpKSk7CiAgICAgIGlmICghc2huZHgpCiAg
ICAgICAgewogICAgICAgICAgZnJlZSAoZXN5bXMpOwogICAgICAgICAgcmV0dXJuICgodm9pZCAq
KTApOwogICAgICAgIH0KICAgIH0KCiAgbnVtYmVyID0gc2VjdGlvbi0+c2hfc2l6ZSAvIHNlY3Rp
b24tPnNoX2VudHNpemU7CiAgaXN5bXMgPSAoRWxmX0ludGVybmFsX1N5bSAqKSBtYWxsb2MgKG51
bWJlciAqIHNpemVvZiAoRWxmX0ludGVybmFsX1N5bSkpOwoKICBpZiAoaXN5bXMgPT0gKCh2b2lk
ICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnlcbiIpKTsKICAgICAgaWYg
KHNobmR4KQogICAgICAgIGZyZWUgKHNobmR4KTsKICAgICAgZnJlZSAoZXN5bXMpOwogICAgICBy
ZXR1cm4gKCh2b2lkICopMCk7CiAgICB9CgogIGZvciAoaiA9IDAsIHBzeW0gPSBpc3ltczsKICAg
ICAgIGogPCBudW1iZXI7CiAgICAgICBqKyssIHBzeW0rKykKICAgIHsKICAgICAgcHN5bS0+c3Rf
bmFtZSA9IGJ5dGVfZ2V0IChlc3ltc1tqXS5zdF9uYW1lLCBzaXplb2YgKGVzeW1zW2pdLnN0X25h
bWUpKTsKICAgICAgcHN5bS0+c3RfdmFsdWUgPSBieXRlX2dldCAoZXN5bXNbal0uc3RfdmFsdWUs
IHNpemVvZiAoZXN5bXNbal0uc3RfdmFsdWUpKTsKICAgICAgcHN5bS0+c3Rfc2l6ZSA9IGJ5dGVf
Z2V0IChlc3ltc1tqXS5zdF9zaXplLCBzaXplb2YgKGVzeW1zW2pdLnN0X3NpemUpKTsKICAgICAg
cHN5bS0+c3Rfc2huZHggPSBieXRlX2dldCAoZXN5bXNbal0uc3Rfc2huZHgsIHNpemVvZiAoZXN5
bXNbal0uc3Rfc2huZHgpKTsKICAgICAgaWYgKHBzeW0tPnN0X3NobmR4ID09IDB4RkZGRiAmJiBz
aG5keCAhPSAoKHZvaWQgKikwKSkKICAgICAgICBwc3ltLT5zdF9zaG5keAogICAgICAgICAgPSBi
eXRlX2dldCAoKHVuc2lnbmVkIGNoYXIgKikgJnNobmR4W2pdLCBzaXplb2YgKHNobmR4W2pdKSk7
CiAgICAgIHBzeW0tPnN0X2luZm8gPSBieXRlX2dldCAoZXN5bXNbal0uc3RfaW5mbywgc2l6ZW9m
IChlc3ltc1tqXS5zdF9pbmZvKSk7CiAgICAgIHBzeW0tPnN0X290aGVyID0gYnl0ZV9nZXQgKGVz
eW1zW2pdLnN0X290aGVyLCBzaXplb2YgKGVzeW1zW2pdLnN0X290aGVyKSk7CiAgICB9CgogIGlm
IChzaG5keCkKICAgIGZyZWUgKHNobmR4KTsKICBmcmVlIChlc3ltcyk7CgogIHJldHVybiBpc3lt
czsKfQoKc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKgpnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZp
bGUsIHNlY3Rpb24pCiAgICAgRklMRSAqZmlsZTsKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2Vj
dGlvbjsKewogIHVuc2lnbmVkIGxvbmcgbnVtYmVyOwogIEVsZjY0X0V4dGVybmFsX1N5bSAqZXN5
bXM7CiAgRWxmX0V4dGVybmFsX1N5bV9TaG5keCAqc2huZHg7CiAgRWxmX0ludGVybmFsX1N5bSAq
aXN5bXM7CiAgRWxmX0ludGVybmFsX1N5bSAqcHN5bTsKICB1bnNpZ25lZCBpbnQgajsKCiAgZXN5
bXMgPSAoKEVsZjY0X0V4dGVybmFsX1N5bSAqKQogICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQg
KikwKSwgZmlsZSwgc2VjdGlvbi0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICBzZWN0
aW9uLT5zaF9zaXplLCAoInN5bWJvbHMiKSkpOwogIGlmICghZXN5bXMpCiAgICByZXR1cm4gKCh2
b2lkICopMCk7CgogIHNobmR4ID0gKCh2b2lkICopMCk7CiAgaWYgKHN5bXRhYl9zaG5keF9oZHIg
IT0gKCh2b2lkICopMCkKICAgICAgJiYgKHN5bXRhYl9zaG5keF9oZHItPnNoX2xpbmsKICAgICAg
ICAgID09ICh1bnNpZ25lZCBsb25nKSAoKHNlY3Rpb24gLSBzZWN0aW9uX2hlYWRlcnMpIDwgMHhG
RjAwID8gKHNlY3Rpb24gLSBzZWN0aW9uX2hlYWRlcnMpIDogKHNlY3Rpb24gLSBzZWN0aW9uX2hl
YWRlcnMpICsgKDB4RkZGRiArIDEgLSAweEZGMDApKSkpCiAgICB7CiAgICAgIHNobmR4ID0gKChF
bGZfRXh0ZXJuYWxfU3ltX1NobmR4ICopCiAgICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQg
KikwKSwgZmlsZSwgc3ltdGFiX3NobmR4X2hkci0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfc2l6ZSwgKCJzeW10YWIgc2huZHgiKSkpOwog
ICAgICBpZiAoIXNobmR4KQogICAgICAgIHsKICAgICAgICAgIGZyZWUgKGVzeW1zKTsKICAgICAg
ICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICB9CgogIG51bWJlciA9IHNlY3Rp
b24tPnNoX3NpemUgLyBzZWN0aW9uLT5zaF9lbnRzaXplOwogIGlzeW1zID0gKEVsZl9JbnRlcm5h
bF9TeW0gKikgbWFsbG9jIChudW1iZXIgKiBzaXplb2YgKEVsZl9JbnRlcm5hbF9TeW0pKTsKCiAg
aWYgKGlzeW1zID09ICgodm9pZCAqKTApKQogICAgewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVt
b3J5XG4iKSk7CiAgICAgIGlmIChzaG5keCkKICAgICAgICBmcmVlIChzaG5keCk7CiAgICAgIGZy
ZWUgKGVzeW1zKTsKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICBmb3IgKGogPSAw
LCBwc3ltID0gaXN5bXM7CiAgICAgICBqIDwgbnVtYmVyOwogICAgICAgaisrLCBwc3ltKyspCiAg
ICB7CiAgICAgIHBzeW0tPnN0X25hbWUgPSBieXRlX2dldCAoZXN5bXNbal0uc3RfbmFtZSwgc2l6
ZW9mIChlc3ltc1tqXS5zdF9uYW1lKSk7CiAgICAgIHBzeW0tPnN0X2luZm8gPSBieXRlX2dldCAo
ZXN5bXNbal0uc3RfaW5mbywgc2l6ZW9mIChlc3ltc1tqXS5zdF9pbmZvKSk7CiAgICAgIHBzeW0t
PnN0X290aGVyID0gYnl0ZV9nZXQgKGVzeW1zW2pdLnN0X290aGVyLCBzaXplb2YgKGVzeW1zW2pd
LnN0X290aGVyKSk7CiAgICAgIHBzeW0tPnN0X3NobmR4ID0gYnl0ZV9nZXQgKGVzeW1zW2pdLnN0
X3NobmR4LCBzaXplb2YgKGVzeW1zW2pdLnN0X3NobmR4KSk7CiAgICAgIGlmIChwc3ltLT5zdF9z
aG5keCA9PSAweEZGRkYgJiYgc2huZHggIT0gKCh2b2lkICopMCkpCiAgICAgICAgcHN5bS0+c3Rf
c2huZHgKICAgICAgICAgID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopICZzaG5keFtqXSwg
c2l6ZW9mIChzaG5keFtqXSkpOwogICAgICBwc3ltLT5zdF92YWx1ZSA9IGJ5dGVfZ2V0IChlc3lt
c1tqXS5zdF92YWx1ZSwgLTgpOwogICAgICBwc3ltLT5zdF9zaXplID0gYnl0ZV9nZXQgKGVzeW1z
W2pdLnN0X3NpemUsIC04KTsKICAgIH0KCiAgaWYgKHNobmR4KQogICAgZnJlZSAoc2huZHgpOwog
IGZyZWUgKGVzeW1zKTsKCiAgcmV0dXJuIGlzeW1zOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdl
dF9lbGZfc2VjdGlvbl9mbGFncyAoc2hfZmxhZ3MpCiAgICAgYmZkX3ZtYSBzaF9mbGFnczsKewog
IHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICAqYnVmZiA9IDA7CgogIHdoaWxlIChzaF9mbGFncykK
ICAgIHsKICAgICAgYmZkX3ZtYSBmbGFnOwoKICAgICAgZmxhZyA9IHNoX2ZsYWdzICYgLSBzaF9m
bGFnczsKICAgICAgc2hfZmxhZ3MgJj0gfiBmbGFnOwoKICAgICAgc3dpdGNoIChmbGFnKQogICAg
ICAgIHsKICAgICAgICBjYXNlICgxIDw8IDApOiBzdHJjYXQgKGJ1ZmYsICJXIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgKDEgPDwgMSk6IHN0cmNhdCAoYnVmZiwgIkEiKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSAoMSA8PCAyKTogc3RyY2F0IChidWZmLCAiWCIpOyBicmVhazsKICAgICAgICBjYXNlICgx
IDw8IDQpOiBzdHJjYXQgKGJ1ZmYsICJNIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgNSk6
IHN0cmNhdCAoYnVmZiwgIlMiKTsgYnJlYWs7CiAgICAgICAgY2FzZSAoMSA8PCA2KTogc3RyY2F0
IChidWZmLCAiSSIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8IDcpOiBzdHJjYXQgKGJ1ZmYs
ICJMIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgOCk6IHN0cmNhdCAoYnVmZiwgIk8iKTsg
YnJlYWs7CiAgICAgICAgY2FzZSAoMSA8PCA5KTogc3RyY2F0IChidWZmLCAiRyIpOyBicmVhazsK
ICAgICAgICBjYXNlICgxIDw8IDEwKTogc3RyY2F0IChidWZmLCAiVCIpOyBicmVhazsKCiAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgIGlmIChmbGFnICYgMHgwRkYwMDAwMCkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgIHN0cmNhdCAoYnVmZiwgIm8iKTsKICAgICAgICAgICAgICBzaF9mbGFn
cyAmPSB+IDB4MEZGMDAwMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGZsYWcg
JiAweEYwMDAwMDAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgc3RyY2F0IChidWZmLCAi
cCIpOwogICAgICAgICAgICAgIHNoX2ZsYWdzICY9IH4gMHhGMDAwMDAwMDsKICAgICAgICAgICAg
fQogICAgICAgICAgZWxzZQogICAgICAgICAgICBzdHJjYXQgKGJ1ZmYsICJ4Iik7CiAgICAgICAg
ICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHJldHVybiBidWZmOwp9CgpzdGF0aWMgaW50CnBy
b2Nlc3Nfc2VjdGlvbl9oZWFkZXJzIChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGZfSW50
ZXJuYWxfU2hkciAqc2VjdGlvbjsKICB1bnNpZ25lZCBpbnQgaTsKCiAgc2VjdGlvbl9oZWFkZXJz
ID0gKCh2b2lkICopMCk7CgogIGlmIChlbGZfaGVhZGVyLmVfc2hudW0gPT0gMCkKICAgIHsKICAg
ICAgaWYgKGRvX3NlY3Rpb25zKQogICAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyBzZWN0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CgogICAgICByZXR1cm4gMTsKICAgIH0KCiAgaWYgKGRv
X3NlY3Rpb25zICYmICFkb19oZWFkZXIpCiAgICBwcmludGYgKCgiVGhlcmUgYXJlICVkIHNlY3Rp
b24gaGVhZGVycywgc3RhcnRpbmcgYXQgb2Zmc2V0IDB4JWx4OlxuIiksCiAgICAgICAgICAgIGVs
Zl9oZWFkZXIuZV9zaG51bSwgKHVuc2lnbmVkIGxvbmcpIGVsZl9oZWFkZXIuZV9zaG9mZik7Cgog
IGlmIChpc18zMmJpdF9lbGYpCiAgICB7CiAgICAgIGlmICghIGdldF8zMmJpdF9zZWN0aW9uX2hl
YWRlcnMgKGZpbGUsIGVsZl9oZWFkZXIuZV9zaG51bSkpCiAgICAgICAgcmV0dXJuIDA7CiAgICB9
CiAgZWxzZSBpZiAoISBnZXRfNjRiaXRfc2VjdGlvbl9oZWFkZXJzIChmaWxlLCBlbGZfaGVhZGVy
LmVfc2hudW0pKQogICAgcmV0dXJuIDA7CgoKICBzZWN0aW9uID0gKHNlY3Rpb25faGVhZGVycyAr
ICgoZWxmX2hlYWRlci5lX3Noc3RybmR4KSA8IDB4RkYwMCA/IChlbGZfaGVhZGVyLmVfc2hzdHJu
ZHgpIDogKChlbGZfaGVhZGVyLmVfc2hzdHJuZHgpIDw9IDB4RkZGRiA/IDAgOiAoZWxmX2hlYWRl
ci5lX3Noc3RybmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKTsKCiAgaWYgKHNlY3Rpb24t
PnNoX3NpemUgIT0gMCkKICAgIHsKICAgICAgc3RyaW5nX3RhYmxlID0gKGNoYXIgKikgZ2V0X2Rh
dGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9zaXplLCAoInN0cmluZyB0YWJs
ZSIpKTsKCiAgICAgIHN0cmluZ190YWJsZV9sZW5ndGggPSBzZWN0aW9uLT5zaF9zaXplOwogICAg
fQoKCgogIGR5bmFtaWNfc3ltYm9scyA9ICgodm9pZCAqKTApOwogIGR5bmFtaWNfc3RyaW5ncyA9
ICgodm9pZCAqKTApOwogIGR5bmFtaWNfc3ltaW5mbyA9ICgodm9pZCAqKTApOwogIHN5bXRhYl9z
aG5keF9oZHIgPSAoKHZvaWQgKikwKTsKCiAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25f
aGVhZGVyczsKICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICBpKyssIHNlY3Rp
b24rKykKICAgIHsKICAgICAgY2hhciAqbmFtZSA9ICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSk7CgogICAg
ICBpZiAoc2VjdGlvbi0+c2hfdHlwZSA9PSAxMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoZHlu
YW1pY19zeW1ib2xzICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ZXJyb3IgKCgiRmlsZSBjb250YWlucyBtdWx0aXBsZSBkeW5hbWljIHN5bWJvbCB0YWJsZXNcbiIp
KTsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgIG51bV9k
eW5hbWljX3N5bXMgPSBzZWN0aW9uLT5zaF9zaXplIC8gc2VjdGlvbi0+c2hfZW50c2l6ZTsKICAg
ICAgICAgIGR5bmFtaWNfc3ltYm9scyA9IChpc18zMmJpdF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5
bWJvbHMgKGZpbGUsIHNlY3Rpb24pIDogZ2V0XzY0Yml0X2VsZl9zeW1ib2xzIChmaWxlLCBzZWN0
aW9uKSk7CiAgICAgICAgfQogICAgICBlbHNlIGlmIChzZWN0aW9uLT5zaF90eXBlID09IDMKICAg
ICAgICAgICAgICAgJiYgX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LmR5bnN0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVu
ICgiLmR5bnN0ciIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKCgiLmR5bnN0ciIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKCIuZHluc3RyIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19j
b25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVu
IChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5keW5zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5keW5zdHIiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiLmR5bnN0ciIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikoIi5keW5zdHIiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi5keW5zdHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
bmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5keW5zdHIiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHlu
c3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIuZHluc3RyIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5keW5zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5keW5zdHIiKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgiLmR5bnN0ciIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5k
eW5zdHIiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5keW5zdHIi
KSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMl0p
OyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHluc3RyIikpWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
Kl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZHluc3RyIikpWzJdKTsgaWYg
KF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5keW5zdHIiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICIuZHluc3RyIikpKSk7IH0pID09
IDApCiAgICAgICAgewogICAgICAgICAgaWYgKGR5bmFtaWNfc3RyaW5ncyAhPSAoKHZvaWQgKikw
KSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGVycm9yICgoIkZpbGUgY29udGFpbnMgbXVs
dGlwbGUgZHluYW1pYyBzdHJpbmcgdGFibGVzXG4iKSk7CiAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICBkeW5hbWljX3N0cmluZ3MgPSAoY2hhciAqKSBnZXRf
ZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlY3Rpb24tPnNoX29mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9zaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHluYW1pYyBzdHJp
bmdzIikpOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoc2VjdGlvbi0+c2hfdHlwZSA9PSAxOCkK
ICAgICAgICB7CiAgICAgICAgICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSAoKHZvaWQgKikwKSkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIGVycm9yICgoIkZpbGUgY29udGFpbnMgbXVsdGlw
bGUgc3ltdGFiIHNobmR4IHRhYmxlc1xuIikpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICB9CiAgICAgICAgICBzeW10YWJfc2huZHhfaGRyID0gc2VjdGlvbjsKICAgICAgICB9
CiAgICAgIGVsc2UgaWYgKChkb19kZWJ1Z2dpbmcgfHwgZG9fZGVidWdfaW5mbyB8fCBkb19kZWJ1
Z19hYmJyZXZzCiAgICAgICAgICAgICAgICB8fCBkb19kZWJ1Z19saW5lcyB8fCBkb19kZWJ1Z19w
dWJuYW1lcyB8fCBkb19kZWJ1Z19hcmFuZ2VzCiAgICAgICAgICAgICAgICB8fCBkb19kZWJ1Z19m
cmFtZXMgfHwgZG9fZGVidWdfbWFjaW5mbyB8fCBkb19kZWJ1Z19zdHIKICAgICAgICAgICAgICAg
IHx8IGRvX2RlYnVnX2xvYykKICAgICAgICAgICAgICAgJiYgKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wICg3KSAmJiAoKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBz
dHJsZW4gKG5hbWUpIDwgKChzaXplX3QpICg3KSkpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
Ii5kZWJ1Z18iKSAmJiBzdHJsZW4gKCIuZGVidWdfIikgPCAoKHNpemVfdCkgKDcpKSkpID8gX19l
eHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0
YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnXyIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnXyIpLCAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgiLmRlYnVnXyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z18iKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIi5kZWJ1Z18iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRl
YnVnXyIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z18iKSlb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9f
czIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdf
Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z18iKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoIi5kZWJ1Z18iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRl
YnVnXyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5kZWJ1Z18iKSwgX19zMl9sZW4g
PCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z18iKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0pOyBpZiAoX19zMl9sZW4g
PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5kZWJ1Z18iKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z18iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiBzdHJjbXAgKG5hbWUsICIuZGVidWdfIikpKSk7IH0pIDogc3RybmNtcCAobmFtZSwgIi5k
ZWJ1Z18iLCA3KSkpID09IDApCiAgICAgICAgewogICAgICAgICAgbmFtZSArPSA3OwoKICAgICAg
ICAgIGlmIChkb19kZWJ1Z2dpbmcKICAgICAgICAgICAgICB8fCAoZG9fZGVidWdfaW5mbyAmJiAo
X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiaW5mbyIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiaW5mbyIpLCAoISgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJpbmZvIikgPT0gMSkgfHwg
X19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9f
czJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkg
PT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoImluZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImlu
Zm8iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiaW5mbyIpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikoImluZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJpbmZvIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19z
MlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImluZm8i
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImluZm8iKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgiaW5mbyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoImluZm8iKSwg
X19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUp
ID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImluZm8iKSlbMF0pOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImluZm8iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoImluZm8iKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImluZm8iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJpbmZvIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImluZm8iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5h
bWUsICJpbmZvIikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19hYmJy
ZXZzICYmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmJyZXYi
KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoImFiYnJl
diIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiYWJicmV2IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFi
YnJldiIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAq
KSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19z
MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImFiYnJldiIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiYWJicmV2IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
ImFiYnJldiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImFiYnJldiIp
KVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWJicmV2IikpWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19z
MiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFiYnJldiIp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhYmJyZXYiKSAmJiAoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgoImFiYnJldiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJhYmJyZXYi
KSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJhYmJyZXYiKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0
ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikoImFiYnJldiIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiYWJicmV2IikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJhYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVz
dWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCJhYmJyZXYiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWJi
cmV2IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJhYmJyZXYiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJhYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiYWJicmV2IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChu
YW1lLCAiYWJicmV2IikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19s
aW5lcyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgibGluZSIp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgibGluZSIp
LCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgibGluZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJsaW5lIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3Mx
X2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImxpbmUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoImxpbmUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibGluZSIpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImxpbmUiKSlbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJsaW5lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsx
XSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoImxpbmUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImxpbmUiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibGluZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAo
ImxpbmUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImxpbmUiKSlb
MF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBp
ZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbMl0pOyBpZiAoX19z
Ml9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImxpbmUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImxpbmUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCJsaW5lIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoImxpbmUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKG5hbWUsICJsaW5lIikpKSk7IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19k
ZWJ1Z19wdWJuYW1lcyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9w
ICgicHVibmFtZXMiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0
cmxlbiAoInB1Ym5hbWVzIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYm
ICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJwdWJuYW1lcyIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJwdWJuYW1lcyIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNt
cCAoKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJwdWJuYW1lcyIp
LCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1l
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMV9sZW4g
PSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
cHVibmFtZXMiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInB1Ym5hbWVzIikgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikoInB1Ym5hbWVzIikgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSgicHVibmFtZXMiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoInB1Ym5hbWVzIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCJwdWJuYW1lcyIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNp
b25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwdWJuYW1lcyIpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKCJwdWJuYW1lcyIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicHVibmFtZXMi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicHVibmFtZXMiKSA9PSAxKSAmJiAoX19z
Ml9sZW4gPSBzdHJsZW4gKCJwdWJuYW1lcyIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSgicHVibmFtZXMiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoInB1Ym5hbWVzIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJwdWJuYW1lcyIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAobmFtZSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInB1Ym5hbWVz
IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
X19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJw
dWJuYW1lcyIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoInB1Ym5hbWVzIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoInB1Ym5hbWVzIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21w
IChuYW1lLCAicHVibmFtZXMiKSkpKTsgfSkgPT0gMCkpCiAgICAgICAgICAgICAgfHwgKGRvX2Rl
YnVnX2FyYW5nZXMgJiYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xl
bjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAo
ImFyYW5nZXMiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxl
biAoImFyYW5nZXMiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImFyYW5nZXMiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiYXJhbmdlcyIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9f
Y29uc3QgY2hhciAqKSAobmFtZSksIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIiksIChfX3Mx
X2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhcmFuZ2Vz
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhcmFuZ2VzIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoImFyYW5nZXMiKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopKCJhcmFuZ2VzIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJhcmFuZ2VzIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJhcmFuZ2VzIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJh
bmdlcyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z
dCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiYXJhbmdlcyIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhcmFuZ2Vz
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJhcmFuZ2VzIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoImFyYW5nZXMiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJh
cmFuZ2VzIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYm
ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJhcmFuZ2Vz
IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikp
WzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJhbmdlcyIpKVszXSk7IH0g
fSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzBdOyBpZiAoX19zMl9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzFdKTsgaWYgKF9fczJf
bGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXJhbmdlcyIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhcmFuZ2VzIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChuYW1lLCAiYXJhbmdlcyIpKSkpOyB9KSA9
PSAwKSkKICAgICAgICAgICAgICB8fCAoZG9fZGVidWdfZnJhbWVzICYmIChfX2V4dGVuc2lvbl9f
ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCJmcmFtZSIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgiZnJhbWUiKSwgKCEoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkg
fHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImZyYW1lIikg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImZyYW1lIikgPT0gMSkgfHwgX19zMl9sZW4g
Pj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAq
KSAoImZyYW1lIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYm
IChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKCJmcmFtZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZnJhbWUiKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZnJhbWUiKSA9PSAxKSA/IChfX2V4dGVuc2lv
bl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCJmcmFtZSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgiZnJhbWUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoImZyYW1lIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImZyYW1lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19z
MlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImZyYW1l
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJmcmFtZSIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJmcmFtZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoImZyYW1l
IiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJmcmFtZSIpKVswXSk7
IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImZyYW1lIikpWzJdKTsgaWYgKF9fczJf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiZnJhbWUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoImZyYW1lIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgiZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkg
OiBzdHJjbXAgKG5hbWUsICJmcmFtZSIpKSkpOyB9KSA9PSAwKSkKICAgICAgICAgICAgICB8fCAo
ZG9fZGVidWdfbWFjaW5mbyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9f
czJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFu
dF9wICgibWFjaW5mbyIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuID0g
c3RybGVuICgibWFjaW5mbyIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgibWFjaW5mbyIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJtYWNpbmZvIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21w
ICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSwg
KF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIm1h
Y2luZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIm1hY2luZm8iKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibWFjaW5mbyIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoIm1hY2luZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIm1hY2luZm8iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIm1hY2luZm8iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJtYWNpbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3My
WzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9f
czJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0g
X19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIm1h
Y2luZm8iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIm1hY2luZm8iKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibWFjaW5mbyIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxl
biAoIm1hY2luZm8iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIm1h
Y2luZm8iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2lu
Zm8iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSlbMF07IGlmIChfX3MyX2xl
biA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8iKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJtYWNpbmZvIikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm1hY2luZm8i
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICJtYWNpbmZvIikpKSk7
IH0pID09IDApKQogICAgICAgICAgICAgIHx8IChkb19kZWJ1Z19zdHIgJiYgKF9fZXh0ZW5zaW9u
X18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChu
YW1lKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInN0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAobmFtZSksIF9fczJfbGVuID0gc3RybGVuICgic3RyIiksICghKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpIHx8
IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJzdHIiKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgic3RyIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkp
ID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoInN0
ciIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAo
X19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKG5hbWUpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
ICgic3RyIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJzdHIiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgic3RyIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgic3RyIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJz
dHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpf
X3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgic3RyIik7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoInN0ciIpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgic3RyIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInN0ciIpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAoInN0ciIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAt
IChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSgic3RyIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJzdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0
ciIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJzdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsxXSk7IGlmIChfX3MyX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInN0ciIpKVsyXSk7IGlmIChfX3MyX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJzdHIiKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSkgOiBzdHJjbXAgKG5hbWUsICJzdHIiKSkpKTsgfSkgPT0gMCkpCiAgICAgICAgICAg
ICAgfHwgKGRvX2RlYnVnX2xvYyAmJiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4s
IF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIF9fYnVpbHRpbl9jb25z
dGFudF9wICgibG9jIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBz
dHJsZW4gKCJsb2MiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEo
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImxvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCJsb2MiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopICgibG9jIiksIChfX3MxX2xlbiA8IF9fczJf
bGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFtZSksIF9f
czFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJsb2MiKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoImxvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJsb2Mi
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJsb2MiKSlbMF0pOyBpZiAo
X19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvYyIpKVsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgibG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsb2MiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsw
XSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkp
WzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFu
dF9wICgibG9jIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJsb2MiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgibG9jIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgi
bG9jIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgo
c2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCJsb2MiKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvYyIpKVsxXSk7IGlmIChf
X3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczJfbGVu
ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgibG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoImxvYyIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgibG9jIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgibG9jIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoImxvYyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAobmFt
ZSwgImxvYyIpKSkpOyB9KSA9PSAwKSkKICAgICAgICAgICAgICApCiAgICAgICAgICAgIHJlcXVl
c3RfZHVtcCAoaSwgKDEgPDwgMikpOwogICAgICAgIH0KCiAgICAgIGVsc2UgaWYgKChkb19kZWJ1
Z2dpbmcgfHwgZG9fZGVidWdfaW5mbykKICAgICAgICAgICAgICAgJiYgKF9fZXh0ZW5zaW9uX18g
KF9fYnVpbHRpbl9jb25zdGFudF9wICgxNykgJiYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFt
ZSkgJiYgc3RybGVuIChuYW1lKSA8ICgoc2l6ZV90KSAoMTcpKSkgfHwgKF9fYnVpbHRpbl9jb25z
dGFudF9wICgiLmdudS5saW5rb25jZS53aS4iKSAmJiBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLndp
LiIpIDwgKChzaXplX3QpICgxNykpKSkgPyBfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgX19idWlsdGluX2Nv
bnN0YW50X3AgKCIuZ251LmxpbmtvbmNlLndpLiIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAobmFt
ZSksIF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS53aS4iKSwgKCEoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5n
bnUubGlua29uY2Uud2kuIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5nbnUubGlu
a29uY2Uud2kuIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopIChuYW1lKSwgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIiksIChf
X3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0
cmxlbiAobmFtZSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZ251
LmxpbmtvbmNlLndpLiIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25j
ZS53aS4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25jZS53aS4i
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKCIuZ251LmxpbmtvbmNlLndp
LiIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5r
b25jZS53aS4iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5n
bnUubGlua29uY2Uud2kuIikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw
KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVu
c2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIik7IHJlZ2lzdGVy
IGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChuYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCIuZ251LmxpbmtvbmNlLndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIuZ251LmxpbmtvbmNlLndpLiIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5n
bnUubGlua29uY2Uud2kuIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCko
Y29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChuYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KCIuZ251LmxpbmtvbmNlLndpLiIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAobmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9
IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uud2kuIikpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5s
aW5rb25jZS53aS4iKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKG5hbWUsICIuZ251LmxpbmtvbmNlLndpLiIpKSkpOyB9KSA6IHN0cm5jbXAgKG5hbWUs
ICIuZ251LmxpbmtvbmNlLndpLiIsIDE3KSkpID09IDApCiAgICAgICAgcmVxdWVzdF9kdW1wIChp
LCAoMSA8PCAyKSk7CiAgICAgIGVsc2UgaWYgKGRvX2RlYnVnX2ZyYW1lcyAmJiBfX2V4dGVuc2lv
bl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCIuZWhfZnJhbWUiKSAmJiAoX19zMV9sZW4g
PSBzdHJsZW4gKG5hbWUpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIi5laF9mcmFtZSIpLCAoISgoc2l6
ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShu
YW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICop
KCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5laF9mcmFtZSIp
ID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAobmFt
ZSksIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1l
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9s
ZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFtZSIpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoIi5laF9mcmFtZSIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5l
aF9mcmFtZSIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmVo
X2ZyYW1lIikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhf
ZnJhbWUiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJh
bWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5laF9mcmFtZSIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzBdIC0gX19zMlswXSk7
IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsyXSAtIF9fczJb
Ml0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtIF9fczJb
M10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZWhfZnJh
bWUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5laF9mcmFtZSIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCIuZWhfZnJhbWUiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJs
ZW4gKCIuZWhfZnJhbWUiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
bmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKiko
Ii5laF9mcmFtZSIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgi
LmVoX2ZyYW1lIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5h
bWUpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
ZWhfZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhf
ZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29u
c3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmVoX2ZyYW1lIikpWzBd
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJh
bWUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIuZWhfZnJhbWUiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9f
cmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmVoX2ZyYW1lIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChu
YW1lLCAiLmVoX2ZyYW1lIikpKSk7IH0pID09IDApCiAgICAgICAgcmVxdWVzdF9kdW1wIChpLCAo
MSA8PCAyKSk7CiAgICB9CgogIGlmICghIGRvX3NlY3Rpb25zKQogICAgcmV0dXJuIDE7CgogIGlm
IChlbGZfaGVhZGVyLmVfc2hudW0gPiAxKQogICAgcHJpbnRmICgoIlxuU2VjdGlvbiBIZWFkZXJz
OlxuIikpOwogIGVsc2UKICAgIHByaW50ZiAoKCJcblNlY3Rpb24gSGVhZGVyOlxuIikpOwoKICBp
ZiAoaXNfMzJiaXRfZWxmKQogICAgcHJpbnRmCiAgICAgICgoIiAgW05yXSBOYW1lICAgICAgICAg
ICAgICBUeXBlICAgICAgICAgICAgQWRkciAgICAgT2ZmICAgIFNpemUgICBFUyBGbGcgTGsgSW5m
IEFsXG4iKSk7CiAgZWxzZSBpZiAoZG9fd2lkZSkKICAgIHByaW50ZgogICAgICAoKCIgIFtOcl0g
TmFtZSAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgIEFkZHJlc3MgICAgICAgICAgT2ZmICAg
IFNpemUgICBFUyBGbGcgTGsgSW5mIEFsXG4iKSk7CiAgZWxzZQogICAgewogICAgICBwcmludGYg
KCgiICBbTnJdIE5hbWUgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgQWRkcmVzcyAgICAg
ICAgICAgT2Zmc2V0XG4iKSk7CiAgICAgIHByaW50ZiAoKCIgICAgICAgU2l6ZSAgICAgICAgICAg
ICAgRW50U2l6ZSAgICAgICAgICBGbGFncyAgTGluayAgSW5mbyAgQWxpZ25cbiIpKTsKICAgIH0K
CiAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25faGVhZGVyczsKICAgICAgIGkgPCBlbGZf
aGVhZGVyLmVfc2hudW07CiAgICAgICBpKyssIHNlY3Rpb24rKykKICAgIHsKICAgICAgcHJpbnRm
ICgiICBbJTJ1XSAlLTE3LjE3cyAlLTE1LjE1cyAiLAogICAgICAgICAgICAgICgoaSkgPCAweEZG
MDAgPyAoaSkgOiAoaSkgKyAoMHhGRkZGICsgMSAtIDB4RkYwMCkpLAogICAgICAgICAgICAgICgo
c2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
Y3Rpb24pLT5zaF9uYW1lKSksCiAgICAgICAgICAgICAgZ2V0X3NlY3Rpb25fdHlwZV9uYW1lIChz
ZWN0aW9uLT5zaF90eXBlKSk7CgogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHsKICAg
ICAgICAgIHByaW50X3ZtYSAoc2VjdGlvbi0+c2hfYWRkciwgTE9OR19IRVgpOwoKICAgICAgICAg
IHByaW50ZiAoICIgJTYuNmx4ICU2LjZseCAlMi4ybHgiLAogICAgICAgICAgICAgICAgICAgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX29mZnNldCwKICAgICAgICAgICAgICAgICAgICh1bnNp
Z25lZCBsb25nKSBzZWN0aW9uLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpIHNlY3Rpb24tPnNoX2VudHNpemUpOwoKICAgICAgICAgIHByaW50ZiAoIiAlM3MgIiwg
Z2V0X2VsZl9zZWN0aW9uX2ZsYWdzIChzZWN0aW9uLT5zaF9mbGFncykpOwoKICAgICAgICAgIHBy
aW50ZiAoIiUybGQgJTNseCAlMmxkXG4iLAogICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9u
Zykgc2VjdGlvbi0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHNl
Y3Rpb24tPnNoX2luZm8sCiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9u
LT5zaF9hZGRyYWxpZ24pOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoZG9fd2lkZSkKICAgICAg
ICB7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX2FkZHIsIExPTkdfSEVYKTsKCiAg
ICAgICAgICBpZiAoKGxvbmcpIHNlY3Rpb24tPnNoX29mZnNldCA9PSBzZWN0aW9uLT5zaF9vZmZz
ZXQpCiAgICAgICAgICAgIHByaW50ZiAoIiAlNi42bHgiLCAodW5zaWduZWQgbG9uZykgc2VjdGlv
bi0+c2hfb2Zmc2V0KTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAg
IHB1dGNoYXIgKCcgJyk7CiAgICAgICAgICAgICAgcHJpbnRfdm1hIChzZWN0aW9uLT5zaF9vZmZz
ZXQsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGlmICgodW5zaWduZWQgbG9u
Zykgc2VjdGlvbi0+c2hfc2l6ZSA9PSBzZWN0aW9uLT5zaF9zaXplKQogICAgICAgICAgICBwcmlu
dGYgKCIgJTYuNmx4IiwgKHVuc2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX3NpemUpOwogICAgICAg
ICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAg
ICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX3NpemUsIExPTkdfSEVYKTsKICAgICAgICAg
ICAgfQoKICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfZW50c2l6ZSA9
PSBzZWN0aW9uLT5zaF9lbnRzaXplKQogICAgICAgICAgICBwcmludGYgKCIgJTIuMmx4IiwgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2VudHNpemUpOwogICAgICAgICAgZWxzZQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgICBwcmludF92
bWEgKHNlY3Rpb24tPnNoX2VudHNpemUsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQoKICAgICAg
ICAgIHByaW50ZiAoIiAlM3MgIiwgZ2V0X2VsZl9zZWN0aW9uX2ZsYWdzIChzZWN0aW9uLT5zaF9m
bGFncykpOwoKICAgICAgICAgIHByaW50ZiAoIiUybGQgJTNseCAiLAogICAgICAgICAgICAgICAg
ICAodW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfbGluaywKICAgICAgICAgICAgICAgICAgKHVu
c2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2luZm8pOwoKICAgICAgICAgIGlmICgodW5zaWduZWQg
bG9uZykgc2VjdGlvbi0+c2hfYWRkcmFsaWduID09IHNlY3Rpb24tPnNoX2FkZHJhbGlnbikKICAg
ICAgICAgICAgcHJpbnRmICgiJTJsZFxuIiwgKHVuc2lnbmVkIGxvbmcpIHNlY3Rpb24tPnNoX2Fk
ZHJhbGlnbik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmlu
dF92bWEgKHNlY3Rpb24tPnNoX2FkZHJhbGlnbiwgREVDKTsKICAgICAgICAgICAgICBwdXRjaGFy
ICgnXG4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAg
ICAgICAgIHB1dGNoYXIgKCcgJyk7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX2Fk
ZHIsIExPTkdfSEVYKTsKICAgICAgICAgIGlmICgobG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0ID09
IHNlY3Rpb24tPnNoX29mZnNldCkKICAgICAgICAgICAgcHJpbnRmICgiICAlOC44bHgiLCAodW5z
aWduZWQgbG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0KTsKICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIHByaW50ZiAoIiAgIik7CiAgICAgICAgICAgICAgcHJpbnRfdm1h
IChzZWN0aW9uLT5zaF9vZmZzZXQsIExPTkdfSEVYKTsKICAgICAgICAgICAgfQogICAgICAgICAg
cHJpbnRmICgiXG4gICAgICAgIik7CiAgICAgICAgICBwcmludF92bWEgKHNlY3Rpb24tPnNoX3Np
emUsIExPTkdfSEVYKTsKICAgICAgICAgIHByaW50ZiAoIiAgIik7CiAgICAgICAgICBwcmludF92
bWEgKHNlY3Rpb24tPnNoX2VudHNpemUsIExPTkdfSEVYKTsKCiAgICAgICAgICBwcmludGYgKCIg
JTNzICIsIGdldF9lbGZfc2VjdGlvbl9mbGFncyAoc2VjdGlvbi0+c2hfZmxhZ3MpKTsKCiAgICAg
ICAgICBwcmludGYgKCIgICAgICUybGQgICAlM2x4ICAgICAlbGRcbiIsCiAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9uLT5zaF9saW5rLAogICAgICAgICAgICAgICAgICAo
dW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfaW5mbywKICAgICAgICAgICAgICAgICAgKHVuc2ln
bmVkIGxvbmcpIHNlY3Rpb24tPnNoX2FkZHJhbGlnbik7CiAgICAgICAgfQogICAgfQoKICBwcmlu
dGYgKCgiS2V5IHRvIEZsYWdzOlxuICBXICh3cml0ZSksIEEgKGFsbG9jKSwgWCAoZXhlY3V0ZSks
IE0gKG1lcmdlKSwgUyAoc3RyaW5ncylcbiAgSSAoaW5mbyksIEwgKGxpbmsgb3JkZXIpLCBHIChn
cm91cCksIHggKHVua25vd24pXG4gIE8gKGV4dHJhIE9TIHByb2Nlc3NpbmcgcmVxdWlyZWQpIG8g
KE9TIHNwZWNpZmljKSwgcCAocHJvY2Vzc29yIHNwZWNpZmljKVxuIikpOwoKCgoKICByZXR1cm4g
MTsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19yZWxvY3MgKGZpbGUpCiAgICAgRklMRSAqZmlsZTsK
ewogIHVuc2lnbmVkIGxvbmcgcmVsX3NpemU7CiAgdW5zaWduZWQgbG9uZyByZWxfb2Zmc2V0OwoK
CiAgaWYgKCFkb19yZWxvYykKICAgIHJldHVybiAxOwoKICBpZiAoZG9fdXNpbmdfZHluYW1pYykK
ICAgIHsKICAgICAgaW50IGlzX3JlbGEgPSAwOwoKICAgICAgcmVsX3NpemUgPSAwOwogICAgICBy
ZWxfb2Zmc2V0ID0gMDsKCiAgICAgIGlmIChkeW5hbWljX2luZm9bMTddKQogICAgICAgIHsKICAg
ICAgICAgIHJlbF9vZmZzZXQgPSBkeW5hbWljX2luZm9bMTddOwogICAgICAgICAgcmVsX3NpemUg
PSBkeW5hbWljX2luZm9bMThdOwogICAgICAgICAgaXNfcmVsYSA9IDA7CiAgICAgICAgfQogICAg
ICBlbHNlIGlmIChkeW5hbWljX2luZm9bN10pCiAgICAgICAgewogICAgICAgICAgcmVsX29mZnNl
dCA9IGR5bmFtaWNfaW5mb1s3XTsKICAgICAgICAgIHJlbF9zaXplID0gZHluYW1pY19pbmZvWzhd
OwogICAgICAgICAgaXNfcmVsYSA9IDE7CiAgICAgICAgfQogICAgICBlbHNlIGlmIChkeW5hbWlj
X2luZm9bMjNdKQogICAgICAgIHsKICAgICAgICAgIHJlbF9vZmZzZXQgPSBkeW5hbWljX2luZm9b
MjNdOwogICAgICAgICAgcmVsX3NpemUgPSBkeW5hbWljX2luZm9bMl07CgogICAgICAgICAgc3dp
dGNoIChkeW5hbWljX2luZm9bMjBdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgMTc6
CiAgICAgICAgICAgICAgaXNfcmVsYSA9IDA7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgIGNhc2UgNzoKICAgICAgICAgICAgICBpc19yZWxhID0gMTsKICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBpc19yZWxhID0gLTE7CiAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAocmVsX3Np
emUpCiAgICAgICAgewogICAgICAgICAgcHJpbnRmCiAgICAgICAgICAgICgoIlxuUmVsb2NhdGlv
biBzZWN0aW9uIGF0IG9mZnNldCAweCVseCBjb250YWlucyAlbGQgYnl0ZXM6XG4iKSwKICAgICAg
ICAgICAgIHJlbF9vZmZzZXQsIHJlbF9zaXplKTsKCiAgICAgICAgICBkdW1wX3JlbG9jYXRpb25z
IChmaWxlLCByZWxfb2Zmc2V0IC0gbG9hZGFkZHIsIHJlbF9zaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHluYW1pY19zeW1ib2xzLCBudW1fZHluYW1pY19zeW1zLCBkeW5hbWljX3N0
cmluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19yZWxhKTsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBwcmludGYgKCgiXG5UaGVyZSBhcmUgbm8gZHluYW1pYyByZWxvY2F0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBFbGZfSW50
ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICAgdW5zaWduZWQgbG9uZyBpOwogICAgICBpbnQgZm91
bmQgPSAwOwoKICAgICAgZm9yIChpID0gMCwgc2VjdGlvbiA9IHNlY3Rpb25faGVhZGVyczsKICAg
ICAgICAgICBpIDwgZWxmX2hlYWRlci5lX3NobnVtOwogICAgICAgICAgIGkrKywgc2VjdGlvbisr
KQogICAgICAgIHsKICAgICAgICAgIGlmICggc2VjdGlvbi0+c2hfdHlwZSAhPSA0CiAgICAgICAg
ICAgICAgJiYgc2VjdGlvbi0+c2hfdHlwZSAhPSA5KQogICAgICAgICAgICBjb250aW51ZTsKCiAg
ICAgICAgICByZWxfb2Zmc2V0ID0gc2VjdGlvbi0+c2hfb2Zmc2V0OwogICAgICAgICAgcmVsX3Np
emUgPSBzZWN0aW9uLT5zaF9zaXplOwoKICAgICAgICAgIGlmIChyZWxfc2l6ZSkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzdHJzZWM7CiAgICAgICAgICAg
ICAgRWxmX0ludGVybmFsX1N5bSAqc3ltdGFiOwogICAgICAgICAgICAgIGNoYXIgKnN0cnRhYjsK
ICAgICAgICAgICAgICBpbnQgaXNfcmVsYTsKICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5z
eW1zOwoKICAgICAgICAgICAgICBwcmludGYgKCgiXG5SZWxvY2F0aW9uIHNlY3Rpb24gIikpOwoK
ICAgICAgICAgICAgICBpZiAoc3RyaW5nX3RhYmxlID09ICgodm9pZCAqKTApKQogICAgICAgICAg
ICAgICAgcHJpbnRmICgiJWQiLCBzZWN0aW9uLT5zaF9uYW1lKTsKICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBwcmludGYgKCgiJyVzJyIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsK
CiAgICAgICAgICAgICAgcHJpbnRmICgoIiBhdCBvZmZzZXQgMHglbHggY29udGFpbnMgJWx1IGVu
dHJpZXM6XG4iKSwKICAgICAgICAgICAgICAgICByZWxfb2Zmc2V0LCAodW5zaWduZWQgbG9uZykg
KHJlbF9zaXplIC8gc2VjdGlvbi0+c2hfZW50c2l6ZSkpOwoKICAgICAgICAgICAgICBzeW10YWIg
PSAoKHZvaWQgKikwKTsKICAgICAgICAgICAgICBzdHJ0YWIgPSAoKHZvaWQgKikwKTsKICAgICAg
ICAgICAgICBuc3ltcyA9IDA7CiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24tPnNoX2xpbmspCiAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzeW1z
ZWM7CgogICAgICAgICAgICAgICAgICBzeW1zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0
aW9uLT5zaF9saW5rKSA8IDB4RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAx
IC0gMHhGRjAwKSkpKTsKICAgICAgICAgICAgICAgICAgbnN5bXMgPSBzeW1zZWMtPnNoX3NpemUg
LyBzeW1zZWMtPnNoX2VudHNpemU7CiAgICAgICAgICAgICAgICAgIHN5bXRhYiA9IChpc18zMmJp
dF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIHN5bXNlYykgOiBnZXRfNjRiaXRf
ZWxmX3N5bWJvbHMgKGZpbGUsIHN5bXNlYykpOwoKICAgICAgICAgICAgICAgICAgaWYgKHN5bXRh
YiA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAg
ICAgICAgICAgIHN0cnNlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHN5bXNlYy0+c2hfbGluaykg
PCAweEZGMDAgPyAoc3ltc2VjLT5zaF9saW5rKSA6ICgoc3ltc2VjLT5zaF9saW5rKSA8PSAweEZG
RkYgPyAwIDogKHN5bXNlYy0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkpKSk7Cgog
ICAgICAgICAgICAgICAgICBzdHJ0YWIgPSAoY2hhciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCks
IGZpbGUsIHN0cnNlYy0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Ryc2VjLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCJzdHJpbmcgdGFibGUiKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgaXNfcmVsYSA9IHNlY3Rpb24tPnNoX3R5cGUgPT0gNDsKCiAgICAgICAg
ICAgICAgZHVtcF9yZWxvY2F0aW9ucyAoZmlsZSwgcmVsX29mZnNldCwgcmVsX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltdGFiLCBuc3ltcywgc3RydGFiLCBpc19yZWxh
KTsKCiAgICAgICAgICAgICAgaWYgKHN0cnRhYikKICAgICAgICAgICAgICAgIGZyZWUgKHN0cnRh
Yik7CiAgICAgICAgICAgICAgaWYgKHN5bXRhYikKICAgICAgICAgICAgICAgIGZyZWUgKHN5bXRh
Yik7CgogICAgICAgICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAg
ICAgIGlmICghIGZvdW5kKQogICAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyByZWxvY2F0
aW9ucyBpbiB0aGlzIGZpbGUuXG4iKSk7CiAgICB9CgogIHJldHVybiAxOwp9CgojIDEgIi4vdW53
aW5kLWlhNjQuaCIgMQojIDMxICIuL3Vud2luZC1pYTY0LmgiCmV4dGVybiBjb25zdCB1bnNpZ25l
ZCBjaGFyICogdW53X2RlY29kZSAoY29uc3QgdW5zaWduZWQgY2hhciAqLCBpbnQsIHZvaWQgKik7
CiMgMzkzOSAicmVhZGVsZi5jIiAyCgoKCgoKc3RydWN0IGFic2FkZHIKICB7CiAgICB1bnNpZ25l
ZCBzaG9ydCBzZWN0aW9uOwogICAgYmZkX3ZtYSBvZmZzZXQ7CiAgfTsKCnN0cnVjdCB1bndfYXV4
X2luZm8KICB7CiAgICBzdHJ1Y3QgdW53X3RhYmxlX2VudHJ5CiAgICAgIHsKICAgICAgICBzdHJ1
Y3QgYWJzYWRkciBzdGFydDsKICAgICAgICBzdHJ1Y3QgYWJzYWRkciBlbmQ7CiAgICAgICAgc3Ry
dWN0IGFic2FkZHIgaW5mbzsKICAgICAgfQogICAgKnRhYmxlOwogICAgdW5zaWduZWQgbG9uZyB0
YWJsZV9sZW47CiAgICB1bnNpZ25lZCBjaGFyICppbmZvOwogICAgdW5zaWduZWQgbG9uZyBpbmZv
X3NpemU7CiAgICBiZmRfdm1hIGluZm9fYWRkcjsKICAgIGJmZF92bWEgc2VnX2Jhc2U7CiAgICBF
bGZfSW50ZXJuYWxfU3ltICpzeW10YWI7CiAgICB1bnNpZ25lZCBsb25nIG5zeW1zOwogICAgY2hh
ciAqc3RydGFiOwogICAgdW5zaWduZWQgbG9uZyBzdHJ0YWJfc2l6ZTsKICB9OwoKc3RhdGljIHZv
aWQgZmluZF9zeW1ib2xfZm9yX2FkZHJlc3MKICAoc3RydWN0IHVud19hdXhfaW5mbyAqLCBzdHJ1
Y3QgYWJzYWRkciwgY29uc3QgY2hhciAqKiwgYmZkX3ZtYSAqKTsKc3RhdGljIHZvaWQgZHVtcF9p
YTY0X3Vud2luZAogIChzdHJ1Y3QgdW53X2F1eF9pbmZvICopOwpzdGF0aWMgaW50IHNsdXJwX2lh
NjRfdW53aW5kX3RhYmxlCiAgKEZJTEUgKiwgc3RydWN0IHVud19hdXhfaW5mbyAqLCBFbGZfSW50
ZXJuYWxfU2hkciAqKTsKCnN0YXRpYyB2b2lkCmZpbmRfc3ltYm9sX2Zvcl9hZGRyZXNzIChhdXgs
IGFkZHIsIHN5bW5hbWUsIG9mZnNldCkKICAgICBzdHJ1Y3QgdW53X2F1eF9pbmZvICphdXg7CiAg
ICAgc3RydWN0IGFic2FkZHIgYWRkcjsKICAgICBjb25zdCBjaGFyICoqc3ltbmFtZTsKICAgICBi
ZmRfdm1hICpvZmZzZXQ7CnsKICBiZmRfdm1hIGRpc3QgPSAoYmZkX3ZtYSkgMHgxMDAwMDA7CiAg
RWxmX0ludGVybmFsX1N5bSAqc3ltLCAqYmVzdCA9ICgodm9pZCAqKTApOwogIHVuc2lnbmVkIGxv
bmcgaTsKCiAgZm9yIChpID0gMCwgc3ltID0gYXV4LT5zeW10YWI7IGkgPCBhdXgtPm5zeW1zOyAr
K2ksICsrc3ltKQogICAgewogICAgICBpZiAoKChzeW0tPnN0X2luZm8pICYgMHhGKSA9PSAyCiAg
ICAgICAgICAmJiBzeW0tPnN0X25hbWUgIT0gMAogICAgICAgICAgJiYgKGFkZHIuc2VjdGlvbiA9
PSAwIHx8IGFkZHIuc2VjdGlvbiA9PSBzeW0tPnN0X3NobmR4KQogICAgICAgICAgJiYgYWRkci5v
ZmZzZXQgPj0gc3ltLT5zdF92YWx1ZQogICAgICAgICAgJiYgYWRkci5vZmZzZXQgLSBzeW0tPnN0
X3ZhbHVlIDwgZGlzdCkKICAgICAgICB7CiAgICAgICAgICBiZXN0ID0gc3ltOwogICAgICAgICAg
ZGlzdCA9IGFkZHIub2Zmc2V0IC0gc3ltLT5zdF92YWx1ZTsKICAgICAgICAgIGlmICghZGlzdCkK
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogIGlmIChiZXN0KQogICAgewogICAg
ICAqc3ltbmFtZSA9IChiZXN0LT5zdF9uYW1lID49IGF1eC0+c3RydGFiX3NpemUKICAgICAgICAg
ICAgICAgICAgPyAiPGNvcnJ1cHQ+IiA6IGF1eC0+c3RydGFiICsgYmVzdC0+c3RfbmFtZSk7CiAg
ICAgICpvZmZzZXQgPSBkaXN0OwogICAgICByZXR1cm47CiAgICB9CiAgKnN5bW5hbWUgPSAoKHZv
aWQgKikwKTsKICAqb2Zmc2V0ID0gYWRkci5vZmZzZXQ7Cn0KCnN0YXRpYyB2b2lkCmR1bXBfaWE2
NF91bndpbmQgKGF1eCkKICAgICBzdHJ1Y3QgdW53X2F1eF9pbmZvICphdXg7CnsKICBiZmRfdm1h
IGFkZHJfc2l6ZTsKICBzdHJ1Y3QgdW53X3RhYmxlX2VudHJ5ICp0cDsKICBpbnQgaW5fYm9keTsK
CiAgYWRkcl9zaXplID0gaXNfMzJiaXRfZWxmID8gNCA6IDg7CgogIGZvciAodHAgPSBhdXgtPnRh
YmxlOyB0cCA8IGF1eC0+dGFibGUgKyBhdXgtPnRhYmxlX2xlbjsgKyt0cCkKICAgIHsKICAgICAg
YmZkX3ZtYSBzdGFtcDsKICAgICAgYmZkX3ZtYSBvZmZzZXQ7CiAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmRwOwogICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoZWFkOwogICAgICBjb25zdCBj
aGFyICpwcm9jbmFtZTsKCiAgICAgIGZpbmRfc3ltYm9sX2Zvcl9hZGRyZXNzIChhdXgsIHRwLT5z
dGFydCwgJnByb2NuYW1lLCAmb2Zmc2V0KTsKCiAgICAgIGZwdXRzICgiXG48Iiwgc3Rkb3V0KTsK
CiAgICAgIGlmIChwcm9jbmFtZSkKICAgICAgICB7CiAgICAgICAgICBmcHV0cyAocHJvY25hbWUs
IHN0ZG91dCk7CgogICAgICAgICAgaWYgKG9mZnNldCkKICAgICAgICAgICAgcHJpbnRmICgiKyVs
eCIsICh1bnNpZ25lZCBsb25nKSBvZmZzZXQpOwogICAgICAgIH0KCiAgICAgIGZwdXRzICgiPjog
WyIsIHN0ZG91dCk7CiAgICAgIHByaW50X3ZtYSAodHAtPnN0YXJ0Lm9mZnNldCwgUFJFRklYX0hF
WCk7CiAgICAgIGZwdXRjICgnLScsIHN0ZG91dCk7CiAgICAgIHByaW50X3ZtYSAodHAtPmVuZC5v
ZmZzZXQsIFBSRUZJWF9IRVgpOwogICAgICBwcmludGYgKCJdLCBpbmZvIGF0ICsweCVseFxuIiwK
ICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHRwLT5pbmZvLm9mZnNldCAtIGF1eC0+c2Vn
X2Jhc2UpKTsKCiAgICAgIGhlYWQgPSBhdXgtPmluZm8gKyAodHAtPmluZm8ub2Zmc2V0IC0gYXV4
LT5pbmZvX2FkZHIpOwogICAgICBzdGFtcCA9IGJ5dGVfZ2V0ICgodW5zaWduZWQgY2hhciAqKSBo
ZWFkLCAtOCk7CgogICAgICBwcmludGYgKCIgIHYldSwgZmxhZ3M9MHglbHggKCVzJXMpLCBsZW49
JWx1IGJ5dGVzXG4iLAogICAgICAgICAgICAgICh1bnNpZ25lZCkgKChzdGFtcCkgPj4gNDgpLAog
ICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoKHN0YW1wICYgMHgwMDAwZmZmZjAwMDAwMDAw
TEwpID4+IDMyKSwKICAgICAgICAgICAgICAoKHN0YW1wKSAmIDB4MDAwMDAwMDEwMDAwMDAwMExM
KSA/ICIgZWhhbmRsZXIiIDogIiIsCiAgICAgICAgICAgICAgKChzdGFtcCkgJiAweDAwMDAwMDAy
MDAwMDAwMDBMTCkgPyAiIHVoYW5kbGVyIiA6ICIiLAogICAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKSAoYWRkcl9zaXplICogKChzdGFtcCkgJiAweDAwMDAwMDAwZmZmZmZmZmZMTCkpKTsKCiAg
ICAgIGlmICgoKHN0YW1wKSA+PiA0OCkgIT0gMSkKICAgICAgICB7CiAgICAgICAgICBwcmludGYg
KCJcdFVua25vd24gdmVyc2lvbi5cbiIpOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoK
ICAgICAgaW5fYm9keSA9IDA7CiAgICAgIGZvciAoZHAgPSBoZWFkICsgODsgZHAgPCBoZWFkICsg
OCArIGFkZHJfc2l6ZSAqICgoc3RhbXApICYgMHgwMDAwMDAwMGZmZmZmZmZmTEwpOykKICAgICAg
ICBkcCA9IHVud19kZWNvZGUgKGRwLCBpbl9ib2R5LCAmIGluX2JvZHkpOwogICAgfQp9CgpzdGF0
aWMgaW50CnNsdXJwX2lhNjRfdW53aW5kX3RhYmxlIChmaWxlLCBhdXgsIHNlYykKICAgICBGSUxF
ICpmaWxlOwogICAgIHN0cnVjdCB1bndfYXV4X2luZm8gKmF1eDsKICAgICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjOwp7CiAgdW5zaWduZWQgbG9uZyBzaXplLCBhZGRyX3NpemUsIG5yZWxhcywgaTsK
ICBFbGZfSW50ZXJuYWxfUGhkciAqcHJvZ19oZHJzLCAqc2VnOwogIHN0cnVjdCB1bndfdGFibGVf
ZW50cnkgKnRlcDsKICBFbGZfSW50ZXJuYWxfU2hkciAqcmVsc2VjOwogIEVsZl9JbnRlcm5hbF9S
ZWxhICpyZWxhLCAqcnA7CiAgdW5zaWduZWQgY2hhciAqdGFibGUsICp0cDsKICBFbGZfSW50ZXJu
YWxfU3ltICpzeW07CiAgY29uc3QgY2hhciAqcmVsbmFtZTsKICBpbnQgcmVzdWx0OwoKICBhZGRy
X3NpemUgPSBpc18zMmJpdF9lbGYgPyA0IDogODsKCgoKCiAgaWYgKGVsZl9oZWFkZXIuZV9waG51
bSkKICAgIHsKICAgICAgcHJvZ19oZHJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopCiAgICAgICAg
eG1hbGxvYyAoZWxmX2hlYWRlci5lX3BobnVtICogc2l6ZW9mIChFbGZfSW50ZXJuYWxfUGhkcikp
OwoKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAgICByZXN1bHQgPSBnZXRfMzJiaXRfcHJv
Z3JhbV9oZWFkZXJzIChmaWxlLCBwcm9nX2hkcnMpOwogICAgICBlbHNlCiAgICAgICAgcmVzdWx0
ID0gZ2V0XzY0Yml0X3Byb2dyYW1faGVhZGVycyAoZmlsZSwgcHJvZ19oZHJzKTsKCiAgICAgIGlm
ICghcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgIGZyZWUgKHByb2dfaGRycyk7CiAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBmb3IgKHNlZyA9IHByb2dfaGRyczsgc2VnIDwg
cHJvZ19oZHJzICsgZWxmX2hlYWRlci5lX3BobnVtOyArK3NlZykKICAgICAgICB7CiAgICAgICAg
ICBpZiAoc2VnLT5wX3R5cGUgIT0gMSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAg
aWYgKHNlYy0+c2hfYWRkciA+PSBzZWctPnBfdmFkZHIKICAgICAgICAgICAgICAmJiAoc2VjLT5z
aF9hZGRyICsgc2VjLT5zaF9zaXplIDw9IHNlZy0+cF92YWRkciArIHNlZy0+cF9tZW1zeikpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBhdXgtPnNlZ19iYXNlID0gc2VnLT5wX3ZhZGRyOwog
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgZnJlZSAo
cHJvZ19oZHJzKTsKICAgIH0KCgogIHNpemUgPSBzZWMtPnNoX3NpemU7CiAgdGFibGUgPSAoY2hh
ciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlYy0+c2hfb2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemUsICgidW53aW5kIHRhYmxlIikpOwogIGlmICghdGFi
bGUpCiAgICByZXR1cm4gMDsKCiAgdGVwID0gYXV4LT50YWJsZSA9IHhtYWxsb2MgKHNpemUgLyAo
MyAqIGFkZHJfc2l6ZSkgKiBzaXplb2YgKGF1eC0+dGFibGVbMF0pKTsKICBmb3IgKHRwID0gdGFi
bGU7IHRwIDwgdGFibGUgKyBzaXplOyB0cCArPSAzICogYWRkcl9zaXplLCArK3RlcCkKICAgIHsK
ICAgICAgdGVwLT5zdGFydC5zZWN0aW9uID0gMDsKICAgICAgdGVwLT5lbmQuc2VjdGlvbiA9IDA7
CiAgICAgIHRlcC0+aW5mby5zZWN0aW9uID0gMDsKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAg
ICAgICB7CiAgICAgICAgICB0ZXAtPnN0YXJ0Lm9mZnNldCA9IGJ5dGVfZ2V0ICgodW5zaWduZWQg
Y2hhciAqKSB0cCArIDAsIDQpOwogICAgICAgICAgdGVwLT5lbmQub2Zmc2V0ID0gYnl0ZV9nZXQg
KCh1bnNpZ25lZCBjaGFyICopIHRwICsgNCwgNCk7CiAgICAgICAgICB0ZXAtPmluZm8ub2Zmc2V0
ID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopIHRwICsgOCwgNCk7CiAgICAgICAgfQogICAg
ICBlbHNlCiAgICAgICAgewogICAgICAgICAgdGVwLT5zdGFydC5vZmZzZXQgPSBieXRlX2dldCAo
KHVuc2lnbmVkIGNoYXIgKikgdHAgKyAwLCAtOCk7CiAgICAgICAgICB0ZXAtPmVuZC5vZmZzZXQg
PSBieXRlX2dldCAoKHVuc2lnbmVkIGNoYXIgKikgdHAgKyA4LCAtOCk7CiAgICAgICAgICB0ZXAt
PmluZm8ub2Zmc2V0ID0gYnl0ZV9nZXQgKCh1bnNpZ25lZCBjaGFyICopIHRwICsgMTYsIC04KTsK
ICAgICAgICB9CiAgICAgIHRlcC0+c3RhcnQub2Zmc2V0ICs9IGF1eC0+c2VnX2Jhc2U7CiAgICAg
IHRlcC0+ZW5kLm9mZnNldCArPSBhdXgtPnNlZ19iYXNlOwogICAgICB0ZXAtPmluZm8ub2Zmc2V0
ICs9IGF1eC0+c2VnX2Jhc2U7CiAgICB9CiAgZnJlZSAodGFibGUpOwoKCgogIGZvciAocmVsc2Vj
ID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgcmVsc2VjIDwgc2VjdGlvbl9oZWFkZXJzICsgZWxm
X2hlYWRlci5lX3NobnVtOwogICAgICAgKytyZWxzZWMpCiAgICB7CiAgICAgIGlmIChyZWxzZWMt
PnNoX3R5cGUgIT0gNAogICAgICAgICAgfHwgKHNlY3Rpb25faGVhZGVycyArICgocmVsc2VjLT5z
aF9pbmZvKSA8IDB4RkYwMCA/IChyZWxzZWMtPnNoX2luZm8pIDogKChyZWxzZWMtPnNoX2luZm8p
IDw9IDB4RkZGRiA/IDAgOiAocmVsc2VjLT5zaF9pbmZvKSAtICgweEZGRkYgKyAxIC0gMHhGRjAw
KSkpKSAhPSBzZWMpCiAgICAgICAgY29udGludWU7CgogICAgICBpZiAoIXNsdXJwX3JlbGFfcmVs
b2NzIChmaWxlLCByZWxzZWMtPnNoX29mZnNldCwgcmVsc2VjLT5zaF9zaXplLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmIHJlbGEsICYgbnJlbGFzKSkKICAgICAgICByZXR1cm4gMDsK
CiAgICAgIGZvciAocnAgPSByZWxhOyBycCA8IHJlbGEgKyBucmVsYXM7ICsrcnApCiAgICAgICAg
ewogICAgICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAgICAgICAgICAgewogICAgICAgICAgICAg
IHJlbG5hbWUgPSBlbGZfaWE2NF9yZWxvY190eXBlICgoKHJwLT5yX2luZm8pICYgMHhmZikpOwog
ICAgICAgICAgICAgIHN5bSA9IGF1eC0+c3ltdGFiICsgKChycC0+cl9pbmZvKSA+PiA4KTsKCiAg
ICAgICAgICAgICAgaWYgKCgoc3ltLT5zdF9pbmZvKSAmIDB4RikgIT0gMykKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHN5bWJv
bCB0eXBlICV1XG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgKChzeW0tPnN0X2luZm8pICYg
MHhGKSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICByZWxu
YW1lID0gZWxmX2lhNjRfcmVsb2NfdHlwZSAoKChycC0+cl9pbmZvKSAmIDB4ZmZmZmZmZmYpKTsK
ICAgICAgICAgICAgICBzeW0gPSBhdXgtPnN5bXRhYiArICgocnAtPnJfaW5mbykgPj4gMzIpOwoK
ICAgICAgICAgICAgICBpZiAoKChzeW0tPnN0X2luZm8pICYgMHhGKSAhPSAzKQogICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICB3YXJuICgoIlNraXBwaW5nIHVuZXhwZWN0ZWQgc3lt
Ym9sIHR5cGUgJXVcbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAoKHN5bS0+c3RfaW5mbykg
JiAweEYpKTsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgxMykgJiYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCAocmVsbmFtZSkgJiYgc3RybGVu
IChyZWxuYW1lKSA8ICgoc2l6ZV90KSAoMTMpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
Ul9JQTY0X1NFR1JFTCIpICYmIHN0cmxlbiAoIlJfSUE2NF9TRUdSRUwiKSA8ICgoc2l6ZV90KSAo
MTMpKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHJlbG5hbWUpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiUl9J
QTY0X1NFR1JFTCIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAocmVsbmFtZSksIF9fczJfbGVuID0g
c3RybGVuICgiUl9JQTY0X1NFR1JFTCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChyZWxu
YW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShyZWxuYW1lKSA9PSAxKSB8fCBfX3Mx
X2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiUl9JQTY0X1NFR1JFTCIp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJSX0lBNjRfU0VHUkVMIikgPT0gMSkgfHwg
X19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChyZWxuYW1lKSwgKF9f
Y29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBf
X3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChyZWxuYW1l
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgocmVsbmFtZSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikocmVsbmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChyZWxuYW1l
KSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIlJfSUE2NF9TRUdSRUwi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfSUE2NF9TRUdSRUwiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiUl9JQTY0X1NFR1JFTCIpID09IDEpID8gKF9fZXh0ZW5zaW9u
X18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikoIlJfSUE2NF9TRUdSRUwiKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbMV0pOyBpZiAoX19z
MV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX0lBNjRfU0VHUkVMIikpWzNd
KTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJSX0lBNjRfU0VHUkVMIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChyZWxuYW1lKSlbMF0gLSBfX3MyWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzNd
IC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
IlJfSUE2NF9TRUdSRUwiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIlJfSUE2NF9TRUdS
RUwiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiUl9JQTY0X1NFR1JFTCIpID09IDEp
ICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIlJfSUE2NF9TRUdSRUwiKSwgX19zMl9sZW4gPCA0KSA/
IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocmVsbmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKHJlbG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHJlbG5hbWUpID09IDEp
ID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpKVswXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIlJfSUE2NF9TRUdSRUwiKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwi
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocmVsbmFtZSkpWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9T
RUdSRUwiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHJlbG5hbWUp
KVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJSX0lB
NjRfU0VHUkVMIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHJlbG5hbWUpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9T
RUdSRUwiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIlJfSUE2NF9TRUdSRUwiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJSX0lBNjRfU0VHUkVMIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAm
JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIlJfSUE2NF9TRUdSRUwiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKHJlbG5hbWUsICJSX0lBNjRfU0VHUkVMIikpKSk7IH0pIDog
c3RybmNtcCAocmVsbmFtZSwgIlJfSUE2NF9TRUdSRUwiLCAxMykpKSAhPSAwKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHJlbG9jYXRpb24g
dHlwZSAlc1xuIiksIHJlbG5hbWUpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICB9CgogICAgICAgICAgaSA9IHJwLT5yX29mZnNldCAvICgzICogYWRkcl9zaXplKTsKCiAgICAg
ICAgICBzd2l0Y2ggKHJwLT5yX29mZnNldC9hZGRyX3NpemUgJSAzKQogICAgICAgICAgICB7CiAg
ICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBhdXgtPnRhYmxlW2ldLnN0YXJ0LnNlY3Rp
b24gPSBzeW0tPnN0X3NobmR4OwogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uc3RhcnQub2Zm
c2V0ICs9IHJwLT5yX2FkZGVuZDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2Fz
ZSAxOgogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uZW5kLnNlY3Rpb24gPSBzeW0tPnN0X3No
bmR4OwogICAgICAgICAgICAgIGF1eC0+dGFibGVbaV0uZW5kLm9mZnNldCArPSBycC0+cl9hZGRl
bmQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAg
ICBhdXgtPnRhYmxlW2ldLmluZm8uc2VjdGlvbiA9IHN5bS0+c3Rfc2huZHg7CiAgICAgICAgICAg
ICAgYXV4LT50YWJsZVtpXS5pbmZvLm9mZnNldCArPSBycC0+cl9hZGRlbmQ7CiAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICBmcmVlIChyZWxhKTsKICAgIH0KCiAgYXV4LT50YWJs
ZV9sZW4gPSBzaXplIC8gKDMgKiBhZGRyX3NpemUpOwogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50
CnByb2Nlc3NfdW53aW5kIChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjLCAqdW53c2VjID0gKCh2b2lkICopMCksICpzdHJzZWM7CiAgdW5zaWduZWQgbG9u
ZyBpLCBhZGRyX3NpemUsIHVud2NvdW50ID0gMCwgdW53c3RhcnQgPSAwOwogIHN0cnVjdCB1bndf
YXV4X2luZm8gYXV4OwoKICBpZiAoIWRvX3Vud2luZCkKICAgIHJldHVybiAxOwoKICBpZiAoZWxm
X2hlYWRlci5lX21hY2hpbmUgIT0gNTApCiAgICB7CiAgICAgIHByaW50ZiAoKCJcblRoZXJlIGFy
ZSBubyB1bndpbmQgc2VjdGlvbnMgaW4gdGhpcyBmaWxlLlxuIikpOwogICAgICByZXR1cm4gMTsK
ICAgIH0KCiAgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YgKGF1
eCkpICYmIChzaXplb2YgKGF1eCkpIDw9IDE2ID8gKChzaXplb2YgKGF1eCkpID09IDEgPyAoeyB2
b2lkICpfX3MgPSAoJiBhdXgpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3VpbnQ4X3QpIDA7
IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoJiBhdXgpOyB1bmlvbiB7IHVuc2lnbmVkIGludCBf
X3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191YzsgfSAqX191
ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1bnNpZ25l
ZCBpbnQpIChzaXplb2YgKGF1eCkpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVu
c2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNh
c2UgMTQ6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAx
OyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9f
dWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsgY2FzZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgw
MTAxOyBicmVhazsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNh
c2UgNTogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9f
YzsgYnJlYWs7IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBj
YXNlIDA6IGJyZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAo
MCkgPT0gJ1wwJyA/ICh7IHZvaWQgKl9fcyA9ICgmIGF1eCk7IF9fYnVpbHRpbl9tZW1zZXQgKF9f
cywgJ1wwJywgc2l6ZW9mIChhdXgpKTsgX19zOyB9KSA6IG1lbXNldCAoJiBhdXgsIDAsIHNpemVv
ZiAoYXV4KSkpKSk7CgogIGFkZHJfc2l6ZSA9IGlzXzMyYml0X2VsZiA/IDQgOiA4OwoKICBmb3Ig
KGkgPSAwLCBzZWMgPSBzZWN0aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07ICsr
aSwgKytzZWMpCiAgICB7CiAgICAgIGlmIChzZWMtPnNoX3R5cGUgPT0gMikKICAgICAgICB7CiAg
ICAgICAgICBhdXgubnN5bXMgPSBzZWMtPnNoX3NpemUgLyBzZWMtPnNoX2VudHNpemU7CiAgICAg
ICAgICBhdXguc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJpdF9lbGZfc3ltYm9scyAo
ZmlsZSwgc2VjKSA6IGdldF82NGJpdF9lbGZfc3ltYm9scyAoZmlsZSwgc2VjKSk7CgogICAgICAg
ICAgc3Ryc2VjID0gKHNlY3Rpb25faGVhZGVycyArICgoc2VjLT5zaF9saW5rKSA8IDB4RkYwMCA/
IChzZWMtPnNoX2xpbmspIDogKChzZWMtPnNoX2xpbmspIDw9IDB4RkZGRiA/IDAgOiAoc2VjLT5z
aF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKTsKICAgICAgICAgIGF1eC5zdHJ0YWJf
c2l6ZSA9IHN0cnNlYy0+c2hfc2l6ZTsKICAgICAgICAgIGF1eC5zdHJ0YWIgPSAoY2hhciAqKSBn
ZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHN0cnNlYy0+c2hfb2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXguc3RydGFiX3NpemUsICgic3RyaW5n
IHRhYmxlIikpOwogICAgICAgIH0KICAgICAgZWxzZSBpZiAoc2VjLT5zaF90eXBlID09ICgweDcw
MDAwMDAwICsgMSkpCiAgICAgICAgdW53Y291bnQrKzsKICAgIH0KCiAgaWYgKCF1bndjb3VudCkK
ICAgIHByaW50ZiAoKCJcblRoZXJlIGFyZSBubyB1bndpbmQgc2VjdGlvbnMgaW4gdGhpcyBmaWxl
LlxuIikpOwoKICB3aGlsZSAodW53Y291bnQtLSA+IDApCiAgICB7CiAgICAgIGNoYXIgKnN1ZmZp
eDsKICAgICAgc2l6ZV90IGxlbiwgbGVuMjsKCiAgICAgIGZvciAoaSA9IHVud3N0YXJ0LCBzZWMg
PSBzZWN0aW9uX2hlYWRlcnMgKyB1bndzdGFydDsKICAgICAgICAgICBpIDwgZWxmX2hlYWRlci5l
X3NobnVtOyArK2ksICsrc2VjKQogICAgICAgIGlmIChzZWMtPnNoX3R5cGUgPT0gKDB4NzAwMDAw
MDAgKyAxKSkKICAgICAgICAgIHsKICAgICAgICAgICAgdW53c2VjID0gc2VjOwogICAgICAgICAg
ICBicmVhazsKICAgICAgICAgIH0KCiAgICAgIHVud3N0YXJ0ID0gaSArIDE7CiAgICAgIGxlbiA9
IHNpemVvZiAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSAtIDE7CgogICAgICBpZiAoKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChsZW4pICYmICgoX19idWlsdGluX2NvbnN0
YW50X3AgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPCAo
KHNpemVfdCkgKGxlbikpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuZ251LmxpbmtvbmNl
LmlhNjR1bncuIikgJiYgc3RybGVuICgiLmdudS5saW5rb25jZS5pYTY0dW53LiIpIDwgKChzaXpl
X3QpIChsZW4pKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVu
OyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRpbl9j
b25zdGFudF9wICgiLmdudS5saW5rb25jZS5pYTY0dW53LiIpICYmIChfX3MxX2xlbiA9IHN0cmxl
biAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHVud3NlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS5p
YTY0dW53LiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHVud3NlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBf
X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25j
ZS5pYTY0dW53LiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZ251LmxpbmtvbmNl
LmlhNjR1bncuIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVu
KSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3Nl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVu
ICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
dW53c2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
Ii5nbnUubGlua29uY2UuaWE2NHVudy4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi
LmdudS5saW5rb25jZS5pYTY0dW53LiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1
bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3Nl
YyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bncuIikp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bncuIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHVud3NlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFt
ZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVu
d3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3Mx
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlu
a29uY2UuaWE2NHVudy4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25j
ZS5pYTY0dW53LiIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCh1bndz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYykt
PnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgodW53c2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9s
ZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkp
ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpID09IDEpID8g
KF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5nbnUubGlua29uY2Uu
aWE2NHVudy4iKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1
bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3Nl
YyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAo
KHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1l
KSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bncuIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbMF07IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4i
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
X19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bncuIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5nbnUubGlua29uY2UuaWE2NHVudy4iKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSksICIuZ251LmxpbmtvbmNlLmlh
NjR1bncuIikpKSk7IH0pIDogc3RybmNtcCAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSwgIi5nbnUubGlua29u
Y2UuaWE2NHVudy4iLCBsZW4pKSkgPT0gMCkKCiAgICAgICAgewoKICAgICAgICAgIGxlbjIgPSBz
aXplb2YgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpIC0gMTsKICAgICAgICAgIHN1ZmZpeCA9
ICgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkgKyBsZW47CiAgICAgICAgICBmb3IgKGkgPSAwLCBzZWMgPSBzZWN0
aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgICAgICsraSwg
KytzZWMpCiAgICAgICAgICAgIGlmICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKGxlbjIpICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbjIpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LmdudS5saW5rb25jZS5pYTY0dW53aS4iKSAmJiBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLmlhNjR1
bndpLiIpIDwgKChzaXplX3QpIChsZW4yKSkpKSA/IF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9f
czFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikgJiYgKF9fczFfbGVu
ID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLmlh
NjR1bndpLiIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAo
ISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSA9PSAx
KSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkp
LCAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSwgKF9fczFfbGVu
IDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25z
dGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
Ii5nbnUubGlua29uY2UuaWE2NHVud2kuIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikoIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikpWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5p
YTY0dW53aS4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
Z251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0
ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKTsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFf
bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9f
cmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmdudS5saW5rb25jZS5pYTY0
dW53aS4iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29uY2UuaWE2NHVu
d2kuIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoIi5nbnUubGlua29uY2UuaWE2NHVu
d2kuIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuICgiLmdudS5saW5rb25jZS5pYTY0dW53
aS4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgo
c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9u
YW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKiko
Ii5nbnUubGlua29uY2UuaWE2NHVud2kuIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVsxXSk7IGlmIChfX3My
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4i
KSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251Lmxpbmtv
bmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18g
KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19z
MVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251
LmxpbmtvbmNlLmlhNjR1bndpLiIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS5pYTY0dW53aS4iKSlbMV0pOyBpZiAoX19z
Ml9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLmlh
NjR1bndpLiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLmlhNjR1bndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlYyktPnNoX25hbWUpKSwgIi5nbnUubGlua29uY2UuaWE2NHVud2kuIikpKSk7IH0pIDogc3Ry
bmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSwgIi5nbnUubGlua29uY2UuaWE2NHVud2kuIiwgbGVuMikpKSA9PSAwCgog
ICAgICAgICAgICAgICAgJiYgX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc3VmZml4KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4y
KSwgX19zMl9sZW4gPSBzdHJsZW4gKHN1ZmZpeCksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkgKyBsZW4yKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsg
bGVuMikgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoc3VmZml4KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdWZmaXgpID09IDEpIHx8
IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxl
bjIpLCAoX19jb25zdCBjaGFyICopIChzdWZmaXgpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9f
czFfbGVuIDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkg
KyBsZW4yKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSA9PSAxKSAmJiAoX19zMV9s
ZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc3VmZml4KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoc3VmZml4KSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdWZmaXgpID09IDEpID8gKF9fZXh0ZW5zaW9u
X18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMF0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKHN1ZmZpeCkpWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbMl0pOyBpZiAoX19z
MV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVszXSk7IH0gfSBf
X3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpf
X3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgp
OyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsxXSAtIF9fczJbMV0p
OyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsy
XSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkg
KyBsZW4yKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wIChzdWZmaXgpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdWZmaXgpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN1ZmZpeCkgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuIChzdWZmaXgpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgo
KHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hf
bmFtZSkpICsgbGVuMikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4y
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikgPT0gMSkgPyAo
X19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoc3VmZml4KSlbMF0pOyBpZiAo
X19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsxXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzFdKTsg
aWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgpKVsy
XSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkp
WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49
IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMp
LT5zaF9uYW1lKSkgKyBsZW4yKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzBdOyBp
ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzFd
KTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdWZmaXgp
KVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19z
MVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZp
eCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMiwgc3Vm
Zml4KSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICB7CgoKICAgICAgICAgIGxlbiA9IHNpemVvZiAoIi5JQV82NC51bndpbmQiKSAt
IDE7CiAgICAgICAgICBsZW4yID0gc2l6ZW9mICgiLklBXzY0LnVud2luZF9pbmZvIikgLSAxOwog
ICAgICAgICAgc3VmZml4ID0gIiI7CiAgICAgICAgICBpZiAoKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChsZW4pICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSkpICYmIHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbikp
KSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCIuSUFfNjQudW53aW5kIikgJiYgc3RybGVuICgi
LklBXzY0LnVud2luZCIpIDwgKChzaXplX3QpIChsZW4pKSkpID8gX19leHRlbnNpb25fXyAoeyBz
aXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSkpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLklBXzY0LnVud2luZCIpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgi
LklBXzY0LnVud2luZCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHVud3NlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFt
ZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHVud3NlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSA9PSAx
KSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLklBXzY0
LnVud2luZCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuSUFfNjQudW53aW5kIikg
PT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHVu
d3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBz
dHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2Vj
KS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2Vj
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
KCh1bndzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVu
d3NlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCh1bndzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNo
X25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHVud3NlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSwg
X19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5JQV82NC51bndpbmQiKSAm
JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5JQV82NC51bndpbmQiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiLklBXzY0LnVud2luZCIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5JQV82NC51bndpbmQiKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQi
KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5JQV82NC51bndpbmQiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIik7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHVud3NlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzJd
IC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNo
X25hbWUpKSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoIi5JQV82NC51bndpbmQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
Ii5JQV82NC51bndpbmQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLklBXzY0LnVu
d2luZCIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5JQV82NC51bndpbmQiKSwgX19z
Ml9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKCh1bndzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0
aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1
bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5JQV82NC51bndpbmQiKSlbMF0pOyBpZiAoX19z
Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSkpWzFdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQi
KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5JQV82NC51bndpbmQiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAo
X19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgodW53c2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGgg
PyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5zaF9uYW1lKSkpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmQiKSlbMV0pOyBpZiAo
X19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5k
IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChf
X3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5J
QV82NC51bndpbmQiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgodW53c2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1lID49IHN0cmlu
Z190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1bndzZWMpLT5z
aF9uYW1lKSksICIuSUFfNjQudW53aW5kIikpKSk7IH0pIDogc3RybmNtcCAoKCh1bndzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25h
bWUpKSwgIi5JQV82NC51bndpbmQiLCBsZW4pKSkgPT0gMCkKCiAgICAgICAgICAgIHN1ZmZpeCA9
ICgodW53c2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKCh1bndzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArICh1
bndzZWMpLT5zaF9uYW1lKSkgKyBsZW47CiAgICAgICAgICBmb3IgKGkgPSAwLCBzZWMgPSBzZWN0
aW9uX2hlYWRlcnM7IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgICAgICsraSwg
KytzZWMpCiAgICAgICAgICAgIGlmICgoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKGxlbjIpICYmICgoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIHN0cmxlbiAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPCAoKHNpemVfdCkgKGxlbjIpKSkgfHwgKF9fYnVpbHRpbl9jb25zdGFudF9wICgi
LklBXzY0LnVud2luZF9pbmZvIikgJiYgc3RybGVuICgiLklBXzY0LnVud2luZF9pbmZvIikgPCAo
KHNpemVfdCkgKGxlbjIpKSkpID8gX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9f
czJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRpbl9jb25z
dGFudF9wICgiLklBXzY0LnVud2luZF9pbmZvIikgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuSUFfNjQudW53aW5kX2luZm8iKSwgKCEoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoIi5JQV82NC51bndpbmRfaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCIuSUFfNjQudW53aW5kX2luZm8iKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVu
d2luZF9pbmZvIiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJs
ZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkp
ID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSksIF9fczFfbGVuIDwgNCkgPyAo
X19idWlsdGluX2NvbnN0YW50X3AgKCIuSUFfNjQudW53aW5kX2luZm8iKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoIi5JQV82NC51bndpbmRfaW5mbyIpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCIuSUFfNjQudW53aW5kX2luZm8iKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7
IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopKCIuSUFfNjQudW53aW5kX2luZm8iKSlbMF0pOyBpZiAoX19zMV9sZW4g
PiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmRfaW5mbyIpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkg
PyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZv
IikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVu
d2luZF9pbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuSUFfNjQudW53aW5kX2luZm8iKTsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsg
X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wICgiLklBXzY0LnVud2luZF9pbmZvIikgJiYgKChzaXplX3QpKGNv
bnN0IHZvaWQgKikoKCIuSUFfNjQudW53aW5kX2luZm8iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiLklBXzY0LnVud2luZF9pbmZvIikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVu
ICgiLklBXzY0LnVud2luZF9pbmZvIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0
YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVu
Z3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9f
ICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2Vj
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopKCIuSUFfNjQudW53aW5kX2luZm8iKSlbMF0pOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndpbmRfaW5mbyIpKVsxXSk7
IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9p
bmZvIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlb
M10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0
LnVud2luZF9pbmZvIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx
WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82
NC51bndpbmRfaW5mbyIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZvIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLklBXzY0LnVud2luZF9pbmZvIikpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5JQV82NC51bndp
bmRfaW5mbyIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSwgIi5J
QV82NC51bndpbmRfaW5mbyIpKSkpOyB9KSA6IHN0cm5jbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuSUFfNjQudW53
aW5kX2luZm8iLCBsZW4yKSkpID09IDAKCiAgICAgICAgICAgICAgICAmJiBfX2V4dGVuc2lvbl9f
ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25h
bWUpKSArIGxlbjIpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChzdWZmaXgpICYmIChfX3MxX2xl
biA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpLCBfX3MyX2xlbiA9IHN0cmxlbiAoc3VmZml4KSwg
KCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAm
JiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdWZmaXgpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKHN1ZmZpeCkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMiksIChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCks
IChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpICsgbGVuMikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUp
KSArIGxlbjIpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpLCBf
X3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdWZmaXgpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChzdWZmaXgpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN1
ZmZpeCkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxl
bjIpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoc3Vm
Zml4KSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSAr
IGxlbjIpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHN1ZmZpeCkpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkgKyBsZW4yKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChzdWZmaXgpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y
ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChz
ZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25h
bWUpKSArIGxlbjIpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHN1ZmZpeCkpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lk
ICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpICsgbGVuMikp
WzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpICsgbGVuMikpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpKVszXSAtIF9fczJbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHN1ZmZpeCkgJiYgKChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKHN1ZmZpeCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3Vm
Zml4KSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKHN1ZmZpeCksIF9fczJfbGVuIDwgNCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkgKyBsZW4yKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICop
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkgKyBsZW4yKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgo
KHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hf
bmFtZSkpICsgbGVuMikpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKShzdWZmaXgpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBz
dHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+
c2hfbmFtZSkpICsgbGVuMikpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoc3VmZml4KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSArIGxlbjIpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs
dCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpICsgbGVuMikpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSArIGxlbjIpOyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoc3VmZml4KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g
MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoc3VmZml4KSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHN1ZmZpeCkpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoc3VmZml4KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBz
dHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkgKyBsZW4yLCBzdWZmaXgpKSkpOyB9KSA9PSAwKQogICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgIH0KCiAgICAgIGlmIChpID09IGVsZl9oZWFkZXIuZV9zaG51bSkKICAg
ICAgICB7CiAgICAgICAgICBwcmludGYgKCgiXG5Db3VsZCBub3QgZmluZCB1bndpbmQgaW5mbyBz
ZWN0aW9uIGZvciAiKSk7CgogICAgICAgICAgaWYgKHN0cmluZ190YWJsZSA9PSAoKHZvaWQgKikw
KSkKICAgICAgICAgICAgcHJpbnRmICgiJWQiLCB1bndzZWMtPnNoX25hbWUpOwogICAgICAgICAg
ZWxzZQogICAgICAgICAgICBwcmludGYgKCgiJyVzJyIpLCAoKHVud3NlYykgPT0gKCh2b2lkICop
MCkgPyAiPG5vbmU+IiA6ICgodW53c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAodW53c2VjKS0+c2hfbmFtZSkpKTsKICAg
ICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBhdXguaW5mb19zaXplID0gc2Vj
LT5zaF9zaXplOwogICAgICAgICAgYXV4LmluZm9fYWRkciA9IHNlYy0+c2hfYWRkcjsKICAgICAg
ICAgIGF1eC5pbmZvID0gKGNoYXIgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMt
PnNoX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1eC5p
bmZvX3NpemUsICgidW53aW5kIGluZm8iKSk7CgogICAgICAgICAgcHJpbnRmICgoIlxuVW53aW5k
IHNlY3Rpb24gIikpOwoKICAgICAgICAgIGlmIChzdHJpbmdfdGFibGUgPT0gKCh2b2lkICopMCkp
CiAgICAgICAgICAgIHByaW50ZiAoIiVkIiwgdW53c2VjLT5zaF9uYW1lKTsKICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgcHJpbnRmICgoIiclcyciKSwgKCh1bndzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHVud3NlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHVud3NlYyktPnNoX25hbWUpKSk7CgogICAg
ICAgICAgcHJpbnRmICgoIiBhdCBvZmZzZXQgMHglbHggY29udGFpbnMgJWx1IGVudHJpZXM6XG4i
KSwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHVud3NlYy0+c2hfb2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHVud3NlYy0+c2hfc2l6ZSAvICgzICog
YWRkcl9zaXplKSkpOwoKICAgICAgICAgICh2b2lkKSBzbHVycF9pYTY0X3Vud2luZF90YWJsZSAo
ZmlsZSwgJiBhdXgsIHVud3NlYyk7CgogICAgICAgICAgaWYgKGF1eC50YWJsZV9sZW4gPiAwKQog
ICAgICAgICAgICBkdW1wX2lhNjRfdW53aW5kICgmIGF1eCk7CgogICAgICAgICAgaWYgKGF1eC50
YWJsZSkKICAgICAgICAgICAgZnJlZSAoKGNoYXIgKikgYXV4LnRhYmxlKTsKICAgICAgICAgIGlm
IChhdXguaW5mbykKICAgICAgICAgICAgZnJlZSAoKGNoYXIgKikgYXV4LmluZm8pOwogICAgICAg
ICAgYXV4LnRhYmxlID0gKCh2b2lkICopMCk7CiAgICAgICAgICBhdXguaW5mbyA9ICgodm9pZCAq
KTApOwogICAgICAgIH0KICAgIH0KCiAgaWYgKGF1eC5zeW10YWIpCiAgICBmcmVlIChhdXguc3lt
dGFiKTsKICBpZiAoYXV4LnN0cnRhYikKICAgIGZyZWUgKChjaGFyICopIGF1eC5zdHJ0YWIpOwoK
ICByZXR1cm4gMTsKfQoKc3RhdGljIHZvaWQKZHluYW1pY19zZWdtZW50X21pcHNfdmFsIChlbnRy
eSkKICAgICBFbGZfSW50ZXJuYWxfRHluICplbnRyeTsKewogIHN3aXRjaCAoZW50cnktPmRfdGFn
KQogICAgewogICAgY2FzZSAweDcwMDAwMDA1OgogICAgICBpZiAoZW50cnktPmRfdW4uZF92YWwg
PT0gMCkKICAgICAgICBwcmludGYgKCJOT05FXG4iKTsKICAgICAgZWxzZQogICAgICAgIHsKICAg
ICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICogb3B0c1tdID0KICAgICAgICAgIHsKICAgICAgICAg
ICAgIlFVSUNLU1RBUlQiLCAiTk9UUE9UIiwgIk5PX0xJQlJBUllfUkVQTEFDRU1FTlQiLAogICAg
ICAgICAgICAiTk9fTU9WRSIsICJTR0lfT05MWSIsICJHVUFSQU5URUVfSU5JVCIsICJERUxUQV9D
X1BMVVNfUExVUyIsCiAgICAgICAgICAgICJHVUFSQU5URUVfU1RBUlRfSU5JVCIsICJQSVhJRSIs
ICJERUZBVUxUX0RFTEFZX0xPQUQiLAogICAgICAgICAgICAiUkVRVUlDS1NUQVJUIiwgIlJFUVVJ
Q0tTVEFSVEVEIiwgIkNPUkQiLCAiTk9fVU5SRVNfVU5ERUYiLAogICAgICAgICAgICAiUkxEX09S
REVSX1NBRkUiCiAgICAgICAgICB9OwogICAgICAgICAgdW5zaWduZWQgaW50IGNudDsKICAgICAg
ICAgIGludCBmaXJzdCA9IDE7CiAgICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IChzaXplb2Yg
KG9wdHMpIC8gc2l6ZW9mICgob3B0cylbMF0pKTsgKytjbnQpCiAgICAgICAgICAgIGlmIChlbnRy
eS0+ZF91bi5kX3ZhbCAmICgxIDw8IGNudCkpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgcHJpbnRmICgiJXMlcyIsIGZpcnN0ID8gIiIgOiAiICIsIG9wdHNbY250XSk7CiAgICAgICAg
ICAgICAgICBmaXJzdCA9IDA7CiAgICAgICAgICAgICAgfQogICAgICAgICAgcHV0cyAoIiIpOwog
ICAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDA0OgogICAgICBpZiAoZHlu
YW1pY19zdHJpbmdzICE9ICgodm9pZCAqKTApKQogICAgICAgIHByaW50ZiAoIkludGVyZmFjZSBW
ZXJzaW9uOiAlc1xuIiwKICAgICAgICAgICAgICAgIGR5bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5k
X3VuLmRfdmFsKTsKICAgICAgZWxzZQogICAgICAgIHByaW50ZiAoIiVsZFxuIiwgKGxvbmcpIGVu
dHJ5LT5kX3VuLmRfcHRyKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDAyOgogICAg
ICB7CiAgICAgICAgY2hhciB0aW1lYnVmWzIwXTsKICAgICAgICBzdHJ1Y3QgdG0gKnRtcDsKCiAg
ICAgICAgdGltZV90IHRpbWUgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKICAgICAgICB0bXAgPSBnbXRp
bWUgKCZ0aW1lKTsKICAgICAgICBzcHJpbnRmICh0aW1lYnVmLCAiJTA0dS0lMDJ1LSUwMnVUJTAy
dTolMDJ1OiUwMnUiLAogICAgICAgICAgICAgICAgIHRtcC0+dG1feWVhciArIDE5MDAsIHRtcC0+
dG1fbW9uICsgMSwgdG1wLT50bV9tZGF5LAogICAgICAgICAgICAgICAgIHRtcC0+dG1faG91ciwg
dG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKICAgICAgICBwcmludGYgKCJUaW1lIFN0YW1wOiAl
c1xuIiwgdGltZWJ1Zik7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSAweDcwMDAwMDAx
OgogICAgY2FzZSAweDcwMDAwMDBhOgogICAgY2FzZSAweDcwMDAwMDBiOgogICAgY2FzZSAweDcw
MDAwMDEwOgogICAgY2FzZSAweDcwMDAwMDExOgogICAgY2FzZSAweDcwMDAwMDEyOgogICAgY2Fz
ZSAweDcwMDAwMDE0OgogICAgY2FzZSAweDcwMDAwMDE4OgogICAgY2FzZSAweDcwMDAwMDFhOgog
ICAgY2FzZSAweDcwMDAwMDFjOgogICAgY2FzZSAweDcwMDAwMDFlOgogICAgY2FzZSAweDcwMDAw
MDIxOgogICAgY2FzZSAweDcwMDAwMDJmOgogICAgICBwcmludGYgKCIlbGRcbiIsIChsb25nKSBl
bnRyeS0+ZF91bi5kX3B0cik7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHByaW50
ZiAoIiUjbHhcbiIsIChsb25nKSBlbnRyeS0+ZF91bi5kX3B0cik7CiAgICB9Cn0KCgpzdGF0aWMg
dm9pZApkeW5hbWljX3NlZ21lbnRfcGFyaXNjX3ZhbCAoZW50cnkpCiAgICAgRWxmX0ludGVybmFs
X0R5biAqZW50cnk7CnsKICBzd2l0Y2ggKGVudHJ5LT5kX3RhZykKICAgIHsKICAgIGNhc2UgKDB4
NjAwMDAwMDAgKyAweDEpOgogICAgICB7CiAgICAgICAgc3RhdGljIHN0cnVjdAogICAgICAgIHsK
ICAgICAgICAgIGxvbmcgaW50IGJpdDsKICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAg
ICB9CiAgICAgICAgZmxhZ3NbXSA9CiAgICAgICAgewogICAgICAgICAgeyAweDAwMDEsICJIUF9E
RUJVR19QUklWQVRFIiB9LAogICAgICAgICAgeyAweDAwMDIsICJIUF9ERUJVR19DQUxMQkFDSyIg
fSwKICAgICAgICAgIHsgMHgwMDA0LCAiSFBfREVCVUdfQ0FMTEJBQ0tfQk9SIiB9LAogICAgICAg
ICAgeyAweDAwMDgsICJIUF9OT19FTlZWQVIiIH0sCiAgICAgICAgICB7IDB4MDAxMCwgIkhQX0JJ
TkRfTk9XIiB9LAogICAgICAgICAgeyAweDAwMjAsICJIUF9CSU5EX05PTkZBVEFMIiB9LAogICAg
ICAgICAgeyAweDAwNDAsICJIUF9CSU5EX1ZFUkJPU0UiIH0sCiAgICAgICAgICB7IDB4MDA4MCwg
IkhQX0JJTkRfUkVTVFJJQ1RFRCIgfSwKICAgICAgICAgIHsgMHgwMTAwLCAiSFBfQklORF9TWU1C
T0xJQyIgfSwKICAgICAgICAgIHsgMHgwMjAwLCAiSFBfUlBBVEhfRklSU1QiIH0sCiAgICAgICAg
ICB7IDB4MDQwMCwgIkhQX0JJTkRfREVQVEhfRklSU1QiIH0KICAgICAgICB9OwogICAgICAgIGlu
dCBmaXJzdCA9IDE7CiAgICAgICAgc2l6ZV90IGNudDsKICAgICAgICBiZmRfdm1hIHZhbCA9IGVu
dHJ5LT5kX3VuLmRfdmFsOwoKICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IHNpemVvZiAoZmxh
Z3MpIC8gc2l6ZW9mIChmbGFnc1swXSk7ICsrY250KQogICAgICAgICAgaWYgKHZhbCAmIGZsYWdz
W2NudF0uYml0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKCEgZmlyc3QpCiAgICAg
ICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIGZwdXRzIChmbGFnc1tjbnRd
LnN0ciwgc3Rkb3V0KTsKICAgICAgICAgICAgICBmaXJzdCA9IDA7CiAgICAgICAgICAgICAgdmFs
IF49IGZsYWdzW2NudF0uYml0OwogICAgICAgICAgICB9CgogICAgICAgIGlmICh2YWwgIT0gMCB8
fCBmaXJzdCkKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKCEgZmlyc3QpCiAgICAgICAgICAg
ICAgcHV0Y2hhciAoJyAnKTsKICAgICAgICAgICAgcHJpbnRfdm1hICh2YWwsIEhFWCk7CiAgICAg
ICAgICB9CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgcHJpbnRfdm1h
IChlbnRyeS0+ZF91bi5kX3B0ciwgUFJFRklYX0hFWCk7CiAgICAgIGJyZWFrOwogICAgfQogIHB1
dGNoYXIgKCdcbicpOwp9CgpzdGF0aWMgdm9pZApkeW5hbWljX3NlZ21lbnRfaWE2NF92YWwgKGVu
dHJ5KQogICAgIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5Owp7CiAgc3dpdGNoIChlbnRyeS0+ZF90
YWcpCiAgICB7CiAgICBjYXNlICgweDcwMDAwMDAwICsgMCk6CgogICAgICBwcmludF92bWEgKGVu
dHJ5LT5kX3VuLmRfcHRyLCBQUkVGSVhfSEVYKTsKICAgICAgcHJpbnRmICgiIC0tICIpOwogICAg
ICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfcHRyICsgKDMgKiA4KSwgUFJFRklYX0hFWCk7CiAg
ICAgIHByaW50ZiAoIlxuIik7CiAgICB9Cn0KCnN0YXRpYyBpbnQKZ2V0XzMyYml0X2R5bmFtaWNf
c2VnbWVudCAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAgRWxmMzJfRXh0ZXJuYWxfRHluICpl
ZHluOwogIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5OwogIGJmZF9zaXplX3R5cGUgaTsKCiAgZWR5
biA9IChFbGYzMl9FeHRlcm5hbF9EeW4gKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBk
eW5hbWljX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5
bmFtaWNfc2l6ZSwgKCJkeW5hbWljIHNlZ21lbnQiKSk7CiAgaWYgKCFlZHluKQogICAgcmV0dXJu
IDA7CgoKCgogIGR5bmFtaWNfc2l6ZSA9IDA7CiAgd2hpbGUgKCooRWxmMzJfV29yZCAqKSBlZHlu
W2R5bmFtaWNfc2l6ZSsrXS5kX3RhZyAhPSAwKQogICAgOwoKICBkeW5hbWljX3NlZ21lbnQgPSAo
RWxmX0ludGVybmFsX0R5biAqKQogICAgbWFsbG9jIChkeW5hbWljX3NpemUgKiBzaXplb2YgKEVs
Zl9JbnRlcm5hbF9EeW4pKTsKCiAgaWYgKGR5bmFtaWNfc2VnbWVudCA9PSAoKHZvaWQgKikwKSkK
ICAgIHsKICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICBmcmVlIChlZHlu
KTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIGZvciAoaSA9IDAsIGVudHJ5ID0gZHluYW1pY19z
ZWdtZW50OwogICAgICAgaSA8IGR5bmFtaWNfc2l6ZTsKICAgICAgIGkrKywgZW50cnkrKykKICAg
IHsKICAgICAgZW50cnktPmRfdGFnID0gYnl0ZV9nZXQgKGVkeW5baV0uZF90YWcsIHNpemVvZiAo
ZWR5bltpXS5kX3RhZykpOwogICAgICBlbnRyeS0+ZF91bi5kX3ZhbCA9IGJ5dGVfZ2V0IChlZHlu
W2ldLmRfdW4uZF92YWwsIHNpemVvZiAoZWR5bltpXS5kX3VuLmRfdmFsKSk7CiAgICB9CgogIGZy
ZWUgKGVkeW4pOwoKICByZXR1cm4gMTsKfQoKc3RhdGljIGludApnZXRfNjRiaXRfZHluYW1pY19z
ZWdtZW50IChmaWxlKQogICAgIEZJTEUgKmZpbGU7CnsKICBFbGY2NF9FeHRlcm5hbF9EeW4gKmVk
eW47CiAgRWxmX0ludGVybmFsX0R5biAqZW50cnk7CiAgYmZkX3NpemVfdHlwZSBpOwoKICBlZHlu
ID0gKEVsZjY0X0V4dGVybmFsX0R5biAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIGR5
bmFtaWNfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHlu
YW1pY19zaXplLCAoImR5bmFtaWMgc2VnbWVudCIpKTsKICBpZiAoIWVkeW4pCiAgICByZXR1cm4g
MDsKCgoKCiAgZHluYW1pY19zaXplID0gMDsKICB3aGlsZSAoKihiZmRfdm1hICopIGVkeW5bZHlu
YW1pY19zaXplKytdLmRfdGFnICE9IDApCiAgICA7CgogIGR5bmFtaWNfc2VnbWVudCA9IChFbGZf
SW50ZXJuYWxfRHluICopCiAgICBtYWxsb2MgKGR5bmFtaWNfc2l6ZSAqIHNpemVvZiAoRWxmX0lu
dGVybmFsX0R5bikpOwoKICBpZiAoZHluYW1pY19zZWdtZW50ID09ICgodm9pZCAqKTApKQogICAg
ewogICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgIGZyZWUgKGVkeW4pOwog
ICAgICByZXR1cm4gMDsKICAgIH0KCiAgZm9yIChpID0gMCwgZW50cnkgPSBkeW5hbWljX3NlZ21l
bnQ7CiAgICAgICBpIDwgZHluYW1pY19zaXplOwogICAgICAgaSsrLCBlbnRyeSsrKQogICAgewog
ICAgICBlbnRyeS0+ZF90YWcgPSBieXRlX2dldCAoZWR5bltpXS5kX3RhZywgLTgpOwogICAgICBl
bnRyeS0+ZF91bi5kX3ZhbCA9IGJ5dGVfZ2V0IChlZHluW2ldLmRfdW4uZF92YWwsIC04KTsKICAg
IH0KCiAgZnJlZSAoZWR5bik7CgogIHJldHVybiAxOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdl
dF9keW5hbWljX2ZsYWdzIChmbGFncykKICAgICBiZmRfdm1hIGZsYWdzOwp7CiAgc3RhdGljIGNo
YXIgYnVmZlsxMjhdOwogIGNoYXIgKnAgPSBidWZmOwoKICAqcCA9ICdcMCc7CiAgd2hpbGUgKGZs
YWdzKQogICAgewogICAgICBiZmRfdm1hIGZsYWc7CgogICAgICBmbGFnID0gZmxhZ3MgJiAtIGZs
YWdzOwogICAgICBmbGFncyAmPSB+IGZsYWc7CgogICAgICBpZiAocCAhPSBidWZmKQogICAgICAg
ICpwKysgPSAnICc7CgogICAgICBzd2l0Y2ggKGZsYWcpCiAgICAgICAgewogICAgICAgIGNhc2Ug
KDEgPDwgMCk6IHN0cmNweSAocCwgIk9SSUdJTiIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8
IDEpOiBzdHJjcHkgKHAsICJTWU1CT0xJQyIpOyBicmVhazsKICAgICAgICBjYXNlICgxIDw8IDIp
OiBzdHJjcHkgKHAsICJURVhUUkVMIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgMyk6IHN0
cmNweSAocCwgIkJJTkRfTk9XIik7IGJyZWFrOwogICAgICAgIGNhc2UgKDEgPDwgNCk6IHN0cmNw
eSAocCwgIlNUQVRJQ19UTFMiKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDogc3RyY3B5IChwLCAi
dW5rbm93biIpOyBicmVhazsKICAgICAgICB9CgogICAgICBwID0gKF9fZXh0ZW5zaW9uX18gKF9f
YnVpbHRpbl9jb25zdGFudF9wICgnXDAnKSAmJiAoJ1wwJykgPT0gJ1wwJyA/IChjaGFyICopIF9f
cmF3bWVtY2hyIChwLCAnXDAnKSA6IHN0cmNociAocCwgJ1wwJykpKTsKICAgIH0KICByZXR1cm4g
YnVmZjsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19keW5hbWljX3NlZ21lbnQgKGZpbGUpCiAgICAg
RklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9EeW4gKmVudHJ5OwogIGJmZF9zaXplX3R5cGUg
aTsKCiAgaWYgKGR5bmFtaWNfc2l6ZSA9PSAwKQogICAgewogICAgICBpZiAoZG9fZHluYW1pYykK
ICAgICAgICBwcmludGYgKCgiXG5UaGVyZSBpcyBubyBkeW5hbWljIHNlZ21lbnQgaW4gdGhpcyBm
aWxlLlxuIikpOwoKICAgICAgcmV0dXJuIDE7CiAgICB9CgogIGlmIChpc18zMmJpdF9lbGYpCiAg
ICB7CiAgICAgIGlmICghIGdldF8zMmJpdF9keW5hbWljX3NlZ21lbnQgKGZpbGUpKQogICAgICAg
IHJldHVybiAwOwogICAgfQogIGVsc2UgaWYgKCEgZ2V0XzY0Yml0X2R5bmFtaWNfc2VnbWVudCAo
ZmlsZSkpCiAgICByZXR1cm4gMDsKCgogIGlmIChkeW5hbWljX3N5bWJvbHMgPT0gKCh2b2lkICop
MCkpCiAgICB7CiAgICAgIGZvciAoaSA9IDAsIGVudHJ5ID0gZHluYW1pY19zZWdtZW50OwogICAg
ICAgICAgIGkgPCBkeW5hbWljX3NpemU7CiAgICAgICAgICAgKytpLCArK2VudHJ5KQogICAgICAg
IHsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TaGRyIHNlY3Rpb247CgogICAgICAgICAgaWYgKGVu
dHJ5LT5kX3RhZyAhPSA2KQogICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICBkeW5hbWlj
X2luZm9bNl0gPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCgoKCgogICAgICAgICAgc2VjdGlvbi5zaF9v
ZmZzZXQgPSBlbnRyeS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwoKICAgICAgICAgIGlmIChmc2Vl
ayAoZmlsZSwgMCwgMikpCiAgICAgICAgICAgIGVycm9yICgoIlVuYWJsZSB0byBzZWVrIHRvIGVu
ZCBvZiBmaWxlISIpKTsKCiAgICAgICAgICBzZWN0aW9uLnNoX3NpemUgPSBmdGVsbCAoZmlsZSkg
LSBzZWN0aW9uLnNoX29mZnNldDsKICAgICAgICAgIGlmIChpc18zMmJpdF9lbGYpCiAgICAgICAg
ICAgIHNlY3Rpb24uc2hfZW50c2l6ZSA9IHNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfU3ltKTsKICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgc2VjdGlvbi5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGY2
NF9FeHRlcm5hbF9TeW0pOwoKICAgICAgICAgIG51bV9keW5hbWljX3N5bXMgPSBzZWN0aW9uLnNo
X3NpemUgLyBzZWN0aW9uLnNoX2VudHNpemU7CiAgICAgICAgICBpZiAobnVtX2R5bmFtaWNfc3lt
cyA8IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAoKCJVbmFibGUgdG8gZGV0
ZXJtaW5lIHRoZSBudW1iZXIgb2Ygc3ltYm9scyB0byBsb2FkXG4iKSk7CiAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBkeW5hbWljX3N5bWJvbHMgPSAoaXNf
MzJiaXRfZWxmID8gZ2V0XzMyYml0X2VsZl9zeW1ib2xzIChmaWxlLCAmc2VjdGlvbikgOiBnZXRf
NjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsICZzZWN0aW9uKSk7CiAgICAgICAgfQogICAgfQoKCiAg
aWYgKGR5bmFtaWNfc3RyaW5ncyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZm9yIChpID0g
MCwgZW50cnkgPSBkeW5hbWljX3NlZ21lbnQ7CiAgICAgICAgICAgaSA8IGR5bmFtaWNfc2l6ZTsK
ICAgICAgICAgICArK2ksICsrZW50cnkpCiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQgbG9u
ZyBvZmZzZXQ7CiAgICAgICAgICBsb25nIHN0cl90YWJfbGVuOwoKICAgICAgICAgIGlmIChlbnRy
eS0+ZF90YWcgIT0gNSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgZHluYW1pY19p
bmZvWzVdID0gZW50cnktPmRfdW4uZF92YWw7CgoKCgoKCiAgICAgICAgICBvZmZzZXQgPSBlbnRy
eS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwogICAgICAgICAgaWYgKGZzZWVrIChmaWxlLCAwLCAy
KSkKICAgICAgICAgICAgZXJyb3IgKCgiVW5hYmxlIHRvIHNlZWsgdG8gZW5kIG9mIGZpbGVcbiIp
KTsKICAgICAgICAgIHN0cl90YWJfbGVuID0gZnRlbGwgKGZpbGUpIC0gb2Zmc2V0OwoKICAgICAg
ICAgIGlmIChzdHJfdGFiX2xlbiA8IDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJv
cgogICAgICAgICAgICAgICAgKCgiVW5hYmxlIHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mIHRo
ZSBkeW5hbWljIHN0cmluZyB0YWJsZVxuIikpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICB9CgogICAgICAgICAgZHluYW1pY19zdHJpbmdzID0gKGNoYXIgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBvZmZzZXQsIHN0cl90YWJfbGVuLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHluYW1pYyBzdHJpbmcgdGFibGUiKSk7
CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgoKICBpZiAoZHluYW1pY19zeW1pbmZv
ID09ICgodm9pZCAqKTApKQogICAgewogICAgICB1bnNpZ25lZCBsb25nIHN5bWluc3ogPSAwOwoK
ICAgICAgZm9yIChpID0gMCwgZW50cnkgPSBkeW5hbWljX3NlZ21lbnQ7CiAgICAgICAgICAgaSA8
IGR5bmFtaWNfc2l6ZTsKICAgICAgICAgICArK2ksICsrZW50cnkpCiAgICAgICAgewogICAgICAg
ICAgaWYgKGVudHJ5LT5kX3RhZyA9PSAweDZmZmZmZGZmKQogICAgICAgICAgICB7CgoKICAgICAg
ICAgICAgICAoKHZvaWQpICgoc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltaW5mbykgPT0gZW50cnkt
PmRfdW4uZF92YWwpID8gMCA6IChfX2Fzc2VydF9mYWlsICgic2l6ZW9mIChFbGZfRXh0ZXJuYWxf
U3ltaW5mbykgPT0gZW50cnktPmRfdW4uZF92YWwiLCAicmVhZGVsZi5jIiwgNDc0OCwgX19QUkVU
VFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKGVu
dHJ5LT5kX3RhZyA9PSAweDZmZmZmZGZlKQogICAgICAgICAgICBzeW1pbnN6ID0gZW50cnktPmRf
dW4uZF92YWw7CiAgICAgICAgICBlbHNlIGlmIChlbnRyeS0+ZF90YWcgPT0gMHg2ZmZmZmVmZikK
ICAgICAgICAgICAgZHluYW1pY19zeW1pbmZvX29mZnNldCA9IGVudHJ5LT5kX3VuLmRfdmFsIC0g
bG9hZGFkZHI7CiAgICAgICAgfQoKICAgICAgaWYgKGR5bmFtaWNfc3ltaW5mb19vZmZzZXQgIT0g
MCAmJiBzeW1pbnN6ICE9IDApCiAgICAgICAgewogICAgICAgICAgRWxmX0V4dGVybmFsX1N5bWlu
Zm8gKmV4dHN5bWluZm87CiAgICAgICAgICBFbGZfSW50ZXJuYWxfU3ltaW5mbyAqc3ltaW5mbzsK
CgogICAgICAgICAgZXh0c3ltaW5mbyA9ICgoRWxmX0V4dGVybmFsX1N5bWluZm8gKikKICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBkeW5hbWljX3N5
bWluZm9fb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltaW5zeiwg
KCJzeW1ib2wgaW5mb3JtYXRpb24iKSkpOwogICAgICAgICAgaWYgKCFleHRzeW1pbmZvKQogICAg
ICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgICBkeW5hbWljX3N5bWluZm8gPSAoRWxmX0ludGVy
bmFsX1N5bWluZm8gKikgbWFsbG9jIChzeW1pbnN6KTsKICAgICAgICAgIGlmIChkeW5hbWljX3N5
bWluZm8gPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAo
KCJPdXQgb2YgbWVtb3J5XG4iKSk7CiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
IH0KCiAgICAgICAgICBkeW5hbWljX3N5bWluZm9fbmVudCA9IHN5bWluc3ogLyBzaXplb2YgKEVs
Zl9FeHRlcm5hbF9TeW1pbmZvKTsKICAgICAgICAgIGZvciAoaSA9IDAsIHN5bWluZm8gPSBkeW5h
bWljX3N5bWluZm87IGkgPCBkeW5hbWljX3N5bWluZm9fbmVudDsKICAgICAgICAgICAgICAgKytp
LCArK3N5bWluZm8pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzeW1pbmZvLT5zaV9ib3Vu
ZHRvID0gYnl0ZV9nZXQgKGV4dHN5bWluZm9baV0uc2lfYm91bmR0bywgc2l6ZW9mIChleHRzeW1p
bmZvW2ldLnNpX2JvdW5kdG8pKTsKICAgICAgICAgICAgICBzeW1pbmZvLT5zaV9mbGFncyA9IGJ5
dGVfZ2V0IChleHRzeW1pbmZvW2ldLnNpX2ZsYWdzLCBzaXplb2YgKGV4dHN5bWluZm9baV0uc2lf
ZmxhZ3MpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGZyZWUgKGV4dHN5bWluZm8pOwogICAg
ICAgIH0KICAgIH0KCiAgaWYgKGRvX2R5bmFtaWMgJiYgZHluYW1pY19hZGRyKQogICAgcHJpbnRm
ICgoIlxuRHluYW1pYyBzZWdtZW50IGF0IG9mZnNldCAweCVseCBjb250YWlucyAlbGQgZW50cmll
czpcbiIpLAogICAgICAgICAgICBkeW5hbWljX2FkZHIsIChsb25nKSBkeW5hbWljX3NpemUpOwog
IGlmIChkb19keW5hbWljKQogICAgcHJpbnRmICgoIiAgVGFnICAgICAgICBUeXBlICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hbWUvVmFsdWVcbiIpKTsKCiAgZm9yIChpID0gMCwgZW50cnkgPSBk
eW5hbWljX3NlZ21lbnQ7CiAgICAgICBpIDwgZHluYW1pY19zaXplOwogICAgICAgaSsrLCBlbnRy
eSsrKQogICAgewogICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICB7CiAgICAgICAgICBjb25z
dCBjaGFyICpkdHlwZTsKCiAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgcHJpbnRf
dm1hIChlbnRyeS0+ZF90YWcsIEZVTExfSEVYKTsKICAgICAgICAgIGR0eXBlID0gZ2V0X2R5bmFt
aWNfdHlwZSAoZW50cnktPmRfdGFnKTsKICAgICAgICAgIHByaW50ZiAoIiAoJXMpJSpzIiwgZHR5
cGUsCiAgICAgICAgICAgICAgICAgICgoaXNfMzJiaXRfZWxmID8gMjcgOiAxOSkKICAgICAgICAg
ICAgICAgICAgIC0gKGludCkgc3RybGVuIChkdHlwZSkpLAogICAgICAgICAgICAgICAgICAiICIp
OwogICAgICAgIH0KCiAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFnKQogICAgICAgIHsKICAgICAg
ICBjYXNlIDMwOgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHB1dHMgKGdl
dF9keW5hbWljX2ZsYWdzIChlbnRyeS0+ZF91bi5kX3ZhbCkpOwogICAgICAgICAgYnJlYWs7Cgog
ICAgICAgIGNhc2UgMHg3ZmZmZmZmZDoKICAgICAgICBjYXNlIDB4N2ZmZmZmZmY6CiAgICAgICAg
Y2FzZSAweDZmZmZmZWZhOgogICAgICAgIGNhc2UgMHg2ZmZmZmVmYjoKICAgICAgICBjYXNlIDB4
NmZmZmZlZmM6CiAgICAgICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFnKQogICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgY2FzZSAweDdmZmZmZmZkOgogICAgICAgICAgICAgICAgICBwcmludGYgKCgiQXV4aWxp
YXJ5IGxpYnJhcnkiKSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAg
IGNhc2UgMHg3ZmZmZmZmZjoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkZpbHRlciBsaWJy
YXJ5IikpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDB4
NmZmZmZlZmE6CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoKCJDb25maWd1cmF0aW9uIGZpbGUi
KSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMHg2ZmZm
ZmVmYjoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkRlcGVuZGVuY3kgYXVkaXQgbGlicmFy
eSIpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAweDZm
ZmZmZWZjOgogICAgICAgICAgICAgICAgICBwcmludGYgKCgiQXVkaXQgbGlicmFyeSIpKTsKICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlm
IChkeW5hbWljX3N0cmluZ3MpCiAgICAgICAgICAgICAgICBwcmludGYgKCI6IFslc11cbiIsIGR5
bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5kX3VuLmRfdmFsKTsKICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIjogIik7CiAgICAgICAg
ICAgICAgICAgIHByaW50X3ZtYSAoZW50cnktPmRfdW4uZF92YWwsIFBSRUZJWF9IRVgpOwogICAg
ICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHg2ZmZmZmRmYzoKICAgICAgICAg
IGlmIChkb19keW5hbWljKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcHJpbnRmICgoIkZs
YWdzOiIpKTsKCiAgICAgICAgICAgICAgaWYgKGVudHJ5LT5kX3VuLmRfdmFsID09IDApCiAgICAg
ICAgICAgICAgICBwcmludGYgKCgiIE5vbmVcbiIpKTsKICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IHZhbCA9IGVu
dHJ5LT5kX3VuLmRfdmFsOwoKICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDEp
CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIFBB
UklOSVQiKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAxOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDIpCiAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIENPTkZF
WFAiKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAyOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSAwKQogICAgICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiAlbHgiLCB2YWwpOwogICAgICAgICAgICAgICAgICBwdXRzICgiIik7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIDB4NmZmZmZkZmQ6CiAgICAgICAgICBpZiAoZG9fZHluYW1pYykKICAgICAgICAgICAg
ewogICAgICAgICAgICAgIHByaW50ZiAoKCJGbGFnczoiKSk7CgogICAgICAgICAgICAgIGlmIChl
bnRyeS0+ZF91bi5kX3ZhbCA9PSAwKQogICAgICAgICAgICAgICAgcHJpbnRmICgoIiBOb25lXG4i
KSk7CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIGludCB2YWwgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAg
ICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDAxKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiBMQVpZTE9BRCIpOwogICAgICAgICAgICAgICAgICAg
ICAgdmFsIF49IDB4MDAwMDAwMDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICBpZiAodmFsICYgMHgwMDAwMDAwMikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgICBwcmludGYgKCIgR1JPVVBQRVJNIik7CiAgICAgICAgICAgICAgICAgICAg
ICB2YWwgXj0gMHgwMDAwMDAwMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgIGlmICh2YWwgIT0gMCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJWx4IiwgdmFs
KTsKICAgICAgICAgICAgICAgICAgcHV0cyAoIiIpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZmZmZmZmZiOgogICAgICAg
ICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludGYgKCgi
RmxhZ3M6IikpOwogICAgICAgICAgICAgIGlmIChlbnRyeS0+ZF91bi5kX3ZhbCA9PSAwKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgoIiBOb25lXG4iKSk7CiAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludCB2YWwgPSBl
bnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDAx
KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBO
T1ciKTsKICAgICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDAxOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDIpCiAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIEdMT0JBTCIp
OwogICAgICAgICAgICAgICAgICAgICAgdmFsIF49IDB4MDAwMDAwMDI7CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAodmFsICYgMHgwMDAwMDAwNCkKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgR1JPVVAiKTsKICAg
ICAgICAgICAgICAgICAgICAgIHZhbCBePSAweDAwMDAwMDA0OwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwMDgpCiAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE5PREVMRVRFIik7CiAgICAg
ICAgICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAwMDAwODsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDEwKQogICAgICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBMT0FERkxUUiIpOwogICAgICAg
ICAgICAgICAgICAgICAgdmFsIF49IDB4MDAwMDAwMTA7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICBpZiAodmFsICYgMHgwMDAwMDAyMCkKICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgSU5JVEZJUlNUIik7CiAgICAgICAg
ICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAwMDAyMDsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgIGlmICh2YWwgJiAweDAwMDAwMDQwKQogICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBOT09QRU4iKTsKICAgICAgICAgICAg
ICAgICAgICAgIHZhbCBePSAweDAwMDAwMDQwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgaWYgKHZhbCAmIDB4MDAwMDAwODApCiAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE9SSUdJTiIpOwogICAgICAgICAgICAgICAg
ICAgICAgdmFsIF49IDB4MDAwMDAwODA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICBpZiAodmFsICYgMHgwMDAwMDEwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYgKCIgRElSRUNUIik7CiAgICAgICAgICAgICAgICAgICAg
ICB2YWwgXj0gMHgwMDAwMDEwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgIGlmICh2YWwgJiAweDAwMDAwMjAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoIiBUUkFOUyIpOwogICAgICAgICAgICAgICAgICAgICAgdmFs
IF49IDB4MDAwMDAyMDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBp
ZiAodmFsICYgMHgwMDAwMDQwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICBwcmludGYgKCIgSU5URVJQT1NFIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwg
Xj0gMHgwMDAwMDQwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlm
ICh2YWwgJiAweDAwMDAwODAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiBOT0RFRkxJQiIpOwogICAgICAgICAgICAgICAgICAgICAgdmFsIF49
IDB4MDAwMDA4MDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBpZiAo
dmFsICYgMHgwMDAwMTAwMCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICBwcmludGYgKCIgTk9EVU1QIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwgXj0gMHgw
MDAwMTAwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh2YWwg
JiAweDAwMDAyMDAwKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
IHByaW50ZiAoIiBDT05MRkFUIik7CiAgICAgICAgICAgICAgICAgICAgICB2YWwgXj0gMHgwMDAw
MjAwMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmICh2YWwgIT0g
MCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJWx4IiwgdmFsKTsKICAgICAgICAgICAg
ICAgICAgcHV0cyAoIiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICBicmVhazsKCiAgICAgICAgY2FzZSAyMDoKICAgICAgICAgIGlmIChkb19keW5hbWljKQogICAg
ICAgICAgICBwdXRzIChnZXRfZHluYW1pY190eXBlIChlbnRyeS0+ZF91bi5kX3ZhbCkpOwogICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMCA6CiAgICAgICAgY2FzZSAxIDoKICAgICAgICBj
YXNlIDMgOgogICAgICAgIGNhc2UgNCA6CiAgICAgICAgY2FzZSA1IDoKICAgICAgICBjYXNlIDYg
OgogICAgICAgIGNhc2UgNyA6CiAgICAgICAgY2FzZSAxMiA6CiAgICAgICAgY2FzZSAxMyA6CiAg
ICAgICAgY2FzZSAxNCA6CiAgICAgICAgY2FzZSAxNSA6CiAgICAgICAgY2FzZSAxNjoKICAgICAg
ICBjYXNlIDE3IDoKICAgICAgICBjYXNlIDIxIDoKICAgICAgICBjYXNlIDIyIDoKICAgICAgICBj
YXNlIDIzIDoKICAgICAgICBjYXNlIDI5IDoKICAgICAgICAgIGR5bmFtaWNfaW5mb1tlbnRyeS0+
ZF90YWddID0gZW50cnktPmRfdW4uZF92YWw7CgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBjaGFyICpuYW1lOwoKICAgICAgICAgICAgICBpZiAo
ZHluYW1pY19zdHJpbmdzID09ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgbmFtZSA9ICgo
dm9pZCAqKTApOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIG5hbWUgPSBkeW5h
bWljX3N0cmluZ3MgKyBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgaWYgKG5hbWUp
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZW50cnktPmRfdGFn
KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAg
ICAgICAgICAgICAgICAgICBwcmludGYgKCgiU2hhcmVkIGxpYnJhcnk6IFslc10iKSwgbmFtZSk7
CgogICAgICAgICAgICAgICAgICAgICAgaWYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFf
bGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAocHJvZ3JhbV9pbnRlcnByZXRlcikgJiYgKF9fczFfbGVuID0gc3RybGVuIChu
YW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKHByb2dyYW1faW50ZXJwcmV0ZXIpLCAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChw
cm9ncmFtX2ludGVycHJldGVyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwcm9ncmFt
X2ludGVycHJldGVyKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSwg
KF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVp
bHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAocHJv
Z3JhbV9pbnRlcnByZXRlcikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHByb2dyYW1faW50
ZXJwcmV0ZXIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHByb2dyYW1faW50ZXJwcmV0
ZXIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikocHJvZ3JhbV9pbnRlcnBy
ZXRlcikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1f
aW50ZXJwcmV0ZXIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChw
cm9ncmFtX2ludGVycHJldGVyKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0
ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKTsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9f
YnVpbHRpbl9jb25zdGFudF9wIChwcm9ncmFtX2ludGVycHJldGVyKSAmJiAoKHNpemVfdCkoY29u
c3Qgdm9pZCAqKSgocHJvZ3JhbV9pbnRlcnByZXRlcikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv
aWQgKikocHJvZ3JhbV9pbnRlcnByZXRlcikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChw
cm9ncmFtX2ludGVycHJldGVyKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIg
aW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikocHJvZ3JhbV9pbnRlcnByZXRlcikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3Vs
dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSlbMl0pOyBpZiAoX19zMl9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3Mx
ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKTsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVswXTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwcm9ncmFtX2ludGVycHJldGVyKSlb
MV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z
MVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHByb2dy
YW1faW50ZXJwcmV0ZXIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkg
X19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHByb2dyYW1faW50ZXJwcmV0ZXIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6
IHN0cmNtcCAobmFtZSwgcHJvZ3JhbV9pbnRlcnByZXRlcikpKSk7IH0pID09IDApCiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoKCIgcHJvZ3JhbSBpbnRlcnByZXRlciIpKTsKICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OgogICAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkxpYnJhcnkgc29uYW1lOiBbJXNdIiksIG5hbWUp
OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2Ug
MTU6CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCgiTGlicmFyeSBycGF0aDogWyVzXSIp
LCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI5OgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIkxpYnJhcnkgcnVucGF0
aDogWyVzXSIpLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdm1hIChlbnRy
eS0+ZF91bi5kX3ZhbCwgUFJFRklYX0hFWCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgcHJpbnRfdm1hIChlbnRyeS0+ZF91bi5kX3ZhbCwgUFJFRklYX0hF
WCk7CgogICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICB9CiAgICAgICAg
ICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgIGNhc2UgOCA6CiAgICAgICAgY2FzZSAx
MCA6CiAgICAgICAgY2FzZSAxOCA6CiAgICAgICAgY2FzZSA5IDoKICAgICAgICBjYXNlIDExIDoK
ICAgICAgICBjYXNlIDE5IDoKICAgICAgICBjYXNlIDB4NmZmZmZkZjk6CiAgICAgICAgY2FzZSAw
eDZmZmZmZGZhIDoKICAgICAgICBjYXNlIDB4NmZmZmZkZmIgOgogICAgICAgIGNhc2UgMjc6CiAg
ICAgICAgY2FzZSAyODoKICAgICAgICBjYXNlIDB4NmZmZmZkZjY6CiAgICAgICAgY2FzZSAweDZm
ZmZmZGY3OgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfdmFsLCBVTlNJR05FRCk7CiAgICAgICAgICAg
ICAgcHJpbnRmICgiIChieXRlcylcbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSAweDZmZmZmZmZkOgogICAgICAgIGNhc2UgMHg2ZmZmZmZmZjoKICAgICAg
ICBjYXNlIDB4NmZmZmZmZjk6CiAgICAgICAgY2FzZSAweDZmZmZmZmZhOgogICAgICAgICAgaWYg
KGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5
LT5kX3VuLmRfdmFsLCBVTlNJR05FRCk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4NmZmZmZkZmU6CiAg
ICAgICAgY2FzZSAweDZmZmZmZGZmOgogICAgICAgIGNhc2UgMHg2ZmZmZmVmZjoKICAgICAgICBj
YXNlIDB4N2ZmZmZmZmU6CiAgICAgICAgY2FzZSAyNToKICAgICAgICBjYXNlIDI2OgogICAgICAg
ICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoZHluYW1p
Y19zdHJpbmdzICE9ICgodm9pZCAqKTApICYmIGVudHJ5LT5kX3RhZyA9PSAweDdmZmZmZmZlKQog
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjaGFyICpuYW1lOwoKICAgICAgICAg
ICAgICAgICAgbmFtZSA9IGR5bmFtaWNfc3RyaW5ncyArIGVudHJ5LT5kX3VuLmRfdmFsOwoKICAg
ICAgICAgICAgICAgICAgaWYgKCpuYW1lKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoKCJOb3QgbmVlZGVkIG9iamVjdDogWyVzXVxuIiksIG5hbWUp
OwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5LT5kX3VuLmRfdmFs
LCBQUkVGSVhfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAgICAgICAg
fQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjQ6CgogICAgICAgICAgaWYgKGRvX2R5
bmFtaWMpCiAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgMHg2ZmZmZmRmNToKICAgICAgICAgIGlmIChkb19keW5hbWljKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgc3RydWN0IHRtICp0bXA7CiAgICAgICAgICAgICAgdGltZV90IHRp
bWUgPSBlbnRyeS0+ZF91bi5kX3ZhbDsKCiAgICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGlt
ZSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiJTA0dS0lMDJ1LSUwMnVUJTAydTolMDJ1OiUwMnVc
biIsCiAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21v
biArIDEsIHRtcC0+dG1fbWRheSwKICAgICAgICAgICAgICAgICAgICAgIHRtcC0+dG1faG91ciwg
dG1wLT50bV9taW4sIHRtcC0+dG1fc2VjKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFr
OwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKChlbnRyeS0+ZF90YWcgPj0gMHg2ZmZm
ZmZmMCkgJiYgKGVudHJ5LT5kX3RhZyA8PSAweDZmZmZmZmZmKSkKICAgICAgICAgICAgdmVyc2lv
bl9pbmZvWygweDZmZmZmZmZmIC0gKGVudHJ5LT5kX3RhZykpXSA9CiAgICAgICAgICAgICAgZW50
cnktPmRfdW4uZF92YWw7CgogICAgICAgICAgaWYgKGRvX2R5bmFtaWMpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQogICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAg
ICAgICAgICAgICAgICAgZHluYW1pY19zZWdtZW50X21pcHNfdmFsIChlbnRyeSk7CiAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAg
ICAgZHluYW1pY19zZWdtZW50X3BhcmlzY192YWwgKGVudHJ5KTsKICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDUwOgogICAgICAgICAgICAgICAgICBkeW5hbWlj
X3NlZ21lbnRfaWE2NF92YWwgKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICBwcmludF92bWEgKGVudHJ5LT5k
X3VuLmRfdmFsLCBQUkVGSVhfSEVYKTsKICAgICAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KICAgIH0KCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBjaGFyICoKZ2V0X3Zlcl9mbGFncyAoZmxh
Z3MpCiAgICAgdW5zaWduZWQgaW50IGZsYWdzOwp7CiAgc3RhdGljIGNoYXIgYnVmZlszMl07Cgog
IGJ1ZmZbMF0gPSAwOwoKICBpZiAoZmxhZ3MgPT0gMCkKICAgIHJldHVybiAoIm5vbmUiKTsKCiAg
aWYgKGZsYWdzICYgMHgxKQogICAgc3RyY2F0IChidWZmLCAiQkFTRSAiKTsKCiAgaWYgKGZsYWdz
ICYgMHgyKQogICAgewogICAgICBpZiAoZmxhZ3MgJiAweDEpCiAgICAgICAgc3RyY2F0IChidWZm
LCAifCAiKTsKCiAgICAgIHN0cmNhdCAoYnVmZiwgIldFQUsgIik7CiAgICB9CgogIGlmIChmbGFn
cyAmIH4oMHgxIHwgMHgyKSkKICAgIHN0cmNhdCAoYnVmZiwgInwgPHVua25vd24+Iik7CgogIHJl
dHVybiBidWZmOwp9CgoKc3RhdGljIGludApwcm9jZXNzX3ZlcnNpb25fc2VjdGlvbnMgKGZpbGUp
CiAgICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwogIHVuc2ln
bmVkIGk7CiAgaW50IGZvdW5kID0gMDsKCiAgaWYgKCEgZG9fdmVyc2lvbikKICAgIHJldHVybiAx
OwoKICBmb3IgKGkgPSAwLCBzZWN0aW9uID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVs
Zl9oZWFkZXIuZV9zaG51bTsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewogICAgICBzd2l0
Y2ggKHNlY3Rpb24tPnNoX3R5cGUpCiAgICAgICAgewogICAgICAgIGNhc2UgMHg2ZmZmZmZmZDoK
ICAgICAgICAgIHsKICAgICAgICAgICAgRWxmX0V4dGVybmFsX1ZlcmRlZiAqZWRlZnM7CiAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBpZHg7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbnQ7Cgog
ICAgICAgICAgICBmb3VuZCA9IDE7CgogICAgICAgICAgICBwcmludGYKICAgICAgICAgICAgICAo
KCJcblZlcnNpb24gZGVmaW5pdGlvbiBzZWN0aW9uICclcycgY29udGFpbnMgJWxkIGVudHJpZXM6
XG4iKSwKICAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSwgc2VjdGlvbi0+c2hfaW5m
byk7CgogICAgICAgICAgICBwcmludGYgKCgiICBBZGRyOiAweCIpKTsKICAgICAgICAgICAgZnBy
aW50ZiAoKHN0ZG91dCksICIlMDhseCUwOGx4IiwgKCh1bnNpZ25lZCBsb25nKSAoKChzZWN0aW9u
LT5zaF9hZGRyKSA+PiAzMikgJiAweGZmZmZmZmZmKSksICgodW5zaWduZWQgbG9uZykgKCgoc2Vj
dGlvbi0+c2hfYWRkcikgJiAweGZmZmZmZmZmKSkpKTsKICAgICAgICAgICAgcHJpbnRmICgoIiAg
T2Zmc2V0OiAlIzA4bHggIExpbms6ICVseCAoJXMpXG4iKSwKICAgICAgICAgICAgICAgICAgICAo
dW5zaWduZWQgbG9uZykgc2VjdGlvbi0+c2hfb2Zmc2V0LCBzZWN0aW9uLT5zaF9saW5rLAogICAg
ICAgICAgICAgICAgICAgICgoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hfbGluaykg
PCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmspIDw9IDB4
RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkpKSkp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rp
b24tPnNoX2xpbmspIDwgMHhGRjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5z
aF9saW5rKSA8PSAweEZGRkYgPyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEg
LSAweEZGMDApKSkpKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hfbGlu
aykgPCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmspIDw9
IDB4RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYwMCkp
KSkpLT5zaF9uYW1lKSkpOwoKICAgICAgICAgICAgZWRlZnMgPSAoKEVsZl9FeHRlcm5hbF9WZXJk
ZWYgKikKICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBz
ZWN0aW9uLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9u
LT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9uIGRlZmlu
aXRpb24gc2VjdGlvbiIpKSk7CiAgICAgICAgICAgIGlmICghZWRlZnMpCiAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICBmb3IgKGlkeCA9IGNudCA9IDA7IGNudCA8IHNlY3Rpb24tPnNo
X2luZm87ICsrY250KQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNoYXIgKnZzdGFy
dDsKICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJkZWYgKmVkZWY7CiAgICAgICAgICAg
ICAgICBFbGZfSW50ZXJuYWxfVmVyZGVmIGVudDsKICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5h
bF9WZXJkYXV4ICplYXV4OwogICAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1ZlcmRhdXggYXV4
OwogICAgICAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgICAgICBpbnQgaXN1bTsKCiAgICAg
ICAgICAgICAgICB2c3RhcnQgPSAoKGNoYXIgKikgZWRlZnMpICsgaWR4OwoKICAgICAgICAgICAg
ICAgIGVkZWYgPSAoRWxmX0V4dGVybmFsX1ZlcmRlZiAqKSB2c3RhcnQ7CgogICAgICAgICAgICAg
ICAgZW50LnZkX3ZlcnNpb24gPSBieXRlX2dldCAoZWRlZi0+dmRfdmVyc2lvbiwgc2l6ZW9mIChl
ZGVmLT52ZF92ZXJzaW9uKSk7CiAgICAgICAgICAgICAgICBlbnQudmRfZmxhZ3MgPSBieXRlX2dl
dCAoZWRlZi0+dmRfZmxhZ3MsIHNpemVvZiAoZWRlZi0+dmRfZmxhZ3MpKTsKICAgICAgICAgICAg
ICAgIGVudC52ZF9uZHggPSBieXRlX2dldCAoZWRlZi0+dmRfbmR4LCBzaXplb2YgKGVkZWYtPnZk
X25keCkpOwogICAgICAgICAgICAgICAgZW50LnZkX2NudCA9IGJ5dGVfZ2V0IChlZGVmLT52ZF9j
bnQsIHNpemVvZiAoZWRlZi0+dmRfY250KSk7CiAgICAgICAgICAgICAgICBlbnQudmRfaGFzaCA9
IGJ5dGVfZ2V0IChlZGVmLT52ZF9oYXNoLCBzaXplb2YgKGVkZWYtPnZkX2hhc2gpKTsKICAgICAg
ICAgICAgICAgIGVudC52ZF9hdXggPSBieXRlX2dldCAoZWRlZi0+dmRfYXV4LCBzaXplb2YgKGVk
ZWYtPnZkX2F1eCkpOwogICAgICAgICAgICAgICAgZW50LnZkX25leHQgPSBieXRlX2dldCAoZWRl
Zi0+dmRfbmV4dCwgc2l6ZW9mIChlZGVmLT52ZF9uZXh0KSk7CgogICAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJSMwNng6IFJldjogJWQgIEZsYWdzOiAlcyIpLAogICAgICAgICAgICAgICAgICAg
ICAgICBpZHgsIGVudC52ZF92ZXJzaW9uLCBnZXRfdmVyX2ZsYWdzIChlbnQudmRfZmxhZ3MpKTsK
CiAgICAgICAgICAgICAgICBwcmludGYgKCgiICBJbmRleDogJWQgIENudDogJWQgICIpLAogICAg
ICAgICAgICAgICAgICAgICAgICBlbnQudmRfbmR4LCBlbnQudmRfY250KTsKCiAgICAgICAgICAg
ICAgICB2c3RhcnQgKz0gZW50LnZkX2F1eDsKCiAgICAgICAgICAgICAgICBlYXV4ID0gKEVsZl9F
eHRlcm5hbF9WZXJkYXV4ICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICBhdXgudmRhX25hbWUg
PSBieXRlX2dldCAoZWF1eC0+dmRhX25hbWUsIHNpemVvZiAoZWF1eC0+dmRhX25hbWUpKTsKICAg
ICAgICAgICAgICAgIGF1eC52ZGFfbmV4dCA9IGJ5dGVfZ2V0IChlYXV4LT52ZGFfbmV4dCwgc2l6
ZW9mIChlYXV4LT52ZGFfbmV4dCkpOwoKICAgICAgICAgICAgICAgIGlmIChkeW5hbWljX3N0cmlu
Z3MpCiAgICAgICAgICAgICAgICAgIHByaW50ZiAoKCJOYW1lOiAlc1xuIiksIGR5bmFtaWNfc3Ry
aW5ncyArIGF1eC52ZGFfbmFtZSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgIHByaW50ZiAoKCJOYW1lIGluZGV4OiAlbGRcbiIpLCBhdXgudmRhX25hbWUpOwoKICAgICAg
ICAgICAgICAgIGlzdW0gPSBpZHggKyBlbnQudmRfYXV4OwoKICAgICAgICAgICAgICAgIGZvciAo
aiA9IDE7IGogPCBlbnQudmRfY250OyBqKyspCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICBpc3VtICs9IGF1eC52ZGFfbmV4dDsKICAgICAgICAgICAgICAgICAgICB2c3Rh
cnQgKz0gYXV4LnZkYV9uZXh0OwoKICAgICAgICAgICAgICAgICAgICBlYXV4ID0gKEVsZl9FeHRl
cm5hbF9WZXJkYXV4ICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICAgICAgYXV4LnZkYV9uYW1l
ID0gYnl0ZV9nZXQgKGVhdXgtPnZkYV9uYW1lLCBzaXplb2YgKGVhdXgtPnZkYV9uYW1lKSk7CiAg
ICAgICAgICAgICAgICAgICAgYXV4LnZkYV9uZXh0ID0gYnl0ZV9nZXQgKGVhdXgtPnZkYV9uZXh0
LCBzaXplb2YgKGVhdXgtPnZkYV9uZXh0KSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChkeW5h
bWljX3N0cmluZ3MpCiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCgiICAlIzA2eDogUGFy
ZW50ICVkOiAlc1xuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzdW0sIGosIGR5
bmFtaWNfc3RyaW5ncyArIGF1eC52ZGFfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIiAgJSMwNng6IFBhcmVudCAlZCwgbmFtZSBp
bmRleDogJWxkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXN1bSwgaiwgYXV4
LnZkYV9uYW1lKTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlkeCArPSBl
bnQudmRfbmV4dDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBmcmVlIChlZGVmcyk7CiAg
ICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZmZmZmZmZlOgogICAg
ICAgICAgewogICAgICAgICAgICBFbGZfRXh0ZXJuYWxfVmVybmVlZCAqZW5lZWQ7CiAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBpZHg7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbnQ7CgogICAg
ICAgICAgICBmb3VuZCA9IDE7CgogICAgICAgICAgICBwcmludGYgKCgiXG5WZXJzaW9uIG5lZWRz
IHNlY3Rpb24gJyVzJyBjb250YWlucyAlbGQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAg
ICAgICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSksIHNlY3Rpb24tPnNoX2luZm8pOwoKICAgICAgICAgICAg
cHJpbnRmICgoIiBBZGRyOiAweCIpKTsKICAgICAgICAgICAgZnByaW50ZiAoKHN0ZG91dCksICIl
MDhseCUwOGx4IiwgKCh1bnNpZ25lZCBsb25nKSAoKChzZWN0aW9uLT5zaF9hZGRyKSA+PiAzMikg
JiAweGZmZmZmZmZmKSksICgodW5zaWduZWQgbG9uZykgKCgoc2VjdGlvbi0+c2hfYWRkcikgJiAw
eGZmZmZmZmZmKSkpKTsKICAgICAgICAgICAgcHJpbnRmICgoIiAgT2Zmc2V0OiAlIzA4bHggIExp
bmsgdG8gc2VjdGlvbjogJWxkICglcylcbiIpLAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25l
ZCBsb25nKSBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNoX2xpbmssCiAgICAgICAgICAg
ICAgICAgICAgKCgoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0aW9uLT5zaF9saW5rKSA8IDB4RkYw
MCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+c2hfbGluaykgPD0gMHhGRkZGID8g
MCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKSkgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoKHNlY3Rpb25faGVhZGVycyArICgoc2VjdGlvbi0+c2hf
bGluaykgPCAweEZGMDAgPyAoc2VjdGlvbi0+c2hfbGluaykgOiAoKHNlY3Rpb24tPnNoX2xpbmsp
IDw9IDB4RkZGRiA/IDAgOiAoc2VjdGlvbi0+c2hfbGluaykgLSAoMHhGRkZGICsgMSAtIDB4RkYw
MCkpKSkpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArICgoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0aW9uLT5zaF9saW5rKSA8IDB4
RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+c2hfbGluaykgPD0gMHhGRkZG
ID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkpKSktPnNo
X25hbWUpKSk7CgogICAgICAgICAgICBlbmVlZCA9ICgoRWxmX0V4dGVybmFsX1Zlcm5lZWQgKikK
ICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9u
LT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLT5zaF9z
aXplLCAoInZlcnNpb24gbmVlZCBzZWN0aW9uIikpKTsKICAgICAgICAgICAgaWYgKCFlbmVlZCkK
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGZvciAoaWR4ID0gY250ID0gMDsgY250
IDwgc2VjdGlvbi0+c2hfaW5mbzsgKytjbnQpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgRWxmX0V4dGVybmFsX1Zlcm5lZWQgKmVudHJ5OwogICAgICAgICAgICAgICAgRWxmX0ludGVy
bmFsX1Zlcm5lZWQgZW50OwogICAgICAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgICAgICBp
bnQgaXN1bTsKICAgICAgICAgICAgICAgIGNoYXIgKnZzdGFydDsKCiAgICAgICAgICAgICAgICB2
c3RhcnQgPSAoKGNoYXIgKikgZW5lZWQpICsgaWR4OwoKICAgICAgICAgICAgICAgIGVudHJ5ID0g
KEVsZl9FeHRlcm5hbF9WZXJuZWVkICopIHZzdGFydDsKCiAgICAgICAgICAgICAgICBlbnQudm5f
dmVyc2lvbiA9IGJ5dGVfZ2V0IChlbnRyeS0+dm5fdmVyc2lvbiwgc2l6ZW9mIChlbnRyeS0+dm5f
dmVyc2lvbikpOwogICAgICAgICAgICAgICAgZW50LnZuX2NudCA9IGJ5dGVfZ2V0IChlbnRyeS0+
dm5fY250LCBzaXplb2YgKGVudHJ5LT52bl9jbnQpKTsKICAgICAgICAgICAgICAgIGVudC52bl9m
aWxlID0gYnl0ZV9nZXQgKGVudHJ5LT52bl9maWxlLCBzaXplb2YgKGVudHJ5LT52bl9maWxlKSk7
CiAgICAgICAgICAgICAgICBlbnQudm5fYXV4ID0gYnl0ZV9nZXQgKGVudHJ5LT52bl9hdXgsIHNp
emVvZiAoZW50cnktPnZuX2F1eCkpOwogICAgICAgICAgICAgICAgZW50LnZuX25leHQgPSBieXRl
X2dldCAoZW50cnktPnZuX25leHQsIHNpemVvZiAoZW50cnktPnZuX25leHQpKTsKCiAgICAgICAg
ICAgICAgICBwcmludGYgKCgiICAlIzA2eDogVmVyc2lvbjogJWQiKSwgaWR4LCBlbnQudm5fdmVy
c2lvbik7CgogICAgICAgICAgICAgICAgaWYgKGR5bmFtaWNfc3RyaW5ncykKICAgICAgICAgICAg
ICAgICAgcHJpbnRmICgoIiAgRmlsZTogJXMiKSwgZHluYW1pY19zdHJpbmdzICsgZW50LnZuX2Zp
bGUpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICBwcmludGYgKCgiICBG
aWxlOiAlbHgiKSwgZW50LnZuX2ZpbGUpOwoKICAgICAgICAgICAgICAgIHByaW50ZiAoKCIgIENu
dDogJWRcbiIpLCBlbnQudm5fY250KTsKCiAgICAgICAgICAgICAgICB2c3RhcnQgKz0gZW50LnZu
X2F1eDsKCiAgICAgICAgICAgICAgICBmb3IgKGogPSAwLCBpc3VtID0gaWR4ICsgZW50LnZuX2F1
eDsgaiA8IGVudC52bl9jbnQ7ICsraikKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4ICplYXV4OwogICAgICAgICAgICAgICAgICAgIEVs
Zl9JbnRlcm5hbF9WZXJuYXV4IGF1eDsKCiAgICAgICAgICAgICAgICAgICAgZWF1eCA9IChFbGZf
RXh0ZXJuYWxfVmVybmF1eCAqKSB2c3RhcnQ7CgogICAgICAgICAgICAgICAgICAgIGF1eC52bmFf
aGFzaCA9IGJ5dGVfZ2V0IChlYXV4LT52bmFfaGFzaCwgc2l6ZW9mIChlYXV4LT52bmFfaGFzaCkp
OwogICAgICAgICAgICAgICAgICAgIGF1eC52bmFfZmxhZ3MgPSBieXRlX2dldCAoZWF1eC0+dm5h
X2ZsYWdzLCBzaXplb2YgKGVhdXgtPnZuYV9mbGFncykpOwogICAgICAgICAgICAgICAgICAgIGF1
eC52bmFfb3RoZXIgPSBieXRlX2dldCAoZWF1eC0+dm5hX290aGVyLCBzaXplb2YgKGVhdXgtPnZu
YV9vdGhlcikpOwogICAgICAgICAgICAgICAgICAgIGF1eC52bmFfbmFtZSA9IGJ5dGVfZ2V0IChl
YXV4LT52bmFfbmFtZSwgc2l6ZW9mIChlYXV4LT52bmFfbmFtZSkpOwogICAgICAgICAgICAgICAg
ICAgIGF1eC52bmFfbmV4dCA9IGJ5dGVfZ2V0IChlYXV4LT52bmFfbmV4dCwgc2l6ZW9mIChlYXV4
LT52bmFfbmV4dCkpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoZHluYW1pY19zdHJpbmdzKQog
ICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgoIiAgJSMwNng6IE5hbWU6ICVzIiksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzdW0sIGR5bmFtaWNfc3RyaW5ncyArIGF1eC52bmFf
bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJSMwNng6IE5hbWUgaW5kZXg6ICVseCIpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpc3VtLCBhdXgudm5hX25hbWUpOwoKICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCgiICBGbGFnczogJXMgIFZlcnNpb246ICVkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldF92ZXJfZmxhZ3MgKGF1eC52bmFfZmxhZ3MpLCBhdXgudm5hX290aGVyKTsKCiAgICAg
ICAgICAgICAgICAgICAgaXN1bSArPSBhdXgudm5hX25leHQ7CiAgICAgICAgICAgICAgICAgICAg
dnN0YXJ0ICs9IGF1eC52bmFfbmV4dDsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGlkeCArPSBlbnQudm5fbmV4dDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBmcmVl
IChlbmVlZCk7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDZm
ZmZmZmZmOgogICAgICAgICAgewogICAgICAgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqbGlua19z
ZWN0aW9uOwogICAgICAgICAgICBpbnQgdG90YWw7CiAgICAgICAgICAgIGludCBjbnQ7CiAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgKmVkYXRhOwogICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAq
ZGF0YTsKICAgICAgICAgICAgY2hhciAqc3RydGFiOwogICAgICAgICAgICBFbGZfSW50ZXJuYWxf
U3ltICpzeW1ib2xzOwogICAgICAgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3RyaW5nX3NlYzsK
CiAgICAgICAgICAgIGxpbmtfc2VjdGlvbiA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rpb24t
PnNoX2xpbmspIDwgMHhGRjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5zaF9s
aW5rKSA8PSAweEZGRkYgPyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEgLSAw
eEZGMDApKSkpOwogICAgICAgICAgICB0b3RhbCA9IHNlY3Rpb24tPnNoX3NpemUgLyBzZWN0aW9u
LT5zaF9lbnRzaXplOwoKICAgICAgICAgICAgZm91bmQgPSAxOwoKICAgICAgICAgICAgc3ltYm9s
cyA9IChpc18zMmJpdF9lbGYgPyBnZXRfMzJiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIGxpbmtfc2Vj
dGlvbikgOiBnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIGxpbmtfc2VjdGlvbikpOwoKICAg
ICAgICAgICAgc3RyaW5nX3NlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKGxpbmtfc2VjdGlvbi0+
c2hfbGluaykgPCAweEZGMDAgPyAobGlua19zZWN0aW9uLT5zaF9saW5rKSA6ICgobGlua19zZWN0
aW9uLT5zaF9saW5rKSA8PSAweEZGRkYgPyAwIDogKGxpbmtfc2VjdGlvbi0+c2hfbGluaykgLSAo
MHhGRkZGICsgMSAtIDB4RkYwMCkpKSk7CgogICAgICAgICAgICBzdHJ0YWIgPSAoY2hhciAqKSBn
ZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHN0cmluZ19zZWMtPnNoX29mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19zZWMtPnNoX3NpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gc3RyaW5nIHRh
YmxlIikpOwogICAgICAgICAgICBpZiAoIXN0cnRhYikKICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgIHByaW50ZiAoKCJcblZlcnNpb24gc3ltYm9scyBzZWN0aW9uICclcycgY29udGFp
bnMgJWQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAgICgoc2VjdGlvbikgPT0gKCh2
b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1l
KSksIHRvdGFsKTsKCiAgICAgICAgICAgIHByaW50ZiAoKCIgQWRkcjogIikpOwogICAgICAgICAg
ICBmcHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHNl
Y3Rpb24tPnNoX2FkZHIpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KChzZWN0aW9uLT5zaF9hZGRyKSAmIDB4ZmZmZmZmZmYpKSkpOwogICAgICAgICAgICBwcmludGYg
KCgiICBPZmZzZXQ6ICUjMDhseCAgTGluazogJWx4ICglcylcbiIpLAogICAgICAgICAgICAgICAg
ICAgICh1bnNpZ25lZCBsb25nKSBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNoX2xpbmss
CiAgICAgICAgICAgICAgICAgICAgKChsaW5rX3NlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKGxpbmtfc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKGxpbmtfc2VjdGlvbiktPnNoX25hbWUpKSk7
CgogICAgICAgICAgICBlZGF0YSA9CiAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopCiAg
ICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb25faW5mb1soMHg2ZmZmZmZmZiAtICgweDZmZmZmZmYwKSldIC0gbG9h
ZGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCAqIHNpemVvZiAoc2hvcnQpLCAo
InZlcnNpb24gc3ltYm9sIGRhdGEiKSkpOwogICAgICAgICAgICBpZiAoIWVkYXRhKQogICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgIGZyZWUgKHN0cnRhYik7CiAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICBkYXRhID0gKHVuc2lnbmVkIHNob3J0
ICopIG1hbGxvYyAodG90YWwgKiBzaXplb2YgKHNob3J0KSk7CgogICAgICAgICAgICBmb3IgKGNu
dCA9IHRvdGFsOyBjbnQgLS07KQogICAgICAgICAgICAgIGRhdGFbY250XSA9IGJ5dGVfZ2V0IChl
ZGF0YSArIGNudCAqIHNpemVvZiAoc2hvcnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplb2YgKHNob3J0KSk7CgogICAgICAgICAgICBmcmVlIChlZGF0YSk7CgogICAg
ICAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IHRvdGFsOyBjbnQgKz0gNCkKICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICBpbnQgaiwgbm47CiAgICAgICAgICAgICAgICBpbnQgY2hlY2tf
ZGVmLCBjaGVja19uZWVkOwogICAgICAgICAgICAgICAgY2hhciAqbmFtZTsKCiAgICAgICAgICAg
ICAgICBwcmludGYgKCIgICUwM3g6IiwgY250KTsKCiAgICAgICAgICAgICAgICBmb3IgKGogPSAw
OyAoaiA8IDQpICYmIChjbnQgKyBqKSA8IHRvdGFsOyArK2opCiAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoZGF0YVtjbnQgKyBqXSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCgiICAgMCAoKmxvY2Fs
KikgICAgIiksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCgiICAgMSAo
Kmdsb2JhbCopICAgIiksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgIG5uID0gcHJp
bnRmICgiJTR4JWMiLCBkYXRhW2NudCArIGpdICYgMHg3ZmZmLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFbY250ICsgal0gJiAweDgwMDAgPyAnaCcgOiAnICcpOwoKICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICBj
aGVja19uZWVkID0gMTsKICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2VjdGlvbl9oZWFkZXJz
ICsgKChzeW1ib2xzW2NudCArIGpdLnN0X3NobmR4KSA8IDB4RkYwMCA/IChzeW1ib2xzW2NudCAr
IGpdLnN0X3NobmR4KSA6ICgoc3ltYm9sc1tjbnQgKyBqXS5zdF9zaG5keCkgPD0gMHhGRkZGID8g
MCA6IChzeW1ib2xzW2NudCArIGpdLnN0X3NobmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkp
KS0+c2hfdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICE9IDgpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sc1tjbnQgKyBq
XS5zdF9zaG5keCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZGVmID0g
MDsKICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja19uZWVkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGVja19uZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
dmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmUpKV0pCiAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmVl
ZCBpdm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHZlcnNpb25faW5mb1soMHg2ZmZmZmZm
ZiAtICgweDZmZmZmZmZlKSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRy
OwoKICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmF1eCBp
dm5hOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0ZXJuYWxfVmVybmVlZCBl
dm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4IGV2
bmE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYV9vZmY7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZGF0YSAoJmV2biwgZmlsZSwgb2Zmc2V0
LCBzaXplb2YgKGV2biksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
InZlcnNpb24gbmVlZCIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2bi52bl9h
dXggPSBieXRlX2dldCAoZXZuLnZuX2F1eCwgc2l6ZW9mIChldm4udm5fYXV4KSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl2bi52bl9uZXh0ID0gYnl0ZV9nZXQgKGV2bi52bl9uZXh0
LCBzaXplb2YgKGV2bi52bl9uZXh0KSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
X29mZiA9IG9mZnNldCArIGl2bi52bl9hdXg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldF9kYXRhICgmZXZuYSwgZmlsZSwgYV9vZmYsIHNpemVvZiAoZXZu
YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9u
IG5lZWQgYXV4ICgyKSIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm5h
LnZuYV9uZXh0ID0gYnl0ZV9nZXQgKGV2bmEudm5hX25leHQsIHNpemVvZiAoZXZuYS52bmFfbmV4
dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZuYS52bmFfb3RoZXIgPSBi
eXRlX2dldCAoZXZuYS52bmFfb3RoZXIsIHNpemVvZiAoZXZuYS52bmFfb3RoZXIpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX29mZiArPSBpdm5hLnZuYV9uZXh0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGl2bmEudm5hX290aGVyICE9IGRhdGFbY250ICsgal0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICYmIGl2bmEudm5hX25leHQgIT0gMCk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaXZuYS52bmFfb3RoZXIgPT0gZGF0YVtjbnQgKyBqXSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpdm5hLnZuYV9uYW1lID0gYnl0ZV9nZXQgKGV2bmEudm5hX25hbWUsIHNpemVv
ZiAoZXZuYS52bmFfbmFtZSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWUgPSBzdHJ0YWIgKyBpdm5hLnZuYV9uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm4gKz0gcHJpbnRmICgiKCVzJS0qcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEyIC0gKGludCkgc3RybGVuIChuYW1lKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gaXZuLnZuX25leHQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl2
bi52bl9uZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjaGVja19kZWYgJiYgZGF0YVtjbnQgKyBqXSAhPSAweDgwMDEKICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiB2ZXJzaW9uX2luZm9bKDB4NmZmZmZmZmYgLSAoMHg2ZmZmZmZmYykp
XSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIEVs
Zl9JbnRlcm5hbF9WZXJkZWYgaXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRl
cm5hbF9WZXJkZWYgZXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
b2Zmc2V0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAodmVyc2lvbl9pbmZv
WygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmMpKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLSBsb2FkYWRkcik7CgogICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
dF9kYXRhICgmZXZkLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgidmVyc2lvbiBkZWYiKSk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpdmQudmRfbmV4dCA9IGJ5dGVfZ2V0IChldmQudmRfbmV4dCwgc2l6
ZW9mIChldmQudmRfbmV4dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdmQudmRf
bmR4ID0gYnl0ZV9nZXQgKGV2ZC52ZF9uZHgsIHNpemVvZiAoZXZkLnZkX25keCkpOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IGl2ZC52ZF9uZXh0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpdmQu
dmRfbmR4ICE9IChkYXRhW2NudCArIGpdICYgMHg3ZmZmKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmJiBpdmQudmRfbmV4dCAhPSAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGl2ZC52ZF9uZHggPT0gKGRhdGFbY250ICsgal0gJiAweDdmZmYpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0
ZXJuYWxfVmVyZGF1eCBldmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50
ZXJuYWxfVmVyZGF1eCBpdmRhOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZkLnZk
X2F1eCA9IGJ5dGVfZ2V0IChldmQudmRfYXV4LCBzaXplb2YgKGV2ZC52ZF9hdXgpKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhICgmZXZkYSwgZmlsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAtIGl2ZC52ZF9uZXh0ICsgaXZk
LnZkX2F1eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAo
ZXZkYSksICgidmVyc2lvbiBkZWYgYXV4IikpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXZkYS52ZGFfbmFtZSA9IGJ5dGVfZ2V0IChldmRhLnZkYV9uYW1lLCBzaXplb2YgKGV2ZGEu
dmRhX25hbWUpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzdHJ0YWIg
KyBpdmRhLnZkYV9uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubiArPSBwcmlu
dGYgKCIoJXMlLSpzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyIC0g
KGludCkgc3RybGVuIChuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgaWYgKG5uIDwgMTgpCiAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiUqYyIsIDE4IC0gbm4sICcgJyk7CiAgICAgICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIGZyZWUgKGRhdGEpOwogICAgICAgICAgICBmcmVlIChzdHJ0YWIpOwog
ICAgICAgICAgICBmcmVlIChzeW1ib2xzKTsKICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICBpZiAo
ISBmb3VuZCkKICAgIHByaW50ZiAoKCJcbk5vIHZlcnNpb24gaW5mb3JtYXRpb24gZm91bmQgaW4g
dGhpcyBmaWxlLlxuIikpOwoKICByZXR1cm4gMTsKfQoKc3RhdGljIGNvbnN0IGNoYXIgKgpnZXRf
c3ltYm9sX2JpbmRpbmcgKGJpbmRpbmcpCiAgICAgdW5zaWduZWQgaW50IGJpbmRpbmc7CnsKICBz
dGF0aWMgY2hhciBidWZmWzMyXTsKCiAgc3dpdGNoIChiaW5kaW5nKQogICAgewogICAgY2FzZSAw
OiByZXR1cm4gIkxPQ0FMIjsKICAgIGNhc2UgMTogcmV0dXJuICJHTE9CQUwiOwogICAgY2FzZSAy
OiByZXR1cm4gIldFQUsiOwogICAgZGVmYXVsdDoKICAgICAgaWYgKGJpbmRpbmcgPj0gMTMgJiYg
YmluZGluZyA8PSAxNSkKICAgICAgICBzcHJpbnRmIChidWZmLCAoIjxwcm9jZXNzb3Igc3BlY2lm
aWM+OiAlZCIpLCBiaW5kaW5nKTsKICAgICAgZWxzZSBpZiAoYmluZGluZyA+PSAxMCAmJiBiaW5k
aW5nIDw9IDEyKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICgiPE9TIHNwZWNpZmljPjogJWQiKSwg
YmluZGluZyk7CiAgICAgIGVsc2UKICAgICAgICBzcHJpbnRmIChidWZmLCAoIjx1bmtub3duPjog
JWQiKSwgYmluZGluZyk7CiAgICAgIHJldHVybiBidWZmOwogICAgfQp9CgpzdGF0aWMgY29uc3Qg
Y2hhciAqCmdldF9zeW1ib2xfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKewog
IHN0YXRpYyBjaGFyIGJ1ZmZbMzJdOwoKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlIDA6
IHJldHVybiAiTk9UWVBFIjsKICAgIGNhc2UgMTogcmV0dXJuICJPQkpFQ1QiOwogICAgY2FzZSAy
OiByZXR1cm4gIkZVTkMiOwogICAgY2FzZSAzOiByZXR1cm4gIlNFQ1RJT04iOwogICAgY2FzZSA0
OiByZXR1cm4gIkZJTEUiOwogICAgY2FzZSA1OiByZXR1cm4gIkNPTU1PTiI7CiAgICBjYXNlIDY6
IHJldHVybiAiVExTIjsKICAgIGRlZmF1bHQ6CiAgICAgIGlmICh0eXBlID49IDEzICYmIHR5cGUg
PD0gMTUpCiAgICAgICAgewogICAgICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQw
ICYmIHR5cGUgPT0gMTMpCiAgICAgICAgICAgIHJldHVybiAiVEhVTUJfRlVOQyI7CgogICAgICAg
ICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDQzICYmIHR5cGUgPT0gMTMpCiAgICAgICAg
ICAgIHJldHVybiAiUkVHSVNURVIiOwoKICAgICAgICAgIGlmIChlbGZfaGVhZGVyLmVfbWFjaGlu
ZSA9PSAxNSAmJiB0eXBlID09IDEzKQogICAgICAgICAgICByZXR1cm4gIlBBUklTQ19NSUxMSSI7
CgogICAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8cHJvY2Vzc29yIHNwZWNpZmljPjogJWQiKSwg
dHlwZSk7CiAgICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlID49IDEwICYmIHR5cGUgPD0gMTIp
CiAgICAgICAgewogICAgICAgICAgaWYgKGVsZl9oZWFkZXIuZV9tYWNoaW5lID09IDE1KQogICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gKDEwICsgMHgxKSkKICAgICAgICAg
ICAgICAgIHJldHVybiAiSFBfT1BBUVVFIjsKICAgICAgICAgICAgICBpZiAodHlwZSA9PSAoMTAg
KyAweDIpKQogICAgICAgICAgICAgICAgcmV0dXJuICJIUF9TVFVCIjsKICAgICAgICAgICAgfQoK
ICAgICAgICAgIHNwcmludGYgKGJ1ZmYsICgiPE9TIHNwZWNpZmljPjogJWQiKSwgdHlwZSk7CiAg
ICAgICAgfQogICAgICBlbHNlCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgKCI8dW5rbm93bj46ICVk
IiksIHR5cGUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KfQoKc3RhdGljIGNvbnN0IGNoYXIg
KgpnZXRfc3ltYm9sX3Zpc2liaWxpdHkgKHZpc2liaWxpdHkpCiAgICAgdW5zaWduZWQgaW50IHZp
c2liaWxpdHk7CnsKICBzd2l0Y2ggKHZpc2liaWxpdHkpCiAgICB7CiAgICBjYXNlIDA6IHJldHVy
biAiREVGQVVMVCI7CiAgICBjYXNlIDE6IHJldHVybiAiSU5URVJOQUwiOwogICAgY2FzZSAyOiBy
ZXR1cm4gIkhJRERFTiI7CiAgICBjYXNlIDM6IHJldHVybiAiUFJPVEVDVEVEIjsKICAgIGRlZmF1
bHQ6IGFib3J0ICgpOwogICAgfQp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmdldF9zeW1ib2xfaW5k
ZXhfdHlwZSAodHlwZSkKICAgICB1bnNpZ25lZCBpbnQgdHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1
ZmZbMzJdOwoKICBzd2l0Y2ggKHR5cGUpCiAgICB7CiAgICBjYXNlIDA6IHJldHVybiAiVU5EIjsK
ICAgIGNhc2UgMHhGRkYxOiByZXR1cm4gIkFCUyI7CiAgICBjYXNlIDB4RkZGMjogcmV0dXJuICJD
T00iOwogICAgZGVmYXVsdDoKICAgICAgaWYgKHR5cGUgPj0gMHhGRjAwICYmIHR5cGUgPD0gMHhG
RjFGKQogICAgICAgIHNwcmludGYgKGJ1ZmYsICJQUkNbMHglMDR4XSIsIHR5cGUpOwogICAgICBl
bHNlIGlmICh0eXBlID49IDB4RkYyMCAmJiB0eXBlIDw9IDB4RkYzRikKICAgICAgICBzcHJpbnRm
IChidWZmLCAiT1MgWzB4JTA0eF0iLCB0eXBlKTsKICAgICAgZWxzZSBpZiAodHlwZSA+PSAweEZG
MDAgJiYgdHlwZSA8PSAweEZGRkYpCiAgICAgICAgc3ByaW50ZiAoYnVmZiwgIlJTVlsweCUwNHhd
IiwgdHlwZSk7CiAgICAgIGVsc2UKICAgICAgICBzcHJpbnRmIChidWZmLCAiJTNkIiwgdHlwZSk7
CiAgICAgIGJyZWFrOwogICAgfQoKICByZXR1cm4gYnVmZjsKfQoKc3RhdGljIGludCAqCmdldF9k
eW5hbWljX2RhdGEgKGZpbGUsIG51bWJlcikKICAgICBGSUxFICpmaWxlOwogICAgIHVuc2lnbmVk
IGludCBudW1iZXI7CnsKICB1bnNpZ25lZCBjaGFyICplX2RhdGE7CiAgaW50ICppX2RhdGE7Cgog
IGVfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAobnVtYmVyICogNCk7CgogIGlmIChl
X2RhdGEgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnlc
biIpKTsKICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgfQoKICBpZiAoZnJlYWQgKGVfZGF0
YSwgNCwgbnVtYmVyLCBmaWxlKSAhPSBudW1iZXIpCiAgICB7CiAgICAgIGVycm9yICgoIlVuYWJs
ZSB0byByZWFkIGluIGR5bmFtaWMgZGF0YVxuIikpOwogICAgICByZXR1cm4gKCh2b2lkICopMCk7
CiAgICB9CgogIGlfZGF0YSA9IChpbnQgKikgbWFsbG9jIChudW1iZXIgKiBzaXplb2YgKCppX2Rh
dGEpKTsKCiAgaWYgKGlfZGF0YSA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZXJyb3IgKCgi
T3V0IG9mIG1lbW9yeVxuIikpOwogICAgICBmcmVlIChlX2RhdGEpOwogICAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgICB9CgogIHdoaWxlIChudW1iZXItLSkKICAgIGlfZGF0YVtudW1iZXJdID0g
Ynl0ZV9nZXQgKGVfZGF0YSArIG51bWJlciAqIDQsIDQpOwoKICBmcmVlIChlX2RhdGEpOwoKICBy
ZXR1cm4gaV9kYXRhOwp9CgoKc3RhdGljIGludApwcm9jZXNzX3N5bWJvbF90YWJsZSAoZmlsZSkK
ICAgICBGSUxFICpmaWxlOwp7CiAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgdW5zaWdu
ZWQgY2hhciBuYls0XTsKICB1bnNpZ25lZCBjaGFyIG5jWzRdOwogIGludCBuYnVja2V0cyA9IDA7
CiAgaW50IG5jaGFpbnMgPSAwOwogIGludCAqYnVja2V0cyA9ICgodm9pZCAqKTApOwogIGludCAq
Y2hhaW5zID0gKCh2b2lkICopMCk7CgogIGlmICghIGRvX3N5bXMgJiYgIWRvX2hpc3RvZ3JhbSkK
ICAgIHJldHVybiAxOwoKICBpZiAoZHluYW1pY19pbmZvWzRdICYmICgoZG9fdXNpbmdfZHluYW1p
YyAmJiBkeW5hbWljX3N0cmluZ3MgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgZG9faGlzdG9ncmFtKSkKICAgIHsKICAgICAgaWYgKGZzZWVrIChmaWxl
LCBkeW5hbWljX2luZm9bNF0gLSBsb2FkYWRkciwgMCkpCiAgICAgICAgewogICAgICAgICAgZXJy
b3IgKCgiVW5hYmxlIHRvIHNlZWsgdG8gc3RhcnQgb2YgZHluYW1pYyBpbmZvcm1hdGlvbiIpKTsK
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgIGlmIChmcmVhZCAobmIsIHNpemVv
ZiAobmIpLCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHsKICAgICAgICAgIGVycm9yICgoIkZhaWxl
ZCB0byByZWFkIGluIG51bWJlciBvZiBidWNrZXRzXG4iKSk7CiAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICB9CgogICAgICBpZiAoZnJlYWQgKG5jLCBzaXplb2YgKG5jKSwgMSwgZmlsZSkgIT0g
MSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJGYWlsZWQgdG8gcmVhZCBpbiBudW1iZXIg
b2YgY2hhaW5zXG4iKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBuYnVj
a2V0cyA9IGJ5dGVfZ2V0IChuYiwgNCk7CiAgICAgIG5jaGFpbnMgPSBieXRlX2dldCAobmMsIDQp
OwoKICAgICAgYnVja2V0cyA9IGdldF9keW5hbWljX2RhdGEgKGZpbGUsIG5idWNrZXRzKTsKICAg
ICAgY2hhaW5zID0gZ2V0X2R5bmFtaWNfZGF0YSAoZmlsZSwgbmNoYWlucyk7CgogICAgICBpZiAo
YnVja2V0cyA9PSAoKHZvaWQgKikwKSB8fCBjaGFpbnMgPT0gKCh2b2lkICopMCkpCiAgICAgICAg
cmV0dXJuIDA7CiAgICB9CgogIGlmIChkb19zeW1zCiAgICAgICYmIGR5bmFtaWNfaW5mb1s0XSAm
JiBkb191c2luZ19keW5hbWljICYmIGR5bmFtaWNfc3RyaW5ncyAhPSAoKHZvaWQgKikwKSkKICAg
IHsKICAgICAgaW50IGhuOwogICAgICBpbnQgc2k7CgogICAgICBwcmludGYgKCgiXG5TeW1ib2wg
dGFibGUgZm9yIGltYWdlOlxuIikpOwogICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgIHBy
aW50ZiAoKCIgIE51bSBCdWM6ICAgIFZhbHVlICBTaXplICAgVHlwZSAgIEJpbmQgVmlzICAgICAg
TmR4IE5hbWVcbiIpKTsKICAgICAgZWxzZQogICAgICAgIHByaW50ZiAoKCIgIE51bSBCdWM6ICAg
IFZhbHVlICAgICAgICAgIFNpemUgICBUeXBlICAgQmluZCBWaXMgICAgICBOZHggTmFtZVxuIikp
OwoKICAgICAgZm9yIChobiA9IDA7IGhuIDwgbmJ1Y2tldHM7IGhuKyspCiAgICAgICAgewogICAg
ICAgICAgaWYgKCEgYnVja2V0c1tobl0pCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAg
IGZvciAoc2kgPSBidWNrZXRzW2huXTsgc2kgPCBuY2hhaW5zICYmIHNpID4gMDsgc2kgPSBjaGFp
bnNbc2ldKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1N5bSAqcHN5
bTsKCiAgICAgICAgICAgICAgcHN5bSA9IGR5bmFtaWNfc3ltYm9scyArIHNpOwoKICAgICAgICAg
ICAgICBwcmludGYgKCIgICUzZCAlM2Q6ICIsIHNpLCBobik7CiAgICAgICAgICAgICAgcHJpbnRf
dm1hIChwc3ltLT5zdF92YWx1ZSwgTE9OR19IRVgpOwogICAgICAgICAgICAgIHB1dGNoYXIgKCcg
JyApOwogICAgICAgICAgICAgIHByaW50X3ZtYSAocHN5bS0+c3Rfc2l6ZSwgREVDXzUpOwoKICAg
ICAgICAgICAgICBwcmludGYgKCIgICU2cyIsIGdldF9zeW1ib2xfdHlwZSAoKChwc3ltLT5zdF9p
bmZvKSAmIDB4RikpKTsKICAgICAgICAgICAgICBwcmludGYgKCIgJTZzIiwgZ2V0X3N5bWJvbF9i
aW5kaW5nICgoKCh1bnNpZ25lZCBpbnQpKHBzeW0tPnN0X2luZm8pKSA+PiA0KSkpOwogICAgICAg
ICAgICAgIHByaW50ZiAoIiAlM3MiLCBnZXRfc3ltYm9sX3Zpc2liaWxpdHkgKCgocHN5bS0+c3Rf
b3RoZXIpICYgMHgzKSkpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAlMy4zcyAiLCBnZXRfc3lt
Ym9sX2luZGV4X3R5cGUgKHBzeW0tPnN0X3NobmR4KSk7CiAgICAgICAgICAgICAgcHJpbnRfc3lt
Ym9sICgyNSwgZHluYW1pY19zdHJpbmdzICsgcHN5bS0+c3RfbmFtZSk7CiAgICAgICAgICAgICAg
cHV0Y2hhciAoJ1xuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgZWxzZSBpZiAo
ZG9fc3ltcyAmJiAhZG9fdXNpbmdfZHluYW1pYykKICAgIHsKICAgICAgdW5zaWduZWQgaW50IGk7
CgogICAgICBmb3IgKGkgPSAwLCBzZWN0aW9uID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgICAg
IGkgPCBlbGZfaGVhZGVyLmVfc2hudW07CiAgICAgICAgICAgaSsrLCBzZWN0aW9uKyspCiAgICAg
ICAgewogICAgICAgICAgdW5zaWduZWQgaW50IHNpOwogICAgICAgICAgY2hhciAqc3RydGFiOwog
ICAgICAgICAgRWxmX0ludGVybmFsX1N5bSAqc3ltdGFiOwogICAgICAgICAgRWxmX0ludGVybmFs
X1N5bSAqcHN5bTsKCgogICAgICAgICAgaWYgKCBzZWN0aW9uLT5zaF90eXBlICE9IDIKICAgICAg
ICAgICAgICAmJiBzZWN0aW9uLT5zaF90eXBlICE9IDExKQogICAgICAgICAgICBjb250aW51ZTsK
CiAgICAgICAgICBwcmludGYgKCgiXG5TeW1ib2wgdGFibGUgJyVzJyBjb250YWlucyAlbHUgZW50
cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpLAogICAgICAg
ICAgICAgICAgICAodW5zaWduZWQgbG9uZykgKHNlY3Rpb24tPnNoX3NpemUgLyBzZWN0aW9uLT5z
aF9lbnRzaXplKSk7CiAgICAgICAgICBpZiAoaXNfMzJiaXRfZWxmKQogICAgICAgICAgICBwcmlu
dGYgKCgiICAgTnVtOiAgICBWYWx1ZSAgU2l6ZSBUeXBlICAgIEJpbmQgICBWaXMgICAgICBOZHgg
TmFtZVxuIikpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBwcmludGYgKCgiICAgTnVtOiAg
ICBWYWx1ZSAgICAgICAgICBTaXplIFR5cGUgICAgQmluZCAgIFZpcyAgICAgIE5keCBOYW1lXG4i
KSk7CgogICAgICAgICAgc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJpdF9lbGZfc3lt
Ym9scyAoZmlsZSwgc2VjdGlvbikgOiBnZXRfNjRiaXRfZWxmX3N5bWJvbHMgKGZpbGUsIHNlY3Rp
b24pKTsKICAgICAgICAgIGlmIChzeW10YWIgPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIGNv
bnRpbnVlOwoKICAgICAgICAgIGlmIChzZWN0aW9uLT5zaF9saW5rID09IGVsZl9oZWFkZXIuZV9z
aHN0cm5keCkKICAgICAgICAgICAgc3RydGFiID0gc3RyaW5nX3RhYmxlOwogICAgICAgICAgZWxz
ZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN0cmluZ19z
ZWM7CgogICAgICAgICAgICAgIHN0cmluZ19zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChzZWN0
aW9uLT5zaF9saW5rKSA8IDB4RkYwMCA/IChzZWN0aW9uLT5zaF9saW5rKSA6ICgoc2VjdGlvbi0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChzZWN0aW9uLT5zaF9saW5rKSAtICgweEZGRkYgKyAx
IC0gMHhGRjAwKSkpKTsKCiAgICAgICAgICAgICAgc3RydGFiID0gKGNoYXIgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBzdHJpbmdfc2VjLT5zaF9vZmZzZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19zZWMtPnNoX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgic3RyaW5nIHRhYmxlIikpOwogICAg
ICAgICAgICB9CgogICAgICAgICAgZm9yIChzaSA9IDAsIHBzeW0gPSBzeW10YWI7CiAgICAgICAg
ICAgICAgIHNpIDwgc2VjdGlvbi0+c2hfc2l6ZSAvIHNlY3Rpb24tPnNoX2VudHNpemU7CiAgICAg
ICAgICAgICAgIHNpKyssIHBzeW0rKykKICAgICAgICAgICAgewogICAgICAgICAgICAgIHByaW50
ZiAoIiU2ZDogIiwgc2kpOwogICAgICAgICAgICAgIHByaW50X3ZtYSAocHN5bS0+c3RfdmFsdWUs
IExPTkdfSEVYKTsKICAgICAgICAgICAgICBwdXRjaGFyICgnICcpOwogICAgICAgICAgICAgIHBy
aW50X3ZtYSAocHN5bS0+c3Rfc2l6ZSwgREVDXzUpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAl
LTdzIiwgZ2V0X3N5bWJvbF90eXBlICgoKHBzeW0tPnN0X2luZm8pICYgMHhGKSkpOwogICAgICAg
ICAgICAgIHByaW50ZiAoIiAlLTZzIiwgZ2V0X3N5bWJvbF9iaW5kaW5nICgoKCh1bnNpZ25lZCBp
bnQpKHBzeW0tPnN0X2luZm8pKSA+PiA0KSkpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAlLTNz
IiwgZ2V0X3N5bWJvbF92aXNpYmlsaXR5ICgoKHBzeW0tPnN0X290aGVyKSAmIDB4MykpKTsKICAg
ICAgICAgICAgICBwcmludGYgKCIgJTRzICIsIGdldF9zeW1ib2xfaW5kZXhfdHlwZSAocHN5bS0+
c3Rfc2huZHgpKTsKICAgICAgICAgICAgICBwcmludF9zeW1ib2wgKDI1LCBzdHJ0YWIgKyBwc3lt
LT5zdF9uYW1lKTsKCiAgICAgICAgICAgICAgaWYgKHNlY3Rpb24tPnNoX3R5cGUgPT0gMTEgJiYK
ICAgICAgICAgICAgICAgICAgdmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZjAp
KV0gIT0gMCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBkYXRhWzJdOwogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXJzX2RhdGE7CiAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogICAgICAgICAgICAgICAgICBp
bnQgaXNfbm9iaXRzOwogICAgICAgICAgICAgICAgICBpbnQgY2hlY2tfZGVmOwoKICAgICAgICAg
ICAgICAgICAgb2Zmc2V0ID0gdmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZjAp
KV0KICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRyOwoKICAgICAgICAgICAgICAgICAgZ2V0
X2RhdGEgKCZkYXRhLCBmaWxlLCBvZmZzZXQgKyBzaSAqIHNpemVvZiAodmVyc19kYXRhKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZGF0YSksICgidmVyc2lvbiBkYXRhIikp
OwoKICAgICAgICAgICAgICAgICAgdmVyc19kYXRhID0gYnl0ZV9nZXQgKGRhdGEsIDIpOwoKICAg
ICAgICAgICAgICAgICAgaXNfbm9iaXRzID0gKChzZWN0aW9uX2hlYWRlcnMgKyAoKHBzeW0tPnN0
X3NobmR4KSA8IDB4RkYwMCA/IChwc3ltLT5zdF9zaG5keCkgOiAoKHBzeW0tPnN0X3NobmR4KSA8
PSAweEZGRkYgPyAwIDogKHBzeW0tPnN0X3NobmR4KSAtICgweEZGRkYgKyAxIC0gMHhGRjAwKSkp
KS0+c2hfdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gOCk7CgogICAgICAg
ICAgICAgICAgICBjaGVja19kZWYgPSAocHN5bS0+c3Rfc2huZHggIT0gMCk7CgogICAgICAgICAg
ICAgICAgICBpZiAoKHZlcnNfZGF0YSAmIDB4ODAwMCkgfHwgdmVyc19kYXRhID4gMSkKICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbl9pbmZvWygw
eDZmZmZmZmZmIC0gKDB4NmZmZmZmZmUpKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo
aXNfbm9iaXRzIHx8ICEgY2hlY2tfZGVmKSkKICAgICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuZWVkIGV2bjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxfVmVybmVlZCBpdm47CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgRWxmX0ludGVybmFsX1Zlcm5hdXggaXZuYTsKCgogICAgICAgICAgICAgICAg
ICAgICAgICAgIG9mZnNldCA9ICh2ZXJzaW9uX2luZm9bKDB4NmZmZmZmZmYgLSAoMHg2ZmZmZmZm
ZSkpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGxvYWRhZGRyKTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bmFfb2ZmOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCZldm4sIGZpbGUsIG9mZnNldCwg
c2l6ZW9mIChldm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2
ZXJzaW9uIG5lZWQiKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm4udm5fYXV4
ID0gYnl0ZV9nZXQgKGV2bi52bl9hdXgsIHNpemVvZiAoZXZuLnZuX2F1eCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpdm4udm5fbmV4dCA9IGJ5dGVfZ2V0IChldm4udm5fbmV4dCwg
c2l6ZW9mIChldm4udm5fbmV4dCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5h
X29mZiA9IG9mZnNldCArIGl2bi52bl9hdXg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5hbF9WZXJuYXV4IGV2bmE7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCZldm5hLCBmaWxlLCB2bmFfb2ZmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZXZuYSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ2ZXJzaW9uIG5lZWQg
YXV4ICgzKSIpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdm5hLnZuYV9v
dGhlciA9IGJ5dGVfZ2V0IChldm5hLnZuYV9vdGhlciwgc2l6ZW9mIChldm5hLnZuYV9vdGhlcikp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZuYS52bmFfbmV4dCA9IGJ5dGVf
Z2V0IChldm5hLnZuYV9uZXh0LCBzaXplb2YgKGV2bmEudm5hX25leHQpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl2bmEudm5hX25hbWUgPSBieXRlX2dldCAoZXZuYS52bmFf
bmFtZSwgc2l6ZW9mIChldm5hLnZuYV9uYW1lKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm5hX29mZiArPSBpdm5hLnZuYV9uZXh0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl2bmEudm5h
X290aGVyICE9IHZlcnNfZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JiYgaXZuYS52bmFfbmV4dCAhPSAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpdm5hLnZuYV9vdGhlciA9PSB2ZXJzX2RhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gaXZu
LnZuX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGl2bi52bl9uZXh0ICE9IDApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXZuYS52bmFfb3RoZXIgPT0gdmVyc19kYXRhKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCJAJXMgKCVk
KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydGFiICsgaXZuYS52
bmFfbmFtZSwgaXZuYS52bmFfb3RoZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGVja19kZWYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCEgaXNfbm9iaXRzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IgKCgiYmFkIGR5bmFtaWMgc3ltYm9sIikpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2RlZiA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tf
ZGVmKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcnNfZGF0YSAhPSAweDgwMDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYg
dmVyc2lvbl9pbmZvWygweDZmZmZmZmZmIC0gKDB4NmZmZmZmZmMpKV0pCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9JbnRlcm5h
bF9WZXJkZWYgaXZkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfSW50ZXJuYWxf
VmVyZGF1eCBpdmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGZfRXh0ZXJuYWxf
VmVyZGF1eCBldmRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IG9mZnNldDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gKHZlcnNpb25faW5mb1soMHg2ZmZmZmZmZiAtICgweDZm
ZmZmZmZjKSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBsb2FkYWRkcik7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZl9FeHRlcm5h
bF9WZXJkZWYgZXZkOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRh
ICgmZXZkLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gZGVmIikpOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl2ZC52ZF9uZHggPSBieXRlX2dldCAoZXZkLnZkX25keCwgc2l6
ZW9mIChldmQudmRfbmR4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdmQu
dmRfYXV4ID0gYnl0ZV9nZXQgKGV2ZC52ZF9hdXgsIHNpemVvZiAoZXZkLnZkX2F1eCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXZkLnZkX25leHQgPSBieXRlX2dldCAoZXZk
LnZkX25leHQsIHNpemVvZiAoZXZkLnZkX25leHQpKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQgKz0gaXZkLnZkX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXZkLnZkX25k
eCAhPSAodmVyc19kYXRhICYgMHg3ZmZmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgaXZkLnZkX25leHQgIT0gMCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQgLT0gaXZkLnZkX25leHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCArPSBpdmQudmRfYXV4OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Rh
dGEgKCZldmRhLCBmaWxlLCBvZmZzZXQsIHNpemVvZiAoZXZkYSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoInZlcnNpb24gZGVmIGF1eCIpKTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGl2ZGEudmRhX25hbWUgPSBieXRlX2dldCAoZXZkYS52ZGFfbmFt
ZSwgc2l6ZW9mIChldmRhLnZkYV9uYW1lKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHN5bS0+c3RfbmFtZSAhPSBpdmRhLnZkYV9uYW1lKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50ZiAoKHZlcnNfZGF0YSAmIDB4ODAwMCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gIkAlcyIgOiAiQEAlcyIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ0YWIgKyBpdmRhLnZkYV9uYW1lKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgcHV0Y2hhciAo
J1xuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBmcmVlIChzeW10YWIpOwogICAgICAgICAg
aWYgKHN0cnRhYiAhPSBzdHJpbmdfdGFibGUpCiAgICAgICAgICAgIGZyZWUgKHN0cnRhYik7CiAg
ICAgICAgfQogICAgfQogIGVsc2UgaWYgKGRvX3N5bXMpCiAgICBwcmludGYKICAgICAgKCgiXG5E
eW5hbWljIHN5bWJvbCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGZvciBkaXNwbGF5aW5n
IHN5bWJvbHMuXG4iKSk7CgogIGlmIChkb19oaXN0b2dyYW0gJiYgYnVja2V0cyAhPSAoKHZvaWQg
KikwKSkKICAgIHsKICAgICAgaW50ICpsZW5ndGhzOwogICAgICBpbnQgKmNvdW50czsKICAgICAg
aW50IGhuOwogICAgICBpbnQgc2k7CiAgICAgIGludCBtYXhsZW5ndGggPSAwOwogICAgICBpbnQg
bnplcm9fY291bnRzID0gMDsKICAgICAgaW50IG5zeW1zID0gMDsKCiAgICAgIHByaW50ZiAoKCJc
bkhpc3RvZ3JhbSBmb3IgYnVja2V0IGxpc3QgbGVuZ3RoICh0b3RhbCBvZiAlZCBidWNrZXRzKTpc
biIpLAogICAgICAgICAgICAgIG5idWNrZXRzKTsKICAgICAgcHJpbnRmICgoIiBMZW5ndGggIE51
bWJlciAgICAgJSUgb2YgdG90YWwgIENvdmVyYWdlXG4iKSk7CgogICAgICBsZW5ndGhzID0gKGlu
dCAqKSBjYWxsb2MgKG5idWNrZXRzLCBzaXplb2YgKGludCkpOwogICAgICBpZiAobGVuZ3RocyA9
PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5
IikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICBmb3IgKGhuID0gMDsgaG4g
PCBuYnVja2V0czsgKytobikKICAgICAgICB7CiAgICAgICAgICBpZiAoISBidWNrZXRzW2huXSkK
ICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgZm9yIChzaSA9IGJ1Y2tldHNbaG5dOyBz
aSA+IDAgJiYgc2kgPCBuY2hhaW5zOyBzaSA9IGNoYWluc1tzaV0pCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICArK25zeW1zOwogICAgICAgICAgICAgIGlmIChtYXhsZW5ndGggPCArK2xlbmd0
aHNbaG5dKQogICAgICAgICAgICAgICAgKyttYXhsZW5ndGg7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICBjb3VudHMgPSAoaW50ICopIGNhbGxvYyAobWF4bGVuZ3RoICsgMSwgc2l6ZW9m
IChpbnQpKTsKICAgICAgaWYgKGNvdW50cyA9PSAoKHZvaWQgKikwKSkKICAgICAgICB7CiAgICAg
ICAgICBlcnJvciAoKCJPdXQgb2YgbWVtb3J5IikpOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgfQoKICAgICAgZm9yIChobiA9IDA7IGhuIDwgbmJ1Y2tldHM7ICsraG4pCiAgICAgICAgKytj
b3VudHNbbGVuZ3Roc1tobl1dOwoKICAgICAgaWYgKG5idWNrZXRzID4gMCkKICAgICAgICB7CiAg
ICAgICAgICBwcmludGYgKCIgICAgICAwICAlLTEwZCAoJTUuMWYlJSlcbiIsCiAgICAgICAgICAg
ICAgICAgIGNvdW50c1swXSwgKGNvdW50c1swXSAqIDEwMC4wKSAvIG5idWNrZXRzKTsKICAgICAg
ICAgIGZvciAoc2kgPSAxOyBzaSA8PSBtYXhsZW5ndGg7ICsrc2kpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICBuemVyb19jb3VudHMgKz0gY291bnRzW3NpXSAqIHNpOwogICAgICAgICAgICAg
IHByaW50ZiAoIiU3ZCAgJS0xMGQgKCU1LjFmJSUpICAgICU1LjFmJSVcbiIsCiAgICAgICAgICAg
ICAgICAgICAgICBzaSwgY291bnRzW3NpXSwgKGNvdW50c1tzaV0gKiAxMDAuMCkgLyBuYnVja2V0
cywKICAgICAgICAgICAgICAgICAgICAgIChuemVyb19jb3VudHMgKiAxMDAuMCkgLyBuc3ltcyk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBmcmVlIChjb3VudHMpOwogICAgICBmcmVl
IChsZW5ndGhzKTsKICAgIH0KCiAgaWYgKGJ1Y2tldHMgIT0gKCh2b2lkICopMCkpCiAgICB7CiAg
ICAgIGZyZWUgKGJ1Y2tldHMpOwogICAgICBmcmVlIChjaGFpbnMpOwogICAgfQoKICByZXR1cm4g
MTsKfQoKc3RhdGljIGludApwcm9jZXNzX3N5bWluZm8gKGZpbGUpCiAgICAgRklMRSAqZmlsZSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgdW5zaWduZWQgaW50IGk7CgogIGlmIChk
eW5hbWljX3N5bWluZm8gPT0gKCh2b2lkICopMCkKICAgICAgfHwgIWRvX2R5bmFtaWMpCgogICAg
cmV0dXJuIDE7CgoKICBpZiAoZHluYW1pY19zeW1ib2xzID09ICgodm9pZCAqKTApIHx8IGR5bmFt
aWNfc3RyaW5ncyA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAwOwoKICBpZiAoZHluYW1pY19h
ZGRyKQogICAgcHJpbnRmICgoIlxuRHluYW1pYyBpbmZvIHNlZ21lbnQgYXQgb2Zmc2V0IDB4JWx4
IGNvbnRhaW5zICVkIGVudHJpZXM6XG4iKSwKICAgICAgICAgICAgZHluYW1pY19zeW1pbmZvX29m
ZnNldCwgZHluYW1pY19zeW1pbmZvX25lbnQpOwoKICBwcmludGYgKCgiIE51bTogTmFtZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJvdW5kVG8gICAgIEZsYWdzXG4iKSk7CiAgZm9yIChpID0g
MDsgaSA8IGR5bmFtaWNfc3ltaW5mb19uZW50OyArK2kpCiAgICB7CiAgICAgIHVuc2lnbmVkIHNo
b3J0IGludCBmbGFncyA9IGR5bmFtaWNfc3ltaW5mb1tpXS5zaV9mbGFnczsKCiAgICAgIHByaW50
ZiAoIiU0ZDogIiwgaSk7CiAgICAgIHByaW50X3N5bWJvbCAoMzAsIGR5bmFtaWNfc3RyaW5ncyAr
IGR5bmFtaWNfc3ltYm9sc1tpXS5zdF9uYW1lKTsKICAgICAgcHV0Y2hhciAoJyAnKTsKCiAgICAg
IHN3aXRjaCAoZHluYW1pY19zeW1pbmZvW2ldLnNpX2JvdW5kdG8pCiAgICAgICAgewogICAgICAg
IGNhc2UgMHhmZmZmOgogICAgICAgICAgZnB1dHMgKCJTRUxGICAgICAgICIsIHN0ZG91dCk7CiAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDB4ZmZmZToKICAgICAgICAgIGZwdXRzICgiUEFS
RU5UICAgICAiLCBzdGRvdXQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgIGlmIChkeW5hbWljX3N5bWluZm9baV0uc2lfYm91bmR0byA+IDAKICAgICAgICAgICAg
ICAmJiBkeW5hbWljX3N5bWluZm9baV0uc2lfYm91bmR0byA8IGR5bmFtaWNfc2l6ZSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIHByaW50X3N5bWJvbCAoMTAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkeW5hbWljX3N0cmluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg
KGR5bmFtaWNfc2VnbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2R5bmFtaWNf
c3ltaW5mb1tpXS5zaV9ib3VuZHRvXS5kX3VuLmRfdmFsKSk7CiAgICAgICAgICAgICAgcHV0Y2hh
ciAoJyAnICk7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRm
ICgiJS0xMGQgIiwgZHluYW1pY19zeW1pbmZvW2ldLnNpX2JvdW5kdG8pOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQoKICAgICAgaWYgKGZsYWdzICYgMHgwMDAxKQogICAgICAgIHByaW50ZiAo
IiBESVJFQ1QiKTsKICAgICAgaWYgKGZsYWdzICYgMHgwMDAyKQogICAgICAgIHByaW50ZiAoIiBQ
QVNTVEhSVSIpOwogICAgICBpZiAoZmxhZ3MgJiAweDAwMDQpCiAgICAgICAgcHJpbnRmICgiIENP
UFkiKTsKICAgICAgaWYgKGZsYWdzICYgMHgwMDA4KQogICAgICAgIHByaW50ZiAoIiBMQVpZTE9B
RCIpOwoKICAgICAgcHV0cyAoIiIpOwogICAgfQoKICByZXR1cm4gMTsKfQojIDYxOTQgInJlYWRl
bGYuYyIKc3RhdGljIGludApkdW1wX3NlY3Rpb24gKHNlY3Rpb24sIGZpbGUpCiAgICAgRWxmX0lu
dGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgRklMRSAqZmlsZTsKewogIGJmZF9zaXplX3R5cGUg
Ynl0ZXM7CiAgYmZkX3ZtYSBhZGRyOwogIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgdW5zaWduZWQg
Y2hhciAqc3RhcnQ7CgogIGJ5dGVzID0gc2VjdGlvbi0+c2hfc2l6ZTsKCiAgaWYgKGJ5dGVzID09
IDApCiAgICB7CiAgICAgIHByaW50ZiAoKCJcblNlY3Rpb24gJyVzJyBoYXMgbm8gZGF0YSB0byBk
dW1wLlxuIiksCiAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CiAgICAgIHJldHVy
biAwOwogICAgfQogIGVsc2UKICAgIHByaW50ZiAoKCJcbkhleCBkdW1wIG9mIHNlY3Rpb24gJyVz
JzpcbiIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24p
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsKCiAgYWRkciA9IHNlY3Rpb24tPnNoX2FkZHI7
CgogIHN0YXJ0ID0gKHVuc2lnbmVkIGNoYXIgKikgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxl
LCBzZWN0aW9uLT5zaF9vZmZzZXQsIGJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgic2VjdGlvbiBkYXRhIikpOwogIGlmICghc3RhcnQpCiAgICByZXR1cm4gMDsK
CiAgZGF0YSA9IHN0YXJ0OwoKICB3aGlsZSAoYnl0ZXMpCiAgICB7CiAgICAgIGludCBqOwogICAg
ICBpbnQgazsKICAgICAgaW50IGxieXRlczsKCiAgICAgIGxieXRlcyA9IChieXRlcyA+IDE2ID8g
MTYgOiBieXRlcyk7CgogICAgICBwcmludGYgKCIgIDB4JTguOGx4ICIsICh1bnNpZ25lZCBsb25n
KSBhZGRyKTsKCiAgICAgIHN3aXRjaCAoZWxmX2hlYWRlci5lX2lkZW50WzVdKQogICAgICAgIHsK
ICAgICAgICBkZWZhdWx0OgogICAgICAgIGNhc2UgMToKICAgICAgICAgIGZvciAoaiA9IDE1OyBq
ID49IDA7IGogLS0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoaiA8IGxieXRlcykK
ICAgICAgICAgICAgICAgIHByaW50ZiAoIiUyLjJ4IiwgZGF0YVtqXSk7CiAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICAiKTsKCiAgICAgICAgICAgICAgaWYgKCEo
aiAmIDB4MykpCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIik7CiAgICAgICAgICAgIH0KICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBmb3IgKGogPSAwOyBqIDwg
MTY7IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmIChqIDwgbGJ5dGVzKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgiJTIuMngiLCBkYXRhW2pdKTsKICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICBwcmludGYgKCIgICIpOwoKICAgICAgICAgICAgICBpZiAoKGogJiAz
KSA9PSAzKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICIpOwogICAgICAgICAgICB9CiAgICAg
ICAgICBicmVhazsKICAgICAgICB9CgogICAgICBmb3IgKGogPSAwOyBqIDwgbGJ5dGVzOyBqKysp
CiAgICAgICAgewogICAgICAgICAgayA9IGRhdGFbal07CiAgICAgICAgICBpZiAoayA+PSAnICcg
JiYgayA8IDB4ODApCiAgICAgICAgICAgIHByaW50ZiAoIiVjIiwgayk7CiAgICAgICAgICBlbHNl
CiAgICAgICAgICAgIHByaW50ZiAoIi4iKTsKICAgICAgICB9CgogICAgICBwdXRjaGFyICgnXG4n
KTsKCiAgICAgIGRhdGEgKz0gbGJ5dGVzOwogICAgICBhZGRyICs9IGxieXRlczsKICAgICAgYnl0
ZXMgLT0gbGJ5dGVzOwogICAgfQoKICBmcmVlIChzdGFydCk7CgogIHJldHVybiAxOwp9CgoKc3Rh
dGljIHVuc2lnbmVkIGxvbmcgaW50CnJlYWRfbGViMTI4IChkYXRhLCBsZW5ndGhfcmV0dXJuLCBz
aWduKQogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgaW50ICpsZW5ndGhfcmV0dXJuOwog
ICAgIGludCBzaWduOwp7CiAgdW5zaWduZWQgbG9uZyBpbnQgcmVzdWx0ID0gMDsKICB1bnNpZ25l
ZCBpbnQgbnVtX3JlYWQgPSAwOwogIGludCBzaGlmdCA9IDA7CiAgdW5zaWduZWQgY2hhciBieXRl
OwoKICBkbwogICAgewogICAgICBieXRlID0gKmRhdGErKzsKICAgICAgbnVtX3JlYWQrKzsKCiAg
ICAgIHJlc3VsdCB8PSAoYnl0ZSAmIDB4N2YpIDw8IHNoaWZ0OwoKICAgICAgc2hpZnQgKz0gNzsK
CiAgICB9CiAgd2hpbGUgKGJ5dGUgJiAweDgwKTsKCiAgaWYgKGxlbmd0aF9yZXR1cm4gIT0gKCh2
b2lkICopMCkpCiAgICAqbGVuZ3RoX3JldHVybiA9IG51bV9yZWFkOwoKICBpZiAoc2lnbiAmJiAo
c2hpZnQgPCAzMikgJiYgKGJ5dGUgJiAweDQwKSkKICAgIHJlc3VsdCB8PSAtMSA8PCBzaGlmdDsK
CiAgcmV0dXJuIHJlc3VsdDsKfQoKdHlwZWRlZiBzdHJ1Y3QgU3RhdGVfTWFjaGluZV9SZWdpc3Rl
cnMKewogIHVuc2lnbmVkIGxvbmcgYWRkcmVzczsKICB1bnNpZ25lZCBpbnQgZmlsZTsKICB1bnNp
Z25lZCBpbnQgbGluZTsKICB1bnNpZ25lZCBpbnQgY29sdW1uOwogIGludCBpc19zdG10OwogIGlu
dCBiYXNpY19ibG9jazsKICBpbnQgZW5kX3NlcXVlbmNlOwoKCiAgdW5zaWduZWQgaW50IGxhc3Rf
ZmlsZV9lbnRyeTsKfSBTTVI7CgpzdGF0aWMgU01SIHN0YXRlX21hY2hpbmVfcmVnczsKCnN0YXRp
YyB2b2lkCnJlc2V0X3N0YXRlX21hY2hpbmUgKGlzX3N0bXQpCiAgICAgaW50IGlzX3N0bXQ7CnsK
ICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyA9IDA7CiAgc3RhdGVfbWFjaGluZV9yZWdzLmZp
bGUgPSAxOwogIHN0YXRlX21hY2hpbmVfcmVncy5saW5lID0gMTsKICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuY29sdW1uID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3MuaXNfc3RtdCA9IGlzX3N0bXQ7CiAg
c3RhdGVfbWFjaGluZV9yZWdzLmJhc2ljX2Jsb2NrID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3Mu
ZW5kX3NlcXVlbmNlID0gMDsKICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlX2VudHJ5ID0g
MDsKfQoKCgpzdGF0aWMgaW50CnByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCAoZGF0YSwgaXNfc3Rt
dCwgcG9pbnRlcl9zaXplKQogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgaW50IGlzX3N0
bXQ7CiAgICAgaW50IHBvaW50ZXJfc2l6ZTsKewogIHVuc2lnbmVkIGNoYXIgb3BfY29kZTsKICBp
bnQgYnl0ZXNfcmVhZDsKICB1bnNpZ25lZCBpbnQgbGVuOwogIHVuc2lnbmVkIGNoYXIgKm5hbWU7
CiAgdW5zaWduZWQgbG9uZyBhZHI7CgogIGxlbiA9IHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVz
X3JlYWQsIDApOwogIGRhdGEgKz0gYnl0ZXNfcmVhZDsKCiAgaWYgKGxlbiA9PSAwKQogICAgewog
ICAgICB3YXJuICgoImJhZGx5IGZvcm1lZCBleHRlbmRlZCBsaW5lIG9wIGVuY291bnRlcmVkIVxu
IikpOwogICAgICByZXR1cm4gYnl0ZXNfcmVhZDsKICAgIH0KCiAgbGVuICs9IGJ5dGVzX3JlYWQ7
CiAgb3BfY29kZSA9ICpkYXRhKys7CgogIHByaW50ZiAoKCIgIEV4dGVuZGVkIG9wY29kZSAlZDog
IiksIG9wX2NvZGUpOwoKICBzd2l0Y2ggKG9wX2NvZGUpCiAgICB7CiAgICBjYXNlIERXX0xORV9l
bmRfc2VxdWVuY2U6CiAgICAgIHByaW50ZiAoKCJFbmQgb2YgU2VxdWVuY2VcblxuIikpOwogICAg
ICByZXNldF9zdGF0ZV9tYWNoaW5lIChpc19zdG10KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBE
V19MTkVfc2V0X2FkZHJlc3M6CiAgICAgIGFkciA9IGJ5dGVfZ2V0IChkYXRhLCBwb2ludGVyX3Np
emUpOwogICAgICBwcmludGYgKCgic2V0IEFkZHJlc3MgdG8gMHglbHhcbiIpLCBhZHIpOwogICAg
ICBzdGF0ZV9tYWNoaW5lX3JlZ3MuYWRkcmVzcyA9IGFkcjsKICAgICAgYnJlYWs7CgogICAgY2Fz
ZSBEV19MTkVfZGVmaW5lX2ZpbGU6CiAgICAgIHByaW50ZiAoKCIgIGRlZmluZSBuZXcgRmlsZSBU
YWJsZSBlbnRyeVxuIikpOwogICAgICBwcmludGYgKCgiICBFbnRyeVx0RGlyXHRUaW1lXHRTaXpl
XHROYW1lXG4iKSk7CgogICAgICBwcmludGYgKCgiICAgJWRcdCIpLCArK3N0YXRlX21hY2hpbmVf
cmVncy5sYXN0X2ZpbGVfZW50cnkpOwogICAgICBuYW1lID0gZGF0YTsKICAgICAgZGF0YSArPSBz
dHJsZW4gKChjaGFyICopIGRhdGEpICsgMTsKICAgICAgcHJpbnRmICgoIiVsdVx0IiksIHJlYWRf
bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApKTsKICAgICAgZGF0YSArPSBieXRlc19yZWFk
OwogICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVh
ZCwgMCkpOwogICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgIHByaW50ZiAoKCIlbHVcdCIp
LCByZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKSk7CiAgICAgIHByaW50ZiAoKCIl
c1xuXG4iKSwgbmFtZSk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHByaW50ZiAo
KCJVTktOT1dOOiBsZW5ndGggJWRcbiIpLCBsZW4gLSBieXRlc19yZWFkKTsKICAgICAgYnJlYWs7
CiAgICB9CgogIHJldHVybiBsZW47Cn0KCgoKCnN0YXRpYyBpbnQgZGVidWdfbGluZV9wb2ludGVy
X3NpemUgPSA0OwoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX2xpbmVzIChzZWN0aW9uLCBzdGFy
dCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBj
aGFyICogc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykp
Owp7CiAgRFdBUkYyX0V4dGVybmFsX0xpbmVJbmZvICpleHRlcm5hbDsKICBEV0FSRjJfSW50ZXJu
YWxfTGluZUluZm8gaW5mbzsKICB1bnNpZ25lZCBjaGFyICpzdGFuZGFyZF9vcGNvZGVzOwogIHVu
c2lnbmVkIGNoYXIgKmRhdGEgPSBzdGFydDsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCAr
IHNlY3Rpb24tPnNoX3NpemU7CiAgdW5zaWduZWQgY2hhciAqZW5kX29mX3NlcXVlbmNlOwogIGlu
dCBpOwoKICBwcmludGYgKCgiXG5EdW1wIG9mIGRlYnVnIGNvbnRlbnRzIG9mIHNlY3Rpb24gJXM6
XG5cbiIpLAogICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CgogIHdoaWxlIChkYXRhIDwg
ZW5kKQogICAgewogICAgICBleHRlcm5hbCA9IChEV0FSRjJfRXh0ZXJuYWxfTGluZUluZm8gKikg
ZGF0YTsKCgogICAgICBpbmZvLmxpX2xlbmd0aCA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bGlfbGVu
Z3RoLCBzaXplb2YgKGV4dGVybmFsLT5saV9sZW5ndGgpKTsKCiAgICAgIGlmIChpbmZvLmxpX2xl
bmd0aCA9PSAweGZmZmZmZmZmKQogICAgICAgIHsKICAgICAgICAgIHdhcm4gKCgiNjQtYml0IERX
QVJGIGxpbmUgaW5mbyBpcyBub3Qgc3VwcG9ydGVkIHlldC5cbiIpKTsKICAgICAgICAgIGJyZWFr
OwogICAgICAgIH0KCiAgICAgIGlmIChpbmZvLmxpX2xlbmd0aCArIHNpemVvZiAoZXh0ZXJuYWwt
PmxpX2xlbmd0aCkgPiBzZWN0aW9uLT5zaF9zaXplKQogICAgICAgIHsKICAgICAgICAgIHdhcm4K
ICAgICAgICAgICAgKCgiVGhlIGxpbmUgaW5mbyBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQgLSB0aGUg
c2VjdGlvbiBpcyB0b28gc21hbGxcbiIpKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0K
CgogICAgICBpbmZvLmxpX3ZlcnNpb24gPSBieXRlX2dldCAoZXh0ZXJuYWwtPmxpX3ZlcnNpb24s
IHNpemVvZiAoZXh0ZXJuYWwtPmxpX3ZlcnNpb24pKTsKICAgICAgaWYgKGluZm8ubGlfdmVyc2lv
biAhPSAyKQogICAgICAgIHsKICAgICAgICAgIHdhcm4gKCgiT25seSBEV0FSRiB2ZXJzaW9uIDIg
bGluZSBpbmZvIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iKSk7CiAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICB9CgogICAgICBpbmZvLmxpX3Byb2xvZ3VlX2xlbmd0aCA9IGJ5dGVfZ2V0IChl
eHRlcm5hbC0+bGlfcHJvbG9ndWVfbGVuZ3RoLCBzaXplb2YgKGV4dGVybmFsLT5saV9wcm9sb2d1
ZV9sZW5ndGgpKTsKICAgICAgaW5mby5saV9taW5faW5zbl9sZW5ndGggPSBieXRlX2dldCAoZXh0
ZXJuYWwtPmxpX21pbl9pbnNuX2xlbmd0aCwgc2l6ZW9mIChleHRlcm5hbC0+bGlfbWluX2luc25f
bGVuZ3RoKSk7CiAgICAgIGluZm8ubGlfZGVmYXVsdF9pc19zdG10ID0gYnl0ZV9nZXQgKGV4dGVy
bmFsLT5saV9kZWZhdWx0X2lzX3N0bXQsIHNpemVvZiAoZXh0ZXJuYWwtPmxpX2RlZmF1bHRfaXNf
c3RtdCkpOwogICAgICBpbmZvLmxpX2xpbmVfYmFzZSA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bGlf
bGluZV9iYXNlLCBzaXplb2YgKGV4dGVybmFsLT5saV9saW5lX2Jhc2UpKTsKICAgICAgaW5mby5s
aV9saW5lX3JhbmdlID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5saV9saW5lX3JhbmdlLCBzaXplb2Yg
KGV4dGVybmFsLT5saV9saW5lX3JhbmdlKSk7CiAgICAgIGluZm8ubGlfb3Bjb2RlX2Jhc2UgPSBi
eXRlX2dldCAoZXh0ZXJuYWwtPmxpX29wY29kZV9iYXNlLCBzaXplb2YgKGV4dGVybmFsLT5saV9v
cGNvZGVfYmFzZSkpOwoKCiAgICAgIGluZm8ubGlfbGluZV9iYXNlIDw8PSAyNDsKICAgICAgaW5m
by5saV9saW5lX2Jhc2UgPj49IDI0OwoKICAgICAgcHJpbnRmICgoIiAgTGVuZ3RoOiAgICAgICAg
ICAgICAgICAgICAgICAlbGRcbiIpLCBpbmZvLmxpX2xlbmd0aCk7CiAgICAgIHByaW50ZiAoKCIg
IERXQVJGIFZlcnNpb246ICAgICAgICAgICAgICAgJWRcbiIpLCBpbmZvLmxpX3ZlcnNpb24pOwog
ICAgICBwcmludGYgKCgiICBQcm9sb2d1ZSBMZW5ndGg6ICAgICAgICAgICAgICVkXG4iKSwgaW5m
by5saV9wcm9sb2d1ZV9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICBNaW5pbXVtIEluc3RydWN0
aW9uIExlbmd0aDogICVkXG4iKSwgaW5mby5saV9taW5faW5zbl9sZW5ndGgpOwogICAgICBwcmlu
dGYgKCgiICBJbml0aWFsIHZhbHVlIG9mICdpc19zdG10JzogICVkXG4iKSwgaW5mby5saV9kZWZh
dWx0X2lzX3N0bXQpOwogICAgICBwcmludGYgKCgiICBMaW5lIEJhc2U6ICAgICAgICAgICAgICAg
ICAgICVkXG4iKSwgaW5mby5saV9saW5lX2Jhc2UpOwogICAgICBwcmludGYgKCgiICBMaW5lIFJh
bmdlOiAgICAgICAgICAgICAgICAgICVkXG4iKSwgaW5mby5saV9saW5lX3JhbmdlKTsKICAgICAg
cHJpbnRmICgoIiAgT3Bjb2RlIEJhc2U6ICAgICAgICAgICAgICAgICAlZFxuIiksIGluZm8ubGlf
b3Bjb2RlX2Jhc2UpOwoKICAgICAgZW5kX29mX3NlcXVlbmNlID0gZGF0YSArIGluZm8ubGlfbGVu
Z3RoICsgc2l6ZW9mIChleHRlcm5hbC0+bGlfbGVuZ3RoKTsKCiAgICAgIHJlc2V0X3N0YXRlX21h
Y2hpbmUgKGluZm8ubGlfZGVmYXVsdF9pc19zdG10KTsKCgogICAgICBzdGFuZGFyZF9vcGNvZGVz
ID0gZGF0YSArIHNpemVvZiAoKmV4dGVybmFsKTsKCiAgICAgIHByaW50ZiAoKCJcbiBPcGNvZGVz
OlxuIikpOwoKICAgICAgZm9yIChpID0gMTsgaSA8IGluZm8ubGlfb3Bjb2RlX2Jhc2U7IGkrKykK
ICAgICAgICBwcmludGYgKCgiICBPcGNvZGUgJWQgaGFzICVkIGFyZ3NcbiIpLCBpLCBzdGFuZGFy
ZF9vcGNvZGVzW2kgLSAxXSk7CgoKICAgICAgZGF0YSA9IHN0YW5kYXJkX29wY29kZXMgKyBpbmZv
LmxpX29wY29kZV9iYXNlIC0gMTsKCiAgICAgIGlmICgqZGF0YSA9PSAwKQogICAgICAgIHByaW50
ZiAoKCJcbiBUaGUgRGlyZWN0b3J5IFRhYmxlIGlzIGVtcHR5LlxuIikpOwogICAgICBlbHNlCiAg
ICAgICAgewogICAgICAgICAgcHJpbnRmICgoIlxuIFRoZSBEaXJlY3RvcnkgVGFibGU6XG4iKSk7
CgogICAgICAgICAgd2hpbGUgKCpkYXRhICE9IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICBwcmludGYgKCgiICAlc1xuIiksIGRhdGEpOwoKICAgICAgICAgICAgICBkYXRhICs9IHN0cmxl
biAoKGNoYXIgKikgZGF0YSkgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgIGRh
dGErKzsKCgogICAgICBpZiAoKmRhdGEgPT0gMCkKICAgICAgICBwcmludGYgKCgiXG4gVGhlIEZp
bGUgTmFtZSBUYWJsZSBpcyBlbXB0eS5cbiIpKTsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAg
ICAgIHByaW50ZiAoKCJcbiBUaGUgRmlsZSBOYW1lIFRhYmxlOlxuIikpOwogICAgICAgICAgcHJp
bnRmICgoIiAgRW50cnlcdERpclx0VGltZVx0U2l6ZVx0TmFtZVxuIikpOwoKICAgICAgICAgIHdo
aWxlICgqZGF0YSAhPSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqbmFtZTsKICAgICAgICAgICAgICBpbnQgYnl0ZXNfcmVhZDsKCiAgICAgICAgICAgICAgcHJp
bnRmICgoIiAgJWRcdCIpLCArK3N0YXRlX21hY2hpbmVfcmVncy5sYXN0X2ZpbGVfZW50cnkpOwog
ICAgICAgICAgICAgIG5hbWUgPSBkYXRhOwoKICAgICAgICAgICAgICBkYXRhICs9IHN0cmxlbiAo
KGNoYXIgKikgZGF0YSkgKyAxOwoKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVh
ZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0g
Ynl0ZXNfcmVhZDsKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjgg
KGRhdGEsICYgYnl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgICAgICAgICBwcmludGYgKCgiJWx1XHQiKSwgcmVhZF9sZWIxMjggKGRhdGEsICYg
Ynl0ZXNfcmVhZCwgMCkpOwogICAgICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAg
ICAgICAgICBwcmludGYgKCgiJXNcbiIpLCBuYW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0K
CgogICAgICBkYXRhKys7CgoKICAgICAgcHJpbnRmICgoIlxuIExpbmUgTnVtYmVyIFN0YXRlbWVu
dHM6XG4iKSk7CgoKICAgICAgd2hpbGUgKGRhdGEgPCBlbmRfb2Zfc2VxdWVuY2UpCiAgICAgICAg
ewogICAgICAgICAgdW5zaWduZWQgY2hhciBvcF9jb2RlOwogICAgICAgICAgaW50IGFkdjsKICAg
ICAgICAgIGludCBieXRlc19yZWFkOwoKICAgICAgICAgIG9wX2NvZGUgPSAqZGF0YSsrOwoKICAg
ICAgICAgIGlmIChvcF9jb2RlID49IGluZm8ubGlfb3Bjb2RlX2Jhc2UpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICBvcF9jb2RlIC09IGluZm8ubGlfb3Bjb2RlX2Jhc2U7CiAgICAgICAgICAg
ICAgYWR2ID0gKG9wX2NvZGUgLyBpbmZvLmxpX2xpbmVfcmFuZ2UpICogaW5mby5saV9taW5faW5z
bl9sZW5ndGg7CiAgICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MgKz0gYWR2
OwogICAgICAgICAgICAgIHByaW50ZiAoKCIgIFNwZWNpYWwgb3Bjb2RlICVkOiBhZHZhbmNlIEFk
ZHJlc3MgYnkgJWQgdG8gMHglbHgiKSwKICAgICAgICAgICAgICAgICAgICAgIG9wX2NvZGUsIGFk
diwgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAgICAgICAgIGFkdiA9IChvcF9j
b2RlICUgaW5mby5saV9saW5lX3JhbmdlKSArIGluZm8ubGlfbGluZV9iYXNlOwogICAgICAgICAg
ICAgIHN0YXRlX21hY2hpbmVfcmVncy5saW5lICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYg
KCgiIGFuZCBMaW5lIGJ5ICVkIHRvICVkXG4iKSwKICAgICAgICAgICAgICAgICAgICAgIGFkdiwg
c3RhdGVfbWFjaGluZV9yZWdzLmxpbmUpOwogICAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHN3
aXRjaCAob3BfY29kZSkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIERXX0xOU19leHRl
bmRlZF9vcDoKICAgICAgICAgICAgICBkYXRhICs9IHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCAo
ZGF0YSwgaW5mby5saV9kZWZhdWx0X2lzX3N0bXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplKTsKICAgICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgRFdfTE5TX2NvcHk6CiAgICAgICAgICAgICAg
cHJpbnRmICgoIiAgQ29weVxuIikpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAg
Y2FzZSBEV19MTlNfYWR2YW5jZV9wYzoKICAgICAgICAgICAgICBhZHYgPSBpbmZvLmxpX21pbl9p
bnNuX2xlbmd0aCAqIHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAg
ICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuYWRkcmVzcyArPSBhZHY7CiAgICAgICAgICAgICAgcHJpbnRmICgoIiAgQWR2YW5jZSBQQyBi
eSAlZCB0byAlbHhcbiIpLCBhZHYsCiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5l
X3JlZ3MuYWRkcmVzcyk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0xOU19hZHZhbmNlX2xpbmU6CiAgICAgICAgICAgICAgYWR2ID0gcmVhZF9sZWIxMjggKGRhdGEs
ICYgYnl0ZXNfcmVhZCwgMSk7CiAgICAgICAgICAgICAgZGF0YSArPSBieXRlc19yZWFkOwogICAg
ICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5saW5lICs9IGFkdjsKICAgICAgICAgICAgICBw
cmludGYgKCgiICBBZHZhbmNlIExpbmUgYnkgJWQgdG8gJWRcbiIpLCBhZHYsCiAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3JlZ3MubGluZSk7CiAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICBjYXNlIERXX0xOU19zZXRfZmlsZToKICAgICAgICAgICAgICBhZHYgPSBy
ZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgICAgICBkYXRhICs9
IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAgICAgcHJpbnRmICgoIiAgU2V0IEZpbGUgTmFtZSB0byBl
bnRyeSAlZCBpbiB0aGUgRmlsZSBOYW1lIFRhYmxlXG4iKSwKICAgICAgICAgICAgICAgICAgICAg
IGFkdik7CiAgICAgICAgICAgICAgc3RhdGVfbWFjaGluZV9yZWdzLmZpbGUgPSBhZHY7CiAgICAg
ICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0xOU19zZXRfY29sdW1uOgogICAg
ICAgICAgICAgIGFkdiA9IHJlYWRfbGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAg
ICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgICBwcmludGYgKCgiICBT
ZXQgY29sdW1uIHRvICVkXG4iKSwgYWR2KTsKICAgICAgICAgICAgICBzdGF0ZV9tYWNoaW5lX3Jl
Z3MuY29sdW1uID0gYWR2OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19MTlNfbmVnYXRlX3N0bXQ6CiAgICAgICAgICAgICAgYWR2ID0gc3RhdGVfbWFjaGluZV9yZWdz
LmlzX3N0bXQ7CiAgICAgICAgICAgICAgYWR2ID0gISBhZHY7CiAgICAgICAgICAgICAgcHJpbnRm
ICgoIiAgU2V0IGlzX3N0bXQgdG8gJWRcbiIpLCBhZHYpOwogICAgICAgICAgICAgIHN0YXRlX21h
Y2hpbmVfcmVncy5pc19zdG10ID0gYWR2OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSBEV19MTlNfc2V0X2Jhc2ljX2Jsb2NrOgogICAgICAgICAgICAgIHByaW50ZiAoKCIg
IFNldCBiYXNpYyBibG9ja1xuIikpOwogICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVncy5i
YXNpY19ibG9jayA9IDE7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0xOU19jb25zdF9hZGRfcGM6CiAgICAgICAgICAgICAgYWR2ID0gKCgoMjU1IC0gaW5mby5saV9v
cGNvZGVfYmFzZSkgLyBpbmZvLmxpX2xpbmVfcmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgICog
aW5mby5saV9taW5faW5zbl9sZW5ndGgpOwogICAgICAgICAgICAgIHN0YXRlX21hY2hpbmVfcmVn
cy5hZGRyZXNzICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYgKCgiICBBZHZhbmNlIFBDIGJ5
IGNvbnN0YW50ICVkIHRvIDB4JWx4XG4iKSwgYWR2LAogICAgICAgICAgICAgICAgICAgICAgc3Rh
dGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAg
ICAgY2FzZSBEV19MTlNfZml4ZWRfYWR2YW5jZV9wYzoKICAgICAgICAgICAgICBhZHYgPSBieXRl
X2dldCAoZGF0YSwgMik7CiAgICAgICAgICAgICAgZGF0YSArPSAyOwogICAgICAgICAgICAgIHN0
YXRlX21hY2hpbmVfcmVncy5hZGRyZXNzICs9IGFkdjsKICAgICAgICAgICAgICBwcmludGYgKCgi
ICBBZHZhbmNlIFBDIGJ5IGZpeGVkIHNpemUgYW1vdW50ICVkIHRvIDB4JWx4XG4iKSwKICAgICAg
ICAgICAgICAgICAgICAgIGFkdiwgc3RhdGVfbWFjaGluZV9yZWdzLmFkZHJlc3MpOwogICAgICAg
ICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19MTlNfc2V0X3Byb2xvZ3VlX2VuZDoK
ICAgICAgICAgICAgICBwcmludGYgKCgiICBTZXQgcHJvbG9ndWVfZW5kIHRvIHRydWVcbiIpKTsK
ICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgRFdfTE5TX3NldF9lcGlsb2d1
ZV9iZWdpbjoKICAgICAgICAgICAgICBwcmludGYgKCgiICBTZXQgZXBpbG9ndWVfYmVnaW4gdG8g
dHJ1ZVxuIikpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19MTlNf
c2V0X2lzYToKICAgICAgICAgICAgICBhZHYgPSByZWFkX2xlYjEyOCAoZGF0YSwgJiBieXRlc19y
ZWFkLCAwKTsKICAgICAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAgICAg
cHJpbnRmICgoIiAgU2V0IElTQSB0byAlZFxuIiksIGFkdik7CiAgICAgICAgICAgICAgYnJlYWs7
CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHByaW50ZiAoKCIgIFVua25vd24g
b3Bjb2RlICVkIHdpdGggb3BlcmFuZHM6ICIpLCBvcF9jb2RlKTsKICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgICAgIGZvciAoaSA9IHN0YW5kYXJkX29w
Y29kZXNbb3BfY29kZSAtIDFdOyBpID4gMCA7IC0taSkKICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgIHByaW50ZiAoIjB4JWx4JXMiLCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5
dGVzX3JlYWQsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9PSAxID8gIiIgOiAi
LCAiKTsKICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgcHV0Y2hh
ciAoJ1xuJyk7CiAgICB9CgogIHJldHVybiAxOwp9CgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdf
cHVibmFtZXMgKHNlY3Rpb24sIHN0YXJ0LCBmaWxlKQogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpz
ZWN0aW9uOwogICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0OwogICAgIEZJTEUgKmZpbGUgX19hdHRy
aWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKewogIERXQVJGMl9FeHRlcm5hbF9QdWJOYW1lcyAqZXh0
ZXJuYWw7CiAgRFdBUkYyX0ludGVybmFsX1B1Yk5hbWVzIHB1Ym5hbWVzOwogIHVuc2lnbmVkIGNo
YXIgKmVuZDsKCiAgZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwoKICBwcmludGYgKCgi
Q29udGVudHMgb2YgdGhlICVzIHNlY3Rpb246XG5cbiIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsK
CiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAgewogICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwog
ICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKCiAgICAgIGV4dGVybmFsID0gKERXQVJGMl9FeHRl
cm5hbF9QdWJOYW1lcyAqKSBzdGFydDsKCiAgICAgIHB1Ym5hbWVzLnBuX2xlbmd0aCA9IGJ5dGVf
Z2V0IChleHRlcm5hbC0+cG5fbGVuZ3RoLCBzaXplb2YgKGV4dGVybmFsLT5wbl9sZW5ndGgpKTsK
ICAgICAgcHVibmFtZXMucG5fdmVyc2lvbiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+cG5fdmVyc2lv
biwgc2l6ZW9mIChleHRlcm5hbC0+cG5fdmVyc2lvbikpOwogICAgICBwdWJuYW1lcy5wbl9vZmZz
ZXQgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBuX29mZnNldCwgc2l6ZW9mIChleHRlcm5hbC0+cG5f
b2Zmc2V0KSk7CiAgICAgIHB1Ym5hbWVzLnBuX3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPnBu
X3NpemUsIHNpemVvZiAoZXh0ZXJuYWwtPnBuX3NpemUpKTsKCiAgICAgIGRhdGEgPSBzdGFydCAr
IHNpemVvZiAoKmV4dGVybmFsKTsKICAgICAgc3RhcnQgKz0gcHVibmFtZXMucG5fbGVuZ3RoICsg
c2l6ZW9mIChleHRlcm5hbC0+cG5fbGVuZ3RoKTsKCiAgICAgIGlmIChwdWJuYW1lcy5wbl9sZW5n
dGggPT0gMHhmZmZmZmZmZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgoIjY0LWJpdCBEV0FS
RiBwdWJuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuXG4iKSk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICB9CgogICAgICBpZiAocHVibmFtZXMucG5fdmVyc2lvbiAhPSAyKQogICAgICAgIHsK
ICAgICAgICAgIHN0YXRpYyBpbnQgd2FybmVkID0gMDsKCiAgICAgICAgICBpZiAoISB3YXJuZWQp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB3YXJuICgoIk9ubHkgRFdBUkYgMiBwdWJuYW1l
cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZFxuIikpOwogICAgICAgICAgICAgIHdhcm5lZCA9IDE7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICBwcmlu
dGYgKCgiICBMZW5ndGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWxkXG4iKSwKICAg
ICAgICAgICAgICBwdWJuYW1lcy5wbl9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICBWZXJzaW9u
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWRcbiIpLAogICAgICAgICAgICAgIHB1Ym5h
bWVzLnBuX3ZlcnNpb24pOwogICAgICBwcmludGYgKCgiICBPZmZzZXQgaW50byAuZGVidWdfaW5m
byBzZWN0aW9uOiAgICAgJWxkXG4iKSwKICAgICAgICAgICAgICBwdWJuYW1lcy5wbl9vZmZzZXQp
OwogICAgICBwcmludGYgKCgiICBTaXplIG9mIGFyZWEgaW4gLmRlYnVnX2luZm8gc2VjdGlvbjog
JWxkXG4iKSwKICAgICAgICAgICAgICBwdWJuYW1lcy5wbl9zaXplKTsKCiAgICAgIHByaW50ZiAo
KCJcbiAgICBPZmZzZXRcdE5hbWVcbiIpKTsKCiAgICAgIGRvCiAgICAgICAgewogICAgICAgICAg
b2Zmc2V0ID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwoKICAgICAgICAgIGlmIChvZmZzZXQgIT0gMCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIGRhdGEgKz0gNDsKICAgICAgICAgICAgICBwcmlu
dGYgKCIgICAgJWxkXHRcdCVzXG4iLCBvZmZzZXQsIGRhdGEpOwogICAgICAgICAgICAgIGRhdGEg
Kz0gc3RybGVuICgoY2hhciAqKSBkYXRhKSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICAgIHdoaWxlIChvZmZzZXQgIT0gMCk7CiAgICB9CgogIHByaW50ZiAoIlxuIik7CiAgcmV0dXJu
IDE7Cn0KCnN0YXRpYyBjaGFyICoKZ2V0X1RBR19uYW1lICh0YWcpCiAgICAgdW5zaWduZWQgbG9u
ZyB0YWc7CnsKICBzd2l0Y2ggKHRhZykKICAgIHsKICAgIGNhc2UgRFdfVEFHX3BhZGRpbmc6IHJl
dHVybiAiRFdfVEFHX3BhZGRpbmciOwogICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZTogcmV0dXJu
ICJEV19UQUdfYXJyYXlfdHlwZSI7CiAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOiByZXR1cm4g
IkRXX1RBR19jbGFzc190eXBlIjsKICAgIGNhc2UgRFdfVEFHX2VudHJ5X3BvaW50OiByZXR1cm4g
IkRXX1RBR19lbnRyeV9wb2ludCI7CiAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOiBy
ZXR1cm4gIkRXX1RBR19lbnVtZXJhdGlvbl90eXBlIjsKICAgIGNhc2UgRFdfVEFHX2Zvcm1hbF9w
YXJhbWV0ZXI6IHJldHVybiAiRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIiOwogICAgY2FzZSBEV19U
QUdfaW1wb3J0ZWRfZGVjbGFyYXRpb246IHJldHVybiAiRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0
aW9uIjsKICAgIGNhc2UgRFdfVEFHX2xhYmVsOiByZXR1cm4gIkRXX1RBR19sYWJlbCI7CiAgICBj
YXNlIERXX1RBR19sZXhpY2FsX2Jsb2NrOiByZXR1cm4gIkRXX1RBR19sZXhpY2FsX2Jsb2NrIjsK
ICAgIGNhc2UgRFdfVEFHX21lbWJlcjogcmV0dXJuICJEV19UQUdfbWVtYmVyIjsKICAgIGNhc2Ug
RFdfVEFHX3BvaW50ZXJfdHlwZTogcmV0dXJuICJEV19UQUdfcG9pbnRlcl90eXBlIjsKICAgIGNh
c2UgRFdfVEFHX3JlZmVyZW5jZV90eXBlOiByZXR1cm4gIkRXX1RBR19yZWZlcmVuY2VfdHlwZSI7
CiAgICBjYXNlIERXX1RBR19jb21waWxlX3VuaXQ6IHJldHVybiAiRFdfVEFHX2NvbXBpbGVfdW5p
dCI7CiAgICBjYXNlIERXX1RBR19zdHJpbmdfdHlwZTogcmV0dXJuICJEV19UQUdfc3RyaW5nX3R5
cGUiOwogICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6IHJldHVybiAiRFdfVEFHX3N0cnVj
dHVyZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3N1YnJvdXRpbmVfdHlwZTogcmV0dXJuICJEV19U
QUdfc3Vicm91dGluZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6IHJldHVybiAiRFdf
VEFHX3R5cGVkZWYiOwogICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZTogcmV0dXJuICJEV19UQUdf
dW5pb25fdHlwZSI7CiAgICBjYXNlIERXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0ZXJzOiByZXR1
cm4gIkRXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0ZXJzIjsKICAgIGNhc2UgRFdfVEFHX3Zhcmlh
bnQ6IHJldHVybiAiRFdfVEFHX3ZhcmlhbnQiOwogICAgY2FzZSBEV19UQUdfY29tbW9uX2Jsb2Nr
OiByZXR1cm4gIkRXX1RBR19jb21tb25fYmxvY2siOwogICAgY2FzZSBEV19UQUdfY29tbW9uX2lu
Y2x1c2lvbjogcmV0dXJuICJEV19UQUdfY29tbW9uX2luY2x1c2lvbiI7CiAgICBjYXNlIERXX1RB
R19pbmhlcml0YW5jZTogcmV0dXJuICJEV19UQUdfaW5oZXJpdGFuY2UiOwogICAgY2FzZSBEV19U
QUdfaW5saW5lZF9zdWJyb3V0aW5lOiByZXR1cm4gIkRXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUi
OwogICAgY2FzZSBEV19UQUdfbW9kdWxlOiByZXR1cm4gIkRXX1RBR19tb2R1bGUiOwogICAgY2Fz
ZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOiByZXR1cm4gIkRXX1RBR19wdHJfdG9fbWVtYmVy
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfc2V0X3R5cGU6IHJldHVybiAiRFdfVEFHX3NldF90eXBl
IjsKICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6IHJldHVybiAiRFdfVEFHX3N1YnJhbmdl
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfd2l0aF9zdG10OiByZXR1cm4gIkRXX1RBR193aXRoX3N0
bXQiOwogICAgY2FzZSBEV19UQUdfYWNjZXNzX2RlY2xhcmF0aW9uOiByZXR1cm4gIkRXX1RBR19h
Y2Nlc3NfZGVjbGFyYXRpb24iOwogICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOiByZXR1cm4gIkRX
X1RBR19iYXNlX3R5cGUiOwogICAgY2FzZSBEV19UQUdfY2F0Y2hfYmxvY2s6IHJldHVybiAiRFdf
VEFHX2NhdGNoX2Jsb2NrIjsKICAgIGNhc2UgRFdfVEFHX2NvbnN0X3R5cGU6IHJldHVybiAiRFdf
VEFHX2NvbnN0X3R5cGUiOwogICAgY2FzZSBEV19UQUdfY29uc3RhbnQ6IHJldHVybiAiRFdfVEFH
X2NvbnN0YW50IjsKICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0b3I6IHJldHVybiAiRFdfVEFHX2Vu
dW1lcmF0b3IiOwogICAgY2FzZSBEV19UQUdfZmlsZV90eXBlOiByZXR1cm4gIkRXX1RBR19maWxl
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfZnJpZW5kOiByZXR1cm4gIkRXX1RBR19mcmllbmQiOwog
ICAgY2FzZSBEV19UQUdfbmFtZWxpc3Q6IHJldHVybiAiRFdfVEFHX25hbWVsaXN0IjsKICAgIGNh
c2UgRFdfVEFHX25hbWVsaXN0X2l0ZW06IHJldHVybiAiRFdfVEFHX25hbWVsaXN0X2l0ZW0iOwog
ICAgY2FzZSBEV19UQUdfcGFja2VkX3R5cGU6IHJldHVybiAiRFdfVEFHX3BhY2tlZF90eXBlIjsK
ICAgIGNhc2UgRFdfVEFHX3N1YnByb2dyYW06IHJldHVybiAiRFdfVEFHX3N1YnByb2dyYW0iOwog
ICAgY2FzZSBEV19UQUdfdGVtcGxhdGVfdHlwZV9wYXJhbTogcmV0dXJuICJEV19UQUdfdGVtcGxh
dGVfdHlwZV9wYXJhbSI7CiAgICBjYXNlIERXX1RBR190ZW1wbGF0ZV92YWx1ZV9wYXJhbTogcmV0
dXJuICJEV19UQUdfdGVtcGxhdGVfdmFsdWVfcGFyYW0iOwogICAgY2FzZSBEV19UQUdfdGhyb3du
X3R5cGU6IHJldHVybiAiRFdfVEFHX3Rocm93bl90eXBlIjsKICAgIGNhc2UgRFdfVEFHX3RyeV9i
bG9jazogcmV0dXJuICJEV19UQUdfdHJ5X2Jsb2NrIjsKICAgIGNhc2UgRFdfVEFHX3ZhcmlhbnRf
cGFydDogcmV0dXJuICJEV19UQUdfdmFyaWFudF9wYXJ0IjsKICAgIGNhc2UgRFdfVEFHX3Zhcmlh
YmxlOiByZXR1cm4gIkRXX1RBR192YXJpYWJsZSI7CiAgICBjYXNlIERXX1RBR192b2xhdGlsZV90
eXBlOiByZXR1cm4gIkRXX1RBR192b2xhdGlsZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX01JUFNf
bG9vcDogcmV0dXJuICJEV19UQUdfTUlQU19sb29wIjsKICAgIGNhc2UgRFdfVEFHX2Zvcm1hdF9s
YWJlbDogcmV0dXJuICJEV19UQUdfZm9ybWF0X2xhYmVsIjsKICAgIGNhc2UgRFdfVEFHX2Z1bmN0
aW9uX3RlbXBsYXRlOiByZXR1cm4gIkRXX1RBR19mdW5jdGlvbl90ZW1wbGF0ZSI7CiAgICBjYXNl
IERXX1RBR19jbGFzc190ZW1wbGF0ZTogcmV0dXJuICJEV19UQUdfY2xhc3NfdGVtcGxhdGUiOwoK
ICAgIGNhc2UgRFdfVEFHX2R3YXJmX3Byb2NlZHVyZTogcmV0dXJuICJEV19UQUdfZHdhcmZfcHJv
Y2VkdXJlIjsKICAgIGNhc2UgRFdfVEFHX3Jlc3RyaWN0X3R5cGU6IHJldHVybiAiRFdfVEFHX3Jl
c3RyaWN0X3R5cGUiOwogICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6IHJldHVybiAiRFdf
VEFHX2ludGVyZmFjZV90eXBlIjsKICAgIGNhc2UgRFdfVEFHX25hbWVzcGFjZTogcmV0dXJuICJE
V19UQUdfbmFtZXNwYWNlIjsKICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX21vZHVsZTogcmV0dXJu
ICJEV19UQUdfaW1wb3J0ZWRfbW9kdWxlIjsKICAgIGNhc2UgRFdfVEFHX3Vuc3BlY2lmaWVkX3R5
cGU6IHJldHVybiAiRFdfVEFHX3Vuc3BlY2lmaWVkX3R5cGUiOwogICAgY2FzZSBEV19UQUdfcGFy
dGlhbF91bml0OiByZXR1cm4gIkRXX1RBR19wYXJ0aWFsX3VuaXQiOwogICAgY2FzZSBEV19UQUdf
aW1wb3J0ZWRfdW5pdDogcmV0dXJuICJEV19UQUdfaW1wb3J0ZWRfdW5pdCI7CgogICAgY2FzZSBE
V19UQUdfdXBjX3NoYXJlZF90eXBlOiByZXR1cm4gIkRXX1RBR191cGNfc2hhcmVkX3R5cGUiOwog
ICAgY2FzZSBEV19UQUdfdXBjX3N0cmljdF90eXBlOiByZXR1cm4gIkRXX1RBR191cGNfc3RyaWN0
X3R5cGUiOwogICAgY2FzZSBEV19UQUdfdXBjX3JlbGF4ZWRfdHlwZTogcmV0dXJuICJEV19UQUdf
dXBjX3JlbGF4ZWRfdHlwZSI7CiAgICBkZWZhdWx0OgogICAgICB7CiAgICAgICAgc3RhdGljIGNo
YXIgYnVmZmVyWzEwMF07CgogICAgICAgIHNwcmludGYgKGJ1ZmZlciwgKCJVbmtub3duIFRBRyB2
YWx1ZTogJWx4IiksIHRhZyk7CiAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKICAgICAgfQogICAgfQp9
CgpzdGF0aWMgY2hhciAqCmdldF9BVF9uYW1lIChhdHRyaWJ1dGUpCiAgICAgdW5zaWduZWQgbG9u
ZyBhdHRyaWJ1dGU7CnsKICBzd2l0Y2ggKGF0dHJpYnV0ZSkKICAgIHsKICAgIGNhc2UgRFdfQVRf
c2libGluZzogcmV0dXJuICJEV19BVF9zaWJsaW5nIjsKICAgIGNhc2UgRFdfQVRfbG9jYXRpb246
IHJldHVybiAiRFdfQVRfbG9jYXRpb24iOwogICAgY2FzZSBEV19BVF9uYW1lOiByZXR1cm4gIkRX
X0FUX25hbWUiOwogICAgY2FzZSBEV19BVF9vcmRlcmluZzogcmV0dXJuICJEV19BVF9vcmRlcmlu
ZyI7CiAgICBjYXNlIERXX0FUX3N1YnNjcl9kYXRhOiByZXR1cm4gIkRXX0FUX3N1YnNjcl9kYXRh
IjsKICAgIGNhc2UgRFdfQVRfYnl0ZV9zaXplOiByZXR1cm4gIkRXX0FUX2J5dGVfc2l6ZSI7CiAg
ICBjYXNlIERXX0FUX2JpdF9vZmZzZXQ6IHJldHVybiAiRFdfQVRfYml0X29mZnNldCI7CiAgICBj
YXNlIERXX0FUX2JpdF9zaXplOiByZXR1cm4gIkRXX0FUX2JpdF9zaXplIjsKICAgIGNhc2UgRFdf
QVRfZWxlbWVudF9saXN0OiByZXR1cm4gIkRXX0FUX2VsZW1lbnRfbGlzdCI7CiAgICBjYXNlIERX
X0FUX3N0bXRfbGlzdDogcmV0dXJuICJEV19BVF9zdG10X2xpc3QiOwogICAgY2FzZSBEV19BVF9s
b3dfcGM6IHJldHVybiAiRFdfQVRfbG93X3BjIjsKICAgIGNhc2UgRFdfQVRfaGlnaF9wYzogcmV0
dXJuICJEV19BVF9oaWdoX3BjIjsKICAgIGNhc2UgRFdfQVRfbGFuZ3VhZ2U6IHJldHVybiAiRFdf
QVRfbGFuZ3VhZ2UiOwogICAgY2FzZSBEV19BVF9tZW1iZXI6IHJldHVybiAiRFdfQVRfbWVtYmVy
IjsKICAgIGNhc2UgRFdfQVRfZGlzY3I6IHJldHVybiAiRFdfQVRfZGlzY3IiOwogICAgY2FzZSBE
V19BVF9kaXNjcl92YWx1ZTogcmV0dXJuICJEV19BVF9kaXNjcl92YWx1ZSI7CiAgICBjYXNlIERX
X0FUX3Zpc2liaWxpdHk6IHJldHVybiAiRFdfQVRfdmlzaWJpbGl0eSI7CiAgICBjYXNlIERXX0FU
X2ltcG9ydDogcmV0dXJuICJEV19BVF9pbXBvcnQiOwogICAgY2FzZSBEV19BVF9zdHJpbmdfbGVu
Z3RoOiByZXR1cm4gIkRXX0FUX3N0cmluZ19sZW5ndGgiOwogICAgY2FzZSBEV19BVF9jb21tb25f
cmVmZXJlbmNlOiByZXR1cm4gIkRXX0FUX2NvbW1vbl9yZWZlcmVuY2UiOwogICAgY2FzZSBEV19B
VF9jb21wX2RpcjogcmV0dXJuICJEV19BVF9jb21wX2RpciI7CiAgICBjYXNlIERXX0FUX2NvbnN0
X3ZhbHVlOiByZXR1cm4gIkRXX0FUX2NvbnN0X3ZhbHVlIjsKICAgIGNhc2UgRFdfQVRfY29udGFp
bmluZ190eXBlOiByZXR1cm4gIkRXX0FUX2NvbnRhaW5pbmdfdHlwZSI7CiAgICBjYXNlIERXX0FU
X2RlZmF1bHRfdmFsdWU6IHJldHVybiAiRFdfQVRfZGVmYXVsdF92YWx1ZSI7CiAgICBjYXNlIERX
X0FUX2lubGluZTogcmV0dXJuICJEV19BVF9pbmxpbmUiOwogICAgY2FzZSBEV19BVF9pc19vcHRp
b25hbDogcmV0dXJuICJEV19BVF9pc19vcHRpb25hbCI7CiAgICBjYXNlIERXX0FUX2xvd2VyX2Jv
dW5kOiByZXR1cm4gIkRXX0FUX2xvd2VyX2JvdW5kIjsKICAgIGNhc2UgRFdfQVRfcHJvZHVjZXI6
IHJldHVybiAiRFdfQVRfcHJvZHVjZXIiOwogICAgY2FzZSBEV19BVF9wcm90b3R5cGVkOiByZXR1
cm4gIkRXX0FUX3Byb3RvdHlwZWQiOwogICAgY2FzZSBEV19BVF9yZXR1cm5fYWRkcjogcmV0dXJu
ICJEV19BVF9yZXR1cm5fYWRkciI7CiAgICBjYXNlIERXX0FUX3N0YXJ0X3Njb3BlOiByZXR1cm4g
IkRXX0FUX3N0YXJ0X3Njb3BlIjsKICAgIGNhc2UgRFdfQVRfc3RyaWRlX3NpemU6IHJldHVybiAi
RFdfQVRfc3RyaWRlX3NpemUiOwogICAgY2FzZSBEV19BVF91cHBlcl9ib3VuZDogcmV0dXJuICJE
V19BVF91cHBlcl9ib3VuZCI7CiAgICBjYXNlIERXX0FUX2Fic3RyYWN0X29yaWdpbjogcmV0dXJu
ICJEV19BVF9hYnN0cmFjdF9vcmlnaW4iOwogICAgY2FzZSBEV19BVF9hY2Nlc3NpYmlsaXR5OiBy
ZXR1cm4gIkRXX0FUX2FjY2Vzc2liaWxpdHkiOwogICAgY2FzZSBEV19BVF9hZGRyZXNzX2NsYXNz
OiByZXR1cm4gIkRXX0FUX2FkZHJlc3NfY2xhc3MiOwogICAgY2FzZSBEV19BVF9hcnRpZmljaWFs
OiByZXR1cm4gIkRXX0FUX2FydGlmaWNpYWwiOwogICAgY2FzZSBEV19BVF9iYXNlX3R5cGVzOiBy
ZXR1cm4gIkRXX0FUX2Jhc2VfdHlwZXMiOwogICAgY2FzZSBEV19BVF9jYWxsaW5nX2NvbnZlbnRp
b246IHJldHVybiAiRFdfQVRfY2FsbGluZ19jb252ZW50aW9uIjsKICAgIGNhc2UgRFdfQVRfY291
bnQ6IHJldHVybiAiRFdfQVRfY291bnQiOwogICAgY2FzZSBEV19BVF9kYXRhX21lbWJlcl9sb2Nh
dGlvbjogcmV0dXJuICJEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiI7CiAgICBjYXNlIERXX0FU
X2RlY2xfY29sdW1uOiByZXR1cm4gIkRXX0FUX2RlY2xfY29sdW1uIjsKICAgIGNhc2UgRFdfQVRf
ZGVjbF9maWxlOiByZXR1cm4gIkRXX0FUX2RlY2xfZmlsZSI7CiAgICBjYXNlIERXX0FUX2RlY2xf
bGluZTogcmV0dXJuICJEV19BVF9kZWNsX2xpbmUiOwogICAgY2FzZSBEV19BVF9kZWNsYXJhdGlv
bjogcmV0dXJuICJEV19BVF9kZWNsYXJhdGlvbiI7CiAgICBjYXNlIERXX0FUX2Rpc2NyX2xpc3Q6
IHJldHVybiAiRFdfQVRfZGlzY3JfbGlzdCI7CiAgICBjYXNlIERXX0FUX2VuY29kaW5nOiByZXR1
cm4gIkRXX0FUX2VuY29kaW5nIjsKICAgIGNhc2UgRFdfQVRfZXh0ZXJuYWw6IHJldHVybiAiRFdf
QVRfZXh0ZXJuYWwiOwogICAgY2FzZSBEV19BVF9mcmFtZV9iYXNlOiByZXR1cm4gIkRXX0FUX2Zy
YW1lX2Jhc2UiOwogICAgY2FzZSBEV19BVF9mcmllbmQ6IHJldHVybiAiRFdfQVRfZnJpZW5kIjsK
ICAgIGNhc2UgRFdfQVRfaWRlbnRpZmllcl9jYXNlOiByZXR1cm4gIkRXX0FUX2lkZW50aWZpZXJf
Y2FzZSI7CiAgICBjYXNlIERXX0FUX21hY3JvX2luZm86IHJldHVybiAiRFdfQVRfbWFjcm9faW5m
byI7CiAgICBjYXNlIERXX0FUX25hbWVsaXN0X2l0ZW1zOiByZXR1cm4gIkRXX0FUX25hbWVsaXN0
X2l0ZW1zIjsKICAgIGNhc2UgRFdfQVRfcHJpb3JpdHk6IHJldHVybiAiRFdfQVRfcHJpb3JpdHki
OwogICAgY2FzZSBEV19BVF9zZWdtZW50OiByZXR1cm4gIkRXX0FUX3NlZ21lbnQiOwogICAgY2Fz
ZSBEV19BVF9zcGVjaWZpY2F0aW9uOiByZXR1cm4gIkRXX0FUX3NwZWNpZmljYXRpb24iOwogICAg
Y2FzZSBEV19BVF9zdGF0aWNfbGluazogcmV0dXJuICJEV19BVF9zdGF0aWNfbGluayI7CiAgICBj
YXNlIERXX0FUX3R5cGU6IHJldHVybiAiRFdfQVRfdHlwZSI7CiAgICBjYXNlIERXX0FUX3VzZV9s
b2NhdGlvbjogcmV0dXJuICJEV19BVF91c2VfbG9jYXRpb24iOwogICAgY2FzZSBEV19BVF92YXJp
YWJsZV9wYXJhbWV0ZXI6IHJldHVybiAiRFdfQVRfdmFyaWFibGVfcGFyYW1ldGVyIjsKICAgIGNh
c2UgRFdfQVRfdmlydHVhbGl0eTogcmV0dXJuICJEV19BVF92aXJ0dWFsaXR5IjsKICAgIGNhc2Ug
RFdfQVRfdnRhYmxlX2VsZW1fbG9jYXRpb246IHJldHVybiAiRFdfQVRfdnRhYmxlX2VsZW1fbG9j
YXRpb24iOwoKICAgIGNhc2UgRFdfQVRfYWxsb2NhdGVkOiByZXR1cm4gIkRXX0FUX2FsbG9jYXRl
ZCI7CiAgICBjYXNlIERXX0FUX2Fzc29jaWF0ZWQ6IHJldHVybiAiRFdfQVRfYXNzb2NpYXRlZCI7
CiAgICBjYXNlIERXX0FUX2RhdGFfbG9jYXRpb246IHJldHVybiAiRFdfQVRfZGF0YV9sb2NhdGlv
biI7CiAgICBjYXNlIERXX0FUX3N0cmlkZTogcmV0dXJuICJEV19BVF9zdHJpZGUiOwogICAgY2Fz
ZSBEV19BVF9lbnRyeV9wYzogcmV0dXJuICJEV19BVF9lbnRyeV9wYyI7CiAgICBjYXNlIERXX0FU
X3VzZV9VVEY4OiByZXR1cm4gIkRXX0FUX3VzZV9VVEY4IjsKICAgIGNhc2UgRFdfQVRfZXh0ZW5z
aW9uOiByZXR1cm4gIkRXX0FUX2V4dGVuc2lvbiI7CiAgICBjYXNlIERXX0FUX3JhbmdlczogcmV0
dXJuICJEV19BVF9yYW5nZXMiOwogICAgY2FzZSBEV19BVF90cmFtcG9saW5lOiByZXR1cm4gIkRX
X0FUX3RyYW1wb2xpbmUiOwogICAgY2FzZSBEV19BVF9jYWxsX2NvbHVtbjogcmV0dXJuICJEV19B
VF9jYWxsX2NvbHVtbiI7CiAgICBjYXNlIERXX0FUX2NhbGxfZmlsZTogcmV0dXJuICJEV19BVF9j
YWxsX2ZpbGUiOwogICAgY2FzZSBEV19BVF9jYWxsX2xpbmU6IHJldHVybiAiRFdfQVRfY2FsbF9s
aW5lIjsKCiAgICBjYXNlIERXX0FUX01JUFNfZmRlOiByZXR1cm4gIkRXX0FUX01JUFNfZmRlIjsK
ICAgIGNhc2UgRFdfQVRfTUlQU19sb29wX2JlZ2luOiByZXR1cm4gIkRXX0FUX01JUFNfbG9vcF9i
ZWdpbiI7CiAgICBjYXNlIERXX0FUX01JUFNfdGFpbF9sb29wX2JlZ2luOiByZXR1cm4gIkRXX0FU
X01JUFNfdGFpbF9sb29wX2JlZ2luIjsKICAgIGNhc2UgRFdfQVRfTUlQU19lcGlsb2dfYmVnaW46
IHJldHVybiAiRFdfQVRfTUlQU19lcGlsb2dfYmVnaW4iOwogICAgY2FzZSBEV19BVF9NSVBTX2xv
b3BfdW5yb2xsX2ZhY3RvcjogcmV0dXJuICJEV19BVF9NSVBTX2xvb3BfdW5yb2xsX2ZhY3RvciI7
CiAgICBjYXNlIERXX0FUX01JUFNfc29mdHdhcmVfcGlwZWxpbmVfZGVwdGg6CiAgICAgIHJldHVy
biAiRFdfQVRfTUlQU19zb2Z0d2FyZV9waXBlbGluZV9kZXB0aCI7CiAgICBjYXNlIERXX0FUX01J
UFNfbGlua2FnZV9uYW1lOiByZXR1cm4gIkRXX0FUX01JUFNfbGlua2FnZV9uYW1lIjsKICAgIGNh
c2UgRFdfQVRfTUlQU19zdHJpZGU6IHJldHVybiAiRFdfQVRfTUlQU19zdHJpZGUiOwogICAgY2Fz
ZSBEV19BVF9NSVBTX2Fic3RyYWN0X25hbWU6IHJldHVybiAiRFdfQVRfTUlQU19hYnN0cmFjdF9u
YW1lIjsKICAgIGNhc2UgRFdfQVRfTUlQU19jbG9uZV9vcmlnaW46IHJldHVybiAiRFdfQVRfTUlQ
U19jbG9uZV9vcmlnaW4iOwogICAgY2FzZSBEV19BVF9NSVBTX2hhc19pbmxpbmVzOiByZXR1cm4g
IkRXX0FUX01JUFNfaGFzX2lubGluZXMiOwoKICAgIGNhc2UgRFdfQVRfc2ZfbmFtZXM6IHJldHVy
biAiRFdfQVRfc2ZfbmFtZXMiOwogICAgY2FzZSBEV19BVF9zcmNfaW5mbzogcmV0dXJuICJEV19B
VF9zcmNfaW5mbyI7CiAgICBjYXNlIERXX0FUX21hY19pbmZvOiByZXR1cm4gIkRXX0FUX21hY19p
bmZvIjsKICAgIGNhc2UgRFdfQVRfc3JjX2Nvb3JkczogcmV0dXJuICJEV19BVF9zcmNfY29vcmRz
IjsKICAgIGNhc2UgRFdfQVRfYm9keV9iZWdpbjogcmV0dXJuICJEV19BVF9ib2R5X2JlZ2luIjsK
ICAgIGNhc2UgRFdfQVRfYm9keV9lbmQ6IHJldHVybiAiRFdfQVRfYm9keV9lbmQiOwogICAgY2Fz
ZSBEV19BVF9HTlVfdmVjdG9yOiByZXR1cm4gIkRXX0FUX0dOVV92ZWN0b3IiOwoKICAgIGNhc2Ug
RFdfQVRfdXBjX3RocmVhZHNfc2NhbGVkOiByZXR1cm4gIkRXX0FUX3VwY190aHJlYWRzX3NjYWxl
ZCI7CiAgICBkZWZhdWx0OgogICAgICB7CiAgICAgICAgc3RhdGljIGNoYXIgYnVmZmVyWzEwMF07
CgogICAgICAgIHNwcmludGYgKGJ1ZmZlciwgKCJVbmtub3duIEFUIHZhbHVlOiAlbHgiKSwgYXR0
cmlidXRlKTsKICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgICB9CiAgICB9Cn0KCnN0YXRpYyBj
aGFyICoKZ2V0X0ZPUk1fbmFtZSAoZm9ybSkKICAgICB1bnNpZ25lZCBsb25nIGZvcm07CnsKICBz
d2l0Y2ggKGZvcm0pCiAgICB7CiAgICBjYXNlIERXX0ZPUk1fYWRkcjogcmV0dXJuICJEV19GT1JN
X2FkZHIiOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrMjogcmV0dXJuICJEV19GT1JNX2Jsb2NrMiI7
CiAgICBjYXNlIERXX0ZPUk1fYmxvY2s0OiByZXR1cm4gIkRXX0ZPUk1fYmxvY2s0IjsKICAgIGNh
c2UgRFdfRk9STV9kYXRhMjogcmV0dXJuICJEV19GT1JNX2RhdGEyIjsKICAgIGNhc2UgRFdfRk9S
TV9kYXRhNDogcmV0dXJuICJEV19GT1JNX2RhdGE0IjsKICAgIGNhc2UgRFdfRk9STV9kYXRhODog
cmV0dXJuICJEV19GT1JNX2RhdGE4IjsKICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6IHJldHVybiAi
RFdfRk9STV9zdHJpbmciOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrOiByZXR1cm4gIkRXX0ZPUk1f
YmxvY2siOwogICAgY2FzZSBEV19GT1JNX2Jsb2NrMTogcmV0dXJuICJEV19GT1JNX2Jsb2NrMSI7
CiAgICBjYXNlIERXX0ZPUk1fZGF0YTE6IHJldHVybiAiRFdfRk9STV9kYXRhMSI7CiAgICBjYXNl
IERXX0ZPUk1fZmxhZzogcmV0dXJuICJEV19GT1JNX2ZsYWciOwogICAgY2FzZSBEV19GT1JNX3Nk
YXRhOiByZXR1cm4gIkRXX0ZPUk1fc2RhdGEiOwogICAgY2FzZSBEV19GT1JNX3N0cnA6IHJldHVy
biAiRFdfRk9STV9zdHJwIjsKICAgIGNhc2UgRFdfRk9STV91ZGF0YTogcmV0dXJuICJEV19GT1JN
X3VkYXRhIjsKICAgIGNhc2UgRFdfRk9STV9yZWZfYWRkcjogcmV0dXJuICJEV19GT1JNX3JlZl9h
ZGRyIjsKICAgIGNhc2UgRFdfRk9STV9yZWYxOiByZXR1cm4gIkRXX0ZPUk1fcmVmMSI7CiAgICBj
YXNlIERXX0ZPUk1fcmVmMjogcmV0dXJuICJEV19GT1JNX3JlZjIiOwogICAgY2FzZSBEV19GT1JN
X3JlZjQ6IHJldHVybiAiRFdfRk9STV9yZWY0IjsKICAgIGNhc2UgRFdfRk9STV9yZWY4OiByZXR1
cm4gIkRXX0ZPUk1fcmVmOCI7CiAgICBjYXNlIERXX0ZPUk1fcmVmX3VkYXRhOiByZXR1cm4gIkRX
X0ZPUk1fcmVmX3VkYXRhIjsKICAgIGNhc2UgRFdfRk9STV9pbmRpcmVjdDogcmV0dXJuICJEV19G
T1JNX2luZGlyZWN0IjsKICAgIGRlZmF1bHQ6CiAgICAgIHsKICAgICAgICBzdGF0aWMgY2hhciBi
dWZmZXJbMTAwXTsKCiAgICAgICAgc3ByaW50ZiAoYnVmZmVyLCAoIlVua25vd24gRk9STSB2YWx1
ZTogJWx4IiksIGZvcm0pOwogICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgIH0KICAgIH0KfQoK
CgoKdHlwZWRlZiBzdHJ1Y3QgYWJicmV2X2F0dHIKewogIHVuc2lnbmVkIGxvbmcgYXR0cmlidXRl
OwogIHVuc2lnbmVkIGxvbmcgZm9ybTsKICBzdHJ1Y3QgYWJicmV2X2F0dHIgKm5leHQ7Cn0KYWJi
cmV2X2F0dHI7Cgp0eXBlZGVmIHN0cnVjdCBhYmJyZXZfZW50cnkKewogIHVuc2lnbmVkIGxvbmcg
ZW50cnk7CiAgdW5zaWduZWQgbG9uZyB0YWc7CiAgaW50IGNoaWxkcmVuOwogIHN0cnVjdCBhYmJy
ZXZfYXR0ciAqZmlyc3RfYXR0cjsKICBzdHJ1Y3QgYWJicmV2X2F0dHIgKmxhc3RfYXR0cjsKICBz
dHJ1Y3QgYWJicmV2X2VudHJ5ICpuZXh0Owp9CmFiYnJldl9lbnRyeTsKCnN0YXRpYyBhYmJyZXZf
ZW50cnkgKmZpcnN0X2FiYnJldiA9ICgodm9pZCAqKTApOwpzdGF0aWMgYWJicmV2X2VudHJ5ICps
YXN0X2FiYnJldiA9ICgodm9pZCAqKTApOwoKc3RhdGljIHZvaWQKZnJlZV9hYmJyZXZzICgpCnsK
ICBhYmJyZXZfZW50cnkgKmFiYnJldjsKCiAgZm9yIChhYmJyZXYgPSBmaXJzdF9hYmJyZXY7IGFi
YnJldjspCiAgICB7CiAgICAgIGFiYnJldl9lbnRyeSAqbmV4dCA9IGFiYnJldi0+bmV4dDsKICAg
ICAgYWJicmV2X2F0dHIgKmF0dHI7CgogICAgICBmb3IgKGF0dHIgPSBhYmJyZXYtPmZpcnN0X2F0
dHI7IGF0dHI7KQogICAgICAgIHsKICAgICAgICAgIGFiYnJldl9hdHRyICpuZXh0ID0gYXR0ci0+
bmV4dDsKCiAgICAgICAgICBmcmVlIChhdHRyKTsKICAgICAgICAgIGF0dHIgPSBuZXh0OwogICAg
ICAgIH0KCiAgICAgIGZyZWUgKGFiYnJldik7CiAgICAgIGFiYnJldiA9IG5leHQ7CiAgICB9Cgog
IGxhc3RfYWJicmV2ID0gZmlyc3RfYWJicmV2ID0gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyB2b2lk
CmFkZF9hYmJyZXYgKG51bWJlciwgdGFnLCBjaGlsZHJlbikKICAgICB1bnNpZ25lZCBsb25nIG51
bWJlcjsKICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICBpbnQgY2hpbGRyZW47CnsKICBhYmJy
ZXZfZW50cnkgKmVudHJ5OwoKICBlbnRyeSA9IChhYmJyZXZfZW50cnkgKikgbWFsbG9jIChzaXpl
b2YgKCplbnRyeSkpOwoKICBpZiAoZW50cnkgPT0gKCh2b2lkICopMCkpCgogICAgcmV0dXJuOwoK
ICBlbnRyeS0+ZW50cnkgPSBudW1iZXI7CiAgZW50cnktPnRhZyA9IHRhZzsKICBlbnRyeS0+Y2hp
bGRyZW4gPSBjaGlsZHJlbjsKICBlbnRyeS0+Zmlyc3RfYXR0ciA9ICgodm9pZCAqKTApOwogIGVu
dHJ5LT5sYXN0X2F0dHIgPSAoKHZvaWQgKikwKTsKICBlbnRyeS0+bmV4dCA9ICgodm9pZCAqKTAp
OwoKICBpZiAoZmlyc3RfYWJicmV2ID09ICgodm9pZCAqKTApKQogICAgZmlyc3RfYWJicmV2ID0g
ZW50cnk7CiAgZWxzZQogICAgbGFzdF9hYmJyZXYtPm5leHQgPSBlbnRyeTsKCiAgbGFzdF9hYmJy
ZXYgPSBlbnRyeTsKfQoKc3RhdGljIHZvaWQKYWRkX2FiYnJldl9hdHRyIChhdHRyaWJ1dGUsIGZv
cm0pCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5zaWduZWQgbG9uZyBmb3Jt
Owp7CiAgYWJicmV2X2F0dHIgKmF0dHI7CgogIGF0dHIgPSAoYWJicmV2X2F0dHIgKikgbWFsbG9j
IChzaXplb2YgKCphdHRyKSk7CgogIGlmIChhdHRyID09ICgodm9pZCAqKTApKQoKICAgIHJldHVy
bjsKCiAgYXR0ci0+YXR0cmlidXRlID0gYXR0cmlidXRlOwogIGF0dHItPmZvcm0gPSBmb3JtOwog
IGF0dHItPm5leHQgPSAoKHZvaWQgKikwKTsKCiAgaWYgKGxhc3RfYWJicmV2LT5maXJzdF9hdHRy
ID09ICgodm9pZCAqKTApKQogICAgbGFzdF9hYmJyZXYtPmZpcnN0X2F0dHIgPSBhdHRyOwogIGVs
c2UKICAgIGxhc3RfYWJicmV2LT5sYXN0X2F0dHItPm5leHQgPSBhdHRyOwoKICBsYXN0X2FiYnJl
di0+bGFzdF9hdHRyID0gYXR0cjsKfQoKCgoKCgpzdGF0aWMgdW5zaWduZWQgY2hhciAqCnByb2Nl
c3NfYWJicmV2X3NlY3Rpb24gKHN0YXJ0LCBlbmQpCiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgICAgdW5zaWduZWQgY2hhciAqZW5kOwp7CiAgaWYgKGZpcnN0X2FiYnJldiAhPSAoKHZvaWQg
KikwKSkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKCiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAg
ewogICAgICBpbnQgYnl0ZXNfcmVhZDsKICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeTsKICAgICAg
dW5zaWduZWQgbG9uZyB0YWc7CiAgICAgIHVuc2lnbmVkIGxvbmcgYXR0cmlidXRlOwogICAgICBp
bnQgY2hpbGRyZW47CgogICAgICBlbnRyeSA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBieXRlc19y
ZWFkLCAwKTsKICAgICAgc3RhcnQgKz0gYnl0ZXNfcmVhZDsKCgoKCiAgICAgIGlmIChlbnRyeSA9
PSAwKQogICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQgPyAoKHZvaWQgKikwKSA6IHN0YXJ0OwoK
ICAgICAgdGFnID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICBz
dGFydCArPSBieXRlc19yZWFkOwoKICAgICAgY2hpbGRyZW4gPSAqc3RhcnQrKzsKCiAgICAgIGFk
ZF9hYmJyZXYgKGVudHJ5LCB0YWcsIGNoaWxkcmVuKTsKCiAgICAgIGRvCiAgICAgICAgewogICAg
ICAgICAgdW5zaWduZWQgbG9uZyBmb3JtOwoKICAgICAgICAgIGF0dHJpYnV0ZSA9IHJlYWRfbGVi
MTI4IChzdGFydCwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIHN0YXJ0ICs9IGJ5dGVzX3Jl
YWQ7CgogICAgICAgICAgZm9ybSA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBieXRlc19yZWFkLCAw
KTsKICAgICAgICAgIHN0YXJ0ICs9IGJ5dGVzX3JlYWQ7CgogICAgICAgICAgaWYgKGF0dHJpYnV0
ZSAhPSAwKQogICAgICAgICAgICBhZGRfYWJicmV2X2F0dHIgKGF0dHJpYnV0ZSwgZm9ybSk7CiAg
ICAgICAgfQogICAgICB3aGlsZSAoYXR0cmlidXRlICE9IDApOwogICAgfQoKICByZXR1cm4gKCh2
b2lkICopMCk7Cn0KCgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdfbWFjaW5mbyAoc2VjdGlvbiwg
c3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWdu
ZWQgY2hhciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf
XykpOwp7CiAgdW5zaWduZWQgY2hhciAqZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwog
IHVuc2lnbmVkIGNoYXIgKmN1cnIgPSBzdGFydDsKICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsK
ICBlbnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUgb3A7CgogIHByaW50ZiAoKCJDb250ZW50
cyBvZiB0aGUgJXMgc2VjdGlvbjpcblxuIiksICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAi
PG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpOwoKICB3aGls
ZSAoY3VyciA8IGVuZCkKICAgIHsKICAgICAgdW5zaWduZWQgaW50IGxpbmVubzsKICAgICAgY29u
c3QgY2hhciAqc3RyaW5nOwoKICAgICAgb3AgPSAqY3VycjsKICAgICAgY3VycisrOwoKICAgICAg
c3dpdGNoIChvcCkKICAgICAgICB7CiAgICAgICAgY2FzZSBEV19NQUNJTkZPX3N0YXJ0X2ZpbGU6
CiAgICAgICAgICB7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCBmaWxlbnVtOwoKICAgICAgICAg
ICAgbGluZW5vID0gcmVhZF9sZWIxMjggKGN1cnIsICYgYnl0ZXNfcmVhZCwgMCk7CiAgICAgICAg
ICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgICAgZmlsZW51bSA9IHJlYWRfbGViMTI4
IChjdXJyLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAgICBjdXJyICs9IGJ5dGVzX3JlYWQ7
CgogICAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fc3RhcnRfZmlsZSAtIGxpbmVubzog
JWQgZmlsZW51bTogJWRcbiIpLCBsaW5lbm8sIGZpbGVudW0pOwogICAgICAgICAgfQogICAgICAg
ICAgYnJlYWs7CgogICAgICAgIGNhc2UgRFdfTUFDSU5GT19lbmRfZmlsZToKICAgICAgICAgIHBy
aW50ZiAoKCIgRFdfTUFDSU5GT19lbmRfZmlsZVxuIikpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgRFdfTUFDSU5GT19kZWZpbmU6CiAgICAgICAgICBsaW5lbm8gPSByZWFkX2xlYjEy
OCAoY3VyciwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsK
ICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICBjdXJyICs9IHN0cmxlbiAoc3RyaW5n
KSArIDE7CiAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fZGVmaW5lIC0gbGluZW5vIDog
JWQgbWFjcm8gOiAlc1xuIiksIGxpbmVubywgc3RyaW5nKTsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIERXX01BQ0lORk9fdW5kZWY6CiAgICAgICAgICBsaW5lbm8gPSByZWFkX2xlYjEy
OCAoY3VyciwgJiBieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGN1cnIgKz0gYnl0ZXNfcmVhZDsK
ICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICBjdXJyICs9IHN0cmxlbiAoc3RyaW5n
KSArIDE7CiAgICAgICAgICBwcmludGYgKCgiIERXX01BQ0lORk9fdW5kZWYgLSBsaW5lbm8gOiAl
ZCBtYWNybyA6ICVzXG4iKSwgbGluZW5vLCBzdHJpbmcpOwogICAgICAgICAgYnJlYWs7CgogICAg
ICAgIGNhc2UgRFdfTUFDSU5GT192ZW5kb3JfZXh0OgogICAgICAgICAgewogICAgICAgICAgICB1
bnNpZ25lZCBpbnQgY29uc3RhbnQ7CgogICAgICAgICAgICBjb25zdGFudCA9IHJlYWRfbGViMTI4
IChjdXJyLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAgICBjdXJyICs9IGJ5dGVzX3JlYWQ7
CiAgICAgICAgICAgIHN0cmluZyA9IGN1cnI7CiAgICAgICAgICAgIGN1cnIgKz0gc3RybGVuIChz
dHJpbmcpICsgMTsKICAgICAgICAgICAgcHJpbnRmICgoIiBEV19NQUNJTkZPX3ZlbmRvcl9leHQg
LSBjb25zdGFudCA6ICVkIHN0cmluZyA6ICVzXG4iKSwgY29uc3RhbnQsIHN0cmluZyk7CiAgICAg
ICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogIHJldHVybiAxOwp9CgoK
c3RhdGljIGludApkaXNwbGF5X2RlYnVnX2FiYnJldiAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpCiAg
ICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgYWJicmV2
X2VudHJ5ICplbnRyeTsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCArIHNlY3Rpb24tPnNo
X3NpemU7CgogIHByaW50ZiAoKCJDb250ZW50cyBvZiB0aGUgJXMgc2VjdGlvbjpcblxuIiksICgo
c2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
Y3Rpb24pLT5zaF9uYW1lKSkpOwoKICBkbwogICAgewogICAgICBzdGFydCA9IHByb2Nlc3NfYWJi
cmV2X3NlY3Rpb24gKHN0YXJ0LCBlbmQpOwoKICAgICAgaWYgKGZpcnN0X2FiYnJldiA9PSAoKHZv
aWQgKikwKSkKICAgICAgICBjb250aW51ZTsKCiAgICAgIHByaW50ZiAoKCIgIE51bWJlciBUQUdc
biIpKTsKCiAgICAgIGZvciAoZW50cnkgPSBmaXJzdF9hYmJyZXY7IGVudHJ5OyBlbnRyeSA9IGVu
dHJ5LT5uZXh0KQogICAgICAgIHsKICAgICAgICAgIGFiYnJldl9hdHRyICphdHRyOwoKICAgICAg
ICAgIHByaW50ZiAoKCIgICAlbGQgICAgICAlcyAgICBbJXNdXG4iKSwKICAgICAgICAgICAgICAg
ICAgZW50cnktPmVudHJ5LAogICAgICAgICAgICAgICAgICBnZXRfVEFHX25hbWUgKGVudHJ5LT50
YWcpLAogICAgICAgICAgICAgICAgICBlbnRyeS0+Y2hpbGRyZW4gPyAoImhhcyBjaGlsZHJlbiIp
IDogKCJubyBjaGlsZHJlbiIpKTsKCiAgICAgICAgICBmb3IgKGF0dHIgPSBlbnRyeS0+Zmlyc3Rf
YXR0cjsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICBwcmludGYgKCgiICAgICUtMThzICVzXG4iKSwKICAgICAgICAgICAgICAgICAgICAgIGdldF9B
VF9uYW1lIChhdHRyLT5hdHRyaWJ1dGUpLAogICAgICAgICAgICAgICAgICAgICAgZ2V0X0ZPUk1f
bmFtZSAoYXR0ci0+Zm9ybSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgZnJlZV9h
YmJyZXZzICgpOwogICAgfQogIHdoaWxlIChzdGFydCk7CgogIHByaW50ZiAoIlxuIik7CgogIHJl
dHVybiAxOwp9CgoKc3RhdGljIHVuc2lnbmVkIGNoYXIgKgpkaXNwbGF5X2Jsb2NrIChkYXRhLCBs
ZW5ndGgpCiAgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKICAgICB1bnNpZ25lZCBsb25nIGxlbmd0
aDsKewogIHByaW50ZiAoKCIgJWx1IGJ5dGUgYmxvY2s6ICIpLCBsZW5ndGgpOwoKICB3aGlsZSAo
bGVuZ3RoIC0tKQogICAgcHJpbnRmICgiJWx4ICIsICh1bnNpZ25lZCBsb25nKSBieXRlX2dldCAo
ZGF0YSsrLCAxKSk7CgogIHJldHVybiBkYXRhOwp9CgpzdGF0aWMgdm9pZApkZWNvZGVfbG9jYXRp
b25fZXhwcmVzc2lvbiAoZGF0YSwgcG9pbnRlcl9zaXplLCBsZW5ndGgpCiAgICAgdW5zaWduZWQg
Y2hhciAqIGRhdGE7CiAgICAgdW5zaWduZWQgaW50IHBvaW50ZXJfc2l6ZTsKICAgICB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKewogIHVuc2lnbmVkIG9wOwogIGludCBieXRlc19yZWFkOwogIHVuc2ln
bmVkIGxvbmcgdXZhbHVlOwogIHVuc2lnbmVkIGNoYXIgKmVuZCA9IGRhdGEgKyBsZW5ndGg7Cgog
IHdoaWxlIChkYXRhIDwgZW5kKQogICAgewogICAgICBvcCA9ICpkYXRhKys7CgogICAgICBzd2l0
Y2ggKG9wKQogICAgICAgIHsKICAgICAgICBjYXNlIERXX09QX2FkZHI6CiAgICAgICAgICBwcmlu
dGYgKCJEV19PUF9hZGRyOiAlbHgiLAogICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykg
Ynl0ZV9nZXQgKGRhdGEsIHBvaW50ZXJfc2l6ZSkpOwogICAgICAgICAgZGF0YSArPSBwb2ludGVy
X3NpemU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2RlcmVmOgogICAgICAg
ICAgcHJpbnRmICgiRFdfT1BfZGVyZWYiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2Ug
RFdfT1BfY29uc3QxdToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NvbnN0MXU6ICVsdSIsICh1
bnNpZ25lZCBsb25nKSBieXRlX2dldCAoZGF0YSsrLCAxKSk7CiAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIERXX09QX2NvbnN0MXM6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDFz
OiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAg
ICAgICAgY2FzZSBEV19PUF9jb25zdDJ1OgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfY29uc3Qy
dTogJWx1IiwgKHVuc2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCAyKSk7CiAgICAgICAgICBk
YXRhICs9IDI7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2NvbnN0MnM6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDJzOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRh
dGEsIDIpKTsKICAgICAgICAgIGRhdGEgKz0gMjsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1BfY29uc3Q0dToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NvbnN0NHU6ICVsdSIs
ICh1bnNpZ25lZCBsb25nKSBieXRlX2dldCAoZGF0YSwgNCkpOwogICAgICAgICAgZGF0YSArPSA0
OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jb25zdDRzOgogICAgICAgICAg
cHJpbnRmICgiRFdfT1BfY29uc3Q0czogJWxkIiwgKGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCA0KSk7
CiAgICAgICAgICBkYXRhICs9IDQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09Q
X2NvbnN0OHU6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9jb25zdDh1OiAlbHUgJWx1IiwgKHVu
c2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCA0KSwKICAgICAgICAgICAgICAgICAgKHVuc2ln
bmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhICsgNCwgNCkpOwogICAgICAgICAgZGF0YSArPSA4Owog
ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jb25zdDhzOgogICAgICAgICAgcHJp
bnRmICgiRFdfT1BfY29uc3Q4czogJWxkICVsZCIsIChsb25nKSBieXRlX2dldCAoZGF0YSwgNCks
CiAgICAgICAgICAgICAgICAgIChsb25nKSBieXRlX2dldCAoZGF0YSArIDQsIDQpKTsKICAgICAg
ICAgIGRhdGEgKz0gODsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfY29uc3R1
OgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfY29uc3R1OiAlbHUiLCByZWFkX2xlYjEyOCAoZGF0
YSwgJmJ5dGVzX3JlYWQsIDApKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfY29uc3RzOgogICAgICAgICAgcHJpbnRmICgi
RFdfT1BfY29uc3RzOiAlbGQiLCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDEpKTsK
ICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1BfZHVwOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfZHVwIik7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX2Ryb3A6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9k
cm9wIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX292ZXI6CiAgICAgICAg
ICBwcmludGYgKCJEV19PUF9vdmVyIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERX
X09QX3BpY2s6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9waWNrOiAlbGQiLCAodW5zaWduZWQg
bG9uZykgYnl0ZV9nZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
ZSBEV19PUF9zd2FwOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfc3dhcCIpOwogICAgICAgICAg
YnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9yb3Q6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9y
b3QiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfeGRlcmVmOgogICAgICAg
ICAgcHJpbnRmICgiRFdfT1BfeGRlcmVmIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IERXX09QX2FiczoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2FicyIpOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9hbmQ6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9hbmQi
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZGl2OgogICAgICAgICAgcHJp
bnRmICgiRFdfT1BfZGl2Iik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX21p
bnVzOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbWludXMiKTsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgRFdfT1BfbW9kOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbW9kIik7CiAg
ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX211bDoKICAgICAgICAgIHByaW50ZiAo
IkRXX09QX211bCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9uZWc6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9uZWciKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNh
c2UgRFdfT1Bfbm90OgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfbm90Iik7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX29yOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bfb3Ii
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfcGx1czoKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX3BsdXMiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bf
cGx1c191Y29uc3Q6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9wbHVzX3Vjb25zdDogJWx1IiwK
ICAgICAgICAgICAgICAgICAgcmVhZF9sZWIxMjggKGRhdGEsICZieXRlc19yZWFkLCAwKSk7CiAg
ICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNl
IERXX09QX3NobDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX3NobCIpOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9zaHI6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9zaHIi
KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bfc2hyYToKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX3NocmEiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1Bf
eG9yOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfeG9yIik7CiAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIERXX09QX2JyYToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2JyYTogJWxkIiwg
KGxvbmcpIGJ5dGVfZ2V0IChkYXRhLCAyKSk7CiAgICAgICAgICBkYXRhICs9IDI7CiAgICAgICAg
ICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2VxOgogICAgICAgICAgcHJpbnRmICgiRFdfT1Bf
ZXEiKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZ2U6CiAgICAgICAgICBw
cmludGYgKCJEV19PUF9nZSIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9n
dDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2d0Iik7CiAgICAgICAgICBicmVhazsKICAgICAg
ICBjYXNlIERXX09QX2xlOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfbGUiKTsKICAgICAgICAg
IGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfbHQ6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9s
dCIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9uZToKICAgICAgICAgIHBy
aW50ZiAoIkRXX09QX25lIik7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX3Nr
aXA6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9za2lwOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQg
KGRhdGEsIDIpKTsKICAgICAgICAgIGRhdGEgKz0gMjsKICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICBjYXNlIERXX09QX2xpdDA6CiAgICAgICAgY2FzZSBEV19PUF9saXQxOgogICAgICAgIGNhc2Ug
RFdfT1BfbGl0MjoKICAgICAgICBjYXNlIERXX09QX2xpdDM6CiAgICAgICAgY2FzZSBEV19PUF9s
aXQ0OgogICAgICAgIGNhc2UgRFdfT1BfbGl0NToKICAgICAgICBjYXNlIERXX09QX2xpdDY6CiAg
ICAgICAgY2FzZSBEV19PUF9saXQ3OgogICAgICAgIGNhc2UgRFdfT1BfbGl0ODoKICAgICAgICBj
YXNlIERXX09QX2xpdDk6CiAgICAgICAgY2FzZSBEV19PUF9saXQxMDoKICAgICAgICBjYXNlIERX
X09QX2xpdDExOgogICAgICAgIGNhc2UgRFdfT1BfbGl0MTI6CiAgICAgICAgY2FzZSBEV19PUF9s
aXQxMzoKICAgICAgICBjYXNlIERXX09QX2xpdDE0OgogICAgICAgIGNhc2UgRFdfT1BfbGl0MTU6
CiAgICAgICAgY2FzZSBEV19PUF9saXQxNjoKICAgICAgICBjYXNlIERXX09QX2xpdDE3OgogICAg
ICAgIGNhc2UgRFdfT1BfbGl0MTg6CiAgICAgICAgY2FzZSBEV19PUF9saXQxOToKICAgICAgICBj
YXNlIERXX09QX2xpdDIwOgogICAgICAgIGNhc2UgRFdfT1BfbGl0MjE6CiAgICAgICAgY2FzZSBE
V19PUF9saXQyMjoKICAgICAgICBjYXNlIERXX09QX2xpdDIzOgogICAgICAgIGNhc2UgRFdfT1Bf
bGl0MjQ6CiAgICAgICAgY2FzZSBEV19PUF9saXQyNToKICAgICAgICBjYXNlIERXX09QX2xpdDI2
OgogICAgICAgIGNhc2UgRFdfT1BfbGl0Mjc6CiAgICAgICAgY2FzZSBEV19PUF9saXQyODoKICAg
ICAgICBjYXNlIERXX09QX2xpdDI5OgogICAgICAgIGNhc2UgRFdfT1BfbGl0MzA6CiAgICAgICAg
Y2FzZSBEV19PUF9saXQzMToKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2xpdCVkIiwgb3AgLSBE
V19PUF9saXQwKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIERXX09QX3JlZzA6CiAg
ICAgICAgY2FzZSBEV19PUF9yZWcxOgogICAgICAgIGNhc2UgRFdfT1BfcmVnMjoKICAgICAgICBj
YXNlIERXX09QX3JlZzM6CiAgICAgICAgY2FzZSBEV19PUF9yZWc0OgogICAgICAgIGNhc2UgRFdf
T1BfcmVnNToKICAgICAgICBjYXNlIERXX09QX3JlZzY6CiAgICAgICAgY2FzZSBEV19PUF9yZWc3
OgogICAgICAgIGNhc2UgRFdfT1BfcmVnODoKICAgICAgICBjYXNlIERXX09QX3JlZzk6CiAgICAg
ICAgY2FzZSBEV19PUF9yZWcxMDoKICAgICAgICBjYXNlIERXX09QX3JlZzExOgogICAgICAgIGNh
c2UgRFdfT1BfcmVnMTI6CiAgICAgICAgY2FzZSBEV19PUF9yZWcxMzoKICAgICAgICBjYXNlIERX
X09QX3JlZzE0OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMTU6CiAgICAgICAgY2FzZSBEV19PUF9y
ZWcxNjoKICAgICAgICBjYXNlIERXX09QX3JlZzE3OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMTg6
CiAgICAgICAgY2FzZSBEV19PUF9yZWcxOToKICAgICAgICBjYXNlIERXX09QX3JlZzIwOgogICAg
ICAgIGNhc2UgRFdfT1BfcmVnMjE6CiAgICAgICAgY2FzZSBEV19PUF9yZWcyMjoKICAgICAgICBj
YXNlIERXX09QX3JlZzIzOgogICAgICAgIGNhc2UgRFdfT1BfcmVnMjQ6CiAgICAgICAgY2FzZSBE
V19PUF9yZWcyNToKICAgICAgICBjYXNlIERXX09QX3JlZzI2OgogICAgICAgIGNhc2UgRFdfT1Bf
cmVnMjc6CiAgICAgICAgY2FzZSBEV19PUF9yZWcyODoKICAgICAgICBjYXNlIERXX09QX3JlZzI5
OgogICAgICAgIGNhc2UgRFdfT1BfcmVnMzA6CiAgICAgICAgY2FzZSBEV19PUF9yZWczMToKICAg
ICAgICAgIHByaW50ZiAoIkRXX09QX3JlZyVkIiwgb3AgLSBEV19PUF9yZWcwKTsKICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlIERXX09QX2JyZWcwOgogICAgICAgIGNhc2UgRFdfT1BfYnJl
ZzE6CiAgICAgICAgY2FzZSBEV19PUF9icmVnMjoKICAgICAgICBjYXNlIERXX09QX2JyZWczOgog
ICAgICAgIGNhc2UgRFdfT1BfYnJlZzQ6CiAgICAgICAgY2FzZSBEV19PUF9icmVnNToKICAgICAg
ICBjYXNlIERXX09QX2JyZWc2OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzc6CiAgICAgICAgY2Fz
ZSBEV19PUF9icmVnODoKICAgICAgICBjYXNlIERXX09QX2JyZWc5OgogICAgICAgIGNhc2UgRFdf
T1BfYnJlZzEwOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzExOgogICAgICAgIGNhc2UgRFdfT1Bf
YnJlZzEyOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzEzOgogICAgICAgIGNhc2UgRFdfT1BfYnJl
ZzE0OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE1OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE2
OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE3OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzE4Ogog
ICAgICAgIGNhc2UgRFdfT1BfYnJlZzE5OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzIwOgogICAg
ICAgIGNhc2UgRFdfT1BfYnJlZzIxOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzIyOgogICAgICAg
IGNhc2UgRFdfT1BfYnJlZzIzOgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI0OgogICAgICAgIGNh
c2UgRFdfT1BfYnJlZzI1OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI2OgogICAgICAgIGNhc2Ug
RFdfT1BfYnJlZzI3OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzI4OgogICAgICAgIGNhc2UgRFdf
T1BfYnJlZzI5OgogICAgICAgIGNhc2UgRFdfT1BfYnJlZzMwOgogICAgICAgIGNhc2UgRFdfT1Bf
YnJlZzMxOgogICAgICAgICAgcHJpbnRmICgiRFdfT1BfYnJlZyVkOiAlbGQiLCBvcCAtIERXX09Q
X2JyZWcwLAogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQs
IDEpKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICBjYXNlIERXX09QX3JlZ3g6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9yZWd4OiAlbHUi
LCByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDApKTsKICAgICAgICAgIGRhdGEgKz0g
Ynl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdfT1BfZmJyZWc6CiAg
ICAgICAgICBwcmludGYgKCJEV19PUF9mYnJlZzogJWxkIiwgcmVhZF9sZWIxMjggKGRhdGEsICZi
eXRlc19yZWFkLCAxKSk7CiAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgICBi
cmVhazsKICAgICAgICBjYXNlIERXX09QX2JyZWd4OgogICAgICAgICAgdXZhbHVlID0gcmVhZF9s
ZWIxMjggKGRhdGEsICZieXRlc19yZWFkLCAwKTsKICAgICAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2JyZWd4OiAlbHUgJWxkIiwgdXZhbHVlLAogICAg
ICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoZGF0YSwgJmJ5dGVzX3JlYWQsIDEpKTsKICAgICAg
ICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRFdf
T1BfcGllY2U6CiAgICAgICAgICBwcmludGYgKCJEV19PUF9waWVjZTogJWx1IiwgcmVhZF9sZWIx
MjggKGRhdGEsICZieXRlc19yZWFkLCAwKSk7CiAgICAgICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7
CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX09QX2RlcmVmX3NpemU6CiAgICAgICAg
ICBwcmludGYgKCJEV19PUF9kZXJlZl9zaXplOiAlbGQiLCAobG9uZykgYnl0ZV9nZXQgKGRhdGEr
KywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF94ZGVyZWZfc2l6ZToK
ICAgICAgICAgIHByaW50ZiAoIkRXX09QX3hkZXJlZl9zaXplOiAlbGQiLCAobG9uZykgYnl0ZV9n
ZXQgKGRhdGErKywgMSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9ub3A6
CiAgICAgICAgICBwcmludGYgKCJEV19PUF9ub3AiKTsKICAgICAgICAgIGJyZWFrOwoKCiAgICAg
ICAgY2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOgogICAgICAgICAgcHJpbnRmICgiRFdf
T1BfcHVzaF9vYmplY3RfYWRkcmVzcyIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBE
V19PUF9jYWxsMjoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2NhbGwyOiA8JWx4PiIsIChsb25n
KSBieXRlX2dldCAoZGF0YSwgMikpOwogICAgICAgICAgZGF0YSArPSAyOwogICAgICAgICAgYnJl
YWs7CiAgICAgICAgY2FzZSBEV19PUF9jYWxsNDoKICAgICAgICAgIHByaW50ZiAoIkRXX09QX2Nh
bGw0OiA8JWx4PiIsIChsb25nKSBieXRlX2dldCAoZGF0YSwgNCkpOwogICAgICAgICAgZGF0YSAr
PSA0OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBEV19PUF9jYWxsX3JlZjoKICAgICAg
ICAgIHByaW50ZiAoIkRXX09QX2NhbGxfcmVmIik7CiAgICAgICAgICBicmVhazsKCgogICAgICAg
IGNhc2UgRFdfT1BfR05VX3B1c2hfdGxzX2FkZHJlc3M6CiAgICAgICAgICBwcmludGYgKCJEV19P
UF9HTlVfcHVzaF90bHNfYWRkcmVzcyIpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICBpZiAob3AgPj0gMHhlMAogICAgICAgICAgICAgICYmIG9wIDw9IDB4ZmYp
CiAgICAgICAgICAgIHByaW50ZiAoKCIoVXNlciBkZWZpbmVkIGxvY2F0aW9uIG9wKSIpKTsKICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgoIihVbmtub3duIGxvY2F0aW9uIG9wKSIp
KTsKCiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgIHByaW50ZiAoIjsgIik7CiAg
ICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19sb2NfY29udGVudHM7CnN0YXRpYyBiZmRf
dm1hIGRlYnVnX2xvY19zaXplOwoKc3RhdGljIHZvaWQKbG9hZF9kZWJ1Z19sb2MgKGZpbGUpCiAg
ICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWM7CiAgdW5zaWduZWQgaW50
IGk7CgoKICBpZiAoZGVidWdfbG9jX2NvbnRlbnRzICE9ICgodm9pZCAqKTApKQogICAgcmV0dXJu
OwoKCiAgZm9yIChpID0gMCwgc2VjID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVsZl9o
ZWFkZXIuZV9zaG51bTsKICAgICAgIGkrKywgc2VjKyspCiAgICBpZiAoX19leHRlbnNpb25fXyAo
eyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2Vj
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190
YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1l
KSkpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2xvYyIpICYmIChfX3MxX2xlbiA9
IHN0cmxlbiAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlYyktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnX2xvYyIpLCAoISgo
c2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
KS0+c2hfbmFtZSkpKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z
dCB2b2lkICopKCgiLmRlYnVnX2xvYyIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIu
ZGVidWdfbG9jIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSwgKF9fczFf
bGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9j
b25zdGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkg
KyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVu
ID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoIi5kZWJ1Z19sb2MiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19sb2Mi
KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX2xvYyIpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19sb2MiKSlbMF0pOyBpZiAoX19z
MV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxu
b25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAo
X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMl0pOyBp
ZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1
bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzNdKTsg
fSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIu
ZGVidWdfbG9jIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1
cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBp
ZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8
Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsy
XSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/
ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gX19z
MlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1
Z19sb2MiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19sb2MiKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX2xvYyIpID09IDEpICYmIChfX3MyX2xlbiA9
IHN0cmxlbiAoIi5kZWJ1Z19sb2MiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6
IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18g
KHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19sb2MiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMl0pOyBpZiAoX19zMl9sZW4g
PiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzNdKTsgfSB9IF9fcmVzdWx0
OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZv
aWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2MiKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfbG9jIikpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19sb2Mi
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuZGVidWdfbG9j
IikpKSk7IH0pID09IDApCiAgICAgIGJyZWFrOwoKICBpZiAoaSA9PSBlbGZfaGVhZGVyLmVfc2hu
dW0gfHwgc2VjLT5zaF9zaXplID09IDApCiAgICByZXR1cm47CgogIGRlYnVnX2xvY19zaXplID0g
c2VjLT5zaF9zaXplOwoKICBkZWJ1Z19sb2NfY29udGVudHMgPSAoKGNoYXIgKikKICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNl
dCwgc2VjLT5zaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJkZWJ1
Z19sb2Mgc2VjdGlvbiBkYXRhIikpKTsKfQoKc3RhdGljIHZvaWQKZnJlZV9kZWJ1Z19sb2MgKCkK
ewogIGlmIChkZWJ1Z19sb2NfY29udGVudHMgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm47Cgog
IGZyZWUgKChjaGFyICopIGRlYnVnX2xvY19jb250ZW50cyk7CiAgZGVidWdfbG9jX2NvbnRlbnRz
ID0gKCh2b2lkICopMCk7CiAgZGVidWdfbG9jX3NpemUgPSAwOwp9CgoKc3RhdGljIGludApkaXNw
bGF5X2RlYnVnX2xvYyAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1No
ZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBf
X2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgdW5zaWduZWQgY2hhciAqc2VjdGlvbl9l
bmQ7CiAgdW5zaWduZWQgbG9uZyBieXRlczsKICB1bnNpZ25lZCBjaGFyICpzZWN0aW9uX2JlZ2lu
ID0gc3RhcnQ7CiAgYmZkX3ZtYSBhZGRyOwoKICBhZGRyID0gc2VjdGlvbi0+c2hfYWRkcjsKICBi
eXRlcyA9IHNlY3Rpb24tPnNoX3NpemU7CiAgc2VjdGlvbl9lbmQgPSBzdGFydCArIGJ5dGVzOwoK
ICBpZiAoYnl0ZXMgPT0gMCkKICAgIHsKICAgICAgcHJpbnRmICgoIlxuVGhlIC5kZWJ1Z19sb2Mg
c2VjdGlvbiBpcyBlbXB0eS5cbiIpKTsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogIHByaW50ZiAo
KCJDb250ZW50cyBvZiB0aGUgLmRlYnVnX2xvYyBzZWN0aW9uOlxuXG4iKSk7CiAgcHJpbnRmICgo
IlxuICAgIE9mZnNldCAgIEJlZ2luICAgIEVuZCAgICAgIEV4cHJlc3Npb25cbiIpKTsKCiAgd2hp
bGUgKHN0YXJ0IDwgc2VjdGlvbl9lbmQpCiAgICB7CiAgICAgIHVuc2lnbmVkIGxvbmcgYmVnaW47
CiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kOwogICAgICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiAg
ICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0OwoKICAgICAgb2Zmc2V0ID0gc3RhcnQgLSBzZWN0aW9u
X2JlZ2luOwoKICAgICAgd2hpbGUgKDEpCiAgICAgICAgewoKCgoKCgogICAgICAgICAgYmVnaW4g
PSBieXRlX2dldCAoc3RhcnQsIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplKTsKICAgICAgICAgIHN0
YXJ0ICs9IGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplOwogICAgICAgICAgZW5kID0gYnl0ZV9nZXQg
KHN0YXJ0LCBkZWJ1Z19saW5lX3BvaW50ZXJfc2l6ZSk7CiAgICAgICAgICBzdGFydCArPSBkZWJ1
Z19saW5lX3BvaW50ZXJfc2l6ZTsKCiAgICAgICAgICBpZiAoYmVnaW4gPT0gMCAmJiBlbmQgPT0g
MCkKICAgICAgICAgICAgYnJlYWs7CgoKICAgICAgICAgIGlmIChiZWdpbiA9PSAweGZmZmZmZmZm
KQogICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICBiZWdpbiArPSBhZGRyOwogICAgICAg
ICAgZW5kICs9IGFkZHI7CgogICAgICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHN0YXJ0LCAyKTsK
ICAgICAgICAgIHN0YXJ0ICs9IDI7CgogICAgICAgICAgcHJpbnRmICgiICAgICU4LjhseCAlOC44
bHggJTguOGx4ICgiLCBvZmZzZXQsIGJlZ2luLCBlbmQpOwogICAgICAgICAgZGVjb2RlX2xvY2F0
aW9uX2V4cHJlc3Npb24gKHN0YXJ0LCBkZWJ1Z19saW5lX3BvaW50ZXJfc2l6ZSwgbGVuZ3RoKTsK
ICAgICAgICAgIHByaW50ZiAoIilcbiIpOwoKICAgICAgICAgIHN0YXJ0ICs9IGxlbmd0aDsKICAg
ICAgICB9CiAgICAgIHByaW50ZiAoIlxuIik7CiAgICB9CiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBj
b25zdCBjaGFyICpkZWJ1Z19zdHJfY29udGVudHM7CnN0YXRpYyBiZmRfdm1hIGRlYnVnX3N0cl9z
aXplOwoKc3RhdGljIHZvaWQKbG9hZF9kZWJ1Z19zdHIgKGZpbGUpCiAgICAgRklMRSAqZmlsZTsK
ewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWM7CiAgdW5zaWduZWQgaW50IGk7CgoKICBpZiAoZGVi
dWdfc3RyX2NvbnRlbnRzICE9ICgodm9pZCAqKTApKQogICAgcmV0dXJuOwoKCiAgZm9yIChpID0g
MCwgc2VjID0gc2VjdGlvbl9oZWFkZXJzOwogICAgICAgaSA8IGVsZl9oZWFkZXIuZV9zaG51bTsK
ICAgICAgIGkrKywgc2VjKyspCiAgICBpZiAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9s
ZW4sIF9fczJfbGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmIF9fYnVpbHRp
bl9jb25zdGFudF9wICgiLmRlYnVnX3N0ciIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChzZWMp
ID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUp
KSksIF9fczJfbGVuID0gc3RybGVuICgiLmRlYnVnX3N0ciIpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlYykgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVf
bGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSA9
PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmRl
YnVnX3N0ciIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfc3RyIikgPT0g
MSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHNlYykg
PT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkp
KSwgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSwgKF9fczFfbGVuIDwgX19zMl9sZW4g
PyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuICgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z19zdHIi
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19zdHIiKSArIDEpIC0gKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgiLmRlYnVnX3N0ciIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikoIi5kZWJ1Z19zdHIiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYykt
PnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3Rh
YmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkgOiAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIik7IHJl
Z2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hf
bmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUg
KyAoc2VjKS0+c2hfbmFtZSkpKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBf
X3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIg
OiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jl
c3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5kZWJ1Z19zdHIiKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIi5kZWJ1Z19zdHIiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgiLmRlYnVnX3N0ciIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIi5kZWJ1
Z19zdHIiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoKChzZWMpID09
ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxl
X2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90KShjb25z
dCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWMpLT5zaF9uYW1lKSkpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0
cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5z
aF9uYW1lKSkpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikoIi5kZWJ1Z19zdHIiKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09
IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0
ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWMpLT5zaF9uYW1lKSkpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRl
bnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpOyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIi5kZWJ1Z19zdHIiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKCIuZGVidWdfc3RyIikpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19zdHIiKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0
cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSksICIuZGVidWdfc3RyIikpKSk7IH0pID09IDAp
CiAgICAgIGJyZWFrOwoKICBpZiAoaSA9PSBlbGZfaGVhZGVyLmVfc2hudW0gfHwgc2VjLT5zaF9z
aXplID09IDApCiAgICByZXR1cm47CgogIGRlYnVnX3N0cl9zaXplID0gc2VjLT5zaF9zaXplOwoK
ICBkZWJ1Z19zdHJfY29udGVudHMgPSAoKGNoYXIgKikKICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNldCwgc2VjLT5zaF9zaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJkZWJ1Z19zdHIgc2VjdGlvbiBk
YXRhIikpKTsKfQoKc3RhdGljIHZvaWQKZnJlZV9kZWJ1Z19zdHIgKCkKewogIGlmIChkZWJ1Z19z
dHJfY29udGVudHMgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm47CgogIGZyZWUgKChjaGFyICop
IGRlYnVnX3N0cl9jb250ZW50cyk7CiAgZGVidWdfc3RyX2NvbnRlbnRzID0gKCh2b2lkICopMCk7
CiAgZGVidWdfc3RyX3NpemUgPSAwOwp9CgpzdGF0aWMgY29uc3QgY2hhciAqCmZldGNoX2luZGly
ZWN0X3N0cmluZyAob2Zmc2V0KQogICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Owp7CiAgaWYgKGRl
YnVnX3N0cl9jb250ZW50cyA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAoIjxubyAuZGVidWdf
c3RyIHNlY3Rpb24+Iik7CgogIGlmIChvZmZzZXQgPiBkZWJ1Z19zdHJfc2l6ZSkKICAgIHJldHVy
biAoIjxvZmZzZXQgaXMgdG9vIGJpZz4iKTsKCiAgcmV0dXJuIGRlYnVnX3N0cl9jb250ZW50cyAr
IG9mZnNldDsKfQoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX3N0ciAoc2VjdGlvbiwgc3RhcnQs
IGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb247CiAgICAgdW5zaWduZWQgY2hh
ciAqc3RhcnQ7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7
CiAgdW5zaWduZWQgbG9uZyBieXRlczsKICBiZmRfdm1hIGFkZHI7CgogIGFkZHIgPSBzZWN0aW9u
LT5zaF9hZGRyOwogIGJ5dGVzID0gc2VjdGlvbi0+c2hfc2l6ZTsKCiAgaWYgKGJ5dGVzID09IDAp
CiAgICB7CiAgICAgIHByaW50ZiAoKCJcblRoZSAuZGVidWdfc3RyIHNlY3Rpb24gaXMgZW1wdHku
XG4iKSk7CiAgICAgIHJldHVybiAwOwogICAgfQoKICBwcmludGYgKCgiQ29udGVudHMgb2YgdGhl
IC5kZWJ1Z19zdHIgc2VjdGlvbjpcblxuIikpOwoKICB3aGlsZSAoYnl0ZXMpCiAgICB7CiAgICAg
IGludCBqOwogICAgICBpbnQgazsKICAgICAgaW50IGxieXRlczsKCiAgICAgIGxieXRlcyA9IChi
eXRlcyA+IDE2ID8gMTYgOiBieXRlcyk7CgogICAgICBwcmludGYgKCIgIDB4JTguOGx4ICIsICh1
bnNpZ25lZCBsb25nKSBhZGRyKTsKCiAgICAgIGZvciAoaiA9IDA7IGogPCAxNjsgaisrKQogICAg
ICAgIHsKICAgICAgICAgIGlmIChqIDwgbGJ5dGVzKQogICAgICAgICAgICBwcmludGYgKCIlMi4y
eCIsIHN0YXJ0W2pdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcHJpbnRmICgiICAiKTsK
CiAgICAgICAgICBpZiAoKGogJiAzKSA9PSAzKQogICAgICAgICAgICBwcmludGYgKCIgIik7CiAg
ICAgICAgfQoKICAgICAgZm9yIChqID0gMDsgaiA8IGxieXRlczsgaisrKQogICAgICAgIHsKICAg
ICAgICAgIGsgPSBzdGFydFtqXTsKICAgICAgICAgIGlmIChrID49ICcgJyAmJiBrIDwgMHg4MCkK
ICAgICAgICAgICAgcHJpbnRmICgiJWMiLCBrKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
cHJpbnRmICgiLiIpOwogICAgICAgIH0KCiAgICAgIHB1dGNoYXIgKCdcbicpOwoKICAgICAgc3Rh
cnQgKz0gbGJ5dGVzOwogICAgICBhZGRyICs9IGxieXRlczsKICAgICAgYnl0ZXMgLT0gbGJ5dGVz
OwogICAgfQoKICByZXR1cm4gMTsKfQoKc3RhdGljIHVuc2lnbmVkIGNoYXIgKgpyZWFkX2FuZF9k
aXNwbGF5X2F0dHJfdmFsdWUgKGF0dHJpYnV0ZSwgZm9ybSwgZGF0YSwgY3Vfb2Zmc2V0LCBwb2lu
dGVyX3NpemUpCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5zaWduZWQgbG9u
ZyBmb3JtOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgdW5zaWduZWQgbG9uZyBjdV9v
ZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBwb2ludGVyX3NpemU7CnsKICB1bnNpZ25lZCBsb25n
IHV2YWx1ZSA9IDA7CiAgdW5zaWduZWQgY2hhciAqYmxvY2tfc3RhcnQgPSAoKHZvaWQgKikwKTsK
ICBpbnQgYnl0ZXNfcmVhZDsKCiAgc3dpdGNoIChmb3JtKQogICAgewogICAgZGVmYXVsdDoKICAg
ICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZl9hZGRyOgogICAgY2FzZSBEV19GT1JNX2Fk
ZHI6CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCBwb2ludGVyX3NpemUpOwogICAgICBk
YXRhICs9IHBvaW50ZXJfc2l6ZTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3N0cnA6
CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCA0KTsKICAgICAgZGF0YSArPSA0OwogICAg
ICBicmVhazsKCiAgICBjYXNlIERXX0ZPUk1fcmVmMToKICAgIGNhc2UgRFdfRk9STV9mbGFnOgog
ICAgY2FzZSBEV19GT1JNX2RhdGExOgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSsrLCAx
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZjI6CiAgICBjYXNlIERXX0ZPUk1f
ZGF0YTI6CiAgICAgIHV2YWx1ZSA9IGJ5dGVfZ2V0IChkYXRhLCAyKTsKICAgICAgZGF0YSArPSAy
OwogICAgICBicmVhazsKCiAgICBjYXNlIERXX0ZPUk1fcmVmNDoKICAgIGNhc2UgRFdfRk9STV9k
YXRhNDoKICAgICAgdXZhbHVlID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwogICAgICBkYXRhICs9IDQ7
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zZGF0YToKICAgICAgdXZhbHVlID0gcmVh
ZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgMSk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVh
ZDsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZl91ZGF0YToKICAgIGNhc2UgRFdf
Rk9STV91ZGF0YToKICAgICAgdXZhbHVlID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVh
ZCwgMCk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgYnJlYWs7CgogICAgY2FzZSBE
V19GT1JNX2luZGlyZWN0OgogICAgICBmb3JtID0gcmVhZF9sZWIxMjggKGRhdGEsICYgYnl0ZXNf
cmVhZCwgMCk7CiAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKICAgICAgcHJpbnRmICgiICVzIiwg
Z2V0X0ZPUk1fbmFtZSAoZm9ybSkpOwogICAgICByZXR1cm4gcmVhZF9hbmRfZGlzcGxheV9hdHRy
X3ZhbHVlIChhdHRyaWJ1dGUsIGZvcm0sIGRhdGEsIGN1X29mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9zaXplKTsKICAgIH0KCiAgc3dpdGNo
IChmb3JtKQogICAgewogICAgY2FzZSBEV19GT1JNX3JlZl9hZGRyOgogICAgICBwcmludGYgKCIg
PCMlbHg+IiwgdXZhbHVlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX3JlZjE6CiAg
ICBjYXNlIERXX0ZPUk1fcmVmMjoKICAgIGNhc2UgRFdfRk9STV9yZWY0OgogICAgY2FzZSBEV19G
T1JNX3JlZl91ZGF0YToKICAgICAgcHJpbnRmICgiIDwlbHg+IiwgdXZhbHVlICsgY3Vfb2Zmc2V0
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX2FkZHI6CiAgICAgIHByaW50ZiAoIiAl
I2x4IiwgdXZhbHVlKTsKCiAgICBjYXNlIERXX0ZPUk1fZmxhZzoKICAgIGNhc2UgRFdfRk9STV9k
YXRhMToKICAgIGNhc2UgRFdfRk9STV9kYXRhMjoKICAgIGNhc2UgRFdfRk9STV9kYXRhNDoKICAg
IGNhc2UgRFdfRk9STV9zZGF0YToKICAgIGNhc2UgRFdfRk9STV91ZGF0YToKICAgICAgcHJpbnRm
ICgiICVsZCIsIHV2YWx1ZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9yZWY4Ogog
ICAgY2FzZSBEV19GT1JNX2RhdGE4OgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSwgNCk7
CiAgICAgIHByaW50ZiAoIiAlbHgiLCB1dmFsdWUpOwogICAgICBwcmludGYgKCIgJWx4IiwgKHVu
c2lnbmVkIGxvbmcpIGJ5dGVfZ2V0IChkYXRhICsgNCwgNCkpOwogICAgICBkYXRhICs9IDg7CiAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6CiAgICAgIHByaW50ZiAoIiAlcyIs
IGRhdGEpOwogICAgICBkYXRhICs9IHN0cmxlbiAoKGNoYXIgKikgZGF0YSkgKyAxOwogICAgICBi
cmVhazsKCiAgICBjYXNlIERXX0ZPUk1fYmxvY2s6CiAgICAgIHV2YWx1ZSA9IHJlYWRfbGViMTI4
IChkYXRhLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICBibG9ja19zdGFydCA9IGRhdGEgKyBieXRl
c19yZWFkOwogICAgICBkYXRhID0gZGlzcGxheV9ibG9jayAoYmxvY2tfc3RhcnQsIHV2YWx1ZSk7
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9ibG9jazE6CiAgICAgIHV2YWx1ZSA9IGJ5
dGVfZ2V0IChkYXRhLCAxKTsKICAgICAgYmxvY2tfc3RhcnQgPSBkYXRhICsgMTsKICAgICAgZGF0
YSA9IGRpc3BsYXlfYmxvY2sgKGJsb2NrX3N0YXJ0LCB1dmFsdWUpOwogICAgICBicmVhazsKCiAg
ICBjYXNlIERXX0ZPUk1fYmxvY2syOgogICAgICB1dmFsdWUgPSBieXRlX2dldCAoZGF0YSwgMik7
CiAgICAgIGJsb2NrX3N0YXJ0ID0gZGF0YSArIDI7CiAgICAgIGRhdGEgPSBkaXNwbGF5X2Jsb2Nr
IChibG9ja19zdGFydCwgdXZhbHVlKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBEV19GT1JNX2Js
b2NrNDoKICAgICAgdXZhbHVlID0gYnl0ZV9nZXQgKGRhdGEsIDQpOwogICAgICBibG9ja19zdGFy
dCA9IGRhdGEgKyA0OwogICAgICBkYXRhID0gZGlzcGxheV9ibG9jayAoYmxvY2tfc3RhcnQsIHV2
YWx1ZSk7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfRk9STV9zdHJwOgogICAgICBwcmludGYg
KCgiIChpbmRpcmVjdCBzdHJpbmcsIG9mZnNldDogMHglbHgpOiAlcyIpLAogICAgICAgICAgICAg
IHV2YWx1ZSwgZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nICh1dmFsdWUpKTsKICAgICAgYnJlYWs7Cgog
ICAgY2FzZSBEV19GT1JNX2luZGlyZWN0OgoKICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAg
ICAgd2FybiAoKCJVbnJlY29nbml6ZWQgZm9ybTogJWRcbiIpLCBmb3JtKTsKICAgICAgYnJlYWs7
CiAgICB9CgoKCiAgcHJpbnRmICgiXHQiKTsKCiAgc3dpdGNoIChhdHRyaWJ1dGUpCiAgICB7CiAg
ICBjYXNlIERXX0FUX2lubGluZToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAg
ICAgIGNhc2UgRFdfSU5MX25vdF9pbmxpbmVkOgogICAgICAgICAgcHJpbnRmICgoIihub3QgaW5s
aW5lZCkiKSk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIERXX0lOTF9pbmxpbmVkOgog
ICAgICAgICAgcHJpbnRmICgoIihpbmxpbmVkKSIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAg
IGNhc2UgRFdfSU5MX2RlY2xhcmVkX25vdF9pbmxpbmVkOgogICAgICAgICAgcHJpbnRmICgoIihk
ZWNsYXJlZCBhcyBpbmxpbmUgYnV0IGlnbm9yZWQpIikpOwogICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSBEV19JTkxfZGVjbGFyZWRfaW5saW5lZDoKICAgICAgICAgIHByaW50ZiAoKCIoZGVj
bGFyZWQgYXMgaW5saW5lIGFuZCBpbmxpbmVkKSIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICBwcmludGYgKCgiICAoVW5rbm93biBpbmxpbmUgYXR0cmlidXRl
IHZhbHVlOiAlbHgpIiksIHV2YWx1ZSk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAg
IGJyZWFrOwoKICAgIGNhc2UgRFdfQVRfbGFuZ3VhZ2U6CiAgICAgIHN3aXRjaCAodXZhbHVlKQog
ICAgICAgIHsKICAgICAgICBjYXNlIERXX0xBTkdfQzogcHJpbnRmICgiKG5vbi1BTlNJIEMpIik7
IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19DODk6IHByaW50ZiAoIihBTlNJIEMpIik7IGJy
ZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19DX3BsdXNfcGx1czogcHJpbnRmICgiKEMrKykiKTsg
YnJlYWs7CiAgICAgICAgY2FzZSBEV19MQU5HX0ZvcnRyYW43NzogcHJpbnRmICgiKEZPUlRSQU4g
NzcpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19Gb3J0cmFuOTA6IHByaW50ZiAoIihG
b3J0cmFuIDkwKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfTW9kdWxhMjogcHJpbnRm
ICgiKE1vZHVsYSAyKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfUGFzY2FsODM6IHBy
aW50ZiAoIihBTlNJIFBhc2NhbCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19MQU5HX0FkYTgz
OiBwcmludGYgKCIoQWRhKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQ29ib2w3NDog
cHJpbnRmICgiKENvYm9sIDc0KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQ29ib2w4
NTogcHJpbnRmICgiKENvYm9sIDg1KSIpOyBicmVhazsKCiAgICAgICAgY2FzZSBEV19MQU5HX0M5
OTogcHJpbnRmICgiKEFOU0kgQzk5KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0xBTkdfQWRh
OTU6IHByaW50ZiAoIihBREEgOTUpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfTEFOR19Gb3J0
cmFuOTU6IHByaW50ZiAoIihGb3J0cmFuIDk1KSIpOyBicmVhazsKCiAgICAgICAgY2FzZSBEV19M
QU5HX01pcHNfQXNzZW1ibGVyOiBwcmludGYgKCIoTUlQUyBhc3NlbWJsZXIpIik7IGJyZWFrOwoK
ICAgICAgICBjYXNlIERXX0xBTkdfVXBjOiBwcmludGYgKCIoVW5pZmllZCBQYXJhbGxlbCBDKSIp
OyBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcHJpbnRmICgiKFVua25vd246ICVs
eCkiLCB1dmFsdWUpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAg
ICBjYXNlIERXX0FUX2VuY29kaW5nOgogICAgICBzd2l0Y2ggKHV2YWx1ZSkKICAgICAgICB7CiAg
ICAgICAgY2FzZSBEV19BVEVfdm9pZDogcHJpbnRmICgiKHZvaWQpIik7IGJyZWFrOwogICAgICAg
IGNhc2UgRFdfQVRFX2FkZHJlc3M6IHByaW50ZiAoIihtYWNoaW5lIGFkZHJlc3MpIik7IGJyZWFr
OwogICAgICAgIGNhc2UgRFdfQVRFX2Jvb2xlYW46IHByaW50ZiAoIihib29sZWFuKSIpOyBicmVh
azsKICAgICAgICBjYXNlIERXX0FURV9jb21wbGV4X2Zsb2F0OiBwcmludGYgKCIoY29tcGxleCBm
bG9hdCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19BVEVfZmxvYXQ6IHByaW50ZiAoIihmbG9h
dCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19BVEVfc2lnbmVkOiBwcmludGYgKCIoc2lnbmVk
KSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV9zaWduZWRfY2hhcjogcHJpbnRmICgiKHNp
Z25lZCBjaGFyKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV91bnNpZ25lZDogcHJpbnRm
ICgiKHVuc2lnbmVkKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0FURV91bnNpZ25lZF9jaGFy
OiBwcmludGYgKCIodW5zaWduZWQgY2hhcikiKTsgYnJlYWs7CgogICAgICAgIGNhc2UgRFdfQVRF
X2ltYWdpbmFyeV9mbG9hdDogcHJpbnRmICgiKGltYWdpbmFyeSBmbG9hdCkiKTsgYnJlYWs7CiAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgIGlmICh1dmFsdWUgPj0gMHg4MAogICAgICAgICAgICAg
ICYmIHV2YWx1ZSA8PSAweGZmKQogICAgICAgICAgICBwcmludGYgKCIodXNlciBkZWZpbmVkIHR5
cGUpIik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHByaW50ZiAoIih1bmtub3duIHR5cGUp
Iik7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdf
QVRfYWNjZXNzaWJpbGl0eToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAgICAg
IGNhc2UgRFdfQUNDRVNTX3B1YmxpYzogcHJpbnRmICgiKHB1YmxpYykiKTsgYnJlYWs7CiAgICAg
ICAgY2FzZSBEV19BQ0NFU1NfcHJvdGVjdGVkOiBwcmludGYgKCIocHJvdGVjdGVkKSIpOyBicmVh
azsKICAgICAgICBjYXNlIERXX0FDQ0VTU19wcml2YXRlOiBwcmludGYgKCIocHJpdmF0ZSkiKTsg
YnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHByaW50ZiAoIih1bmtub3duIGFjY2Vz
c2liaWxpdHkpIik7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAg
IGNhc2UgRFdfQVRfdmlzaWJpbGl0eToKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewog
ICAgICAgIGNhc2UgRFdfVklTX2xvY2FsOiBwcmludGYgKCIobG9jYWwpIik7IGJyZWFrOwogICAg
ICAgIGNhc2UgRFdfVklTX2V4cG9ydGVkOiBwcmludGYgKCIoZXhwb3J0ZWQpIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgRFdfVklTX3F1YWxpZmllZDogcHJpbnRmICgiKHF1YWxpZmllZCkiKTsgYnJl
YWs7CiAgICAgICAgZGVmYXVsdDogcHJpbnRmICgiKHVua25vd24gdmlzaWJpbGl0eSkiKTsgYnJl
YWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIERXX0FUX3ZpcnR1YWxpdHk6CiAg
ICAgIHN3aXRjaCAodXZhbHVlKQogICAgICAgIHsKICAgICAgICBjYXNlIERXX1ZJUlRVQUxJVFlf
bm9uZTogcHJpbnRmICgiKG5vbmUpIik7IGJyZWFrOwogICAgICAgIGNhc2UgRFdfVklSVFVBTElU
WV92aXJ0dWFsOiBwcmludGYgKCIodmlydHVhbCkiKTsgYnJlYWs7CiAgICAgICAgY2FzZSBEV19W
SVJUVUFMSVRZX3B1cmVfdmlydHVhbDpwcmludGYgKCIocHVyZV92aXJ0dWFsKSIpOyBicmVhazsK
ICAgICAgICBkZWZhdWx0OiBwcmludGYgKCIodW5rbm93biB2aXJ0dWFsaXR5KSIpOyBicmVhazsK
ICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgRFdfQVRfaWRlbnRpZmllcl9jYXNlOgog
ICAgICBzd2l0Y2ggKHV2YWx1ZSkKICAgICAgICB7CiAgICAgICAgY2FzZSBEV19JRF9jYXNlX3Nl
bnNpdGl2ZTogcHJpbnRmICgiKGNhc2Vfc2Vuc2l0aXZlKSIpOyBicmVhazsKICAgICAgICBjYXNl
IERXX0lEX3VwX2Nhc2U6IHByaW50ZiAoIih1cF9jYXNlKSIpOyBicmVhazsKICAgICAgICBjYXNl
IERXX0lEX2Rvd25fY2FzZTogcHJpbnRmICgiKGRvd25fY2FzZSkiKTsgYnJlYWs7CiAgICAgICAg
Y2FzZSBEV19JRF9jYXNlX2luc2Vuc2l0aXZlOiBwcmludGYgKCIoY2FzZV9pbnNlbnNpdGl2ZSki
KTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDogcHJpbnRmICgiKHVua25vd24gY2FzZSkiKTsgYnJl
YWs7CiAgICAgICAgfQogICAgICBicmVhazsKCiAgICBjYXNlIERXX0FUX2NhbGxpbmdfY29udmVu
dGlvbjoKICAgICAgc3dpdGNoICh1dmFsdWUpCiAgICAgICAgewogICAgICAgIGNhc2UgRFdfQ0Nf
bm9ybWFsOiBwcmludGYgKCIobm9ybWFsKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0NDX3By
b2dyYW06IHByaW50ZiAoIihwcm9ncmFtKSIpOyBicmVhazsKICAgICAgICBjYXNlIERXX0NDX25v
Y2FsbDogcHJpbnRmICgiKG5vY2FsbCkiKTsgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgIGlmICh1dmFsdWUgPj0gMHg0MAogICAgICAgICAgICAgICYmIHV2YWx1ZSA8PSAweGZmKQog
ICAgICAgICAgICBwcmludGYgKCIodXNlciBkZWZpbmVkKSIpOwogICAgICAgICAgZWxzZQogICAg
ICAgICAgICBwcmludGYgKCIodW5rbm93biBjb252ZW50aW9uKSIpOwogICAgICAgIH0KICAgICAg
YnJlYWs7CgogICAgY2FzZSBEV19BVF9vcmRlcmluZzoKICAgICAgc3dpdGNoICh1dmFsdWUpCiAg
ICAgICAgewogICAgICAgIGNhc2UgLTE6IHByaW50ZiAoIih1bmRlZmluZWQpIik7IGJyZWFrOwog
ICAgICAgIGNhc2UgMDogcHJpbnRmICgiKHJvdyBtYWpvcikiKTsgYnJlYWs7CiAgICAgICAgY2Fz
ZSAxOiBwcmludGYgKCIoY29sdW1uIG1ham9yKSIpOyBicmVhazsKICAgICAgICB9CiAgICAgIGJy
ZWFrOwoKICAgIGNhc2UgRFdfQVRfZnJhbWVfYmFzZToKICAgIGNhc2UgRFdfQVRfbG9jYXRpb246
CiAgICBjYXNlIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uOgogICAgY2FzZSBEV19BVF92dGFi
bGVfZWxlbV9sb2NhdGlvbjoKICAgIGNhc2UgRFdfQVRfYWxsb2NhdGVkOgogICAgY2FzZSBEV19B
VF9hc3NvY2lhdGVkOgogICAgY2FzZSBEV19BVF9kYXRhX2xvY2F0aW9uOgogICAgY2FzZSBEV19B
VF9zdHJpZGU6CiAgICBjYXNlIERXX0FUX3VwcGVyX2JvdW5kOgogICAgY2FzZSBEV19BVF9sb3dl
cl9ib3VuZDoKICAgICAgaWYgKGJsb2NrX3N0YXJ0KQogICAgICAgIHsKICAgICAgICAgIHByaW50
ZiAoIigiKTsKICAgICAgICAgIGRlY29kZV9sb2NhdGlvbl9leHByZXNzaW9uIChibG9ja19zdGFy
dCwgcG9pbnRlcl9zaXplLCB1dmFsdWUpOwogICAgICAgICAgcHJpbnRmICgiKSIpOwogICAgICAg
IH0KICAgICAgZWxzZSBpZiAoZm9ybSA9PSBEV19GT1JNX2RhdGE0KQogICAgICAgIHsKICAgICAg
ICAgIHByaW50ZiAoIigiKTsKICAgICAgICAgIHByaW50ZiAoImxvY2F0aW9uIGxpc3QiKTsKICAg
ICAgICAgIHByaW50ZiAoIikiKTsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6
CiAgICAgIGJyZWFrOwogICAgfQoKICByZXR1cm4gZGF0YTsKfQoKc3RhdGljIHVuc2lnbmVkIGNo
YXIgKgpyZWFkX2FuZF9kaXNwbGF5X2F0dHIgKGF0dHJpYnV0ZSwgZm9ybSwgZGF0YSwgY3Vfb2Zm
c2V0LCBwb2ludGVyX3NpemUpCiAgICAgdW5zaWduZWQgbG9uZyBhdHRyaWJ1dGU7CiAgICAgdW5z
aWduZWQgbG9uZyBmb3JtOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgdW5zaWduZWQg
bG9uZyBjdV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBwb2ludGVyX3NpemU7CnsKICBwcmlu
dGYgKCIgICAgICUtMThzOiIsIGdldF9BVF9uYW1lIChhdHRyaWJ1dGUpKTsKICBkYXRhID0gcmVh
ZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlIChhdHRyaWJ1dGUsIGZvcm0sIGRhdGEsIGN1X29mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3NpemUpOwog
IHByaW50ZiAoIlxuIik7CiAgcmV0dXJuIGRhdGE7Cn0KCnN0YXRpYyBpbnQKZGlzcGxheV9kZWJ1
Z19pbmZvIChzZWN0aW9uLCBzdGFydCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2Vj
dGlvbjsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpmaWxlOwp7CiAgdW5z
aWduZWQgY2hhciAqZW5kID0gc3RhcnQgKyBzZWN0aW9uLT5zaF9zaXplOwogIHVuc2lnbmVkIGNo
YXIgKnNlY3Rpb25fYmVnaW4gPSBzdGFydDsKCiAgcHJpbnRmICgoIlRoZSBzZWN0aW9uICVzIGNv
bnRhaW5zOlxuXG4iKSwgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7CgogIGxvYWRfZGVidWdfc3RyIChm
aWxlKTsKICBsb2FkX2RlYnVnX2xvYyAoZmlsZSk7CgogIHdoaWxlIChzdGFydCA8IGVuZCkKICAg
IHsKICAgICAgRFdBUkYyX0V4dGVybmFsX0NvbXBVbml0ICpleHRlcm5hbDsKICAgICAgRFdBUkYy
X0ludGVybmFsX0NvbXBVbml0IGNvbXB1bml0OwogICAgICBFbGZfSW50ZXJuYWxfU2hkciAqcmVs
c2VjOwogICAgICB1bnNpZ25lZCBjaGFyICp0YWdzOwogICAgICB1bnNpZ25lZCBpbnQgaTsKICAg
ICAgaW50IGxldmVsOwogICAgICB1bnNpZ25lZCBsb25nIGN1X29mZnNldDsKCiAgICAgIGV4dGVy
bmFsID0gKERXQVJGMl9FeHRlcm5hbF9Db21wVW5pdCAqKSBzdGFydDsKCiAgICAgIGNvbXB1bml0
LmN1X2xlbmd0aCA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+Y3VfbGVuZ3RoLCBzaXplb2YgKGV4dGVy
bmFsLT5jdV9sZW5ndGgpKTsKICAgICAgY29tcHVuaXQuY3VfdmVyc2lvbiA9IGJ5dGVfZ2V0IChl
eHRlcm5hbC0+Y3VfdmVyc2lvbiwgc2l6ZW9mIChleHRlcm5hbC0+Y3VfdmVyc2lvbikpOwogICAg
ICBjb21wdW5pdC5jdV9hYmJyZXZfb2Zmc2V0ID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5jdV9hYmJy
ZXZfb2Zmc2V0LCBzaXplb2YgKGV4dGVybmFsLT5jdV9hYmJyZXZfb2Zmc2V0KSk7CiAgICAgIGNv
bXB1bml0LmN1X3BvaW50ZXJfc2l6ZSA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+Y3VfcG9pbnRlcl9z
aXplLCBzaXplb2YgKGV4dGVybmFsLT5jdV9wb2ludGVyX3NpemUpKTsKCiAgICAgIGlmIChjb21w
dW5pdC5jdV9sZW5ndGggPT0gMHhmZmZmZmZmZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgo
IjY0LWJpdCBEV0FSRiBkZWJ1ZyBpbmZvIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlxuIikpOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKCgogICAgICBmb3IgKHJlbHNlYyA9IHNlY3Rpb25faGVh
ZGVyczsKICAgICAgICAgICByZWxzZWMgPCBzZWN0aW9uX2hlYWRlcnMgKyBlbGZfaGVhZGVyLmVf
c2hudW07CiAgICAgICAgICAgKytyZWxzZWMpCiAgICAgICAgewogICAgICAgICAgdW5zaWduZWQg
bG9uZyBucmVsYXM7CiAgICAgICAgICBFbGZfSW50ZXJuYWxfUmVsYSAqcmVsYSwgKnJwOwogICAg
ICAgICAgRWxmX0ludGVybmFsX1NoZHIgKnN5bXNlYzsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9T
eW0gKnN5bXRhYjsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnN5bTsKCiAgICAgICAgICBp
ZiAocmVsc2VjLT5zaF90eXBlICE9IDQKICAgICAgICAgICAgICB8fCAoc2VjdGlvbl9oZWFkZXJz
ICsgKChyZWxzZWMtPnNoX2luZm8pIDwgMHhGRjAwID8gKHJlbHNlYy0+c2hfaW5mbykgOiAoKHJl
bHNlYy0+c2hfaW5mbykgPD0gMHhGRkZGID8gMCA6IChyZWxzZWMtPnNoX2luZm8pIC0gKDB4RkZG
RiArIDEgLSAweEZGMDApKSkpICE9IHNlY3Rpb24KICAgICAgICAgICAgICB8fCByZWxzZWMtPnNo
X3NpemUgPT0gMCkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgaWYgKCFzbHVycF9y
ZWxhX3JlbG9jcyAoZmlsZSwgcmVsc2VjLT5zaF9vZmZzZXQsIHJlbHNlYy0+c2hfc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgcmVsYSwgJiBucmVsYXMpKQogICAgICAg
ICAgICByZXR1cm4gMDsKCiAgICAgICAgICBzeW1zZWMgPSAoc2VjdGlvbl9oZWFkZXJzICsgKChy
ZWxzZWMtPnNoX2xpbmspIDwgMHhGRjAwID8gKHJlbHNlYy0+c2hfbGluaykgOiAoKHJlbHNlYy0+
c2hfbGluaykgPD0gMHhGRkZGID8gMCA6IChyZWxzZWMtPnNoX2xpbmspIC0gKDB4RkZGRiArIDEg
LSAweEZGMDApKSkpOwogICAgICAgICAgc3ltdGFiID0gKGlzXzMyYml0X2VsZiA/IGdldF8zMmJp
dF9lbGZfc3ltYm9scyAoZmlsZSwgc3ltc2VjKSA6IGdldF82NGJpdF9lbGZfc3ltYm9scyAoZmls
ZSwgc3ltc2VjKSk7CgogICAgICAgICAgZm9yIChycCA9IHJlbGE7IHJwIDwgcmVsYSArIG5yZWxh
czsgKytycCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmIChycC0+cl9vZmZzZXQKICAg
ICAgICAgICAgICAgICAgIT0gKGJmZF92bWEpICgodW5zaWduZWQgY2hhciAqKSAmZXh0ZXJuYWwt
PmN1X2FiYnJldl9vZmZzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHNlY3Rp
b25fYmVnaW4pKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICAgIGlmIChp
c18zMmJpdF9lbGYpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN5bSA9IHN5
bXRhYiArICgocnAtPnJfaW5mbykgPj4gOCk7CgogICAgICAgICAgICAgICAgICBpZiAoKChycC0+
cl9pbmZvKSA+PiA4KSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAmJiAoKHN5bS0+c3RfaW5m
bykgJiAweEYpICE9IDMpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgd2FybiAoKCJTa2lwcGluZyB1bmV4cGVjdGVkIHN5bWJvbCB0eXBlICV1XG4iKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgoc3ltLT5zdF9pbmZvKSAmIDB4RikpOwogICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgc3ltID0gc3ltdGFiICsgKChycC0+cl9pbmZvKSA+PiAzMik7CgogICAgICAgICAgICAgICAg
ICBpZiAoKChycC0+cl9pbmZvKSA+PiAzMikgIT0gMAogICAgICAgICAgICAgICAgICAgICAgJiYg
KChzeW0tPnN0X2luZm8pICYgMHhGKSAhPSAzKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgIHdhcm4gKCgiU2tpcHBpbmcgdW5leHBlY3RlZCBzeW1ib2wgdHlwZSAl
dVxuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHN5bS0+c3RfaW5mbykgJiAweEYp
KTsKICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgY29tcHVuaXQuY3VfYWJicmV2X29mZnNl
dCA9IHJwLT5yX2FkZGVuZDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAg
ICAgICAgIGZyZWUgKHJlbGEpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgdGFn
cyA9IHN0YXJ0ICsgc2l6ZW9mICgqZXh0ZXJuYWwpOwogICAgICBjdV9vZmZzZXQgPSBzdGFydCAt
IHNlY3Rpb25fYmVnaW47CiAgICAgIHN0YXJ0ICs9IGNvbXB1bml0LmN1X2xlbmd0aCArIHNpemVv
ZiAoZXh0ZXJuYWwtPmN1X2xlbmd0aCk7CgogICAgICBwcmludGYgKCgiICBDb21waWxhdGlvbiBV
bml0IEAgJWx4OlxuIiksIGN1X29mZnNldCk7CiAgICAgIHByaW50ZiAoKCIgICBMZW5ndGg6ICAg
ICAgICAlbGRcbiIpLCBjb21wdW5pdC5jdV9sZW5ndGgpOwogICAgICBwcmludGYgKCgiICAgVmVy
c2lvbjogICAgICAgJWRcbiIpLCBjb21wdW5pdC5jdV92ZXJzaW9uKTsKICAgICAgcHJpbnRmICgo
IiAgIEFiYnJldiBPZmZzZXQ6ICVsZFxuIiksIGNvbXB1bml0LmN1X2FiYnJldl9vZmZzZXQpOwog
ICAgICBwcmludGYgKCgiICAgUG9pbnRlciBTaXplOiAgJWRcbiIpLCBjb21wdW5pdC5jdV9wb2lu
dGVyX3NpemUpOwoKICAgICAgaWYgKGNvbXB1bml0LmN1X3ZlcnNpb24gIT0gMikKICAgICAgICB7
CiAgICAgICAgICB3YXJuICgoIk9ubHkgdmVyc2lvbiAyIERXQVJGIGRlYnVnIGluZm9ybWF0aW9u
IGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuXG4iKSk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICB9CgogICAgICBmcmVlX2FiYnJldnMgKCk7CgoKICAgICAgewogICAgICAgIEVsZl9JbnRlcm5h
bF9TaGRyICpzZWM7CiAgICAgICAgdW5zaWduZWQgY2hhciAqYmVnaW47CgoKICAgICAgICBmb3Ig
KGkgPSAwLCBzZWMgPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICAgICAgICBpIDwgZWxmX2hlYWRl
ci5lX3NobnVtOwogICAgICAgICAgICAgaSsrLCBzZWMrKykKICAgICAgICAgIGlmIChfX2V4dGVu
c2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKCIuZGVidWdfYWJicmV2IikgJiYg
KF9fczFfbGVuID0gc3RybGVuICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJp
bmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZGVidWdf
YWJicmV2IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmlu
Z190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICgh
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIuZGVidWdfYWJicmV2IikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIi5kZWJ1Z19hYmJyZXYiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkg
PyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+
IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCAoX19jb25zdCBjaGFyICopICgi
LmRlYnVnX2FiYnJldiIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9s
ZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNl
YykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFt
ZSkpKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWMpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNv
cnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpLCBfX3MxX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2FiYnJldiIpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiLmRlYnVnX2FiYnJldiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk
ICopKCIuZGVidWdfYWJicmV2IikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBp
bnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0g
c3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYykt
PnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgiLmRlYnVnX2FiYnJldiIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+
c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFi
bGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsyXSk7IGlmIChfX3MxX2xlbiA+IDIg
JiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYiKSlbM10pOyB9IH0gX19yZXN1bHQ7
IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYi
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCgoc2VjKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWMp
LT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190
YWJsZSArIChzZWMpLT5zaF9uYW1lKSkpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAo
KHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9f
czFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbM10gLSBfX3MyWzNdKTsgfSB9
IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmRlYnVnX2FiYnJldiIp
ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmRlYnVnX2FiYnJldiIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCIuZGVidWdfYWJicmV2IikgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuICgiLmRlYnVnX2FiYnJldiIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z
dGFudF9wICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjKS0+c2hfbmFt
ZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAo
c2VjKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWMpID09ICgo
dm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xl
bmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25l
PiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4i
IDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkgPT0gMSkgPyAoX19leHRlbnNpb25f
XyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNl
YyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5n
X3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSgiLmRlYnVnX2FiYnJldiIpKVswXSk7IGlmIChfX3MyX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6
ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsxXSk7IGlmIChfX3My
X2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlYykgPT0gKCh2b2lkICopMCkgPyAiPG5v
bmU+IiA6ICgoc2VjKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjKS0+c2hfbmFtZSkpKSlbMl0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWMpID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29y
cnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNoX25hbWUpKSkpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5kZWJ1Z19hYmJyZXYiKSlbM10p
OyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
KChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlYyktPnNo
X25hbWUpKSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVswXTsgaWYg
KF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmRlYnVnX2FiYnJl
diIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ii5kZWJ1Z19hYmJyZXYiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopICgiLmRlYnVnX2FiYnJldiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0
cmNtcCAoKChzZWMpID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlYyktPnNoX25hbWUg
Pj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNl
YyktPnNoX25hbWUpKSwgIi5kZWJ1Z19hYmJyZXYiKSkpKTsgfSkgPT0gMCkKICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgIGlmIChpID09IGVsZl9oZWFkZXIuZV9zaG51bSB8fCBzZWMtPnNoX3Np
emUgPT0gMCkKICAgICAgICAgIHsKICAgICAgICAgICAgd2FybiAoKCJVbmFibGUgdG8gbG9jYXRl
IC5kZWJ1Z19hYmJyZXYgc2VjdGlvbiFcbiIpKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICB9CgogICAgICAgIGJlZ2luID0gKCh1bnNpZ25lZCBjaGFyICopCiAgICAgICAgICAgICAg
ICAgZ2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWMtPnNoX29mZnNldCwgc2VjLT5zaF9z
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoImRlYnVnX2FiYnJldiBzZWN0aW9uIGRh
dGEiKSkpOwogICAgICAgIGlmICghYmVnaW4pCiAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAg
cHJvY2Vzc19hYmJyZXZfc2VjdGlvbiAoYmVnaW4gKyBjb21wdW5pdC5jdV9hYmJyZXZfb2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luICsgc2VjLT5zaF9zaXplKTsK
CiAgICAgICAgZnJlZSAoYmVnaW4pOwogICAgICB9CgogICAgICBsZXZlbCA9IDA7CiAgICAgIHdo
aWxlICh0YWdzIDwgc3RhcnQpCiAgICAgICAgewogICAgICAgICAgaW50IGJ5dGVzX3JlYWQ7CiAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGFiYnJldl9udW1iZXI7CiAgICAgICAgICBhYmJyZXZfZW50
cnkgKmVudHJ5OwogICAgICAgICAgYWJicmV2X2F0dHIgKmF0dHI7CgogICAgICAgICAgYWJicmV2
X251bWJlciA9IHJlYWRfbGViMTI4ICh0YWdzLCAmIGJ5dGVzX3JlYWQsIDApOwogICAgICAgICAg
dGFncyArPSBieXRlc19yZWFkOwoKCiAgICAgICAgICBpZiAoYWJicmV2X251bWJlciA9PSAwKQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgLS1sZXZlbDsKICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgfQoKCgogICAgICAgICAgZm9yIChlbnRyeSA9IGZpcnN0X2FiYnJldjsK
ICAgICAgICAgICAgICAgZW50cnkgJiYgZW50cnktPmVudHJ5ICE9IGFiYnJldl9udW1iZXI7CiAg
ICAgICAgICAgICAgIGVudHJ5ID0gZW50cnktPm5leHQpCiAgICAgICAgICAgIGNvbnRpbnVlOwoK
ICAgICAgICAgIGlmIChlbnRyeSA9PSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgewogICAgICAg
ICAgICAgIHdhcm4gKCgiVW5hYmxlIHRvIGxvY2F0ZSBlbnRyeSAlbHUgaW4gdGhlIGFiYnJldmlh
dGlvbiB0YWJsZVxuIiksCiAgICAgICAgICAgICAgICAgICAgYWJicmV2X251bWJlcik7CiAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBwcmludGYgKCgiIDwl
ZD48JWx4PjogQWJicmV2IE51bWJlcjogJWx1ICglcylcbiIpLAogICAgICAgICAgICAgICAgICBs
ZXZlbCwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpICh0YWdzIC0gc2VjdGlvbl9i
ZWdpbiAtIGJ5dGVzX3JlYWQpLAogICAgICAgICAgICAgICAgICBhYmJyZXZfbnVtYmVyLAogICAg
ICAgICAgICAgICAgICBnZXRfVEFHX25hbWUgKGVudHJ5LT50YWcpKTsKCiAgICAgICAgICBmb3Ig
KGF0dHIgPSBlbnRyeS0+Zmlyc3RfYXR0cjsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpCiAgICAg
ICAgICAgIHRhZ3MgPSByZWFkX2FuZF9kaXNwbGF5X2F0dHIgKGF0dHItPmF0dHJpYnV0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+Zm9ybSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncywgY3Vfb2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdW5pdC5jdV9wb2ludGVy
X3NpemUpOwoKICAgICAgICAgIGlmIChlbnRyeS0+Y2hpbGRyZW4pCiAgICAgICAgICAgICsrbGV2
ZWw7CiAgICAgICAgfQogICAgfQoKICBmcmVlX2RlYnVnX3N0ciAoKTsKICBmcmVlX2RlYnVnX2xv
YyAoKTsKCiAgcHJpbnRmICgiXG4iKTsKCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZGlzcGxh
eV9kZWJ1Z19hcmFuZ2VzIChzZWN0aW9uLCBzdGFydCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxf
U2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpmaWxl
IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBz
dGFydCArIHNlY3Rpb24tPnNoX3NpemU7CgogIHByaW50ZiAoKCJUaGUgc2VjdGlvbiAlcyBjb250
YWluczpcblxuIiksICgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2Vj
dGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3Ry
aW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpOwoKICB3aGlsZSAoc3RhcnQgPCBlbmQp
CiAgICB7CiAgICAgIERXQVJGMl9FeHRlcm5hbF9BUmFuZ2UgKmV4dGVybmFsOwogICAgICBEV0FS
RjJfSW50ZXJuYWxfQVJhbmdlIGFyYW5nZTsKICAgICAgdW5zaWduZWQgY2hhciAqcmFuZ2VzOwog
ICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzOwog
ICAgICBpbnQgZXhjZXNzOwoKICAgICAgZXh0ZXJuYWwgPSAoRFdBUkYyX0V4dGVybmFsX0FSYW5n
ZSAqKSBzdGFydDsKCiAgICAgIGFyYW5nZS5hcl9sZW5ndGggPSBieXRlX2dldCAoZXh0ZXJuYWwt
PmFyX2xlbmd0aCwgc2l6ZW9mIChleHRlcm5hbC0+YXJfbGVuZ3RoKSk7CiAgICAgIGFyYW5nZS5h
cl92ZXJzaW9uID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5hcl92ZXJzaW9uLCBzaXplb2YgKGV4dGVy
bmFsLT5hcl92ZXJzaW9uKSk7CiAgICAgIGFyYW5nZS5hcl9pbmZvX29mZnNldCA9IGJ5dGVfZ2V0
IChleHRlcm5hbC0+YXJfaW5mb19vZmZzZXQsIHNpemVvZiAoZXh0ZXJuYWwtPmFyX2luZm9fb2Zm
c2V0KSk7CiAgICAgIGFyYW5nZS5hcl9wb2ludGVyX3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwt
PmFyX3BvaW50ZXJfc2l6ZSwgc2l6ZW9mIChleHRlcm5hbC0+YXJfcG9pbnRlcl9zaXplKSk7CiAg
ICAgIGFyYW5nZS5hcl9zZWdtZW50X3NpemUgPSBieXRlX2dldCAoZXh0ZXJuYWwtPmFyX3NlZ21l
bnRfc2l6ZSwgc2l6ZW9mIChleHRlcm5hbC0+YXJfc2VnbWVudF9zaXplKSk7CgogICAgICBpZiAo
YXJhbmdlLmFyX2xlbmd0aCA9PSAweGZmZmZmZmZmKQogICAgICAgIHsKICAgICAgICAgIHdhcm4g
KCgiNjQtYml0IERXQVJGIGFyYW5nZXMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LlxuIikpOwogICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgaWYgKGFyYW5nZS5hcl92ZXJzaW9uICE9IDIp
CiAgICAgICAgewogICAgICAgICAgd2FybiAoKCJPbmx5IERXQVJGIDIgYXJhbmdlcyBhcmUgY3Vy
cmVudGx5IHN1cHBvcnRlZC5cbiIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAg
IHByaW50ZiAoKCIgIExlbmd0aDogICAgICAgICAgICAgICAgICAgJWxkXG4iKSwgYXJhbmdlLmFy
X2xlbmd0aCk7CiAgICAgIHByaW50ZiAoKCIgIFZlcnNpb246ICAgICAgICAgICAgICAgICAgJWRc
biIpLCBhcmFuZ2UuYXJfdmVyc2lvbik7CiAgICAgIHByaW50ZiAoKCIgIE9mZnNldCBpbnRvIC5k
ZWJ1Z19pbmZvOiAgJWx4XG4iKSwgYXJhbmdlLmFyX2luZm9fb2Zmc2V0KTsKICAgICAgcHJpbnRm
ICgoIiAgUG9pbnRlciBTaXplOiAgICAgICAgICAgICAlZFxuIiksIGFyYW5nZS5hcl9wb2ludGVy
X3NpemUpOwogICAgICBwcmludGYgKCgiICBTZWdtZW50IFNpemU6ICAgICAgICAgICAgICVkXG4i
KSwgYXJhbmdlLmFyX3NlZ21lbnRfc2l6ZSk7CgogICAgICBwcmludGYgKCgiXG4gICAgQWRkcmVz
cyAgTGVuZ3RoXG4iKSk7CgogICAgICByYW5nZXMgPSBzdGFydCArIHNpemVvZiAoKmV4dGVybmFs
KTsKCgogICAgICBleGNlc3MgPSBzaXplb2YgKCpleHRlcm5hbCkgJSAoMiAqIGFyYW5nZS5hcl9w
b2ludGVyX3NpemUpOwogICAgICBpZiAoZXhjZXNzKQogICAgICAgIHJhbmdlcyArPSAoMiAqIGFy
YW5nZS5hcl9wb2ludGVyX3NpemUpIC0gZXhjZXNzOwoKICAgICAgZm9yICg7OykKICAgICAgICB7
CiAgICAgICAgICBhZGRyZXNzID0gYnl0ZV9nZXQgKHJhbmdlcywgYXJhbmdlLmFyX3BvaW50ZXJf
c2l6ZSk7CgogICAgICAgICAgcmFuZ2VzICs9IGFyYW5nZS5hcl9wb2ludGVyX3NpemU7CgogICAg
ICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHJhbmdlcywgYXJhbmdlLmFyX3BvaW50ZXJfc2l6ZSk7
CgogICAgICAgICAgcmFuZ2VzICs9IGFyYW5nZS5hcl9wb2ludGVyX3NpemU7CgoKICAgICAgICAg
IGlmIChhZGRyZXNzID09IDAgJiYgbGVuZ3RoID09IDApCiAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgIHByaW50ZiAoIiAgICAlOC44bHggJWx1XG4iLCBhZGRyZXNzLCBsZW5ndGgpOwogICAg
ICAgIH0KCiAgICAgIHN0YXJ0ICs9IGFyYW5nZS5hcl9sZW5ndGggKyBzaXplb2YgKGV4dGVybmFs
LT5hcl9sZW5ndGgpOwogICAgfQoKICBwcmludGYgKCJcbiIpOwoKICByZXR1cm4gMTsKfQoKdHlw
ZWRlZiBzdHJ1Y3QgRnJhbWVfQ2h1bmsKewogIHN0cnVjdCBGcmFtZV9DaHVuayAqbmV4dDsKICB1
bnNpZ25lZCBjaGFyICpjaHVua19zdGFydDsKICBpbnQgbmNvbHM7CgogIHNob3J0IGludCAqY29s
X3R5cGU7CiAgaW50ICpjb2xfb2Zmc2V0OwogIGNoYXIgKmF1Z21lbnRhdGlvbjsKICB1bnNpZ25l
ZCBpbnQgY29kZV9mYWN0b3I7CiAgaW50IGRhdGFfZmFjdG9yOwogIHVuc2lnbmVkIGxvbmcgcGNf
YmVnaW47CiAgdW5zaWduZWQgbG9uZyBwY19yYW5nZTsKICBpbnQgY2ZhX3JlZzsKICBpbnQgY2Zh
X29mZnNldDsKICBpbnQgcmE7CiAgdW5zaWduZWQgY2hhciBmZGVfZW5jb2Rpbmc7Cn0KRnJhbWVf
Q2h1bms7CgoKCgoKc3RhdGljIHZvaWQgZnJhbWVfbmVlZF9zcGFjZSAoRnJhbWVfQ2h1bmsgKiwg
aW50KTsKc3RhdGljIHZvaWQgZnJhbWVfZGlzcGxheV9yb3cgKEZyYW1lX0NodW5rICosIGludCAq
LCBpbnQgKik7CnN0YXRpYyBpbnQgc2l6ZV9vZl9lbmNvZGVkX3ZhbHVlIChpbnQpOwoKc3RhdGlj
IHZvaWQKZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJlZykKICAgICBGcmFtZV9DaHVuayAqZmM7CiAg
ICAgaW50IHJlZzsKewogIGludCBwcmV2ID0gZmMtPm5jb2xzOwoKICBpZiAocmVnIDwgZmMtPm5j
b2xzKQogICAgcmV0dXJuOwoKICBmYy0+bmNvbHMgPSByZWcgKyAxOwogIGZjLT5jb2xfdHlwZSA9
IChzaG9ydCBpbnQgKikgeHJlYWxsb2MgKGZjLT5jb2xfdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYy0+bmNvbHMgKiBzaXplb2YgKHNob3J0IGludCkpOwog
IGZjLT5jb2xfb2Zmc2V0ID0gKGludCAqKSB4cmVhbGxvYyAoZmMtPmNvbF9vZmZzZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYy0+bmNvbHMgKiBzaXplb2YgKGludCkp
OwoKICB3aGlsZSAocHJldiA8IGZjLT5uY29scykKICAgIHsKICAgICAgZmMtPmNvbF90eXBlW3By
ZXZdID0gKC0xKTsKICAgICAgZmMtPmNvbF9vZmZzZXRbcHJldl0gPSAwOwogICAgICBwcmV2Kys7
CiAgICB9Cn0KCnN0YXRpYyB2b2lkCmZyYW1lX2Rpc3BsYXlfcm93IChmYywgbmVlZF9jb2xfaGVh
ZGVycywgbWF4X3JlZ3MpCiAgICAgRnJhbWVfQ2h1bmsgKmZjOwogICAgIGludCAqbmVlZF9jb2xf
aGVhZGVyczsKICAgICBpbnQgKm1heF9yZWdzOwp7CiAgaW50IHI7CiAgY2hhciB0bXBbMTAwXTsK
CiAgaWYgKCptYXhfcmVncyA8IGZjLT5uY29scykKICAgICptYXhfcmVncyA9IGZjLT5uY29sczsK
CiAgaWYgKCpuZWVkX2NvbF9oZWFkZXJzKQogICAgewogICAgICAqbmVlZF9jb2xfaGVhZGVycyA9
IDA7CgogICAgICBwcmludGYgKCIgICBMT0MgICBDRkEgICAgICAiKTsKCiAgICAgIGZvciAociA9
IDA7IHIgPCAqbWF4X3JlZ3M7IHIrKykKICAgICAgICBpZiAoZmMtPmNvbF90eXBlW3JdICE9ICgt
MSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmIChyID09IGZjLT5yYSkKICAgICAgICAgICAg
ICBwcmludGYgKCJyYSAgICIpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcHJpbnRm
ICgiciUtNGQiLCByKTsKICAgICAgICAgIH0KCiAgICAgIHByaW50ZiAoIlxuIik7CiAgICB9Cgog
IHByaW50ZiAoIiUwOGx4ICIsIGZjLT5wY19iZWdpbik7CiAgc3ByaW50ZiAodG1wLCAiciVkJStk
IiwgZmMtPmNmYV9yZWcsIGZjLT5jZmFfb2Zmc2V0KTsKICBwcmludGYgKCIlLThzICIsIHRtcCk7
CgogIGZvciAociA9IDA7IHIgPCBmYy0+bmNvbHM7IHIrKykKICAgIHsKICAgICAgaWYgKGZjLT5j
b2xfdHlwZVtyXSAhPSAoLTEpKQogICAgICAgIHsKICAgICAgICAgIHN3aXRjaCAoZmMtPmNvbF90
eXBlW3JdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3VuZGVmaW5lZDoK
ICAgICAgICAgICAgICBzdHJjcHkgKHRtcCwgInUiKTsKICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICBzdHJjcHkgKHRt
cCwgInMiKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSBEV19DRkFfb2Zm
c2V0OgogICAgICAgICAgICAgIHNwcmludGYgKHRtcCwgImMlK2QiLCBmYy0+Y29sX29mZnNldFty
XSk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVy
OgogICAgICAgICAgICAgIHNwcmludGYgKHRtcCwgInIlZCIsIGZjLT5jb2xfb2Zmc2V0W3JdKTsK
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBz
dHJjcHkgKHRtcCwgIm4vYSIpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAg
ICAgICAgICBwcmludGYgKCIlLTVzIiwgdG1wKTsKICAgICAgICB9CiAgICB9CiAgcHJpbnRmICgi
XG4iKTsKfQoKc3RhdGljIGludApzaXplX29mX2VuY29kZWRfdmFsdWUgKGVuY29kaW5nKQogICAg
IGludCBlbmNvZGluZzsKewogIHN3aXRjaCAoZW5jb2RpbmcgJiAweDcpCiAgICB7CiAgICBkZWZh
dWx0OgogICAgY2FzZSAwOiByZXR1cm4gaXNfMzJiaXRfZWxmID8gNCA6IDg7CiAgICBjYXNlIDI6
IHJldHVybiAyOwogICAgY2FzZSAzOiByZXR1cm4gNDsKICAgIGNhc2UgNDogcmV0dXJuIDg7CiAg
ICB9Cn0KCgoKCgpzdGF0aWMgaW50CmRpc3BsYXlfZGVidWdfZnJhbWVzIChzZWN0aW9uLCBzdGFy
dCwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc2VjdGlvbjsKICAgICB1bnNpZ25lZCBj
aGFyICpzdGFydDsKICAgICBGSUxFICpmaWxlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7
CnsKICB1bnNpZ25lZCBjaGFyICplbmQgPSBzdGFydCArIHNlY3Rpb24tPnNoX3NpemU7CiAgdW5z
aWduZWQgY2hhciAqc2VjdGlvbl9zdGFydCA9IHN0YXJ0OwogIEZyYW1lX0NodW5rICpjaHVua3Mg
PSAwOwogIEZyYW1lX0NodW5rICpyZW1lbWJlcmVkX3N0YXRlID0gMDsKICBGcmFtZV9DaHVuayAq
cnM7CiAgaW50IGlzX2VoID0gKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3My
X2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSAmJiBfX2J1
aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFtZSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoKChz
ZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+
PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2Vj
dGlvbiktPnNoX25hbWUpKSksIF9fczJfbGVuID0gc3RybGVuICgiLmVoX2ZyYW1lIiksICghKChz
aXplX3QpKGNvbnN0IHZvaWQgKikoKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgo
c2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDog
c3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpID09IDEpIHx8IF9fczFfbGVuID49
IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIuZWhfZnJhbWUiKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgiLmVoX2ZyYW1lIikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkp
ID8gbWVtY21wICgoX19jb25zdCBjaGFyICopICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSwgKF9fY29u
c3QgY2hhciAqKSAoIi5laF9mcmFtZSIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVu
IDogX19zMl9sZW4pICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCgoc2VjdGlvbikgPT0g
KCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3Rh
YmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9u
YW1lKSkpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgoKHNlY3Rpb24pID09ICgodm9pZCAq
KTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSAr
IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8g
Ijxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAi
PGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSA9PSAxKSAm
JiAoX19zMV9sZW4gPSBzdHJsZW4gKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+
IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVw
dD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpLCBfX3MxX2xlbiA8IDQp
ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmVoX2ZyYW1lIikgJiYgKChzaXplX3QpKGNvbnN0
IHZvaWQgKikoKCIuZWhfZnJhbWUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiLmVo
X2ZyYW1lIikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9u
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbikt
PnNoX25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSgiLmVoX2ZyYW1lIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChf
X3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/
ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8g
Ijxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiLmVoX2ZyYW1lIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTAp
ID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGgg
PyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKSlbMF0g
LSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCgoc2VjdGlv
bikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3Ry
aW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24p
LT5zaF9uYW1lKSkpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9u
KS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdf
dGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9u
ZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3Jy
dXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0gX19zMlsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIi5laF9mcmFt
ZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiLmVoX2ZyYW1lIikgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoIi5laF9mcmFtZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxl
biAoIi5laF9mcmFtZSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgo
KHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9uYW1l
ID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChz
ZWN0aW9uKS0+c2hfbmFtZSkpKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoKChzZWN0aW9u
KSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJp
bmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbikt
PnNoX25hbWUpKSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoKChzZWN0aW9uKSA9PSAo
KHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFi
bGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25h
bWUpKSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9
PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdf
dGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNo
X25hbWUpKSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSgiLmVoX2ZyYW1lIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25h
bWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsg
KHNlY3Rpb24pLT5zaF9uYW1lKSkpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9f
cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDogKChz
ZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIgOiBz
dHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChfX3My
X2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8
bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxj
b3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSkpWzNdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5laF9mcmFtZSIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5zaF9u
YW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSAr
IChzZWN0aW9uKS0+c2hfbmFtZSkpKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZWhfZnJhbWUi
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIi5l
aF9mcmFtZSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl
c3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoIi5laF9mcmFtZSIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuZWhfZnJhbWUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJj
bXAgKCgoc2VjdGlvbikgPT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNo
X25hbWUgPj0gc3RyaW5nX3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxl
ICsgKHNlY3Rpb24pLT5zaF9uYW1lKSksICIuZWhfZnJhbWUiKSkpKTsgfSkgPT0gMCk7CiAgaW50
IGxlbmd0aF9yZXR1cm47CiAgaW50IG1heF9yZWdzID0gMDsKICBpbnQgYWRkcl9zaXplID0gaXNf
MzJiaXRfZWxmID8gNCA6IDg7CgogIHByaW50ZiAoKCJUaGUgc2VjdGlvbiAlcyBjb250YWluczpc
biIpLCAoKHNlY3Rpb24pID09ICgodm9pZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3Rpb24pLT5z
aF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5ndGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJs
ZSArIChzZWN0aW9uKS0+c2hfbmFtZSkpKTsKCiAgd2hpbGUgKHN0YXJ0IDwgZW5kKQogICAgewog
ICAgICB1bnNpZ25lZCBjaGFyICpzYXZlZF9zdGFydDsKICAgICAgdW5zaWduZWQgY2hhciAqYmxv
Y2tfZW5kOwogICAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICAgdW5zaWduZWQgbG9uZyBj
aWVfaWQ7CiAgICAgIEZyYW1lX0NodW5rICpmYzsKICAgICAgRnJhbWVfQ2h1bmsgKmNpZTsKICAg
ICAgaW50IG5lZWRfY29sX2hlYWRlcnMgPSAxOwogICAgICB1bnNpZ25lZCBjaGFyICphdWdtZW50
YXRpb25fZGF0YSA9ICgodm9pZCAqKTApOwogICAgICB1bnNpZ25lZCBsb25nIGF1Z21lbnRhdGlv
bl9kYXRhX2xlbiA9IDA7CiAgICAgIGludCBlbmNvZGVkX3B0cl9zaXplID0gYWRkcl9zaXplOwoK
ICAgICAgc2F2ZWRfc3RhcnQgPSBzdGFydDsKICAgICAgbGVuZ3RoID0gYnl0ZV9nZXQgKHN0YXJ0
LCA0KTsgc3RhcnQgKz0gNDsKCiAgICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICB7CiAgICAg
ICAgICBwcmludGYgKCJcbiUwOGx4IFpFUk8gdGVybWluYXRvclxuXG4iLAogICAgICAgICAgICAg
ICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rpb25fc3RhcnQpKTsKICAg
ICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgIGlmIChsZW5ndGggPT0gMHhmZmZmZmZm
ZikKICAgICAgICB7CiAgICAgICAgICB3YXJuICgoIjY0LWJpdCBEV0FSRiBmb3JtYXQgZnJhbWVz
IGFyZSBub3Qgc3VwcG9ydGVkIHlldC5cbiIpKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K
CiAgICAgIGJsb2NrX2VuZCA9IHNhdmVkX3N0YXJ0ICsgbGVuZ3RoICsgNDsKICAgICAgY2llX2lk
ID0gYnl0ZV9nZXQgKHN0YXJ0LCA0KTsgc3RhcnQgKz0gNDsKCiAgICAgIGlmIChpc19laCA/IChj
aWVfaWQgPT0gMCkgOiAoY2llX2lkID09IDB4ZmZmZmZmZmYpKQogICAgICAgIHsKICAgICAgICAg
IGludCB2ZXJzaW9uOwoKICAgICAgICAgIGZjID0gKEZyYW1lX0NodW5rICopIHhtYWxsb2MgKHNp
emVvZiAoRnJhbWVfQ2h1bmspKTsKICAgICAgICAgIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoc2l6ZW9mIChGcmFtZV9DaHVuaykpICYmIChzaXplb2YgKEZyYW1lX0NodW5r
KSkgPD0gMTYgPyAoKHNpemVvZiAoRnJhbWVfQ2h1bmspKSA9PSAxID8gKHsgdm9pZCAqX19zID0g
KGZjKTsgKigoX191aW50OF90ICopIF9fcykgPSAoX191aW50OF90KSAwOyBfX3M7IH0pIDogKHsg
dm9pZCAqX19zID0gKGZjKTsgdW5pb24geyB1bnNpZ25lZCBpbnQgX191aTsgdW5zaWduZWQgc2hv
cnQgaW50IF9fdXNpOyB1bnNpZ25lZCBjaGFyIF9fdWM7IH0gKl9fdSA9IF9fczsgX191aW50OF90
IF9fYyA9IChfX3VpbnQ4X3QpICgwKTsgc3dpdGNoICgodW5zaWduZWQgaW50KSAoc2l6ZW9mIChG
cmFtZV9DaHVuaykpKSB7IGNhc2UgMTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDExOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsgY2FzZSA3OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNo
b3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyAyKTsgX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7IGNhc2UgMTQ6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDEwOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2Mg
KiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2Fz
ZSAyOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVkIHNob3J0IGludCkgX19jICogMHgwMTAxOyBicmVh
azsgY2FzZSAxMzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgOTogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgNTogX191
LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7IGNhc2UgMTogX191LT5fX3VjID0gKHVuc2lnbmVkIGNoYXIpIF9fYzsgYnJlYWs7
IGNhc2UgMTY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDEyOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEw
MTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA4OiBfX3Ut
Pl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsgY2FzZSA0OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBjYXNlIDA6IGJy
ZWFrOyB9IF9fczsgfSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgwKSAmJiAoMCkgPT0gJ1ww
JyA/ICh7IHZvaWQgKl9fcyA9IChmYyk7IF9fYnVpbHRpbl9tZW1zZXQgKF9fcywgJ1wwJywgc2l6
ZW9mIChGcmFtZV9DaHVuaykpOyBfX3M7IH0pIDogbWVtc2V0IChmYywgMCwgc2l6ZW9mIChGcmFt
ZV9DaHVuaykpKSkpOwoKICAgICAgICAgIGZjLT5uZXh0ID0gY2h1bmtzOwogICAgICAgICAgY2h1
bmtzID0gZmM7CiAgICAgICAgICBmYy0+Y2h1bmtfc3RhcnQgPSBzYXZlZF9zdGFydDsKICAgICAg
ICAgIGZjLT5uY29scyA9IDA7CiAgICAgICAgICBmYy0+Y29sX3R5cGUgPSAoc2hvcnQgaW50ICop
IHhtYWxsb2MgKHNpemVvZiAoc2hvcnQgaW50KSk7CiAgICAgICAgICBmYy0+Y29sX29mZnNldCA9
IChpbnQgKikgeG1hbGxvYyAoc2l6ZW9mIChpbnQpKTsKICAgICAgICAgIGZyYW1lX25lZWRfc3Bh
Y2UgKGZjLCBtYXhfcmVncy0xKTsKCiAgICAgICAgICB2ZXJzaW9uID0gKnN0YXJ0Kys7CgogICAg
ICAgICAgZmMtPmF1Z21lbnRhdGlvbiA9IHN0YXJ0OwogICAgICAgICAgc3RhcnQgPSAoX19leHRl
bnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKCdcMCcpICYmICgnXDAnKSA9PSAnXDAnID8g
KGNoYXIgKikgX19yYXdtZW1jaHIgKHN0YXJ0LCAnXDAnKSA6IHN0cmNociAoc3RhcnQsICdcMCcp
KSkgKyAxOwoKICAgICAgICAgIGlmIChmYy0+YXVnbWVudGF0aW9uWzBdID09ICd6JykKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIGZjLT5jb2RlX2ZhY3RvciA9IHJlYWRfbGViMTI4IChzdGFy
dCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAg
ICAgICBmYy0+ZGF0YV9mYWN0b3IgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVy
biwgMSk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgZmMtPnJhID0gYnl0
ZV9nZXQgKHN0YXJ0LCAxKTsgc3RhcnQgKz0gMTsKICAgICAgICAgICAgICBhdWdtZW50YXRpb25f
ZGF0YV9sZW4gPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0
ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgYXVnbWVudGF0aW9uX2RhdGEgPSBzdGFy
dDsKICAgICAgICAgICAgICBzdGFydCArPSBhdWdtZW50YXRpb25fZGF0YV9sZW47CiAgICAgICAg
ICAgIH0KICAgICAgICAgIGVsc2UgaWYgKF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVu
LCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChmYy0+YXVnbWVudGF0aW9uKSAmJiBf
X2J1aWx0aW5fY29uc3RhbnRfcCAoImVoIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChmYy0+YXVn
bWVudGF0aW9uKSwgX19zMl9sZW4gPSBzdHJsZW4gKCJlaCIpLCAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKChmYy0+YXVnbWVudGF0aW9uKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShm
Yy0+YXVnbWVudGF0aW9uKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKCgiZWgiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZWgiKSA9
PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGZjLT5h
dWdtZW50YXRpb24pLCAoX19jb25zdCBjaGFyICopICgiZWgiKSwgKF9fczFfbGVuIDwgX19zMl9s
ZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChm
Yy0+YXVnbWVudGF0aW9uKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZmMtPmF1Z21lbnRh
dGlvbikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZmMtPmF1Z21lbnRhdGlvbikgPT0g
MSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChmYy0+YXVnbWVudGF0aW9uKSwgX19zMV9sZW4gPCA0
KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoImVoIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJlaCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJlaCIpID09IDEpID8gKF9f
ZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVswXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImVoIikpWzBdKTsgaWYgKF9f
czFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVsxXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlaCIpKVsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVnbWVudGF0aW9uKSlbMl0g
LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZWgiKSlbMl0p
OyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVsz
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJlaCIpKVsz
XSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l
ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZWgiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRpb24pKVswXSAtIF9fczJbMF0pOyBp
ZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZmMtPmF1Z21lbnRhdGlvbikpWzFd
IC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVn
bWVudGF0aW9uKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9
PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChmYy0+YXVnbWVudGF0aW9uKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZWgiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoImVoIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImVoIikgPT0gMSkgJiYgKF9f
czJfbGVuID0gc3RybGVuICgiZWgiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoZmMtPmF1Z21lbnRhdGlvbikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGZjLT5h
dWdtZW50YXRpb24pICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGZjLT5hdWdtZW50YXRp
b24pID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50YXRp
b24pKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoImVo
IikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5hdWdtZW50
YXRpb24pKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJlaCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChmYy0+YXVn
bWVudGF0aW9uKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopICgiZWgiKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGZjLT5h
dWdtZW50YXRpb24pKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKCJlaCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsg
X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChmYy0+YXVnbWVudGF0aW9uKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCJlaCIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
ICgiZWgiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlaCIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1
bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCJlaCIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoZmMtPmF1Z21lbnRh
dGlvbiwgImVoIikpKSk7IH0pID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBzdGFy
dCArPSBhZGRyX3NpemU7CiAgICAgICAgICAgICAgZmMtPmNvZGVfZmFjdG9yID0gcmVhZF9sZWIx
MjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwog
ICAgICAgICAgICAgIGZjLT5kYXRhX2ZhY3RvciA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAxKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBmYy0+
cmEgPSBieXRlX2dldCAoc3RhcnQsIDEpOyBzdGFydCArPSAxOwogICAgICAgICAgICB9CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmYy0+Y29kZV9mYWN0b3IgPSBy
ZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9y
ZXR1cm47CiAgICAgICAgICAgICAgZmMtPmRhdGFfZmFjdG9yID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgIGZjLT5yYSA9IGJ5dGVfZ2V0IChzdGFydCwgMSk7IHN0YXJ0ICs9IDE7CiAgICAgICAgICAg
IH0KICAgICAgICAgIGNpZSA9IGZjOwoKICAgICAgICAgIGlmIChkb19kZWJ1Z19mcmFtZXNfaW50
ZXJwKQogICAgICAgICAgICBwcmludGYgKCJcbiUwOGx4ICUwOGx4ICUwOGx4IENJRSBcIiVzXCIg
Y2Y9JWQgZGY9JWQgcmE9JWRcbiIsCiAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcp
KHNhdmVkX3N0YXJ0IC0gc2VjdGlvbl9zdGFydCksIGxlbmd0aCwgY2llX2lkLAogICAgICAgICAg
ICAgICAgICAgIGZjLT5hdWdtZW50YXRpb24sIGZjLT5jb2RlX2ZhY3RvciwgZmMtPmRhdGFfZmFj
dG9yLAogICAgICAgICAgICAgICAgICAgIGZjLT5yYSk7CiAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBwcmludGYgKCJcbiUwOGx4ICUwOGx4ICUwOGx4IENJRVxuIiwK
ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rp
b25fc3RhcnQpLCBsZW5ndGgsIGNpZV9pZCk7CiAgICAgICAgICAgICAgcHJpbnRmICgiICBWZXJz
aW9uOiAgICAgICAgICAgICAgICVkXG4iLCB2ZXJzaW9uKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgIEF1Z21lbnRhdGlvbjogICAgICAgICAgXCIlc1wiXG4iLCBmYy0+YXVnbWVudGF0aW9uKTsK
ICAgICAgICAgICAgICBwcmludGYgKCIgIENvZGUgYWxpZ25tZW50IGZhY3RvcjogJXVcbiIsIGZj
LT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgcHJpbnRmICgiICBEYXRhIGFsaWdubWVudCBm
YWN0b3I6ICVkXG4iLCBmYy0+ZGF0YV9mYWN0b3IpOwogICAgICAgICAgICAgIHByaW50ZiAoIiAg
UmV0dXJuIGFkZHJlc3MgY29sdW1uOiAlZFxuIiwgZmMtPnJhKTsKCiAgICAgICAgICAgICAgaWYg
KGF1Z21lbnRhdGlvbl9kYXRhX2xlbikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBpOwogICAgICAgICAgICAgICAgICBwcmludGYgKCIgIEF1Z21lbnRh
dGlvbiBkYXRhOiAgICAiKTsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGF1Z21l
bnRhdGlvbl9kYXRhX2xlbjsgKytpKQogICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAlMDJ4
IiwgYXVnbWVudGF0aW9uX2RhdGFbaV0pOwogICAgICAgICAgICAgICAgICBwdXRjaGFyICgnXG4n
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBwdXRjaGFyICgnXG4nKTsKICAgICAg
ICAgICAgfQoKICAgICAgICAgIGlmIChhdWdtZW50YXRpb25fZGF0YV9sZW4pCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpwLCAqcTsKICAgICAgICAgICAgICBwID0g
ZmMtPmF1Z21lbnRhdGlvbiArIDE7CiAgICAgICAgICAgICAgcSA9IGF1Z21lbnRhdGlvbl9kYXRh
OwoKICAgICAgICAgICAgICB3aGlsZSAoMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgaWYgKCpwID09ICdMJykKICAgICAgICAgICAgICAgICAgICBxKys7CiAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKCpwID09ICdQJykKICAgICAgICAgICAgICAgICAgICBxICs9IDEgKyBz
aXplX29mX2VuY29kZWRfdmFsdWUgKCpxKTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnAg
PT0gJ1InKQogICAgICAgICAgICAgICAgICAgIGZjLT5mZGVfZW5jb2RpbmcgPSAqcSsrOwogICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgIHArKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKGZjLT5mZGVf
ZW5jb2RpbmcpCiAgICAgICAgICAgICAgICBlbmNvZGVkX3B0cl9zaXplID0gc2l6ZV9vZl9lbmNv
ZGVkX3ZhbHVlIChmYy0+ZmRlX2VuY29kaW5nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIGZy
YW1lX25lZWRfc3BhY2UgKGZjLCBmYy0+cmEpOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
IHsKICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmxvb2tfZm9yOwogICAgICAgICAgc3RhdGljIEZy
YW1lX0NodW5rIGZkZV9mYzsKCiAgICAgICAgICBmYyA9ICYgZmRlX2ZjOwogICAgICAgICAgKF9f
ZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplb2YgKEZyYW1lX0NodW5rKSkg
JiYgKHNpemVvZiAoRnJhbWVfQ2h1bmspKSA8PSAxNiA/ICgoc2l6ZW9mIChGcmFtZV9DaHVuaykp
ID09IDEgPyAoeyB2b2lkICpfX3MgPSAoZmMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9IChfX3Vp
bnQ4X3QpIDA7IF9fczsgfSkgOiAoeyB2b2lkICpfX3MgPSAoZmMpOyB1bmlvbiB7IHVuc2lnbmVk
IGludCBfX3VpOyB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7IHVuc2lnbmVkIGNoYXIgX191Yzsg
fSAqX191ID0gX19zOyBfX3VpbnQ4X3QgX19jID0gKF9fdWludDhfdCkgKDApOyBzd2l0Y2ggKCh1
bnNpZ25lZCBpbnQpIChzaXplb2YgKEZyYW1lX0NodW5rKSkpIHsgY2FzZSAxNTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
NCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDc6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDM6IF9f
dS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikg
X19jOyBicmVhazsgY2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTA6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBj
YXNlIDY6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5zaWduZWQgc2hvcnQg
aW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkgPSBfX2MgKiAweDAx
MDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSA5OiBf
X3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAq
KSBfX3UgKyA0KTsgY2FzZSA1OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5z
aWduZWQgY2hhcikgX19jOyBicmVhazsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgwMTAx
MDEwMTsgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7IGNhc2UgMTI6IF9f
dS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOyBjYXNlIDg6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9fYyAq
IDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KSkgOiAoX19idWlsdGluX2NvbnN0
YW50X3AgKDApICYmICgwKSA9PSAnXDAnID8gKHsgdm9pZCAqX19zID0gKGZjKTsgX19idWlsdGlu
X21lbXNldCAoX19zLCAnXDAnLCBzaXplb2YgKEZyYW1lX0NodW5rKSk7IF9fczsgfSkgOiBtZW1z
ZXQgKGZjLCAwLCBzaXplb2YgKEZyYW1lX0NodW5rKSkpKSk7CgogICAgICAgICAgbG9va19mb3Ig
PSBpc19laCA/IHN0YXJ0IC0gNCAtIGNpZV9pZCA6IHNlY3Rpb25fc3RhcnQgKyBjaWVfaWQ7Cgog
ICAgICAgICAgZm9yIChjaWUgPSBjaHVua3M7IGNpZSA7IGNpZSA9IGNpZS0+bmV4dCkKICAgICAg
ICAgICAgaWYgKGNpZS0+Y2h1bmtfc3RhcnQgPT0gbG9va19mb3IpCiAgICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgICAgaWYgKCFjaWUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB3YXJu
ICgiSW52YWxpZCBDSUUgcG9pbnRlciAlMDhseCBpbiBGREUgYXQgJTA4bHhcbiIsCiAgICAgICAg
ICAgICAgICAgICAgY2llX2lkLCBzYXZlZF9zdGFydCk7CiAgICAgICAgICAgICAgc3RhcnQgPSBi
bG9ja19lbmQ7CiAgICAgICAgICAgICAgZmMtPm5jb2xzID0gMDsKICAgICAgICAgICAgICBmYy0+
Y29sX3R5cGUgPSAoc2hvcnQgaW50ICopIHhtYWxsb2MgKHNpemVvZiAoc2hvcnQgaW50KSk7CiAg
ICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXQgPSAoaW50ICopIHhtYWxsb2MgKHNpemVvZiAoaW50
KSk7CiAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIG1heF9yZWdzIC0gMSk7CiAg
ICAgICAgICAgICAgY2llID0gZmM7CiAgICAgICAgICAgICAgZmMtPmF1Z21lbnRhdGlvbiA9ICIi
OwogICAgICAgICAgICAgIGZjLT5mZGVfZW5jb2RpbmcgPSAwOwogICAgICAgICAgICB9CiAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmYy0+bmNvbHMgPSBjaWUtPm5j
b2xzOwogICAgICAgICAgICAgIGZjLT5jb2xfdHlwZSA9IChzaG9ydCBpbnQgKikgeG1hbGxvYyAo
ZmMtPm5jb2xzICogc2l6ZW9mIChzaG9ydCBpbnQpKTsKICAgICAgICAgICAgICBmYy0+Y29sX29m
ZnNldCA9IChpbnQgKikgeG1hbGxvYyAoZmMtPm5jb2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAg
ICAgICAgICBtZW1jcHkgKGZjLT5jb2xfdHlwZSwgY2llLT5jb2xfdHlwZSwgZmMtPm5jb2xzICog
c2l6ZW9mIChzaG9ydCBpbnQpKTsKICAgICAgICAgICAgICBtZW1jcHkgKGZjLT5jb2xfb2Zmc2V0
LCBjaWUtPmNvbF9vZmZzZXQsIGZjLT5uY29scyAqIHNpemVvZiAoaW50KSk7CiAgICAgICAgICAg
ICAgZmMtPmF1Z21lbnRhdGlvbiA9IGNpZS0+YXVnbWVudGF0aW9uOwogICAgICAgICAgICAgIGZj
LT5jb2RlX2ZhY3RvciA9IGNpZS0+Y29kZV9mYWN0b3I7CiAgICAgICAgICAgICAgZmMtPmRhdGFf
ZmFjdG9yID0gY2llLT5kYXRhX2ZhY3RvcjsKICAgICAgICAgICAgICBmYy0+Y2ZhX3JlZyA9IGNp
ZS0+Y2ZhX3JlZzsKICAgICAgICAgICAgICBmYy0+Y2ZhX29mZnNldCA9IGNpZS0+Y2ZhX29mZnNl
dDsKICAgICAgICAgICAgICBmYy0+cmEgPSBjaWUtPnJhOwogICAgICAgICAgICAgIGZyYW1lX25l
ZWRfc3BhY2UgKGZjLCBtYXhfcmVncy0xKTsKICAgICAgICAgICAgICBmYy0+ZmRlX2VuY29kaW5n
ID0gY2llLT5mZGVfZW5jb2Rpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoZmMtPmZk
ZV9lbmNvZGluZykKICAgICAgICAgICAgZW5jb2RlZF9wdHJfc2l6ZSA9IHNpemVfb2ZfZW5jb2Rl
ZF92YWx1ZSAoZmMtPmZkZV9lbmNvZGluZyk7CgogICAgICAgICAgZmMtPnBjX2JlZ2luID0gYnl0
ZV9nZXQgKHN0YXJ0LCBlbmNvZGVkX3B0cl9zaXplKTsKICAgICAgICAgIGlmICgoZmMtPmZkZV9l
bmNvZGluZyAmIDB4NzApID09IDB4MTApCiAgICAgICAgICAgIGZjLT5wY19iZWdpbiArPSBzZWN0
aW9uLT5zaF9hZGRyICsgKHN0YXJ0IC0gc2VjdGlvbl9zdGFydCk7CiAgICAgICAgICBzdGFydCAr
PSBlbmNvZGVkX3B0cl9zaXplOwogICAgICAgICAgZmMtPnBjX3JhbmdlID0gYnl0ZV9nZXQgKHN0
YXJ0LCBlbmNvZGVkX3B0cl9zaXplKTsKICAgICAgICAgIHN0YXJ0ICs9IGVuY29kZWRfcHRyX3Np
emU7CgogICAgICAgICAgaWYgKGNpZS0+YXVnbWVudGF0aW9uWzBdID09ICd6JykKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIGF1Z21lbnRhdGlvbl9kYXRhX2xlbiA9IHJlYWRfbGViMTI4IChz
dGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAg
ICAgICAgICBhdWdtZW50YXRpb25fZGF0YSA9IHN0YXJ0OwogICAgICAgICAgICAgIHN0YXJ0ICs9
IGF1Z21lbnRhdGlvbl9kYXRhX2xlbjsKICAgICAgICAgICAgfQoKICAgICAgICAgIHByaW50ZiAo
IlxuJTA4bHggJTA4bHggJTA4bHggRkRFIGNpZT0lMDhseCBwYz0lMDhseC4uJTA4bHhcbiIsCiAg
ICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShzYXZlZF9zdGFydCAtIHNlY3Rpb25fc3Rh
cnQpLCBsZW5ndGgsIGNpZV9pZCwKICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKGNp
ZS0+Y2h1bmtfc3RhcnQgLSBzZWN0aW9uX3N0YXJ0KSwKICAgICAgICAgICAgICAgICAgZmMtPnBj
X2JlZ2luLCBmYy0+cGNfYmVnaW4gKyBmYy0+cGNfcmFuZ2UpOwogICAgICAgICAgaWYgKCEgZG9f
ZGVidWdfZnJhbWVzX2ludGVycCAmJiBhdWdtZW50YXRpb25fZGF0YV9sZW4pCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGk7CiAgICAgICAgICAgICAgcHJpbnRmICgi
ICBBdWdtZW50YXRpb24gZGF0YTogICAgIik7CiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IGF1Z21lbnRhdGlvbl9kYXRhX2xlbjsgKytpKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICUw
MngiLCBhdWdtZW50YXRpb25fZGF0YVtpXSk7CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7
CiAgICAgICAgICAgICAgcHV0Y2hhciAoJ1xuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoK
CgogICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICB7CgoKICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgKnRtcCA9IHN0YXJ0OwoKICAgICAgICAgIHdoaWxlIChzdGFydCA8IGJs
b2NrX2VuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHVuc2lnbmVkIG9wLCBvcGE7CiAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByZWc7CgogICAgICAgICAgICAgIG9wID0gKnN0YXJ0
Kys7CiAgICAgICAgICAgICAgb3BhID0gb3AgJiAweDNmOwogICAgICAgICAgICAgIGlmIChvcCAm
IDB4YzApCiAgICAgICAgICAgICAgICBvcCAmPSAweGMwOwoKCgogICAgICAgICAgICAgIHN3aXRj
aCAob3ApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZh
bmNlX2xvYzoKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERX
X0NGQV9vZmZzZXQ6CiAgICAgICAgICAgICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAg
ZnJhbWVfbmVlZF9zcGFjZSAoZmMsIG9wYSk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlw
ZVtvcGFdID0gRFdfQ0ZBX3VuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICBjYXNlIERXX0NGQV9yZXN0b3JlOgogICAgICAgICAgICAgICAgICBmcmFtZV9u
ZWVkX3NwYWNlIChmYywgb3BhKTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW29wYV0g
PSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX3NldF9sb2M6CiAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGVuY29k
ZWRfcHRyX3NpemU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2Fz
ZSBEV19DRkFfYWR2YW5jZV9sb2MxOgogICAgICAgICAgICAgICAgICBzdGFydCArPSAxOwogICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2FkdmFuY2Vf
bG9jMjoKICAgICAgICAgICAgICAgICAgc3RhcnQgKz0gMjsKICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xvYzQ6CiAgICAgICAgICAg
ICAgICAgIHN0YXJ0ICs9IDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkOgogICAgICAgICAgICAgICAgICByZWcgPSBy
ZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9y
ZXR1cm47IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0g
bGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJl
Zyk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZBX3VuZGVmaW5l
ZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9y
ZXN0b3JlX2V4dGVuZGVkOgogICAgICAgICAgICAgICAgICByZWcgPSByZWFkX2xlYjEyOCAoc3Rh
cnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAg
ICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2UgKGZjLCByZWcpOwogICAgICAgICAgICAgICAgICBm
Yy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV91bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgY2FzZSBEV19DRkFfdW5kZWZpbmVkOgogICAgICAgICAgICAg
ICAgICByZWcgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0
ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2UgKGZj
LCByZWcpOwogICAgICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV91bmRl
ZmluZWQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSBEV19D
RkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICAgICAgcmVnID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcmVnKTsKICAgICAgICAgICAgICAgICAgZmMt
PmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVyOgogICAgICAgICAgICAgICAg
ICByZWcgPSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9
IGxlbmd0aF9yZXR1cm47IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsg
c3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgZnJhbWVfbmVlZF9zcGFj
ZSAoZmMsIHJlZyk7CiAgICAgICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZB
X3VuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNl
IERXX0NGQV9kZWZfY2ZhOgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYg
bGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47IHJlYWRfbGViMTI4IChz
dGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIERXX0NGQV9kZWZfY2ZhX3Jl
Z2lzdGVyOgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3Jl
dHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9vZmZzZXQ6CiAgICAgICAgICAg
ICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0g
bGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlIERXX0NGQV9vZmZzZXRfZXh0ZW5kZWRfc2Y6CiAgICAgICAgICAgICAgICAgIHJlZyA9IHJl
YWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3Jl
dHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBs
ZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywgcmVn
KTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVk
OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2Rl
Zl9jZmFfc2Y6CiAgICAgICAgICAgICAgICAgIHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhf
cmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAm
IGxlbmd0aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0X3Nm
OgogICAgICAgICAgICAgICAgICByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwg
MSk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgY2FzZSBEV19DRkFfR05VX2FyZ3Nfc2l6ZToKICAgICAgICAgICAgICAgICAg
cmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhf
cmV0dXJuOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgRFdf
Q0ZBX0dOVV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQ6CiAgICAgICAgICAgICAgICAgIHJlZyA9
IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3Ro
X3JldHVybjsgcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCAr
PSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgICAgICBmcmFtZV9uZWVkX3NwYWNlIChmYywg
cmVnKTsKICAgICAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZp
bmVkOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBzdGFydCA9IHRtcDsKICAg
ICAgICB9CgoKCgogICAgICB3aGlsZSAoc3RhcnQgPCBibG9ja19lbmQpCiAgICAgICAgewogICAg
ICAgICAgdW5zaWduZWQgb3AsIG9wYTsKICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdWwsIHJlZywg
cm9mZnM7CiAgICAgICAgICBsb25nIGwsIG9mczsKICAgICAgICAgIGJmZF92bWEgdm1hOwoKICAg
ICAgICAgIG9wID0gKnN0YXJ0Kys7CiAgICAgICAgICBvcGEgPSBvcCAmIDB4M2Y7CiAgICAgICAg
ICBpZiAob3AgJiAweGMwKQogICAgICAgICAgICBvcCAmPSAweGMwOwoKCgogICAgICAgICAgc3dp
dGNoIChvcCkKICAgICAgICAgICAgewogICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xv
YzoKICAgICAgICAgICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIGZyYW1lX2Rpc3BsYXlfcm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7
CiAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfYWR2
YW5jZV9sb2M6ICVkIHRvICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBvcGEgKiBm
Yy0+Y29kZV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGZjLT5wY19iZWdpbiArIG9w
YSAqIGZjLT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPnBjX2JlZ2luICs9IG9wYSAq
IGZjLT5jb2RlX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2Ug
RFdfQ0ZBX29mZnNldDoKICAgICAgICAgICAgICByb2ZmcyA9IHJlYWRfbGViMTI4IChzdGFydCwg
JiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAg
ICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgi
ICBEV19DRkFfb2Zmc2V0OiByJWQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgb3BhLCByb2ZmcyAqIGZjLT5kYXRhX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPmNvbF90
eXBlW29wYV0gPSBEV19DRkFfb2Zmc2V0OwogICAgICAgICAgICAgIGZjLT5jb2xfb2Zmc2V0W29w
YV0gPSByb2ZmcyAqIGZjLT5kYXRhX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAg
ICAgICAgIGNhc2UgRFdfQ0ZBX3Jlc3RvcmU6CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdf
ZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3Jlc3RvcmU6
IHIlZFxuIiwgb3BhKTsKICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbb3BhXSA9IGNpZS0+Y29s
X3R5cGVbb3BhXTsKICAgICAgICAgICAgICBmYy0+Y29sX29mZnNldFtvcGFdID0gY2llLT5jb2xf
b2Zmc2V0W29wYV07CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NG
QV9zZXRfbG9jOgogICAgICAgICAgICAgIHZtYSA9IGJ5dGVfZ2V0IChzdGFydCwgZW5jb2RlZF9w
dHJfc2l6ZSk7CiAgICAgICAgICAgICAgaWYgKChmYy0+ZmRlX2VuY29kaW5nICYgMHg3MCkgPT0g
MHgxMCkKICAgICAgICAgICAgICAgIHZtYSArPSBzZWN0aW9uLT5zaF9hZGRyICsgKHN0YXJ0IC0g
c2VjdGlvbl9zdGFydCk7CiAgICAgICAgICAgICAgc3RhcnQgKz0gZW5jb2RlZF9wdHJfc2l6ZTsK
ICAgICAgICAgICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAg
IGZyYW1lX2Rpc3BsYXlfcm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7CiAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfc2V0X2xv
YzogJTA4bHhcbiIsICh1bnNpZ25lZCBsb25nKXZtYSk7CiAgICAgICAgICAgICAgZmMtPnBjX2Jl
Z2luID0gdm1hOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFf
YWR2YW5jZV9sb2MxOgogICAgICAgICAgICAgIG9mcyA9IGJ5dGVfZ2V0IChzdGFydCwgMSk7IHN0
YXJ0ICs9IDE7CiAgICAgICAgICAgICAgaWYgKGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAg
ICAgICAgICAgICBmcmFtZV9kaXNwbGF5X3JvdyAoZmMsICZuZWVkX2NvbF9oZWFkZXJzLCAmbWF4
X3JlZ3MpOwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdf
Q0ZBX2FkdmFuY2VfbG9jMTogJWxkIHRvICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICBvZnMgKiBmYy0+Y29kZV9mYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGZjLT5wY19i
ZWdpbiArIG9mcyAqIGZjLT5jb2RlX2ZhY3Rvcik7CiAgICAgICAgICAgICAgZmMtPnBjX2JlZ2lu
ICs9IG9mcyAqIGZjLT5jb2RlX2ZhY3RvcjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jMjoKICAgICAgICAgICAgICBvZnMgPSBieXRlX2dl
dCAoc3RhcnQsIDIpOyBzdGFydCArPSAyOwogICAgICAgICAgICAgIGlmIChkb19kZWJ1Z19mcmFt
ZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgZnJhbWVfZGlzcGxheV9yb3cgKGZjLCAmbmVlZF9j
b2xfaGVhZGVycywgJm1heF9yZWdzKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICBwcmludGYgKCIgIERXX0NGQV9hZHZhbmNlX2xvYzI6ICVsZCB0byAlMDhseFxuIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgb2ZzICogZmMtPmNvZGVfZmFjdG9yLAogICAgICAgICAgICAgICAg
ICAgICAgICBmYy0+cGNfYmVnaW4gKyBvZnMgKiBmYy0+Y29kZV9mYWN0b3IpOwogICAgICAgICAg
ICAgIGZjLT5wY19iZWdpbiArPSBvZnMgKiBmYy0+Y29kZV9mYWN0b3I7CiAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NGQV9hZHZhbmNlX2xvYzQ6CiAgICAgICAgICAg
ICAgb2ZzID0gYnl0ZV9nZXQgKHN0YXJ0LCA0KTsgc3RhcnQgKz0gNDsKICAgICAgICAgICAgICBp
ZiAoZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIGZyYW1lX2Rpc3BsYXlf
cm93IChmYywgJm5lZWRfY29sX2hlYWRlcnMsICZtYXhfcmVncyk7CiAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfYWR2YW5jZV9sb2M0OiAlbGQgdG8g
JTA4bHhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9mcyAqIGZjLT5jb2RlX2ZhY3RvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgZmMtPnBjX2JlZ2luICsgb2ZzICogZmMtPmNvZGVfZmFj
dG9yKTsKICAgICAgICAgICAgICBmYy0+cGNfYmVnaW4gKz0gb2ZzICogZmMtPmNvZGVfZmFjdG9y
OwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4
dGVuZGVkOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhf
cmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICByb2ZmcyA9
IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3Ro
X3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAg
ICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkOiByJWxkIGF0IGNm
YSUrbGRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZywgcm9mZnMgKiBmYy0+ZGF0YV9m
YWN0b3IpOwogICAgICAgICAgICAgIGZjLT5jb2xfdHlwZVtyZWddID0gRFdfQ0ZBX29mZnNldDsK
ICAgICAgICAgICAgICBmYy0+Y29sX29mZnNldFtyZWddID0gcm9mZnMgKiBmYy0+ZGF0YV9mYWN0
b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NGQV9yZXN0b3Jl
X2V4dGVuZGVkOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAo
ISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19D
RkFfcmVzdG9yZV9leHRlbmRlZDogciVsZFxuIiwgcmVnKTsKICAgICAgICAgICAgICBmYy0+Y29s
X3R5cGVbcmVnXSA9IGNpZS0+Y29sX3R5cGVbcmVnXTsKICAgICAgICAgICAgICBmYy0+Y29sX29m
ZnNldFtyZWddID0gY2llLT5jb2xfb2Zmc2V0W3JlZ107CiAgICAgICAgICAgICAgYnJlYWs7Cgog
ICAgICAgICAgICBjYXNlIERXX0NGQV91bmRlZmluZWQ6CiAgICAgICAgICAgICAgcmVnID0gcmVh
ZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0
dXJuOwogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAg
ICAgICAgICBwcmludGYgKCIgIERXX0NGQV91bmRlZmluZWQ6IHIlbGRcbiIsIHJlZyk7CiAgICAg
ICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfdW5kZWZpbmVkOwogICAgICAgICAg
ICAgIGZjLT5jb2xfb2Zmc2V0W3JlZ10gPSAwOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAg
ICAgICAgY2FzZSBEV19DRkFfc2FtZV92YWx1ZToKICAgICAgICAgICAgICByZWcgPSByZWFkX2xl
YjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47
CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3NhbWVfdmFsdWU6IHIlbGRcbiIsIHJlZyk7CiAgICAgICAg
ICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFfc2FtZV92YWx1ZTsKICAgICAgICAgICAg
ICBmYy0+Y29sX29mZnNldFtyZWddID0gMDsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAg
ICAgIGNhc2UgRFdfQ0ZBX3JlZ2lzdGVyOgogICAgICAgICAgICAgIHJlZyA9IHJlYWRfbGViMTI4
IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAg
ICAgICAgICAgICByb2ZmcyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAw
KTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19m
cmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfcmVnaXN0ZXI6
IHIlbGRcbiIsIHJlZyk7CiAgICAgICAgICAgICAgZmMtPmNvbF90eXBlW3JlZ10gPSBEV19DRkFf
cmVnaXN0ZXI7CiAgICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXRbcmVnXSA9IHJvZmZzOwogICAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfcmVtZW1iZXJfc3RhdGU6
CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAg
ICAgIHByaW50ZiAoIiAgRFdfQ0ZBX3JlbWVtYmVyX3N0YXRlXG4iKTsKICAgICAgICAgICAgICBy
cyA9IChGcmFtZV9DaHVuayAqKSB4bWFsbG9jIChzaXplb2YgKEZyYW1lX0NodW5rKSk7CiAgICAg
ICAgICAgICAgcnMtPm5jb2xzID0gZmMtPm5jb2xzOwogICAgICAgICAgICAgIHJzLT5jb2xfdHlw
ZSA9IChzaG9ydCBpbnQgKikgeG1hbGxvYyAocnMtPm5jb2xzICogc2l6ZW9mIChzaG9ydCBpbnQp
KTsKICAgICAgICAgICAgICBycy0+Y29sX29mZnNldCA9IChpbnQgKikgeG1hbGxvYyAocnMtPm5j
b2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAgICAgICAgICBtZW1jcHkgKHJzLT5jb2xfdHlwZSwg
ZmMtPmNvbF90eXBlLCBycy0+bmNvbHMpOwogICAgICAgICAgICAgIG1lbWNweSAocnMtPmNvbF9v
ZmZzZXQsIGZjLT5jb2xfb2Zmc2V0LCBycy0+bmNvbHMgKiBzaXplb2YgKGludCkpOwogICAgICAg
ICAgICAgIHJzLT5uZXh0ID0gcmVtZW1iZXJlZF9zdGF0ZTsKICAgICAgICAgICAgICByZW1lbWJl
cmVkX3N0YXRlID0gcnM7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERX
X0NGQV9yZXN0b3JlX3N0YXRlOgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19p
bnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9yZXN0b3JlX3N0YXRlXG4i
KTsKICAgICAgICAgICAgICBycyA9IHJlbWVtYmVyZWRfc3RhdGU7CiAgICAgICAgICAgICAgcmVt
ZW1iZXJlZF9zdGF0ZSA9IHJzLT5uZXh0OwogICAgICAgICAgICAgIGZyYW1lX25lZWRfc3BhY2Ug
KGZjLCBycy0+bmNvbHMtMSk7CiAgICAgICAgICAgICAgbWVtY3B5IChmYy0+Y29sX3R5cGUsIHJz
LT5jb2xfdHlwZSwgcnMtPm5jb2xzKTsKICAgICAgICAgICAgICBtZW1jcHkgKGZjLT5jb2xfb2Zm
c2V0LCBycy0+Y29sX29mZnNldCwgcnMtPm5jb2xzICogc2l6ZW9mIChpbnQpKTsKICAgICAgICAg
ICAgICBmcmVlIChycy0+Y29sX3R5cGUpOwogICAgICAgICAgICAgIGZyZWUgKHJzLT5jb2xfb2Zm
c2V0KTsKICAgICAgICAgICAgICBmcmVlIChycyk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBjYXNlIERXX0NGQV9kZWZfY2ZhOgogICAgICAgICAgICAgIGZjLT5jZmFfcmVnID0g
cmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhf
cmV0dXJuOwogICAgICAgICAgICAgIGZjLT5jZmFfb2Zmc2V0ID0gcmVhZF9sZWIxMjggKHN0YXJ0
LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAg
ICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYg
KCIgIERXX0NGQV9kZWZfY2ZhOiByJWQgb2ZzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAg
ICBmYy0+Y2ZhX3JlZywgZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcjoKICAgICAgICAgICAgICBmYy0+
Y2ZhX3JlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQg
Kz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAoISBkb19kZWJ1Z19mcmFtZXNfaW50
ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19DRkFfZGVmX2NmYV9yZWc6IHIlZFxu
IiwgZmMtPmNmYV9yZWcpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19DRkFfZGVmX2NmYV9vZmZzZXQ6CiAgICAgICAgICAgICAgZmMtPmNmYV9vZmZzZXQgPSByZWFk
X2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1
cm47CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAg
ICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0OiAlZFxuIiwgZmMtPmNmYV9v
ZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfbm9w
OgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAg
ICAgICBwcmludGYgKCIgIERXX0NGQV9ub3BcbiIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAg
ICAgICAgICAgY2FzZSBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkX3NmOgogICAgICAgICAgICAgIHJl
ZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVu
Z3RoX3JldHVybjsKICAgICAgICAgICAgICBsID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0
aF9yZXR1cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgIGZyYW1l
X25lZWRfc3BhY2UgKGZjLCByZWcpOwogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1l
c19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9vZmZzZXRfZXh0ZW5k
ZWRfc2Y6IHIlbGQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgcmVnLCBs
ICogZmMtPmRhdGFfZmFjdG9yKTsKICAgICAgICAgICAgICBmYy0+Y29sX3R5cGVbcmVnXSA9IERX
X0NGQV9vZmZzZXQ7CiAgICAgICAgICAgICAgZmMtPmNvbF9vZmZzZXRbcmVnXSA9IGwgKiBmYy0+
ZGF0YV9mYWN0b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIERXX0NG
QV9kZWZfY2ZhX3NmOgogICAgICAgICAgICAgIGZjLT5jZmFfcmVnID0gcmVhZF9sZWIxMjggKHN0
YXJ0LCAmIGxlbmd0aF9yZXR1cm4sIDApOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAg
ICAgICAgIGZjLT5jZmFfb2Zmc2V0ID0gcmVhZF9sZWIxMjggKHN0YXJ0LCAmIGxlbmd0aF9yZXR1
cm4sIDEpOyBzdGFydCArPSBsZW5ndGhfcmV0dXJuOwogICAgICAgICAgICAgIGlmICghIGRvX2Rl
YnVnX2ZyYW1lc19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9kZWZf
Y2ZhX3NmOiByJWQgb2ZzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICBmYy0+Y2ZhX3Jl
ZywgZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2Fz
ZSBEV19DRkFfZGVmX2NmYV9vZmZzZXRfc2Y6CiAgICAgICAgICAgICAgZmMtPmNmYV9vZmZzZXQg
PSByZWFkX2xlYjEyOCAoc3RhcnQsICYgbGVuZ3RoX3JldHVybiwgMSk7IHN0YXJ0ICs9IGxlbmd0
aF9yZXR1cm47CiAgICAgICAgICAgICAgaWYgKCEgZG9fZGVidWdfZnJhbWVzX2ludGVycCkKICAg
ICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0X3NmOiAlZFxuIiwg
ZmMtPmNmYV9vZmZzZXQpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBE
V19DRkFfR05VX3dpbmRvd19zYXZlOgogICAgICAgICAgICAgIGlmICghIGRvX2RlYnVnX2ZyYW1l
c19pbnRlcnApCiAgICAgICAgICAgICAgICBwcmludGYgKCIgIERXX0NGQV9HTlVfd2luZG93X3Nh
dmVcbiIpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfR05V
X2FyZ3Nfc2l6ZToKICAgICAgICAgICAgICB1bCA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5n
dGhfcmV0dXJuLCAwKTsgc3RhcnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBpZiAo
ISBkb19kZWJ1Z19mcmFtZXNfaW50ZXJwKQogICAgICAgICAgICAgICAgcHJpbnRmICgiICBEV19D
RkFfR05VX2FyZ3Nfc2l6ZTogJWxkXG4iLCB1bCk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAg
ICAgICAgICBjYXNlIERXX0NGQV9HTlVfbmVnYXRpdmVfb2Zmc2V0X2V4dGVuZGVkOgogICAgICAg
ICAgICAgIHJlZyA9IHJlYWRfbGViMTI4IChzdGFydCwgJiBsZW5ndGhfcmV0dXJuLCAwKTsgc3Rh
cnQgKz0gbGVuZ3RoX3JldHVybjsKICAgICAgICAgICAgICBsID0gLSByZWFkX2xlYjEyOCAoc3Rh
cnQsICYgbGVuZ3RoX3JldHVybiwgMCk7IHN0YXJ0ICs9IGxlbmd0aF9yZXR1cm47CiAgICAgICAg
ICAgICAgZnJhbWVfbmVlZF9zcGFjZSAoZmMsIHJlZyk7CiAgICAgICAgICAgICAgaWYgKCEgZG9f
ZGVidWdfZnJhbWVzX2ludGVycCkKICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgRFdfQ0ZBX0dO
VV9uZWdhdGl2ZV9vZmZzZXRfZXh0ZW5kZWQ6IHIlbGQgYXQgY2ZhJStsZFxuIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgcmVnLCBsICogZmMtPmRhdGFfZmFjdG9yKTsKICAgICAgICAgICAgICBm
Yy0+Y29sX3R5cGVbcmVnXSA9IERXX0NGQV9vZmZzZXQ7CiAgICAgICAgICAgICAgZmMtPmNvbF9v
ZmZzZXRbcmVnXSA9IGwgKiBmYy0+ZGF0YV9mYWN0b3I7CiAgICAgICAgICAgICAgYnJlYWs7CgoK
ICAgICAgICAgICAgY2FzZSBEV19DRkFfZGVmX2NmYV9leHByZXNzaW9uOgogICAgICAgICAgICAg
IGZwcmludGYgKHN0ZGVyciwgInVuc3VwcG9ydGVkIERXX0NGQV9kZWZfY2ZhX2V4cHJlc3Npb25c
biIpOwogICAgICAgICAgICAgIHN0YXJ0ID0gYmxvY2tfZW5kOwogICAgICAgICAgICAgIGJyZWFr
OwoKICAgICAgICAgICAgY2FzZSBEV19DRkFfZXhwcmVzc2lvbjoKICAgICAgICAgICAgICBmcHJp
bnRmIChzdGRlcnIsICJ1bnN1cHBvcnRlZCBEV19DRkFfZXhwcmVzc2lvblxuIik7CiAgICAgICAg
ICAgICAgc3RhcnQgPSBibG9ja19lbmQ7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgInVuc3VwcG9ydGVkIG9y
IHVua25vd24gRFdfQ0ZBXyVkXG4iLCBvcCk7CiAgICAgICAgICAgICAgc3RhcnQgPSBibG9ja19l
bmQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBpZiAoZG9fZGVidWdfZnJhbWVzX2lu
dGVycCkKICAgICAgICBmcmFtZV9kaXNwbGF5X3JvdyAoZmMsICZuZWVkX2NvbF9oZWFkZXJzLCAm
bWF4X3JlZ3MpOwoKICAgICAgc3RhcnQgPSBibG9ja19lbmQ7CiAgICB9CgogIHByaW50ZiAoIlxu
Iik7CgogIHJldHVybiAxOwp9CgoKCgoKc3RhdGljIGludApkaXNwbGF5X2RlYnVnX25vdF9zdXBw
b3J0ZWQgKHNlY3Rpb24sIHN0YXJ0LCBmaWxlKQogICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0
aW9uOwogICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0IF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9f
KSk7CiAgICAgRklMRSAqZmlsZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpOwp7CiAgcHJp
bnRmICgoIkRpc3BsYXlpbmcgdGhlIGRlYnVnIGNvbnRlbnRzIG9mIHNlY3Rpb24gJXMgaXMgbm90
IHlldCBzdXBwb3J0ZWQuXG4iKSwKICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikw
KSA/ICI8bm9uZT4iIDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3Ro
ID8gIjxjb3JydXB0PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSk7Cgog
IHJldHVybiAxOwp9CgoKCgpzdGF0aWMgaW50CnByZXNjYW5fZGVidWdfaW5mbyAoc2VjdGlvbiwg
c3RhcnQsIGZpbGUpCiAgICAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb24gX19hdHRyaWJ1dGVf
XyAoKF9fdW51c2VkX18pKTsKICAgICB1bnNpZ25lZCBjaGFyICpzdGFydDsKICAgICBGSUxFICpm
aWxlIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CnsKICBEV0FSRjJfRXh0ZXJuYWxfQ29t
cFVuaXQgKmV4dGVybmFsOwoKICBleHRlcm5hbCA9IChEV0FSRjJfRXh0ZXJuYWxfQ29tcFVuaXQg
Kikgc3RhcnQ7CgogIGRlYnVnX2xpbmVfcG9pbnRlcl9zaXplID0gYnl0ZV9nZXQgKGV4dGVybmFs
LT5jdV9wb2ludGVyX3NpemUsIHNpemVvZiAoZXh0ZXJuYWwtPmN1X3BvaW50ZXJfc2l6ZSkpOwog
IHJldHVybiAwOwp9CgoKCgoKc3RydWN0CnsKICBjb25zdCBjaGFyICpjb25zdCBuYW1lOwogIGlu
dCAoKmRpc3BsYXkpIChFbGZfSW50ZXJuYWxfU2hkciAqLCB1bnNpZ25lZCBjaGFyICosIEZJTEUg
Kik7CiAgaW50ICgqcHJlc2NhbikgKEVsZl9JbnRlcm5hbF9TaGRyICosIHVuc2lnbmVkIGNoYXIg
KiwgRklMRSAqKTsKfQpkZWJ1Z19kaXNwbGF5c1tdID0KewogIHsgIi5kZWJ1Z19hYmJyZXYiLCBk
aXNwbGF5X2RlYnVnX2FiYnJldiwgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfYXJhbmdlcyIs
IGRpc3BsYXlfZGVidWdfYXJhbmdlcywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfZnJhbWUi
LCBkaXNwbGF5X2RlYnVnX2ZyYW1lcywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfaW5mbyIs
IGRpc3BsYXlfZGVidWdfaW5mbywgcHJlc2Nhbl9kZWJ1Z19pbmZvIH0sCiAgeyAiLmRlYnVnX2xp
bmUiLCBkaXNwbGF5X2RlYnVnX2xpbmVzLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z19wdWJu
YW1lcyIsIGRpc3BsYXlfZGVidWdfcHVibmFtZXMsICgodm9pZCAqKTApIH0sCiAgeyAiLmVoX2Zy
YW1lIiwgZGlzcGxheV9kZWJ1Z19mcmFtZXMsICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVnX21h
Y2luZm8iLCBkaXNwbGF5X2RlYnVnX21hY2luZm8sICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVn
X3N0ciIsIGRpc3BsYXlfZGVidWdfc3RyLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z19sb2Mi
LCBkaXNwbGF5X2RlYnVnX2xvYywgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfcHVidHlwZXMi
LCBkaXNwbGF5X2RlYnVnX25vdF9zdXBwb3J0ZWQsICgodm9pZCAqKTApIH0sCiAgeyAiLmRlYnVn
X3JhbmdlcyIsIGRpc3BsYXlfZGVidWdfbm90X3N1cHBvcnRlZCwgKCh2b2lkICopMCkgfSwKICB7
ICIuZGVidWdfc3RhdGljX2Z1bmMiLCBkaXNwbGF5X2RlYnVnX25vdF9zdXBwb3J0ZWQsICgodm9p
ZCAqKTApIH0sCiAgeyAiLmRlYnVnX3N0YXRpY192YXJzIiwgZGlzcGxheV9kZWJ1Z19ub3Rfc3Vw
cG9ydGVkLCAoKHZvaWQgKikwKSB9LAogIHsgIi5kZWJ1Z190eXBlcyIsIGRpc3BsYXlfZGVidWdf
bm90X3N1cHBvcnRlZCwgKCh2b2lkICopMCkgfSwKICB7ICIuZGVidWdfd2Vha25hbWVzIiwgZGlz
cGxheV9kZWJ1Z19ub3Rfc3VwcG9ydGVkLCAoKHZvaWQgKikwKSB9Cn07CgpzdGF0aWMgaW50CmRp
c3BsYXlfZGVidWdfc2VjdGlvbiAoc2VjdGlvbiwgZmlsZSkKICAgICBFbGZfSW50ZXJuYWxfU2hk
ciAqc2VjdGlvbjsKICAgICBGSUxFICpmaWxlOwp7CiAgY2hhciAqbmFtZSA9ICgoc2VjdGlvbikg
PT0gKCh2b2lkICopMCkgPyAiPG5vbmU+IiA6ICgoc2VjdGlvbiktPnNoX25hbWUgPj0gc3RyaW5n
X3RhYmxlX2xlbmd0aCA/ICI8Y29ycnVwdD4iIDogc3RyaW5nX3RhYmxlICsgKHNlY3Rpb24pLT5z
aF9uYW1lKSk7CiAgYmZkX3NpemVfdHlwZSBsZW5ndGg7CiAgdW5zaWduZWQgY2hhciAqc3RhcnQ7
CiAgaW50IGk7CgogIGxlbmd0aCA9IHNlY3Rpb24tPnNoX3NpemU7CiAgaWYgKGxlbmd0aCA9PSAw
KQogICAgewogICAgICBwcmludGYgKCgiXG5TZWN0aW9uICclcycgaGFzIG5vIGRlYnVnZ2luZyBk
YXRhLlxuIiksIG5hbWUpOwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgc3RhcnQgPSAodW5zaWdu
ZWQgY2hhciAqKSBnZXRfZGF0YSAoKCh2b2lkICopMCksIGZpbGUsIHNlY3Rpb24tPnNoX29mZnNl
dCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZGVidWcg
c2VjdGlvbiBkYXRhIikpOwogIGlmICghc3RhcnQpCiAgICByZXR1cm4gMDsKCgogIGlmICgoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKDE3KSAmJiAoKF9fYnVpbHRpbl9jb25z
dGFudF9wIChuYW1lKSAmJiBzdHJsZW4gKG5hbWUpIDwgKChzaXplX3QpICgxNykpKSB8fCAoX19i
dWlsdGluX2NvbnN0YW50X3AgKCIuZ251LmxpbmtvbmNlLndpLiIpICYmIHN0cmxlbiAoIi5nbnUu
bGlua29uY2Uud2kuIikgPCAoKHNpemVfdCkgKDE3KSkpKSA/IF9fZXh0ZW5zaW9uX18gKHsgc2l6
ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiBf
X2J1aWx0aW5fY29uc3RhbnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKF9fczFfbGVuID0g
c3RybGVuIChuYW1lKSwgX19zMl9sZW4gPSBzdHJsZW4gKCIuZ251LmxpbmtvbmNlLndpLiIpLCAo
ISgoc2l6ZV90KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShuYW1lKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2
b2lkICopKCgiLmdudS5saW5rb25jZS53aS4iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgiLmdudS5saW5rb25jZS53aS4iKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAg
KChfX2NvbnN0IGNoYXIgKikgKG5hbWUpLCAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25j
ZS53aS4iKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChuYW1lKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgobmFtZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgJiYgKF9f
czFfbGVuID0gc3RybGVuIChuYW1lKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3Rh
bnRfcCAoIi5nbnUubGlua29uY2Uud2kuIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCIu
Z251LmxpbmtvbmNlLndpLiIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCIuZ251Lmxp
bmtvbmNlLndpLiIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUp
KVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIi5nbnUu
bGlua29uY2Uud2kuIikpWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KCIuZ251LmxpbmtvbmNlLndpLiIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQg
PT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp
IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4i
KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKG5hbWUpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEg
JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9
KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wICgiLmdudS5saW5rb25jZS53aS4iKSAmJiAoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoIi5nbnUubGlua29uY2Uud2kuIikgKyAxKSAtIChzaXplX3Qp
KGNvbnN0IHZvaWQgKikoIi5nbnUubGlua29uY2Uud2kuIikgPT0gMSkgJiYgKF9fczJfbGVuID0g
c3RybGVuICgiLmdudS5saW5rb25jZS53aS4iKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsgMSkg
LSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsg
cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKG5hbWUpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikoIi5nbnUubGlua29uY2Uud2kuIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAm
JiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVsxXSk7IGlmIChfX3MyX2xl
biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25jZS53aS4iKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKG5hbWUpKVszXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBj
aGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVswXTsgaWYg
KF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiLmdudS5saW5rb25j
ZS53aS4iKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1
bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKCIuZ251LmxpbmtvbmNlLndpLiIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpKSA6IHN0cmNtcCAobmFtZSwgIi5nbnUubGlua29uY2Uud2kuIikpKSk7IH0pIDogc3Ry
bmNtcCAobmFtZSwgIi5nbnUubGlua29uY2Uud2kuIiwgMTcpKSkgPT0gMCkKICAgIG5hbWUgPSAi
LmRlYnVnX2luZm8iOwoKICBmb3IgKGkgPSAoc2l6ZW9mIChkZWJ1Z19kaXNwbGF5cykgLyBzaXpl
b2YgKChkZWJ1Z19kaXNwbGF5cylbMF0pKTsgaS0tOykKICAgIGlmIChfX2V4dGVuc2lvbl9fICh7
IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdf
ZGlzcGxheXNbaV0ubmFtZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSksIF9fczJfbGVuID0gc3RybGVu
IChuYW1lKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoZGVidWdfZGlzcGxheXNbaV0ubmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkg
PT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFt
ZSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMl9sZW4g
Pj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1l
KSwgKF9fY29uc3QgY2hhciAqKSAobmFtZSksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9s
ZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxh
eXNbaV0ubmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRlYnVnX2Rpc3BsYXlzW2ld
Lm5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2Rpc3BsYXlzW2ldLm5h
bWUpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSks
IF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90
KShjb25zdCB2b2lkICopKChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1l
KSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tp
XS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
KG5hbWUpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
aXNwbGF5c1tpXS5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGlu
dCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4g
MCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGRlYnVnX2Rpc3BsYXlzW2ldLm5hbWUpKVsxXSAtIF9fczJb
MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNb
aV0ubmFtZSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g
MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsg
fSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZv
aWQgKikoKG5hbWUpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYm
IChfX3MyX2xlbiA9IHN0cmxlbiAobmFtZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKGRlYnVnX2Rpc3BsYXlzW2ldLm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lk
ICopKChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq
KShkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lz
dGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj
aGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYg
X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1lKSlbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSkpWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsg
aWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tpXS5uYW1l
KSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoZGVidWdfZGlzcGxheXNbaV0ubmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9f
czFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf
X3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFt
ZSkpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0g
KF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChu
YW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGRlYnVnX2Rpc3BsYXlzW2ld
Lm5hbWUsIG5hbWUpKSkpOyB9KSA9PSAwKQogICAgICB7CiAgICAgICAgZGVidWdfZGlzcGxheXNb
aV0uZGlzcGxheSAoc2VjdGlvbiwgc3RhcnQsIGZpbGUpOwogICAgICAgIGJyZWFrOwogICAgICB9
CgogIGlmIChpID09IC0xKQogICAgcHJpbnRmICgoIlVucmVjb2duaXplZCBkZWJ1ZyBzZWN0aW9u
OiAlc1xuIiksIG5hbWUpOwoKICBmcmVlIChzdGFydCk7CgoKCiAgZnJlZV9hYmJyZXZzICgpOwoK
ICByZXR1cm4gMTsKfQoKc3RhdGljIGludApwcm9jZXNzX3NlY3Rpb25fY29udGVudHMgKGZpbGUp
CiAgICAgRklMRSAqZmlsZTsKewogIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0aW9uOwogIHVuc2ln
bmVkIGludCBpOwoKICBpZiAoISBkb19kdW1wKQogICAgcmV0dXJuIDE7CgoKCgogIGZvciAoaSA9
IDAsIHNlY3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hlYWRlci5lX3No
bnVtICYmIGkgPCBudW1fZHVtcF9zZWN0czsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewog
ICAgICBjaGFyICpuYW1lID0gKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4iIDog
KChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0PiIg
OiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKTsKICAgICAgaW50IGo7CgogICAg
ICBpZiAoc2VjdGlvbi0+c2hfc2l6ZSA9PSAwKQogICAgICAgIGNvbnRpbnVlOwoKCiAgICAgIGZv
ciAoaiA9IChzaXplb2YgKGRlYnVnX2Rpc3BsYXlzKSAvIHNpemVvZiAoKGRlYnVnX2Rpc3BsYXlz
KVswXSkpOyBqLS07KQogICAgICAgIGlmIChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl
biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxheXNbal0ubmFt
ZSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAo
ZGVidWdfZGlzcGxheXNbal0ubmFtZSksIF9fczJfbGVuID0gc3RybGVuIChuYW1lKSwgKCEoKHNp
emVfdCkoY29uc3Qgdm9pZCAqKSgoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgPT0gMSkgfHwgX19zMV9s
ZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgobmFtZSkgKyAxKSAtIChzaXpl
X3QpKGNvbnN0IHZvaWQgKikobmFtZSkgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gbWVtY21w
ICgoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSwgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikg
KyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpICsgMSkgLSAo
c2l6ZV90KShjb25zdCB2b2lkICopKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpID09IDEpICYmIChf
X3MxX2xlbiA9IHN0cmxlbiAoZGVidWdfZGlzcGxheXNbal0ubmFtZSksIF9fczFfbGVuIDwgNCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AgKG5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop
KChuYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShuYW1lKSA9PSAxKSA/IChfX2V4
dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbMF0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKG5hbWUpKVswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1l
KSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1l
KSlbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxh
eXNbal0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl
c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1
Z19kaXNwbGF5c1tqXS5uYW1lKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lv
bl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5
c1tqXS5uYW1lKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkpWzJdIC0g
X19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlzcGxh
eXNbal0ubmFtZSkpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAobmFtZSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKG5hbWUpICsg
MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKG5hbWUpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAobmFtZSksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGRlYnVn
X2Rpc3BsYXlzW2pdLm5hbWUpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChkZWJ1Z19kaXNw
bGF5c1tqXS5uYW1lKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShkZWJ1Z19kaXNwbGF5
c1tqXS5uYW1lKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19k
aXNwbGF5c1tqXS5uYW1lKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopKG5hbWUpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg
eyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop
IChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoZGVidWdfZGlzcGxheXNbal0ubmFtZSkpWzJdIC0gKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzJdKTsgaWYgKF9fczJfbGVuID4g
MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChkZWJ1Z19kaXNwbGF5c1tqXS5uYW1lKSlbM10gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19z
MSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoZGVidWdfZGlz
cGxheXNbal0ubmFtZSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMF07IGlmIChfX3My
X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAobmFtZSkpWzFdKTsgaWYgKF9f
czJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbMl0pOyBpZiAo
X19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9f
Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChuYW1lKSlbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGRlYnVnX2Rpc3BsYXlzW2pdLm5hbWUsIG5hbWUpKSkp
OyB9KSA9PSAwKQogICAgICAgICAgewogICAgICAgICAgICBpZiAoZGVidWdfZGlzcGxheXNbal0u
cHJlc2NhbiAhPSAoKHZvaWQgKikwKSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBi
ZmRfc2l6ZV90eXBlIGxlbmd0aDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnN0YXJ0
OwoKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHNlY3Rpb24tPnNoX3NpemU7CiAgICAgICAgICAg
ICAgICBzdGFydCA9ICgodW5zaWduZWQgY2hhciAqKQogICAgICAgICAgICAgICAgICAgICAgICAg
Z2V0X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsIGxlbmd0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImRlYnVnIHNlY3Rpb24gZGF0YSIp
KSk7CiAgICAgICAgICAgICAgICBpZiAoIXN0YXJ0KQogICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKCiAgICAgICAgICAgICAgICBkZWJ1Z19kaXNwbGF5c1tqXS5wcmVzY2FuIChzZWN0aW9uLCBz
dGFydCwgZmlsZSk7CiAgICAgICAgICAgICAgICBmcmVlIChzdGFydCk7CiAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICB9CgogIGZvciAoaSA9IDAsIHNl
Y3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hlYWRlci5lX3NobnVtICYm
IGkgPCBudW1fZHVtcF9zZWN0czsKICAgICAgIGkrKywgc2VjdGlvbisrKQogICAgewoKCgoKICAg
ICAgaWYgKGR1bXBfc2VjdHNbaV0gJiAoMSA8PCAwKSkKICAgICAgICBkdW1wX3NlY3Rpb24gKHNl
Y3Rpb24sIGZpbGUpOwoKICAgICAgaWYgKGR1bXBfc2VjdHNbaV0gJiAoMSA8PCAyKSkKICAgICAg
ICBkaXNwbGF5X2RlYnVnX3NlY3Rpb24gKHNlY3Rpb24sIGZpbGUpOwogICAgfQoKICBpZiAoaSA8
IG51bV9kdW1wX3NlY3RzKQogICAgd2FybiAoKCJTb21lIHNlY3Rpb25zIHdlcmUgbm90IGR1bXBl
ZCBiZWNhdXNlIHRoZXkgZG8gbm90IGV4aXN0IVxuIikpOwoKICByZXR1cm4gMTsKfQoKc3RhdGlj
IHZvaWQKcHJvY2Vzc19taXBzX2ZwZV9leGNlcHRpb24gKG1hc2spCiAgICAgaW50IG1hc2s7CnsK
ICBpZiAobWFzaykKICAgIHsKICAgICAgaW50IGZpcnN0ID0gMTsKICAgICAgaWYgKG1hc2sgJiAw
eDAxKQogICAgICAgIGZwdXRzICgiSU5FWCIsIHN0ZG91dCksIGZpcnN0ID0gMDsKICAgICAgaWYg
KG1hc2sgJiAweDAyKQogICAgICAgIHByaW50ZiAoIiVzVUZMTyIsIGZpcnN0ID8gIiIgOiAifCIp
LCBmaXJzdCA9IDA7CiAgICAgIGlmIChtYXNrICYgMHgwNCkKICAgICAgICBwcmludGYgKCIlc09G
TE8iLCBmaXJzdCA/ICIiIDogInwiKSwgZmlyc3QgPSAwOwogICAgICBpZiAobWFzayAmIDB4MDgp
CiAgICAgICAgcHJpbnRmICgiJXNESVYwIiwgZmlyc3QgPyAiIiA6ICJ8IiksIGZpcnN0ID0gMDsK
ICAgICAgaWYgKG1hc2sgJiAweDEwKQogICAgICAgIHByaW50ZiAoIiVzSU5WQUwiLCBmaXJzdCA/
ICIiIDogInwiKTsKICAgIH0KICBlbHNlCiAgICBmcHV0cyAoIjAiLCBzdGRvdXQpOwp9CgpzdGF0
aWMgaW50CnByb2Nlc3NfbWlwc19zcGVjaWZpYyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAg
RWxmX0ludGVybmFsX0R5biAqZW50cnk7CiAgc2l6ZV90IGxpYmxpc3Rfb2Zmc2V0ID0gMDsKICBz
aXplX3QgbGlibGlzdG5vID0gMDsKICBzaXplX3QgY29uZmxpY3Rzbm8gPSAwOwogIHNpemVfdCBv
cHRpb25zX29mZnNldCA9IDA7CiAgc2l6ZV90IGNvbmZsaWN0c19vZmZzZXQgPSAwOwoKCiAgaWYg
KGR5bmFtaWNfc2VnbWVudCA9PSAoKHZvaWQgKikwKSkKCiAgICByZXR1cm4gMDsKCiAgZm9yIChl
bnRyeSA9IGR5bmFtaWNfc2VnbWVudDsgZW50cnktPmRfdGFnICE9IDA7ICsrZW50cnkpCiAgICBz
d2l0Y2ggKGVudHJ5LT5kX3RhZykKICAgICAgewogICAgICBjYXNlIDB4NzAwMDAwMDk6CiAgICAg
ICAgbGlibGlzdF9vZmZzZXQgPSBlbnRyeS0+ZF91bi5kX3ZhbCAtIGxvYWRhZGRyOwogICAgICAg
IGJyZWFrOwogICAgICBjYXNlIDB4NzAwMDAwMTA6CiAgICAgICAgbGlibGlzdG5vID0gZW50cnkt
PmRfdW4uZF92YWw7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMHg3MDAwMDAyOToKICAgICAg
ICBvcHRpb25zX29mZnNldCA9IGVudHJ5LT5kX3VuLmRfdmFsIC0gbG9hZGFkZHI7CiAgICAgICAg
YnJlYWs7CiAgICAgIGNhc2UgMHg3MDAwMDAwODoKICAgICAgICBjb25mbGljdHNfb2Zmc2V0ID0g
ZW50cnktPmRfdW4uZF92YWwgLSBsb2FkYWRkcjsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAw
eDcwMDAwMDBiOgogICAgICAgIGNvbmZsaWN0c25vID0gZW50cnktPmRfdW4uZF92YWw7CiAgICAg
ICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYnJlYWs7CiAgICAgIH0KCiAgaWYgKGxp
Ymxpc3Rfb2Zmc2V0ICE9IDAgJiYgbGlibGlzdG5vICE9IDAgJiYgZG9fZHluYW1pYykKICAgIHsK
ICAgICAgRWxmMzJfRXh0ZXJuYWxfTGliICplbGliOwogICAgICBzaXplX3QgY250OwoKICAgICAg
ZWxpYiA9ICgoRWxmMzJfRXh0ZXJuYWxfTGliICopCiAgICAgICAgICAgICAgZ2V0X2RhdGEgKCgo
dm9pZCAqKTApLCBmaWxlLCBsaWJsaXN0X29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
bGlibGlzdG5vICogc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9MaWIpLAogICAgICAgICAgICAgICAg
ICAgICAgICAoImxpYmxpc3QiKSkpOwogICAgICBpZiAoZWxpYikKICAgICAgICB7CiAgICAgICAg
ICBwcmludGYgKCJcblNlY3Rpb24gJy5saWJsaXN0JyBjb250YWlucyAlbHUgZW50cmllczpcbiIs
CiAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBsaWJsaXN0bm8pOwogICAgICAgICAg
ZnB1dHMgKCIgICAgIExpYnJhcnkgICAgICAgICAgICAgIFRpbWUgU3RhbXAgICAgICAgICAgQ2hl
Y2tzdW0gICBWZXJzaW9uIEZsYWdzXG4iLAogICAgICAgICAgICAgICAgIHN0ZG91dCk7CgogICAg
ICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBsaWJsaXN0bm87ICsrY250KQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgRWxmMzJfTGliIGxpYmxpc3Q7CiAgICAgICAgICAgICAgdGltZV90IHRp
bWU7CiAgICAgICAgICAgICAgY2hhciB0aW1lYnVmWzIwXTsKICAgICAgICAgICAgICBzdHJ1Y3Qg
dG0gKnRtcDsKCiAgICAgICAgICAgICAgbGlibGlzdC5sX25hbWUgPSBieXRlX2dldCAoZWxpYltj
bnRdLmxfbmFtZSwgc2l6ZW9mIChlbGliW2NudF0ubF9uYW1lKSk7CiAgICAgICAgICAgICAgdGlt
ZSA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF90aW1lX3N0YW1wLCBzaXplb2YgKGVsaWJbY250XS5s
X3RpbWVfc3RhbXApKTsKICAgICAgICAgICAgICBsaWJsaXN0LmxfY2hlY2tzdW0gPSBieXRlX2dl
dCAoZWxpYltjbnRdLmxfY2hlY2tzdW0sIHNpemVvZiAoZWxpYltjbnRdLmxfY2hlY2tzdW0pKTsK
ICAgICAgICAgICAgICBsaWJsaXN0LmxfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF92
ZXJzaW9uLCBzaXplb2YgKGVsaWJbY250XS5sX3ZlcnNpb24pKTsKICAgICAgICAgICAgICBsaWJs
aXN0LmxfZmxhZ3MgPSBieXRlX2dldCAoZWxpYltjbnRdLmxfZmxhZ3MsIHNpemVvZiAoZWxpYltj
bnRdLmxfZmxhZ3MpKTsKCiAgICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGltZSk7CiAgICAg
ICAgICAgICAgc3ByaW50ZiAodGltZWJ1ZiwgIiUwNHUtJTAydS0lMDJ1VCUwMnU6JTAydTolMDJ1
IiwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21v
biArIDEsIHRtcC0+dG1fbWRheSwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX2hvdXIs
IHRtcC0+dG1fbWluLCB0bXAtPnRtX3NlYyk7CgogICAgICAgICAgICAgIHByaW50ZiAoIiUzbHU6
ICIsICh1bnNpZ25lZCBsb25nKSBjbnQpOwogICAgICAgICAgICAgIHByaW50X3N5bWJvbCAoMjAs
IGR5bmFtaWNfc3RyaW5ncyArIGxpYmxpc3QubF9uYW1lKTsKICAgICAgICAgICAgICBwcmludGYg
KCIgJXMgJSMxMGx4ICUtN2xkIiwgdGltZWJ1ZiwgbGlibGlzdC5sX2NoZWNrc3VtLAogICAgICAg
ICAgICAgICAgICAgICAgbGlibGlzdC5sX3ZlcnNpb24pOwoKICAgICAgICAgICAgICBpZiAobGli
bGlzdC5sX2ZsYWdzID09IDApCiAgICAgICAgICAgICAgICBwdXRzICgiIE5PTkUiKTsKICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3QKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWU7CiAgICAgICAgICAgICAgICAgICAgaW50IGJpdDsKICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICBsX2ZsYWdzX3ZhbHNbXSA9CiAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICB7ICIgRVhBQ1RfTUFUQ0giLCAweDAwMDAwMDAxIH0sCiAg
ICAgICAgICAgICAgICAgICAgeyAiIElHTk9SRV9JTlRfVkVSIiwgMHgwMDAwMDAwMiB9LAogICAg
ICAgICAgICAgICAgICAgIHsgIiBSRVFVSVJFX01JTk9SIiwgMHgwMDAwMDAwNCB9LAogICAgICAg
ICAgICAgICAgICAgIHsgIiBFWFBPUlRTIiwgMHgwMDAwMDAwOCB9LAogICAgICAgICAgICAgICAg
ICAgIHsgIiBERUxBWV9MT0FEIiwgMHgwMDAwMDAxMCB9LAogICAgICAgICAgICAgICAgICAgIHsg
IiBERUxUQSIsIDB4MDAwMDAwMjAgfQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAg
ICAgICBpbnQgZmxhZ3MgPSBsaWJsaXN0LmxfZmxhZ3M7CiAgICAgICAgICAgICAgICAgIHNpemVf
dCBmY250OwoKICAgICAgICAgICAgICAgICAgZm9yIChmY250ID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgICBmY250IDwgc2l6ZW9mIChsX2ZsYWdzX3ZhbHMpIC8gc2l6ZW9mIChsX2ZsYWdzX3Zh
bHNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICsrZmNudCkKICAgICAgICAgICAgICAgICAg
ICBpZiAoKGZsYWdzICYgbF9mbGFnc192YWxzW2ZjbnRdLmJpdCkgIT0gMCkKICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHMgKGxfZmxhZ3NfdmFsc1tm
Y250XS5uYW1lLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICAgICAgICBmbGFncyBePSBsX2Zs
YWdzX3ZhbHNbZmNudF0uYml0OwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICBpZiAoZmxhZ3MgIT0gMCkKICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgJSN4Iiwg
KHVuc2lnbmVkIGludCkgZmxhZ3MpOwoKICAgICAgICAgICAgICAgICAgcHV0cyAoIiIpOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgZnJlZSAoZWxpYik7CiAgICAg
ICAgfQogICAgfQoKICBpZiAob3B0aW9uc19vZmZzZXQgIT0gMCkKICAgIHsKICAgICAgRWxmX0V4
dGVybmFsX09wdGlvbnMgKmVvcHQ7CiAgICAgIEVsZl9JbnRlcm5hbF9TaGRyICpzZWN0ID0gc2Vj
dGlvbl9oZWFkZXJzOwogICAgICBFbGZfSW50ZXJuYWxfT3B0aW9ucyAqaW9wdDsKICAgICAgRWxm
X0ludGVybmFsX09wdGlvbnMgKm9wdGlvbjsKICAgICAgc2l6ZV90IG9mZnNldDsKICAgICAgaW50
IGNudDsKCgogICAgICB3aGlsZSAoc2VjdC0+c2hfdHlwZSAhPSAweDcwMDAwMDBkKQogICAgICAg
ICsrc2VjdDsKCiAgICAgIGVvcHQgPSAoRWxmX0V4dGVybmFsX09wdGlvbnMgKikgZ2V0X2RhdGEg
KCgodm9pZCAqKTApLCBmaWxlLCBvcHRpb25zX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdC0+c2hfc2l6ZSwgKCJvcHRpb25zIikpOwog
ICAgICBpZiAoZW9wdCkKICAgICAgICB7CiAgICAgICAgICBpb3B0ID0gKChFbGZfSW50ZXJuYWxf
T3B0aW9ucyAqKQogICAgICAgICAgICAgICAgICBtYWxsb2MgKChzZWN0LT5zaF9zaXplIC8gc2l6
ZW9mIChlb3B0KSkgKiBzaXplb2YgKCppb3B0KSkpOwogICAgICAgICAgaWYgKGlvcHQgPT0gKCh2
b2lkICopMCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBlcnJvciAoKCJPdXQgb2YgbWVt
b3J5IikpOwogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CgogICAgICAgICAg
b2Zmc2V0ID0gY250ID0gMDsKICAgICAgICAgIG9wdGlvbiA9IGlvcHQ7CgogICAgICAgICAgd2hp
bGUgKG9mZnNldCA8IHNlY3QtPnNoX3NpemUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBF
bGZfRXh0ZXJuYWxfT3B0aW9ucyAqZW9wdGlvbjsKCiAgICAgICAgICAgICAgZW9wdGlvbiA9IChF
bGZfRXh0ZXJuYWxfT3B0aW9ucyAqKSAoKGNoYXIgKikgZW9wdCArIG9mZnNldCk7CgogICAgICAg
ICAgICAgIG9wdGlvbi0+a2luZCA9IGJ5dGVfZ2V0IChlb3B0aW9uLT5raW5kLCBzaXplb2YgKGVv
cHRpb24tPmtpbmQpKTsKICAgICAgICAgICAgICBvcHRpb24tPnNpemUgPSBieXRlX2dldCAoZW9w
dGlvbi0+c2l6ZSwgc2l6ZW9mIChlb3B0aW9uLT5zaXplKSk7CiAgICAgICAgICAgICAgb3B0aW9u
LT5zZWN0aW9uID0gYnl0ZV9nZXQgKGVvcHRpb24tPnNlY3Rpb24sIHNpemVvZiAoZW9wdGlvbi0+
c2VjdGlvbikpOwogICAgICAgICAgICAgIG9wdGlvbi0+aW5mbyA9IGJ5dGVfZ2V0IChlb3B0aW9u
LT5pbmZvLCBzaXplb2YgKGVvcHRpb24tPmluZm8pKTsKCiAgICAgICAgICAgICAgb2Zmc2V0ICs9
IG9wdGlvbi0+c2l6ZTsKCiAgICAgICAgICAgICAgKytvcHRpb247CiAgICAgICAgICAgICAgKytj
bnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICBwcmludGYgKCgiXG5TZWN0aW9uICclcycgY29u
dGFpbnMgJWQgZW50cmllczpcbiIpLAogICAgICAgICAgICAgICAgICAoKHNlY3QpID09ICgodm9p
ZCAqKTApID8gIjxub25lPiIgOiAoKHNlY3QpLT5zaF9uYW1lID49IHN0cmluZ190YWJsZV9sZW5n
dGggPyAiPGNvcnJ1cHQ+IiA6IHN0cmluZ190YWJsZSArIChzZWN0KS0+c2hfbmFtZSkpLCBjbnQp
OwoKICAgICAgICAgIG9wdGlvbiA9IGlvcHQ7CgogICAgICAgICAgd2hpbGUgKGNudC0tID4gMCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIHNpemVfdCBsZW47CgogICAgICAgICAgICAgIHN3
aXRjaCAob3B0aW9uLT5raW5kKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2Fz
ZSAwOgoKICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIE5VTEwgICAgICAgJWQgJWx4Iiwgb3B0
aW9uLT5zZWN0aW9uLCBvcHRpb24tPmluZm8pOwogICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgcHJpbnRmICgiIFJFR0lORk8g
ICAgIik7CiAgICAgICAgICAgICAgICAgIGlmIChlbGZfaGVhZGVyLmVfbWFjaGluZSA9PSA4KQog
ICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICBFbGYzMl9FeHRlcm5h
bF9SZWdJbmZvICplcmVnOwogICAgICAgICAgICAgICAgICAgICAgRWxmMzJfUmVnSW5mbyByZWdp
bmZvOwoKICAgICAgICAgICAgICAgICAgICAgIGVyZWcgPSAoRWxmMzJfRXh0ZXJuYWxfUmVnSW5m
byAqKSAob3B0aW9uICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2dwcm1h
c2sgPSBieXRlX2dldCAoZXJlZy0+cmlfZ3BybWFzaywgc2l6ZW9mIChlcmVnLT5yaV9ncHJtYXNr
KSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0gPSBieXRlX2dl
dCAoZXJlZy0+cmlfY3BybWFza1swXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzBdKSk7CiAg
ICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMV0gPSBieXRlX2dldCAoZXJl
Zy0+cmlfY3BybWFza1sxXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzFdKSk7CiAgICAgICAg
ICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMl0gPSBieXRlX2dldCAoZXJlZy0+cmlf
Y3BybWFza1syXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzJdKSk7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbM10gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFz
a1szXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzNdKSk7CiAgICAgICAgICAgICAgICAgICAg
ICByZWdpbmZvLnJpX2dwX3ZhbHVlID0gYnl0ZV9nZXQgKGVyZWctPnJpX2dwX3ZhbHVlLCBzaXpl
b2YgKGVyZWctPnJpX2dwX3ZhbHVlKSk7CgogICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgi
R1BSICUwOGx4ICBHUCAweCVseFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn
aW5mby5yaV9ncHJtYXNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQg
bG9uZykgcmVnaW5mby5yaV9ncF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICBwcmludGYg
KCIgICAgICAgICAgICBDUFIwICUwOGx4ICBDUFIxICUwOGx4ICBDUFIyICUwOGx4ICBDUFIzICUw
OGx4XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tb
MF0sIHJlZ2luZm8ucmlfY3BybWFza1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVnaW5mby5yaV9jcHJtYXNrWzJdLCByZWdpbmZvLnJpX2Nwcm1hc2tbM10pOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHsK
CiAgICAgICAgICAgICAgICAgICAgICBFbGY2NF9FeHRlcm5hbF9SZWdJbmZvICplcmVnOwogICAg
ICAgICAgICAgICAgICAgICAgRWxmNjRfSW50ZXJuYWxfUmVnSW5mbyByZWdpbmZvOwoKICAgICAg
ICAgICAgICAgICAgICAgIGVyZWcgPSAoRWxmNjRfRXh0ZXJuYWxfUmVnSW5mbyAqKSAob3B0aW9u
ICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2dwcm1hc2sgPSBieXRlX2dl
dCAoZXJlZy0+cmlfZ3BybWFzaywgc2l6ZW9mIChlcmVnLT5yaV9ncHJtYXNrKSk7CiAgICAgICAg
ICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0gPSBieXRlX2dldCAoZXJlZy0+cmlf
Y3BybWFza1swXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzBdKSk7CiAgICAgICAgICAgICAg
ICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMV0gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFz
a1sxXSwgc2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzFdKSk7CiAgICAgICAgICAgICAgICAgICAg
ICByZWdpbmZvLnJpX2Nwcm1hc2tbMl0gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFza1syXSwg
c2l6ZW9mIChlcmVnLT5yaV9jcHJtYXNrWzJdKSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdp
bmZvLnJpX2Nwcm1hc2tbM10gPSBieXRlX2dldCAoZXJlZy0+cmlfY3BybWFza1szXSwgc2l6ZW9m
IChlcmVnLT5yaV9jcHJtYXNrWzNdKSk7CiAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJp
X2dwX3ZhbHVlID0gYnl0ZV9nZXQgKGVyZWctPnJpX2dwX3ZhbHVlLCAtOCk7CgogICAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmICgiR1BSICUwOGx4ICBHUCAweCIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2luZm8ucmlfZ3BybWFzayk7CiAgICAgICAgICAgICAgICAgICAgICBm
cHJpbnRmICgoc3Rkb3V0KSwgIiUwOGx4JTA4bHgiLCAoKHVuc2lnbmVkIGxvbmcpICgoKHJlZ2lu
Zm8ucmlfZ3BfdmFsdWUpID4+IDMyKSAmIDB4ZmZmZmZmZmYpKSwgKCh1bnNpZ25lZCBsb25nKSAo
KChyZWdpbmZvLnJpX2dwX3ZhbHVlKSAmIDB4ZmZmZmZmZmYpKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmICgiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgICAg
ICAgICAgICBDUFIwICUwOGx4ICBDUFIxICUwOGx4ICBDUFIyICUwOGx4ICBDUFIzICUwOGx4XG4i
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLnJpX2Nwcm1hc2tbMF0sIHJl
Z2luZm8ucmlfY3BybWFza1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW5m
by5yaV9jcHJtYXNrWzJdLCByZWdpbmZvLnJpX2Nwcm1hc2tbM10pOwogICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgKytvcHRpb247CiAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICBmcHV0cyAoIiBF
WENFUFRJT05TIGZwZV9taW4oIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgcHJvY2Vzc19t
aXBzX2ZwZV9leGNlcHRpb24gKG9wdGlvbi0+aW5mbyAmIDB4MWYpOwogICAgICAgICAgICAgICAg
ICBmcHV0cyAoIikgZnBlX21heCgiLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICBwcm9jZXNz
X21pcHNfZnBlX2V4Y2VwdGlvbiAoKG9wdGlvbi0+aW5mbyAmIDB4MWYwMCkgPj4gOCk7CiAgICAg
ICAgICAgICAgICAgIGZwdXRzICgiKSIsIHN0ZG91dCk7CgogICAgICAgICAgICAgICAgICBpZiAo
b3B0aW9uLT5pbmZvICYgMHgxMDAwMCkKICAgICAgICAgICAgICAgICAgICBmcHV0cyAoIiBQQUdF
MCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDIwMDAw
KQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFNNTSIsIHN0ZG91dCk7CiAgICAgICAgICAg
ICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDQwMDAwKQogICAgICAgICAgICAgICAgICAgIGZw
dXRzICgiIEZQREJVRyIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmlu
Zm8gJiAweDgwMDAwKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIERJU01JU1MiLCBzdGRv
dXQpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAg
ICAgICAgICAgICAgICAgZnB1dHMgKCIgUEFEICAgICAgICIsIHN0ZG91dCk7CiAgICAgICAgICAg
ICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRz
ICgiIFBSRUZJWCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8g
JiAweDAyKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFBPU1RGSVgiLCBzdGRvdXQpOwog
ICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLT5pbmZvICYgMHgwNCkKICAgICAgICAgICAgICAg
ICAgICBmcHV0cyAoIiBTWU1CT0wiLCBzdGRvdXQpOwogICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgSFdQQVRD
SCAgICIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAw
MDAwMDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFI0S0VPUCIsIHN0ZG91dCk7CiAg
ICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8gJiAweDAwMDAwMDAyKQogICAgICAgICAg
ICAgICAgICAgIGZwdXRzICgiIFI4S1BGRVRDSCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAg
IGlmIChvcHRpb24tPmluZm8gJiAweDAwMDAwMDA0KQogICAgICAgICAgICAgICAgICAgIGZwdXRz
ICgiIFI1S0VPUCIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlmIChvcHRpb24tPmluZm8g
JiAweDAwMDAwMDA4KQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgiIFI1S0NWVEwiLCBzdGRv
dXQpOwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgNToKICAg
ICAgICAgICAgICAgICAgZnB1dHMgKCIgRklMTCAgICAgICAiLCBzdGRvdXQpOwoKICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAg
IGZwdXRzICgiIFRBR1MgICAgICAgIiwgc3Rkb3V0KTsKCiAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgICBmcHV0cyAoIiBIV0FO
RCAgICAgIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbi0+aW5mbyAmIDB4
MDAwMDAwMDEpCiAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgUjRLRU9QX0NIRUNLRUQiLCBz
dGRvdXQpOwogICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLT5pbmZvICYgMHgwMDAwMDAwMikK
ICAgICAgICAgICAgICAgICAgICBmcHV0cyAoIiBSNEtFT1BfQ0xFQU4iLCBzdGRvdXQpOwogICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAg
ICAgICAgZnB1dHMgKCIgSFdPUiAgICAgICIsIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgIGlm
IChvcHRpb24tPmluZm8gJiAweDAwMDAwMDAxKQogICAgICAgICAgICAgICAgICAgIGZwdXRzICgi
IFI0S0VPUF9DSEVDS0VEIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbi0+
aW5mbyAmIDB4MDAwMDAwMDIpCiAgICAgICAgICAgICAgICAgICAgZnB1dHMgKCIgUjRLRU9QX0NM
RUFOIiwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj
YXNlIDk6CiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiBHUF9HUk9VUCAgJSMwNmx4ICBzZWxm
LWNvbnRhaW5lZCAlIzA2bHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+aW5m
byAmIDB4MDAwMGZmZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbi0+aW5mbyAm
IDB4ZmZmZjAwMDApID4+IDE2KTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICBjYXNlIDEwOgogICAgICAgICAgICAgICAgICBwcmludGYgKCIgSURFTlQgICAgICUjMDZs
eCAgc2VsZi1jb250YWluZWQgJSMwNmx4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b24tPmluZm8gJiAweDAwMDBmZmZmLAogICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24t
PmluZm8gJiAweGZmZmYwMDAwKSA+PiAxNik7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgZGVmYXVsdDoKCiAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAlM2QgPz8/
ICAgICAlZCAlbHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi0+a2luZCwgb3B0
aW9uLT5zZWN0aW9uLCBvcHRpb24tPmluZm8pOwogICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgbGVuID0gc2l6ZW9mICgqZW9wdCk7CiAgICAg
ICAgICAgICAgd2hpbGUgKGxlbiA8IG9wdGlvbi0+c2l6ZSkKICAgICAgICAgICAgICAgIGlmICgo
KGNoYXIgKikgb3B0aW9uKVtsZW5dID49ICcgJwogICAgICAgICAgICAgICAgICAgICYmICgoY2hh
ciAqKSBvcHRpb24pW2xlbl0gPCAweDdmKQogICAgICAgICAgICAgICAgICBwcmludGYgKCIlYyIs
ICgoY2hhciAqKSBvcHRpb24pW2xlbisrXSk7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgIHByaW50ZiAoIlxcJTAzbyIsICgoY2hhciAqKSBvcHRpb24pW2xlbisrXSk7Cgog
ICAgICAgICAgICAgIGZwdXRzICgiXG4iLCBzdGRvdXQpOwogICAgICAgICAgICAgICsrb3B0aW9u
OwogICAgICAgICAgICB9CgogICAgICAgICAgZnJlZSAoZW9wdCk7CiAgICAgICAgfQogICAgfQoK
ICBpZiAoY29uZmxpY3RzX29mZnNldCAhPSAwICYmIGNvbmZsaWN0c25vICE9IDApCiAgICB7CiAg
ICAgIEVsZjMyX0NvbmZsaWN0ICppY29uZjsKICAgICAgc2l6ZV90IGNudDsKCiAgICAgIGlmIChk
eW5hbWljX3N5bWJvbHMgPT0gKCh2b2lkICopMCkpCiAgICAgICAgewogICAgICAgICAgZXJyb3Ig
KCgiY29uZmxpY3QgbGlzdCBmb3VuZCB3aXRob3V0IGEgZHluYW1pYyBzeW1ib2wgdGFibGUiKSk7
CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpY29uZiA9IChFbGYzMl9Db25m
bGljdCAqKSBtYWxsb2MgKGNvbmZsaWN0c25vICogc2l6ZW9mICgqaWNvbmYpKTsKICAgICAgaWYg
KGljb25mID09ICgodm9pZCAqKTApKQogICAgICAgIHsKICAgICAgICAgIGVycm9yICgoIk91dCBv
ZiBtZW1vcnkiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpZiAoaXNf
MzJiaXRfZWxmKQogICAgICAgIHsKICAgICAgICAgIEVsZjMyX0V4dGVybmFsX0NvbmZsaWN0ICpl
Y29uZjMyOwoKICAgICAgICAgIGVjb25mMzIgPSAoKEVsZjMyX0V4dGVybmFsX0NvbmZsaWN0ICop
CiAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgY29uZmxp
Y3RzX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0c25vICog
c2l6ZW9mICgqZWNvbmYzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNvbmZs
aWN0IikpKTsKICAgICAgICAgIGlmICghZWNvbmYzMikKICAgICAgICAgICAgcmV0dXJuIDA7Cgog
ICAgICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBjb25mbGljdHNubzsgKytjbnQpCiAgICAgICAg
ICAgIGljb25mW2NudF0gPSBieXRlX2dldCAoZWNvbmYzMltjbnRdLCBzaXplb2YgKGVjb25mMzJb
Y250XSkpOwoKICAgICAgICAgIGZyZWUgKGVjb25mMzIpOwogICAgICAgIH0KICAgICAgZWxzZQog
ICAgICAgIHsKICAgICAgICAgIEVsZjY0X0V4dGVybmFsX0NvbmZsaWN0ICplY29uZjY0OwoKICAg
ICAgICAgIGVjb25mNjQgPSAoKEVsZjY0X0V4dGVybmFsX0NvbmZsaWN0ICopCiAgICAgICAgICAg
ICAgICAgICAgIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgY29uZmxpY3RzX29mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZsaWN0c25vICogc2l6ZW9mICgqZWNv
bmY2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNvbmZsaWN0IikpKTsKICAg
ICAgICAgIGlmICghZWNvbmY2NCkKICAgICAgICAgICAgcmV0dXJuIDA7CgogICAgICAgICAgZm9y
IChjbnQgPSAwOyBjbnQgPCBjb25mbGljdHNubzsgKytjbnQpCiAgICAgICAgICAgIGljb25mW2Nu
dF0gPSBieXRlX2dldCAoZWNvbmY2NFtjbnRdLCBzaXplb2YgKGVjb25mNjRbY250XSkpOwoKICAg
ICAgICAgIGZyZWUgKGVjb25mNjQpOwogICAgICAgIH0KCiAgICAgIHByaW50ZiAoKCJcblNlY3Rp
b24gJy5jb25mbGljdCcgY29udGFpbnMgJWxkIGVudHJpZXM6XG4iKSwKICAgICAgICAgICAgICAo
bG9uZykgY29uZmxpY3Rzbm8pOwogICAgICBwdXRzICgoIiAgTnVtOiAgICBJbmRleCAgICAgICBW
YWx1ZSAgTmFtZSIpKTsKCiAgICAgIGZvciAoY250ID0gMDsgY250IDwgY29uZmxpY3Rzbm87ICsr
Y250KQogICAgICAgIHsKICAgICAgICAgIEVsZl9JbnRlcm5hbF9TeW0gKnBzeW0gPSAmIGR5bmFt
aWNfc3ltYm9sc1tpY29uZltjbnRdXTsKCiAgICAgICAgICBwcmludGYgKCIlNWx1OiAlOGx1ICAi
LCAodW5zaWduZWQgbG9uZykgY250LCBpY29uZltjbnRdKTsKICAgICAgICAgIHByaW50X3ZtYSAo
cHN5bS0+c3RfdmFsdWUsIEZVTExfSEVYKTsKICAgICAgICAgIHB1dGNoYXIgKCcgJyk7CiAgICAg
ICAgICBwcmludF9zeW1ib2wgKDI1LCBkeW5hbWljX3N0cmluZ3MgKyBwc3ltLT5zdF9uYW1lKTsK
ICAgICAgICAgIHB1dGNoYXIgKCdcbicpOwogICAgICAgIH0KCiAgICAgIGZyZWUgKGljb25mKTsK
ICAgIH0KCiAgcmV0dXJuIDE7Cn0KCnN0YXRpYyBpbnQKcHJvY2Vzc19nbnVfbGlibGlzdCAoZmls
ZSkKICAgICBGSUxFICpmaWxlOwp7CiAgRWxmX0ludGVybmFsX1NoZHIgKnNlY3Rpb24sICpzdHJp
bmdfc2VjOwogIEVsZjMyX0V4dGVybmFsX0xpYiAqZWxpYjsKICBjaGFyICpzdHJ0YWI7CiAgc2l6
ZV90IGNudDsKICB1bnNpZ25lZCBpOwoKICBpZiAoISBkb19hcmNoKQogICAgcmV0dXJuIDA7Cgog
IGZvciAoaSA9IDAsIHNlY3Rpb24gPSBzZWN0aW9uX2hlYWRlcnM7CiAgICAgICBpIDwgZWxmX2hl
YWRlci5lX3NobnVtOwogICAgICAgaSsrLCBzZWN0aW9uKyspCiAgICB7CiAgICAgIHN3aXRjaCAo
c2VjdGlvbi0+c2hfdHlwZSkKICAgICAgICB7CiAgICAgICAgY2FzZSAweDZmZmZmZmY3OgogICAg
ICAgICAgZWxpYiA9ICgoRWxmMzJfRXh0ZXJuYWxfTGliICopCiAgICAgICAgICAgICAgICAgZ2V0
X2RhdGEgKCgodm9pZCAqKTApLCBmaWxlLCBzZWN0aW9uLT5zaF9vZmZzZXQsIHNlY3Rpb24tPnNo
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgibGlibGlzdCIpKSk7CgogICAgICAg
ICAgaWYgKGVsaWIgPT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
c3RyaW5nX3NlYyA9IChzZWN0aW9uX2hlYWRlcnMgKyAoKHNlY3Rpb24tPnNoX2xpbmspIDwgMHhG
RjAwID8gKHNlY3Rpb24tPnNoX2xpbmspIDogKChzZWN0aW9uLT5zaF9saW5rKSA8PSAweEZGRkYg
PyAwIDogKHNlY3Rpb24tPnNoX2xpbmspIC0gKDB4RkZGRiArIDEgLSAweEZGMDApKSkpOwoKICAg
ICAgICAgIHN0cnRhYiA9IChjaGFyICopIGdldF9kYXRhICgoKHZvaWQgKikwKSwgZmlsZSwgc3Ry
aW5nX3NlYy0+c2hfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmluZ19zZWMtPnNoX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCJsaWJsaXN0IHN0cmluZyB0YWJsZSIpKTsKCiAgICAgICAgICBpZiAoc3RydGFiID09ICgo
dm9pZCAqKTApCiAgICAgICAgICAgICAgfHwgc2VjdGlvbi0+c2hfZW50c2l6ZSAhPSBzaXplb2Yg
KEVsZjMyX0V4dGVybmFsX0xpYikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmcmVlIChl
bGliKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgIHByaW50
ZiAoKCJcbkxpYnJhcnkgbGlzdCBzZWN0aW9uICclcycgY29udGFpbnMgJWx1IGVudHJpZXM6XG4i
KSwKICAgICAgICAgICAgICAgICAgKChzZWN0aW9uKSA9PSAoKHZvaWQgKikwKSA/ICI8bm9uZT4i
IDogKChzZWN0aW9uKS0+c2hfbmFtZSA+PSBzdHJpbmdfdGFibGVfbGVuZ3RoID8gIjxjb3JydXB0
PiIgOiBzdHJpbmdfdGFibGUgKyAoc2VjdGlvbiktPnNoX25hbWUpKSwKICAgICAgICAgICAgICAg
ICAgKGxvbmcpIChzZWN0aW9uLT5zaF9zaXplIC8gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9MaWIp
KSk7CgogICAgICAgICAgcHV0cyAoIiAgICAgTGlicmFyeSAgICAgICAgICAgICAgVGltZSBTdGFt
cCAgICAgICAgICBDaGVja3N1bSAgIFZlcnNpb24gRmxhZ3MiKTsKCiAgICAgICAgICBmb3IgKGNu
dCA9IDA7IGNudCA8IHNlY3Rpb24tPnNoX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX0xp
Yik7CiAgICAgICAgICAgICAgICsrY250KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgRWxm
MzJfTGliIGxpYmxpc3Q7CiAgICAgICAgICAgICAgdGltZV90IHRpbWU7CiAgICAgICAgICAgICAg
Y2hhciB0aW1lYnVmWzIwXTsKICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKnRtcDsKCiAgICAgICAg
ICAgICAgbGlibGlzdC5sX25hbWUgPSBieXRlX2dldCAoZWxpYltjbnRdLmxfbmFtZSwgc2l6ZW9m
IChlbGliW2NudF0ubF9uYW1lKSk7CiAgICAgICAgICAgICAgdGltZSA9IGJ5dGVfZ2V0IChlbGli
W2NudF0ubF90aW1lX3N0YW1wLCBzaXplb2YgKGVsaWJbY250XS5sX3RpbWVfc3RhbXApKTsKICAg
ICAgICAgICAgICBsaWJsaXN0LmxfY2hlY2tzdW0gPSBieXRlX2dldCAoZWxpYltjbnRdLmxfY2hl
Y2tzdW0sIHNpemVvZiAoZWxpYltjbnRdLmxfY2hlY2tzdW0pKTsKICAgICAgICAgICAgICBsaWJs
aXN0LmxfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlbGliW2NudF0ubF92ZXJzaW9uLCBzaXplb2YgKGVs
aWJbY250XS5sX3ZlcnNpb24pKTsKICAgICAgICAgICAgICBsaWJsaXN0LmxfZmxhZ3MgPSBieXRl
X2dldCAoZWxpYltjbnRdLmxfZmxhZ3MsIHNpemVvZiAoZWxpYltjbnRdLmxfZmxhZ3MpKTsKCiAg
ICAgICAgICAgICAgdG1wID0gZ210aW1lICgmdGltZSk7CiAgICAgICAgICAgICAgc3ByaW50ZiAo
dGltZWJ1ZiwgIiUwNHUtJTAydS0lMDJ1VCUwMnU6JTAydTolMDJ1IiwKICAgICAgICAgICAgICAg
ICAgICAgICB0bXAtPnRtX3llYXIgKyAxOTAwLCB0bXAtPnRtX21vbiArIDEsIHRtcC0+dG1fbWRh
eSwKICAgICAgICAgICAgICAgICAgICAgICB0bXAtPnRtX2hvdXIsIHRtcC0+dG1fbWluLCB0bXAt
PnRtX3NlYyk7CgogICAgICAgICAgICAgIHByaW50ZiAoIiUzbHU6ICIsICh1bnNpZ25lZCBsb25n
KSBjbnQpOwogICAgICAgICAgICAgIGlmIChkb193aWRlKQogICAgICAgICAgICAgICAgcHJpbnRm
ICgiJS0yMHMiLCBzdHJ0YWIgKyBsaWJsaXN0LmxfbmFtZSk7CiAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgcHJpbnRmICgiJS0yMC4yMHMiLCBzdHJ0YWIgKyBsaWJsaXN0LmxfbmFt
ZSk7CiAgICAgICAgICAgICAgcHJpbnRmICgiICVzICUjMDEwbHggJS03bGQgJS03bGRcbiIsIHRp
bWVidWYsIGxpYmxpc3QubF9jaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgIGxpYmxpc3Qu
bF92ZXJzaW9uLCBsaWJsaXN0LmxfZmxhZ3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgZnJl
ZSAoZWxpYik7CiAgICAgICAgfQogICAgfQoKICByZXR1cm4gMTsKfQoKc3RhdGljIGNvbnN0IGNo
YXIgKgpnZXRfbm90ZV90eXBlIChlX3R5cGUpCiAgICAgdW5zaWduZWQgZV90eXBlOwp7CiAgc3Rh
dGljIGNoYXIgYnVmZls2NF07CgogIHN3aXRjaCAoZV90eXBlKQogICAgewogICAgY2FzZSAxOiBy
ZXR1cm4gKCJOVF9QUlNUQVRVUyAocHJzdGF0dXMgc3RydWN0dXJlKSIpOwogICAgY2FzZSAyOiBy
ZXR1cm4gKCJOVF9GUFJFR1NFVCAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzKSIpOwogICAgY2Fz
ZSAzOiByZXR1cm4gKCJOVF9QUlBTSU5GTyAocHJwc2luZm8gc3RydWN0dXJlKSIpOwogICAgY2Fz
ZSA0OiByZXR1cm4gKCJOVF9UQVNLU1RSVUNUICh0YXNrIHN0cnVjdHVyZSkiKTsKICAgIGNhc2Ug
MHg0NmU2MmI3ZjogcmV0dXJuICgiTlRfUFJYRlBSRUcgKHVzZXJfeGZwcmVncyBzdHJ1Y3R1cmUp
Iik7CiAgICBjYXNlIDEwOiByZXR1cm4gKCJOVF9QU1RBVFVTIChwc3RhdHVzIHN0cnVjdHVyZSki
KTsKICAgIGNhc2UgMTI6IHJldHVybiAoIk5UX0ZQUkVHUyAoZmxvYXRpbmcgcG9pbnQgcmVnaXN0
ZXJzKSIpOwogICAgY2FzZSAxMzogcmV0dXJuICgiTlRfUFNJTkZPIChwc2luZm8gc3RydWN0dXJl
KSIpOwogICAgY2FzZSAxNjogcmV0dXJuICgiTlRfTFdQU1RBVFVTIChsd3BzdGF0dXNfdCBzdHJ1
Y3R1cmUpIik7CiAgICBjYXNlIDE3OiByZXR1cm4gKCJOVF9MV1BTSU5GTyAobHdwc2luZm9fdCBz
dHJ1Y3R1cmUpIik7CiAgICBjYXNlIDE4OiByZXR1cm4gKCJOVF9XSU4zMlBTVEFUVVMgKHdpbjMy
X3BzdGF0dXMgc3RydWN0dXJlKSIpOwogICAgZGVmYXVsdDoKICAgICAgc3ByaW50ZiAoYnVmZiwg
KCJVbmtub3duIG5vdGUgdHlwZTogKDB4JTA4eCkiKSwgZV90eXBlKTsKICAgICAgcmV0dXJuIGJ1
ZmY7CiAgICB9Cn0KCnN0YXRpYyBjb25zdCBjaGFyICoKZ2V0X25ldGJzZF9lbGZjb3JlX25vdGVf
dHlwZSAoZV90eXBlKQogICAgIHVuc2lnbmVkIGVfdHlwZTsKewogIHN0YXRpYyBjaGFyIGJ1ZmZb
NjRdOwoKICBpZiAoZV90eXBlID09IDEpCiAgICB7CgogICAgICByZXR1cm4gKCJOZXRCU0QgcHJv
Y2luZm8gc3RydWN0dXJlIik7CiAgICB9CgoKCgoKCiAgaWYgKGVfdHlwZSA8IDMyKQogICAgewog
ICAgICBzcHJpbnRmIChidWZmLCAoIlVua25vd24gbm90ZSB0eXBlOiAoMHglMDh4KSIpLCBlX3R5
cGUpOwogICAgICByZXR1cm4gYnVmZjsKICAgIH0KCiAgc3dpdGNoIChlbGZfaGVhZGVyLmVfbWFj
aGluZSkKICAgIHsKCgoKICAgIGNhc2UgNDE6CiAgICBjYXNlIDB4OTAyNjoKICAgIGNhc2UgMjoK
ICAgIGNhc2UgMTg6CiAgICBjYXNlIDQzOgogICAgICBzd2l0Y2ggKGVfdHlwZSkKICAgICAgICB7
CiAgICAgICAgY2FzZSAzMiArMDoKICAgICAgICAgIHJldHVybiAoIlBUX0dFVFJFR1MgKHJlZyBz
dHJ1Y3R1cmUpIik7CiAgICAgICAgY2FzZSAzMiArMjoKICAgICAgICAgIHJldHVybiAoIlBUX0dF
VEZQUkVHUyAoZnByZWcgc3RydWN0dXJlKSIpOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBi
cmVhazsKICAgICAgICB9CiAgICAgIGJyZWFrOwoKCgogICAgZGVmYXVsdDoKICAgICAgc3dpdGNo
IChlX3R5cGUpCiAgICAgICAgewogICAgICAgIGNhc2UgMzIgKzE6CiAgICAgICAgICByZXR1cm4g
KCJQVF9HRVRSRUdTIChyZWcgc3RydWN0dXJlKSIpOwogICAgICAgIGNhc2UgMzIgKzM6CiAgICAg
ICAgICByZXR1cm4gKCJQVF9HRVRGUFJFR1MgKGZwcmVnIHN0cnVjdHVyZSkiKTsKICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICBzcHJpbnRmIChidWZm
LCAoIlBUX0ZJUlNUTUFDSCslZCIpLCBlX3R5cGUgLSAzMik7CiAgcmV0dXJuIGJ1ZmY7Cn0KCgoK
CgoKc3RhdGljIGludApwcm9jZXNzX25vdGUgKHBub3RlKQogICAgIEVsZl9JbnRlcm5hbF9Ob3Rl
ICpwbm90ZTsKewogIGNvbnN0IGNoYXIgKm50OwoKICBpZiAocG5vdGUtPm5hbWVzeiA9PSAwKQog
ICAgewoKCiAgICAgIG50ID0gZ2V0X25vdGVfdHlwZSAocG5vdGUtPnR5cGUpOwogICAgfQogIGVs
c2UgaWYgKChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMTEpICYmICgoX19i
dWlsdGluX2NvbnN0YW50X3AgKHBub3RlLT5uYW1lZGF0YSkgJiYgc3RybGVuIChwbm90ZS0+bmFt
ZWRhdGEpIDwgKChzaXplX3QpICgxMSkpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKCJOZXRC
U0QtQ09SRSIpICYmIHN0cmxlbiAoIk5ldEJTRC1DT1JFIikgPCAoKHNpemVfdCkgKDExKSkpKSA/
IF9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9j
b25zdGFudF9wIChwbm90ZS0+bmFtZWRhdGEpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wICgiTmV0
QlNELUNPUkUiKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHBub3RlLT5uYW1lZGF0YSksIF9fczJf
bGVuID0gc3RybGVuICgiTmV0QlNELUNPUkUiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
cG5vdGUtPm5hbWVkYXRhKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwbm90ZS0+bmFt
ZWRhdGEpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJOZXRCU0Qt
Q09SRSIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAq
KSAocG5vdGUtPm5hbWVkYXRhKSwgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIiksIChf
X3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0
aW5fY29uc3RhbnRfcCAocG5vdGUtPm5hbWVkYXRhKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgocG5vdGUtPm5hbWVkYXRhKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShwbm90ZS0+
bmFtZWRhdGEpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAocG5vdGUtPm5hbWVkYXRhKSwg
X19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIk5ldEJTRC1DT1JFIikgJiYg
KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6ZV90KShj
b25zdCB2b2lkICopKCJOZXRCU0QtQ09SRSIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVn
aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0YSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSgiTmV0QlNELUNPUkUiKSlbMF0pOyBpZiAoX19zMV9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVkYXRhKSlbMV0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTmV0QlNELUNPUkUiKSlbMV0pOyBpZiAo
X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVkYXRhKSlbMl0gLSAo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiTmV0QlNELUNPUkUi
KSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0
YSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5l
dEJTRC1DT1JFIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAoeyBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAo
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAocG5vdGUtPm5hbWVk
YXRhKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7
IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHBub3RlLT5uYW1lZGF0YSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y
ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5uYW1lZGF0YSkpWzNdIC0gX19zMlszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIk5ldEJTRC1DT1JF
IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJOZXRCU0QtQ09SRSIpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKCJOZXRCU0QtQ09SRSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0
cmxlbiAoIk5ldEJTRC1DT1JFIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50
X3AgKHBub3RlLT5uYW1lZGF0YSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHBub3RlLT5u
YW1lZGF0YSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikocG5vdGUtPm5hbWVkYXRhKSA9
PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoIk5ldEJTRC1D
T1JFIikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0
ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHBub3RlLT5u
YW1lZGF0YSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoIk5ldEJTRC1DT1JFIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAw
KSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHBub3RlLT5uYW1lZGF0YSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f
Y29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf
X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRhdGEpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0g
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChwbm90ZS0+bmFtZWRh
dGEpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1DT1JFIikpWzBdOyBpZiAoX19zMl9s
ZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJOZXRCU0QtQ09SRSIpKVsxXSk7
IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIk5ldEJTRC1D
T1JFIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9
IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
Ik5ldEJTRC1DT1JFIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChwbm90ZS0+
bmFtZWRhdGEsICJOZXRCU0QtQ09SRSIpKSkpOyB9KSA6IHN0cm5jbXAgKHBub3RlLT5uYW1lZGF0
YSwgIk5ldEJTRC1DT1JFIiwgMTEpKSkgPT0gMCkKICAgIHsKCiAgICAgIG50ID0gZ2V0X25ldGJz
ZF9lbGZjb3JlX25vdGVfdHlwZSAocG5vdGUtPnR5cGUpOwogICAgfQogIGVsc2UKICAgIHsKCgog
ICAgICBudCA9IGdldF9ub3RlX3R5cGUgKHBub3RlLT50eXBlKTsKICAgIH0KCiAgcHJpbnRmICgi
ICAlc1x0XHQweCUwOGx4XHQlc1xuIiwKICAgICAgICAgIHBub3RlLT5uYW1lc3ogPyBwbm90ZS0+
bmFtZWRhdGEgOiAiKE5PTkUpIiwKICAgICAgICAgIHBub3RlLT5kZXNjc3osIG50KTsKICByZXR1
cm4gMTsKfQoKCnN0YXRpYyBpbnQKcHJvY2Vzc19jb3JlZmlsZV9ub3RlX3NlZ21lbnQgKGZpbGUs
IG9mZnNldCwgbGVuZ3RoKQogICAgIEZJTEUgKmZpbGU7CiAgICAgYmZkX3ZtYSBvZmZzZXQ7CiAg
ICAgYmZkX3ZtYSBsZW5ndGg7CnsKICBFbGZfRXh0ZXJuYWxfTm90ZSAqcG5vdGVzOwogIEVsZl9F
eHRlcm5hbF9Ob3RlICpleHRlcm5hbDsKICBpbnQgcmVzID0gMTsKCiAgaWYgKGxlbmd0aCA8PSAw
KQogICAgcmV0dXJuIDA7CgogIHBub3RlcyA9IChFbGZfRXh0ZXJuYWxfTm90ZSAqKSBnZXRfZGF0
YSAoKCh2b2lkICopMCksIGZpbGUsIG9mZnNldCwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCJub3RlcyIpKTsKICBpZiAoIXBub3RlcykKICAgIHJl
dHVybiAwOwoKICBleHRlcm5hbCA9IHBub3RlczsKCiAgcHJpbnRmICgoIlxuTm90ZXMgYXQgb2Zm
c2V0IDB4JTA4bHggd2l0aCBsZW5ndGggMHglMDhseDpcbiIpLAogICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpIG9mZnNldCwgKHVuc2lnbmVkIGxvbmcpIGxlbmd0aCk7CiAgcHJpbnRmICgoIiAgT3du
ZXJcdFx0RGF0YSBzaXplXHREZXNjcmlwdGlvblxuIikpOwoKICB3aGlsZSAoZXh0ZXJuYWwgPCAo
RWxmX0V4dGVybmFsX05vdGUgKikoKGNoYXIgKikgcG5vdGVzICsgbGVuZ3RoKSkKICAgIHsKICAg
ICAgRWxmX0V4dGVybmFsX05vdGUgKm5leHQ7CiAgICAgIEVsZl9JbnRlcm5hbF9Ob3RlIGlub3Rl
OwogICAgICBjaGFyICp0ZW1wID0gKCh2b2lkICopMCk7CgogICAgICBpbm90ZS50eXBlID0gYnl0
ZV9nZXQgKGV4dGVybmFsLT50eXBlLCBzaXplb2YgKGV4dGVybmFsLT50eXBlKSk7CiAgICAgIGlu
b3RlLm5hbWVzeiA9IGJ5dGVfZ2V0IChleHRlcm5hbC0+bmFtZXN6LCBzaXplb2YgKGV4dGVybmFs
LT5uYW1lc3opKTsKICAgICAgaW5vdGUubmFtZWRhdGEgPSBleHRlcm5hbC0+bmFtZTsKICAgICAg
aW5vdGUuZGVzY3N6ID0gYnl0ZV9nZXQgKGV4dGVybmFsLT5kZXNjc3osIHNpemVvZiAoZXh0ZXJu
YWwtPmRlc2NzeikpOwogICAgICBpbm90ZS5kZXNjZGF0YSA9IGlub3RlLm5hbWVkYXRhICsgKCgo
aW5vdGUubmFtZXN6KSArICgoYmZkX3ZtYSkgMSA8PCAoMikpIC0gMSkgJiAoKGJmZF92bWEpIC0x
IDw8ICgyKSkpOwogICAgICBpbm90ZS5kZXNjcG9zID0gb2Zmc2V0ICsgKGlub3RlLmRlc2NkYXRh
IC0gKGNoYXIgKikgcG5vdGVzKTsKCiAgICAgIG5leHQgPSAoRWxmX0V4dGVybmFsX05vdGUgKiko
aW5vdGUuZGVzY2RhdGEgKyAoKChpbm90ZS5kZXNjc3opICsgKChiZmRfdm1hKSAxIDw8ICgyKSkg
LSAxKSAmICgoYmZkX3ZtYSkgLTEgPDwgKDIpKSkpOwoKICAgICAgaWYgKCgoY2hhciAqKSBuZXh0
KSA+ICgoKGNoYXIgKikgcG5vdGVzKSArIGxlbmd0aCkpCiAgICAgICAgewogICAgICAgICAgd2Fy
biAoKCJjb3JydXB0IG5vdGUgZm91bmQgYXQgb2Zmc2V0ICV4IGludG8gY29yZSBub3Rlc1xuIiks
CiAgICAgICAgICAgICAgICAoKGNoYXIgKikgZXh0ZXJuYWwpIC0gKChjaGFyICopIHBub3Rlcykp
OwogICAgICAgICAgd2FybiAoKCIgdHlwZTogJXgsIG5hbWVzaXplOiAlMDhseCwgZGVzY3NpemU6
ICUwOGx4XG4iKSwKICAgICAgICAgICAgICAgIGlub3RlLnR5cGUsIGlub3RlLm5hbWVzeiwgaW5v
dGUuZGVzY3N6KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGV4dGVybmFsID0g
bmV4dDsKCgoKCgogICAgICBpZiAoaW5vdGUubmFtZWRhdGFbaW5vdGUubmFtZXN6XSAhPSAnXDAn
KQogICAgICAgIHsKICAgICAgICAgIHRlbXAgPSBtYWxsb2MgKGlub3RlLm5hbWVzeiArIDEpOwoK
ICAgICAgICAgIGlmICh0ZW1wID09ICgodm9pZCAqKTApKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikpOwogICAgICAgICAgICAgIHJlcyA9IDA7
CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAoX19leHRlbnNp
b25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKGlub3RlLm5hbWVkYXRhKSAmJiBfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoaW5vdGUubmFtZXN6KSA/IChzdHJsZW4gKGlub3RlLm5hbWVkYXRhKSArIDEg
Pj0gKChzaXplX3QpIChpbm90ZS5uYW1lc3opKSA/IChjaGFyICopIG1lbWNweSAodGVtcCwgaW5v
dGUubmFtZWRhdGEsIGlub3RlLm5hbWVzeikgOiBzdHJuY3B5ICh0ZW1wLCBpbm90ZS5uYW1lZGF0
YSwgaW5vdGUubmFtZXN6KSkgOiBzdHJuY3B5ICh0ZW1wLCBpbm90ZS5uYW1lZGF0YSwgaW5vdGUu
bmFtZXN6KSkpOwogICAgICAgICAgdGVtcFtpbm90ZS5uYW1lc3pdID0gMDsKCgogICAgICAgICAg
aW5vdGUubmFtZWRhdGEgPSB0ZW1wOwogICAgICAgIH0KCiAgICAgIHJlcyAmPSBwcm9jZXNzX25v
dGUgKCYgaW5vdGUpOwoKICAgICAgaWYgKHRlbXAgIT0gKCh2b2lkICopMCkpCiAgICAgICAgewog
ICAgICAgICAgZnJlZSAodGVtcCk7CiAgICAgICAgICB0ZW1wID0gKCh2b2lkICopMCk7CiAgICAg
ICAgfQogICAgfQoKICBmcmVlIChwbm90ZXMpOwoKICByZXR1cm4gcmVzOwp9CgpzdGF0aWMgaW50
CnByb2Nlc3NfY29yZWZpbGVfbm90ZV9zZWdtZW50cyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7
CiAgRWxmX0ludGVybmFsX1BoZHIgKnByb2dyYW1faGVhZGVyczsKICBFbGZfSW50ZXJuYWxfUGhk
ciAqc2VnbWVudDsKICB1bnNpZ25lZCBpbnQgaTsKICBpbnQgcmVzID0gMTsKCiAgcHJvZ3JhbV9o
ZWFkZXJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopIG1hbGxvYwogICAgKGVsZl9oZWFkZXIuZV9w
aG51bSAqIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKCiAgaWYgKHByb2dyYW1faGVhZGVy
cyA9PSAoKHZvaWQgKikwKSkKICAgIHsKICAgICAgZXJyb3IgKCgiT3V0IG9mIG1lbW9yeVxuIikp
OwogICAgICByZXR1cm4gMDsKICAgIH0KCiAgaWYgKGlzXzMyYml0X2VsZikKICAgIGkgPSBnZXRf
MzJiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwogIGVsc2UKICAg
IGkgPSBnZXRfNjRiaXRfcHJvZ3JhbV9oZWFkZXJzIChmaWxlLCBwcm9ncmFtX2hlYWRlcnMpOwoK
ICBpZiAoaSA9PSAwKQogICAgewogICAgICBmcmVlIChwcm9ncmFtX2hlYWRlcnMpOwogICAgICBy
ZXR1cm4gMDsKICAgIH0KCiAgZm9yIChpID0gMCwgc2VnbWVudCA9IHByb2dyYW1faGVhZGVyczsK
ICAgICAgIGkgPCBlbGZfaGVhZGVyLmVfcGhudW07CiAgICAgICBpKyssIHNlZ21lbnQrKykKICAg
IHsKICAgICAgaWYgKHNlZ21lbnQtPnBfdHlwZSA9PSA0KQogICAgICAgIHJlcyAmPSBwcm9jZXNz
X2NvcmVmaWxlX25vdGVfc2VnbWVudCAoZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChiZmRfdm1hKSBzZWdtZW50LT5wX29mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiZmRfdm1hKSBzZWdtZW50LT5w
X2ZpbGVzeik7CiAgICB9CgogIGZyZWUgKHByb2dyYW1faGVhZGVycyk7CgogIHJldHVybiByZXM7
Cn0KCnN0YXRpYyBpbnQKcHJvY2Vzc19jb3JlZmlsZV9jb250ZW50cyAoZmlsZSkKICAgICBGSUxF
ICpmaWxlOwp7CgogIGlmICghIGRvX25vdGVzKQogICAgcmV0dXJuIDE7CgoKICBpZiAoZWxmX2hl
YWRlci5lX3R5cGUgIT0gNCkKICAgIHJldHVybiAxOwoKCiAgaWYgKGVsZl9oZWFkZXIuZV9waG51
bSA9PSAwKQogICAgewogICAgICBwcmludGYgKCgiTm8gbm90ZSBzZWdtZW50cyBwcmVzZW50IGlu
IHRoZSBjb3JlIGZpbGUuXG4iKSk7CiAgICAgIHJldHVybiAxOwogICB9CgogIHJldHVybiBwcm9j
ZXNzX2NvcmVmaWxlX25vdGVfc2VnbWVudHMgKGZpbGUpOwp9CgpzdGF0aWMgaW50CnByb2Nlc3Nf
YXJjaF9zcGVjaWZpYyAoZmlsZSkKICAgICBGSUxFICpmaWxlOwp7CiAgaWYgKCEgZG9fYXJjaCkK
ICAgIHJldHVybiAxOwoKICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQogICAgewogICAg
Y2FzZSA4OgogICAgY2FzZSAxMDoKICAgICAgcmV0dXJuIHByb2Nlc3NfbWlwc19zcGVjaWZpYyAo
ZmlsZSk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0
dXJuIDE7Cn0KCnN0YXRpYyBpbnQKZ2V0X2ZpbGVfaGVhZGVyIChmaWxlKQogICAgIEZJTEUgKmZp
bGU7CnsKCiAgaWYgKGZyZWFkIChlbGZfaGVhZGVyLmVfaWRlbnQsIDE2LCAxLCBmaWxlKSAhPSAx
KQogICAgcmV0dXJuIDA7CgoKICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9pZGVudFs1XSkKICAgIHsK
ICAgIGRlZmF1bHQ6CiAgICBjYXNlIDA6CiAgICBjYXNlIDE6IGJ5dGVfZ2V0ID0gYnl0ZV9nZXRf
bGl0dGxlX2VuZGlhbjsgYnJlYWs7CiAgICBjYXNlIDI6IGJ5dGVfZ2V0ID0gYnl0ZV9nZXRfYmln
X2VuZGlhbjsgYnJlYWs7CiAgICB9CgoKICBpc18zMmJpdF9lbGYgPSAoZWxmX2hlYWRlci5lX2lk
ZW50WzRdICE9IDIpOwoKCiAgaWYgKGlzXzMyYml0X2VsZikKICAgIHsKICAgICAgRWxmMzJfRXh0
ZXJuYWxfRWhkciBlaGRyMzI7CgogICAgICBpZiAoZnJlYWQgKGVoZHIzMi5lX3R5cGUsIHNpemVv
ZiAoZWhkcjMyKSAtIDE2LCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHJldHVybiAwOwoKICAgICAg
ZWxmX2hlYWRlci5lX3R5cGUgPSBieXRlX2dldCAoZWhkcjMyLmVfdHlwZSwgc2l6ZW9mIChlaGRy
MzIuZV90eXBlKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9tYWNoaW5lID0gYnl0ZV9nZXQgKGVoZHIz
Mi5lX21hY2hpbmUsIHNpemVvZiAoZWhkcjMyLmVfbWFjaGluZSkpOwogICAgICBlbGZfaGVhZGVy
LmVfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlaGRyMzIuZV92ZXJzaW9uLCBzaXplb2YgKGVoZHIzMi5l
X3ZlcnNpb24pKTsKICAgICAgZWxmX2hlYWRlci5lX2VudHJ5ID0gYnl0ZV9nZXQgKGVoZHIzMi5l
X2VudHJ5LCBzaXplb2YgKGVoZHIzMi5lX2VudHJ5KSk7CiAgICAgIGVsZl9oZWFkZXIuZV9waG9m
ZiA9IGJ5dGVfZ2V0IChlaGRyMzIuZV9waG9mZiwgc2l6ZW9mIChlaGRyMzIuZV9waG9mZikpOwog
ICAgICBlbGZfaGVhZGVyLmVfc2hvZmYgPSBieXRlX2dldCAoZWhkcjMyLmVfc2hvZmYsIHNpemVv
ZiAoZWhkcjMyLmVfc2hvZmYpKTsKICAgICAgZWxmX2hlYWRlci5lX2ZsYWdzID0gYnl0ZV9nZXQg
KGVoZHIzMi5lX2ZsYWdzLCBzaXplb2YgKGVoZHIzMi5lX2ZsYWdzKSk7CiAgICAgIGVsZl9oZWFk
ZXIuZV9laHNpemUgPSBieXRlX2dldCAoZWhkcjMyLmVfZWhzaXplLCBzaXplb2YgKGVoZHIzMi5l
X2Voc2l6ZSkpOwogICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplID0gYnl0ZV9nZXQgKGVoZHIz
Mi5lX3BoZW50c2l6ZSwgc2l6ZW9mIChlaGRyMzIuZV9waGVudHNpemUpKTsKICAgICAgZWxmX2hl
YWRlci5lX3BobnVtID0gYnl0ZV9nZXQgKGVoZHIzMi5lX3BobnVtLCBzaXplb2YgKGVoZHIzMi5l
X3BobnVtKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9zaGVudHNpemUgPSBieXRlX2dldCAoZWhkcjMy
LmVfc2hlbnRzaXplLCBzaXplb2YgKGVoZHIzMi5lX3NoZW50c2l6ZSkpOwogICAgICBlbGZfaGVh
ZGVyLmVfc2hudW0gPSBieXRlX2dldCAoZWhkcjMyLmVfc2hudW0sIHNpemVvZiAoZWhkcjMyLmVf
c2hudW0pKTsKICAgICAgZWxmX2hlYWRlci5lX3Noc3RybmR4ID0gYnl0ZV9nZXQgKGVoZHIzMi5l
X3Noc3RybmR4LCBzaXplb2YgKGVoZHIzMi5lX3Noc3RybmR4KSk7CiAgICB9CiAgZWxzZQogICAg
ewogICAgICBFbGY2NF9FeHRlcm5hbF9FaGRyIGVoZHI2NDsKCgoKCgogICAgICBpZiAoc2l6ZW9m
IChiZmRfdm1hKSA8IDgpCiAgICAgICAgewogICAgICAgICAgZXJyb3IgKCgiVGhpcyBpbnN0YW5j
ZSBvZiByZWFkZWxmIGhhcyBiZWVuIGJ1aWx0IHdpdGhvdXQgc3VwcG9ydCBmb3IgYVxuNjQgYml0
IGRhdGEgdHlwZSBhbmQgc28gaXQgY2Fubm90IHJlYWQgNjQgYml0IEVMRiBmaWxlcy5cbiIpKTsK
CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBpZiAoZnJlYWQgKGVoZHI2NC5l
X3R5cGUsIHNpemVvZiAoZWhkcjY0KSAtIDE2LCAxLCBmaWxlKSAhPSAxKQogICAgICAgIHJldHVy
biAwOwoKICAgICAgZWxmX2hlYWRlci5lX3R5cGUgPSBieXRlX2dldCAoZWhkcjY0LmVfdHlwZSwg
c2l6ZW9mIChlaGRyNjQuZV90eXBlKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9tYWNoaW5lID0gYnl0
ZV9nZXQgKGVoZHI2NC5lX21hY2hpbmUsIHNpemVvZiAoZWhkcjY0LmVfbWFjaGluZSkpOwogICAg
ICBlbGZfaGVhZGVyLmVfdmVyc2lvbiA9IGJ5dGVfZ2V0IChlaGRyNjQuZV92ZXJzaW9uLCBzaXpl
b2YgKGVoZHI2NC5lX3ZlcnNpb24pKTsKICAgICAgZWxmX2hlYWRlci5lX2VudHJ5ID0gYnl0ZV9n
ZXQgKGVoZHI2NC5lX2VudHJ5LCAtOCk7CiAgICAgIGVsZl9oZWFkZXIuZV9waG9mZiA9IGJ5dGVf
Z2V0IChlaGRyNjQuZV9waG9mZiwgLTgpOwogICAgICBlbGZfaGVhZGVyLmVfc2hvZmYgPSBieXRl
X2dldCAoZWhkcjY0LmVfc2hvZmYsIC04KTsKICAgICAgZWxmX2hlYWRlci5lX2ZsYWdzID0gYnl0
ZV9nZXQgKGVoZHI2NC5lX2ZsYWdzLCBzaXplb2YgKGVoZHI2NC5lX2ZsYWdzKSk7CiAgICAgIGVs
Zl9oZWFkZXIuZV9laHNpemUgPSBieXRlX2dldCAoZWhkcjY0LmVfZWhzaXplLCBzaXplb2YgKGVo
ZHI2NC5lX2Voc2l6ZSkpOwogICAgICBlbGZfaGVhZGVyLmVfcGhlbnRzaXplID0gYnl0ZV9nZXQg
KGVoZHI2NC5lX3BoZW50c2l6ZSwgc2l6ZW9mIChlaGRyNjQuZV9waGVudHNpemUpKTsKICAgICAg
ZWxmX2hlYWRlci5lX3BobnVtID0gYnl0ZV9nZXQgKGVoZHI2NC5lX3BobnVtLCBzaXplb2YgKGVo
ZHI2NC5lX3BobnVtKSk7CiAgICAgIGVsZl9oZWFkZXIuZV9zaGVudHNpemUgPSBieXRlX2dldCAo
ZWhkcjY0LmVfc2hlbnRzaXplLCBzaXplb2YgKGVoZHI2NC5lX3NoZW50c2l6ZSkpOwogICAgICBl
bGZfaGVhZGVyLmVfc2hudW0gPSBieXRlX2dldCAoZWhkcjY0LmVfc2hudW0sIHNpemVvZiAoZWhk
cjY0LmVfc2hudW0pKTsKICAgICAgZWxmX2hlYWRlci5lX3Noc3RybmR4ID0gYnl0ZV9nZXQgKGVo
ZHI2NC5lX3Noc3RybmR4LCBzaXplb2YgKGVoZHI2NC5lX3Noc3RybmR4KSk7CiAgICB9CgogIGlm
IChlbGZfaGVhZGVyLmVfc2hvZmYpCiAgICB7CgoKICAgICAgaWYgKGlzXzMyYml0X2VsZikKICAg
ICAgICBnZXRfMzJiaXRfc2VjdGlvbl9oZWFkZXJzIChmaWxlLCAxKTsKICAgICAgZWxzZQogICAg
ICAgIGdldF82NGJpdF9zZWN0aW9uX2hlYWRlcnMgKGZpbGUsIDEpOwogICAgfQoKICByZXR1cm4g
MTsKfQoKc3RhdGljIGludApwcm9jZXNzX2ZpbGUgKGZpbGVfbmFtZSkKICAgICBjaGFyICpmaWxl
X25hbWU7CnsKICBGSUxFICpmaWxlOwogIHN0cnVjdCBzdGF0IHN0YXRidWY7CiAgdW5zaWduZWQg
aW50IGk7CgogIGlmIChzdGF0IChmaWxlX25hbWUsICYgc3RhdGJ1ZikgPCAwKQogICAgewogICAg
ICBlcnJvciAoKCJDYW5ub3Qgc3RhdCBpbnB1dCBmaWxlICVzLlxuIiksIGZpbGVfbmFtZSk7CiAg
ICAgIHJldHVybiAxOwogICAgfQoKICBmaWxlID0gZm9wZW4gKGZpbGVfbmFtZSwgInJiIik7CiAg
aWYgKGZpbGUgPT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGVycm9yICgoIklucHV0IGZpbGUg
JXMgbm90IGZvdW5kLlxuIiksIGZpbGVfbmFtZSk7CiAgICAgIHJldHVybiAxOwogICAgfQoKICBp
ZiAoISBnZXRfZmlsZV9oZWFkZXIgKGZpbGUpKQogICAgewogICAgICBlcnJvciAoKCIlczogRmFp
bGVkIHRvIHJlYWQgZmlsZSBoZWFkZXJcbiIpLCBmaWxlX25hbWUpOwogICAgICBmY2xvc2UgKGZp
bGUpOwogICAgICByZXR1cm4gMTsKICAgIH0KCgogIGZvciAoaSA9IChzaXplb2YgKHZlcnNpb25f
aW5mbykgLyBzaXplb2YgKCh2ZXJzaW9uX2luZm8pWzBdKSk7IGktLTspCiAgICB2ZXJzaW9uX2lu
Zm9baV0gPSAwOwoKICBmb3IgKGkgPSAoc2l6ZW9mIChkeW5hbWljX2luZm8pIC8gc2l6ZW9mICgo
ZHluYW1pY19pbmZvKVswXSkpOyBpLS07KQogICAgZHluYW1pY19pbmZvW2ldID0gMDsKCgogIGlm
IChzaG93X25hbWUpCiAgICBwcmludGYgKCgiXG5GaWxlOiAlc1xuIiksIGZpbGVfbmFtZSk7Cgog
IGlmICghIHByb2Nlc3NfZmlsZV9oZWFkZXIgKCkpCiAgICB7CiAgICAgIGZjbG9zZSAoZmlsZSk7
CiAgICAgIHJldHVybiAxOwogICAgfQoKICBpZiAoISBwcm9jZXNzX3NlY3Rpb25faGVhZGVycyAo
ZmlsZSkpCiAgICB7CgoKICAgICAgZG9fdW53aW5kID0gZG9fdmVyc2lvbiA9IGRvX2R1bXAgPSBk
b19hcmNoID0gMDsKCiAgICAgIGlmICghIGRvX3VzaW5nX2R5bmFtaWMpCiAgICAgICAgZG9fc3lt
cyA9IGRvX3JlbG9jID0gMDsKICAgIH0KCiAgaWYgKHByb2Nlc3NfcHJvZ3JhbV9oZWFkZXJzIChm
aWxlKSkKICAgIHByb2Nlc3NfZHluYW1pY19zZWdtZW50IChmaWxlKTsKCiAgcHJvY2Vzc19yZWxv
Y3MgKGZpbGUpOwoKICBwcm9jZXNzX3Vud2luZCAoZmlsZSk7CgogIHByb2Nlc3Nfc3ltYm9sX3Rh
YmxlIChmaWxlKTsKCiAgcHJvY2Vzc19zeW1pbmZvIChmaWxlKTsKCiAgcHJvY2Vzc192ZXJzaW9u
X3NlY3Rpb25zIChmaWxlKTsKCiAgcHJvY2Vzc19zZWN0aW9uX2NvbnRlbnRzIChmaWxlKTsKCiAg
cHJvY2Vzc19jb3JlZmlsZV9jb250ZW50cyAoZmlsZSk7CgogIHByb2Nlc3NfZ251X2xpYmxpc3Qg
KGZpbGUpOwoKICBwcm9jZXNzX2FyY2hfc3BlY2lmaWMgKGZpbGUpOwoKICBmY2xvc2UgKGZpbGUp
OwoKICBpZiAoc2VjdGlvbl9oZWFkZXJzKQogICAgewogICAgICBmcmVlIChzZWN0aW9uX2hlYWRl
cnMpOwogICAgICBzZWN0aW9uX2hlYWRlcnMgPSAoKHZvaWQgKikwKTsKICAgIH0KCiAgaWYgKHN0
cmluZ190YWJsZSkKICAgIHsKICAgICAgZnJlZSAoc3RyaW5nX3RhYmxlKTsKICAgICAgc3RyaW5n
X3RhYmxlID0gKCh2b2lkICopMCk7CiAgICAgIHN0cmluZ190YWJsZV9sZW5ndGggPSAwOwogICAg
fQoKICBpZiAoZHluYW1pY19zdHJpbmdzKQogICAgewogICAgICBmcmVlIChkeW5hbWljX3N0cmlu
Z3MpOwogICAgICBkeW5hbWljX3N0cmluZ3MgPSAoKHZvaWQgKikwKTsKICAgIH0KCiAgaWYgKGR5
bmFtaWNfc3ltYm9scykKICAgIHsKICAgICAgZnJlZSAoZHluYW1pY19zeW1ib2xzKTsKICAgICAg
ZHluYW1pY19zeW1ib2xzID0gKCh2b2lkICopMCk7CiAgICAgIG51bV9keW5hbWljX3N5bXMgPSAw
OwogICAgfQoKICBpZiAoZHluYW1pY19zeW1pbmZvKQogICAgewogICAgICBmcmVlIChkeW5hbWlj
X3N5bWluZm8pOwogICAgICBkeW5hbWljX3N5bWluZm8gPSAoKHZvaWQgKikwKTsKICAgIH0KCiAg
cmV0dXJuIDA7Cn0KIyAxMDM1MyAicmVhZGVsZi5jIgppbnQgbWFpbiAoaW50LCBjaGFyICoqKTsK
CmludAptYWluIChhcmdjLCBhcmd2KQogICAgIGludCBhcmdjOwogICAgIGNoYXIgKiphcmd2Owp7
CiAgaW50IGVycjsKICBjaGFyICpjbWRsaW5lX2R1bXBfc2VjdHMgPSAoKHZvaWQgKikwKTsKICB1
bnNpZ25lZCBudW1fY21kbGluZV9kdW1wX3NlY3RzID0gMDsKCgogIHNldGxvY2FsZSAoX19MQ19N
RVNTQUdFUywgIiIpOwoKCiAgc2V0bG9jYWxlIChfX0xDX0NUWVBFLCAiIik7CgogIHdoaWxlICgw
KTsKICB3aGlsZSAoMCk7CgogIHBhcnNlX2FyZ3MgKGFyZ2MsIGFyZ3YpOwoKICBpZiAob3B0aW5k
IDwgKGFyZ2MgLSAxKSkKICAgIHNob3dfbmFtZSA9IDE7CgoKCiAgaWYgKG9wdGluZCArIDEgPCBh
cmdjICYmIGR1bXBfc2VjdHMgIT0gKCh2b2lkICopMCkpCiAgICB7CiAgICAgIGNtZGxpbmVfZHVt
cF9zZWN0cyA9IG1hbGxvYyAobnVtX2R1bXBfc2VjdHMpOwogICAgICBpZiAoY21kbGluZV9kdW1w
X3NlY3RzID09ICgodm9pZCAqKTApKQogICAgICAgIGVycm9yICgoIk91dCBvZiBtZW1vcnkgYWxs
b2NhdGluZyBkdW1wIHJlcXVlc3QgdGFibGUuIikpOwogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgICAgbWVtY3B5IChjbWRsaW5lX2R1bXBfc2VjdHMsIGR1bXBfc2VjdHMsIG51bV9kdW1wX3Nl
Y3RzKTsKICAgICAgICAgIG51bV9jbWRsaW5lX2R1bXBfc2VjdHMgPSBudW1fZHVtcF9zZWN0czsK
ICAgICAgICB9CiAgICB9CgogIGVyciA9IDA7CiAgd2hpbGUgKG9wdGluZCA8IGFyZ2MpCiAgICB7
CiAgICAgIGVyciB8PSBwcm9jZXNzX2ZpbGUgKGFyZ3Zbb3B0aW5kKytdKTsKCgogICAgICBpZiAo
b3B0aW5kIDwgYXJnYyAmJiBkdW1wX3NlY3RzICE9ICgodm9pZCAqKTApKQogICAgICAgIHsKICAg
ICAgICAgIG51bV9kdW1wX3NlY3RzID0gbnVtX2NtZGxpbmVfZHVtcF9zZWN0czsKICAgICAgICAg
IGlmIChudW1fY21kbGluZV9kdW1wX3NlY3RzID4gMCkKICAgICAgICAgICAgbWVtY3B5IChkdW1w
X3NlY3RzLCBjbWRsaW5lX2R1bXBfc2VjdHMsIG51bV9jbWRsaW5lX2R1bXBfc2VjdHMpOwogICAg
ICAgIH0KICAgIH0KCiAgaWYgKGR1bXBfc2VjdHMgIT0gKCh2b2lkICopMCkpCiAgICBmcmVlIChk
dW1wX3NlY3RzKTsKICBpZiAoY21kbGluZV9kdW1wX3NlY3RzICE9ICgodm9pZCAqKTApKQogICAg
ZnJlZSAoY21kbGluZV9kdW1wX3NlY3RzKTsKCiAgcmV0dXJuIGVycjsKfQo=


             reply	other threads:[~2003-03-02  3:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-02  3:46 eezyy [this message]
2003-03-22 18:47 bangerth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030302034138.12822.qmail@sources.redhat.com \
    --to=eezyy@gmx.net \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).