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


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

c++/2455: 'g++ A0439589.C' results in Internal error (core) in cc1plus



>Number:         2455
>Category:       c++
>Synopsis:       'g++ A0439589.C' results in Internal error (core) in cc1plus
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Apr 02 01:36:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Andreas Krakowczyk
>Release:        gcc-20010320
>Organization:
>Environment:
sparc-sun-solaris2.8
>Description:
When compiling file A0439589.C, g++ reports 
g++: Internal error: Segmentation Fault (program cc1plus)
Doesn't work with gcc-2.95.3 either.
>How-To-Repeat:
g++ -c A0439589.i
>Fix:

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

IyA3ICJBMDQzOTU4OS5DIgojaWRlbnQgIiVXJSBvZiAlRSUiCgojIDEgIi9ob21lNS9rcmFrb3cv
Z251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9p
bmNsdWRlL2crKy9pb3N0cmVhbS5oIiAxIDMKIyAzMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysr
L2lvc3RyZWFtLmgiIDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9z
dHJlYW0uaCIgMSAzCiMgMzggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9pb3N0
cmVhbS5oIiAzCgojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9zcGFyYy1zdW4tc29sYXJp
czIuOC9iaXRzL2MrK2NvbmZpZy5oIiAxIDMKIyAzNCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysr
L3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysrY29uZmlnLmgiIDMKIyAxICIvaG9tZTUva3Jh
a293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9vc19kZWZpbmVzLmgiIDEg
MwojIDM1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0
cy9jKytjb25maWcuaCIgMiAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIw
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0
ZF9pb3N0cmVhbS5oIiAyIDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRf
b3N0cmVhbS5oIiAxIDMKIyAzOCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX29z
dHJlYW0uaCIgMwoKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zLmgi
IDEgMwojIDM4ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zLmgiIDMKCiMg
MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2lvc2Z3ZC5oIiAxIDMKIyAzOCAi
L2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2lvc2Z3ZC5oIiAzCgojIDEgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL2crKy9zcGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL2MrK2NvbmZpZy5o
IiAxIDMKIyA0MCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2lvc2Z3ZC5oIiAy
IDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3djaGFyLmgiIDEgMwoj
IDM5ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3djaGFyLmgiIDMKIyAxICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9jKytjb25m
aWcuaCIgMSAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jd2NoYXIu
aCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRkZWYuaCIg
MSAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3RkZGVmLmgiIDMK
IyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNDcgIi9ob21lNS9r
cmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDE5OSAi
L2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGludCBz
aXplX3Q7CiMgNDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3RkZGVmLmgi
IDIgMwoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpwdHJkaWZmX3Q7CiAgdXNpbmcgOjpzaXpl
X3Q7Cn0KIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2N3Y2hhci5oIiAy
IDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3N0ZGlvLmgiIDEgMwoj
IDM5ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3N0ZGlvLmgiIDMKIyAxICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9jKytjb25m
aWcuaCIgMSAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3RkaW8u
aCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRhcmcuaCIg
MSAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3RkYXJnLmgiIDMK
IyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKIyA0MyAiL2hvbWU1L2ty
YWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251
Y192YV9saXN0OwojIDkwICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVk
ZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysr
L2JpdHMvc3RkX2NzdGRhcmcuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6OnZhX2xp
c3Q7Cn0KIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRpby5oIiAy
IDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3N0ZGRlZi5oIiAxIDMK
IyA0MiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRpby5oIiAyIDMKIyA0
NCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRpby5oIiAzCiMgMSAiL2hv
bWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyAxNCAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0
CiMgMTUgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMzQgIi9ob21lNS9r
cmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW8uaAkxLjc4
CTk5LzEyLzA4IFNNSSIKCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5o
IiAxIDMgNAojIDQxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMgNAoj
cHJhZ21hIGlkZW50ICJAKCMpc3RkaW9faXNvLmgJMS4yCTk5LzEwLzI1IFNNSSIKCgojIDEgIi9o
b21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzMuMC9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMyA0CiMgMjIgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJA
KCMpZmVhdHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUv
c3lzL2lzYV9kZWZzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAz
IDQKI3ByYWdtYSBpZGVudCAiQCgjKWlzYV9kZWZzLmgJMS4yMAk5OS8wNS8wNCBTTUkiCiMgMTU4
ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNApleHRlcm4gIkMiIHsKIyAzODAgIi91
c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMyA0Cn0KIyAyNSAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMiAzIDQKCgpleHRlcm4gIkMiIHsKIyAxOTAgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMgNAp9CiMgNDUgIi9ob21lNS9r
cmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lz
L3ZhX2xpc3QuaCIgMSAzIDQKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xpc3QuaCIgMyA0CiNw
cmFnbWEgaWRlbnQgIkAoIyl2YV9saXN0LmgJMS4xMgk5OS8wNS8wNCBTTUkiCiMgMjIgIi91c3Iv
aW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCnR5cGVkZWYgdm9pZCAq
X192YV9saXN0OwoKCgoKCn0KIyA0NiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lz
by5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zdGRpb190YWcuaCIgMSAzIDQKIyA5ICIvdXNy
L2luY2x1ZGUvc3RkaW9fdGFnLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9fdGFnLmgJ
MS4zCTk4LzA0LzIwIFNNSSIKCgpleHRlcm4gIkMiIHsKIyAyMSAiL3Vzci9pbmNsdWRlL3N0ZGlv
X3RhZy5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgRklMRSBfX0ZJTEU7CgoKCn0KIyA0NyAiL2hvbWU1
L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9z
dGRpb19pbXBsLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMyA0CiNw
cmFnbWEgaWRlbnQgIkAoIylzdGRpb19pbXBsLmgJMS44CTk5LzA2LzEwIFNNSSIKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAxIDMgNAojIDEyICIvdXNyL2luY2x1ZGUvc3RkaW9f
aW1wbC5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewoKCgoKCgoKdHlwZWRlZiBpbnQgc3NpemVfdDsK
IyAzOCAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMyA0CnN0cnVjdCBGSUxFCnsKCgoKCiAg
ICAgICAgc3NpemVfdCBfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wdHI7CgogICAgICAg
IHVuc2lnbmVkIGNoYXIgKl9iYXNlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX2ZsYWc7CiAgICAg
ICAgdW5zaWduZWQgY2hhciBfZmlsZTsKICAgICAgICB1bnNpZ25lZCBfX29yaWVudGF0aW9uOjI7
CiAgICAgICAgdW5zaWduZWQgX19pb25vbG9jazoxOwogICAgICAgIHVuc2lnbmVkIF9fZmlsbGVy
OjU7Cn07CgoKCgp9CiMgNDggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIg
MiAzIDQKIyA1OCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKZXh0
ZXJuICJDIiB7CiMgNjggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMyA0
CnR5cGVkZWYgbG9uZyBsb25nIF9fbG9uZ2xvbmdfdDsKIyA4NCAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKdHlwZWRlZiBfX0ZJTEUgRklMRTsKIyA5NyAiL2hvbWU1
L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKdHlwZWRlZiBsb25nIGZwb3NfdDsK
IyAxNTYgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMyA0CmV4dGVybiBf
X0ZJTEUgX19pb2JbMjBdOwojIDE3MyAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3N0ZGlvX2lz
by5oIiAzIDQKZXh0ZXJuIGludCByZW1vdmUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCByZW5h
bWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqdG1wZmlsZSh2b2lk
KTsKZXh0ZXJuIGNoYXIgKnRtcG5hbShjaGFyICopOwpleHRlcm4gaW50IGZjbG9zZShGSUxFICop
OwpleHRlcm4gaW50IGZmbHVzaChGSUxFICopOwpleHRlcm4gRklMRSAqZm9wZW4oY29uc3QgY2hh
ciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRSAqZnJlb3Blbihjb25zdCBjaGFyICosIGNv
bnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQgc2V0YnVmKEZJTEUgKiwgY2hhciAqKTsK
ZXh0ZXJuIGludCBzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQsIHNpemVfdCk7CgpleHRlcm4g
aW50IGZwcmludGYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IGZzY2Fu
ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgcHJpbnRmKGNvbnN0IGNo
YXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc2NhbmYoY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJu
IGludCBzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBzc2Nh
bmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgdmZwcmludGYo
RklMRSAqLCBjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQgdnByaW50Zihjb25z
dCBjaGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqLCBjb25zdCBj
aGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQgZmdldGMoRklMRSAqKTsKZXh0ZXJuIGNoYXIg
KmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpleHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAq
KTsKZXh0ZXJuIGludCBmcHV0cyhjb25zdCBjaGFyICosIEZJTEUgKik7CgoKZXh0ZXJuIGludCBn
ZXRjKEZJTEUgKik7CmV4dGVybiBpbnQgcHV0YyhpbnQsIEZJTEUgKik7CgoKCmV4dGVybiBpbnQg
Z2V0Y2hhcih2b2lkKTsKZXh0ZXJuIGludCBwdXRjaGFyKGludCk7CgpleHRlcm4gY2hhciAqZ2V0
cyhjaGFyICopOwpleHRlcm4gaW50IHB1dHMoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB1bmdl
dGMoaW50LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZyZWFkKHZvaWQgKiwgc2l6ZV90LCBzaXpl
X3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QgZndyaXRlKGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBz
aXplX3QsIEZJTEUgKik7CmV4dGVybiBpbnQgZmdldHBvcyhGSUxFICosIGZwb3NfdCAqKTsKZXh0
ZXJuIGludCBmc2VlayhGSUxFICosIGxvbmcsIGludCk7CmV4dGVybiBpbnQgZnNldHBvcyhGSUxF
ICosIGNvbnN0IGZwb3NfdCAqKTsKZXh0ZXJuIGxvbmcgZnRlbGwoRklMRSAqKTsKZXh0ZXJuIHZv
aWQgcmV3aW5kKEZJTEUgKik7CgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIoRklMRSAqKTsKZXh0ZXJu
IGludCBmZW9mKEZJTEUgKik7CmV4dGVybiBpbnQgZmVycm9yKEZJTEUgKik7CgpleHRlcm4gdm9p
ZCBwZXJyb3IoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IF9fZmlsYnVmKEZJTEUgKik7CmV4
dGVybiBpbnQgX19mbHNidWYoaW50LCBGSUxFICopOwojIDM0NSAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvaXNvL3N0ZGlvX2lzby5oIiAzIDQKfQojIDM3ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4y
MDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRp
by5oIiAyIDMgNAojIDk4ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu
ICJDIiB7CgoKCgoKCnR5cGVkZWYgbG9uZyBvZmZfdDsKCgoKCgoKCnR5cGVkZWYgX19sb25nbG9u
Z190IG9mZjY0X3Q7CiMgMTIzICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlw
ZWRlZiBfX2xvbmdsb25nX3QgZnBvczY0X3Q7CiMgMTM0ICIvaG9tZTUva3Jha293L2dudS9sb2Nh
bC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9z
dGRpby5oIiAzIDQKdHlwZWRlZiBfX3ZhX2xpc3QgX19ub3RfdmFfbGlzdF9fOwojIDE1MSAiL2hv
bWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiB1bnNpZ25lZCBjaGFyIF9zaWJ1
ZltdLCBfc29idWZbXTsKIyAxOTMgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNApl
eHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRhYltdOwpleHRlcm4gRklMRSAqX2xhc3RidWY7
CiMgMjI1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGNoYXIgKnRt
cG5hbV9yKGNoYXIgKik7CgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlcihGSUxFICosIGNoYXIgKiwg
c2l6ZV90KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7CgoKCgoKZXh0ZXJuIGludCBz
bnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoKCgoKZXh0ZXJuIGlu
dCB2c25wcmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19nbnVjX3ZhX2xpc3Qp
OwojIDI1MCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpm
ZG9wZW4oaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICopOwpl
eHRlcm4gaW50IGZpbGVubyhGSUxFICopOwojIDI2MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3Rk
aW8uaCIgMyA0CmV4dGVybiB2b2lkIGZsb2NrZmlsZShGSUxFICopOwpleHRlcm4gaW50IGZ0cnls
b2NrZmlsZShGSUxFICopOwpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZShGSUxFICopOwpleHRlcm4g
aW50IGdldGNfdW5sb2NrZWQoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkKHZv
aWQpOwpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHB1
dGNoYXJfdW5sb2NrZWQoaW50KTsKIyAyNzYgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0ZGlvLmgi
IDMgNApleHRlcm4gRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gY2hhciAqdGVtcG5hbShjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3QgKiwg
Y29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRpbmQs
IG9wdGVyciwgb3B0b3B0OwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJuIGludCBwdXR3
KGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKCgoKCgoKCmV4dGVybiBp
bnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CmV4dGVybiBvZmZfdCBmdGVsbG8oRklMRSAq
KTsKIyAzMDUgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gRklMRSAq
Zm9wZW42NChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVu
NjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBGSUxFICp0bXBm
aWxlNjQodm9pZCk7CmV4dGVybiBpbnQgZmdldHBvczY0KEZJTEUgKiwgZnBvczY0X3QgKik7CmV4
dGVybiBpbnQgZnNldHBvczY0KEZJTEUgKiwgY29uc3QgZnBvczY0X3QgKik7CmV4dGVybiBpbnQg
ZnNlZWtvNjQoRklMRSAqLCBvZmY2NF90LCBpbnQpOwpleHRlcm4gb2ZmNjRfdCBmdGVsbG82NChG
SUxFICopOwojIDQxMiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMyA0Cn0KIyA0NSAi
L2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRpby5oIiAyIDMKIyA5NCAiL2hv
bWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdGRpby5oIiAzCm5hbWVzcGFjZSBzdGQK
ewogIHVzaW5nIDo6RklMRTsKICB1c2luZyA6OmZwb3NfdDsKCiAgZXh0ZXJuICJDIiBpbnQgcmVt
b3ZlKGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGludCByZW5hbWUoY29uc3QgY2hhciosIGNv
bnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIEZJTEUqIHRtcGZpbGUodm9pZCk7CiAgZXh0ZXJuICJD
IiBjaGFyKiB0bXBuYW0oY2hhciopOwogIGV4dGVybiAiQyIgaW50IGZjbG9zZShGSUxFKik7CiAg
ZXh0ZXJuICJDIiBpbnQgZmZsdXNoKEZJTEUqKTsKICBleHRlcm4gIkMiIEZJTEUqIGZvcGVuKGNv
bnN0IGNoYXIqLCBjb25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBGSUxFKiBmcmVvcGVuKGNvbnN0
IGNoYXIqLCBjb25zdCBjaGFyKiwgRklMRSopOwogIGV4dGVybiAiQyIgdm9pZCBzZXRidWYoRklM
RSosIGNoYXIqKTsKICBleHRlcm4gIkMiIGludCBzZXR2YnVmKEZJTEUqLCBjaGFyKiwgaW50LCBz
aXplX3QpOwogIGV4dGVybiAiQyIgaW50IGZwcmludGYoRklMRSosIGNvbnN0IGNoYXIqLCAuLi4p
OwogIGV4dGVybiAiQyIgaW50IGZzY2FuZihGSUxFKiwgY29uc3QgY2hhciosIC4uLik7CiAgZXh0
ZXJuICJDIiBpbnQgcHJpbnRmKGNvbnN0IGNoYXIqLCAuLi4pOwogIGV4dGVybiAiQyIgaW50IHNj
YW5mKGNvbnN0IGNoYXIqLCAuLi4pOwogIGV4dGVybiAiQyIgaW50IHNucHJpbnRmKGNoYXIgKiwg
c2l6ZV90LCBjb25zdCBjaGFyKiwgLi4uKTsKICBleHRlcm4gIkMiIGludCBzcHJpbnRmKGNoYXIg
KiwgY29uc3QgY2hhciosIC4uLik7CiAgZXh0ZXJuICJDIiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIq
LCBjb25zdCBjaGFyKiwgLi4uKTsKICBleHRlcm4gIkMiIGludCB2ZnByaW50ZihGSUxFKiwgY29u
c3QgY2hhciosIHZhX2xpc3QpOwogIGV4dGVybiAiQyIgaW50IHZmc2NhbmYoRklMRSosIGNvbnN0
IGNoYXIqLCB2YV9saXN0KTsKICBleHRlcm4gIkMiIGludCB2cHJpbnRmKGNvbnN0IGNoYXIqLCB2
YV9saXN0KTsKICBleHRlcm4gIkMiIGludCB2c2NhbmYoY29uc3QgY2hhciosIHZhX2xpc3QpOwog
IGV4dGVybiAiQyIgaW50IHZzbnByaW50ZihjaGFyKiwgc2l6ZV90LCBjb25zdCBjaGFyKiwgdmFf
bGlzdCk7CiAgZXh0ZXJuICJDIiBpbnQgdnNwcmludGYoY2hhciosIGNvbnN0IGNoYXIqLCB2YV9s
aXN0KTsKICBleHRlcm4gIkMiIGludCB2c3NjYW5mKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwg
dmFfbGlzdCk7CiAgZXh0ZXJuICJDIiBpbnQgZmdldGMoRklMRSAqKTsKICBleHRlcm4gIkMiIGNo
YXIgKmZnZXRzKGNoYXIqLCBpbnQsIEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBmcHV0YyhpbnQs
IEZJTEUqKTsKICBleHRlcm4gIkMiIGludCBmcHV0cyhjb25zdCBjaGFyKiwgRklMRSopOwogIGV4
dGVybiAiQyIgaW50IGdldGMoRklMRSopOwogIGV4dGVybiAiQyIgaW50IGdldGNoYXIodm9pZCk7
CiAgZXh0ZXJuICJDIiBjaGFyICpnZXRzKGNoYXIqKTsKICBleHRlcm4gIkMiIGludCBwdXRjKGlu
dCwgRklMRSopOwogIGV4dGVybiAiQyIgaW50IHB1dGNoYXIoaW50KTsKICBleHRlcm4gIkMiIGlu
dCBwdXRzKGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGludCB1bmdldGMoaW50LCBGSUxFKik7
CiAgZXh0ZXJuICJDIiBzaXplX3QgZnJlYWQodm9pZCosIHNpemVfdCwgc2l6ZV90LCBGSUxFKik7
CiAgZXh0ZXJuICJDIiBzaXplX3QgZndyaXRlKGNvbnN0IHZvaWQqLCBzaXplX3QsIHNpemVfdCwg
RklMRSopOwogIGV4dGVybiAiQyIgaW50IGZnZXRwb3MoRklMRSosIGZwb3NfdCopOwogIGV4dGVy
biAiQyIgaW50IGZzZWVrKEZJTEUqLCBsb25nIGludCwgaW50KTsKICBleHRlcm4gIkMiIGludCBm
c2V0cG9zKEZJTEUqLCBjb25zdCBmcG9zX3QqKTsKICBleHRlcm4gIkMiIGxvbmcgaW50IGZ0ZWxs
KEZJTEUqKTsKICBleHRlcm4gIkMiIHZvaWQgcmV3aW5kKEZJTEUqKTsKICBleHRlcm4gIkMiIHZv
aWQgY2xlYXJlcnIoRklMRSopOwogIGV4dGVybiAiQyIgaW50IGZlb2YoRklMRSopOwogIGV4dGVy
biAiQyIgaW50IGZlcnJvcihGSUxFKik7CiAgZXh0ZXJuICJDIiB2b2lkIHBlcnJvcihjb25zdCBj
aGFyKik7Cn0KIyA0MiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2N3Y2hhci5o
IiAyIDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3N0ZGFyZy5oIiAx
IDMKIyA0MyAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2N3Y2hhci5oIiAyIDMK
IyA0NiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2N3Y2hhci5oIiAzCiMgMSAi
L2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wL2luY2x1ZGUvd2NoYXIuaCIgMSAzIDQKIyAxOCAiL2hvbWU1L2tyYWtvdy9n
bnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2lu
Y2x1ZGUvd2NoYXIuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyl3Y2hhci5oCTEuMzMJOTkvMDgv
MzAgU01JIgoKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9pc28vd2NoYXJfaXNvLmgiIDEgMyA0
CiMgMzAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMyA0CiNwcmFnbWEg
aWRlbnQgIkAoIyl3Y2hhcl9pc28uaAkxLjIJOTkvMTEvMTAgU01JIgoKIyAxICIvaG9tZTUva3Jh
a293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z
LjAvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMgNAojIDMzICIvaG9tZTUva3Jha293
L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAv
aW5jbHVkZS9pc28vd2NoYXJfaXNvLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX3Rh
Zy5oIiAxIDMgNAojIDM0ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9pc28vd2NoYXJfaXNvLmgiIDIg
MyA0CiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyX2ltcGwuaCIgMSAzIDQKIyA5ICIvdXNyL2luY2x1
ZGUvd2NoYXJfaW1wbC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXdjaGFyX2ltcGwuaAkxLjMJ
OTkvMDcvMjYgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMyA0CiMg
MTIgIi91c3IvaW5jbHVkZS93Y2hhcl9pbXBsLmgiIDIgMyA0CgoKZXh0ZXJuICJDIiB7CgoKCgp0
eXBlZGVmIHN0cnVjdCBfX21ic3RhdGVfdCB7CgoKCiAgICAgICAgaW50IF9fZmlsbGVyWzZdOwoK
fSBfX21ic3RhdGVfdDsKCgoKfQojIDM1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMy
MC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9pc28vd2NoYXJf
aXNvLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMgNAojIDI4
ICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGlt
ZV9pc28uaAkxLjEJOTkvMDgvMDkgU01JIgoKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4y
MDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zeXMv
ZmVhdHVyZV90ZXN0cy5oIiAxIDMgNAojIDMxICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVfaXNvLmgi
IDIgMyA0CgoKZXh0ZXJuICJDIiB7CiMgNTkgIi91c3IvaW5jbHVkZS9pc28vdGltZV9pc28uaCIg
MyA0CnR5cGVkZWYgbG9uZyBjbG9ja190OwoKCgoKdHlwZWRlZiBsb25nIHRpbWVfdDsKCgoKCnN0
cnVjdCB0bSB7CiAgICAgICAgaW50IHRtX3NlYzsKICAgICAgICBpbnQgdG1fbWluOwogICAgICAg
IGludCB0bV9ob3VyOwogICAgICAgIGludCB0bV9tZGF5OwogICAgICAgIGludCB0bV9tb247CiAg
ICAgICAgaW50IHRtX3llYXI7CiAgICAgICAgaW50IHRtX3dkYXk7CiAgICAgICAgaW50IHRtX3lk
YXk7CiAgICAgICAgaW50IHRtX2lzZHN0Owp9OwoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUoY29u
c3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2xvY2tfdCBjbG9jayh2b2lkKTsKZXh0ZXJuIGNoYXIg
KmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSh0aW1lX3QsIHRp
bWVfdCk7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVybiBz
dHJ1Y3QgdG0gKmxvY2FsdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVybiB0aW1lX3QgbWt0aW1l
KHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVfdCAqKTsKZXh0ZXJuIHNpemVf
dCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdG0g
Kik7CiMgMTEzICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVfaXNvLmgiIDMgNAp9CiMgMzYgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMiAzIDQKCgoKCiMgMSAiL2hvbWU1L2ty
YWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNv
L3djaGFyX2lzby5oIiAyIDMgNAoKCgojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2N0eXBlLmgi
IDEgMyA0CiMgMjUgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2N0eXBlLmgiIDMgNAojcHJhZ21hIGlk
ZW50ICJAKCMpY3R5cGUuaAkxLjMzCTk5LzA4LzEwIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL2lz
by9jdHlwZV9pc28uaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2lzby9jdHlwZV9pc28uaCIg
MyA0CiNwcmFnbWEgaWRlbnQgIkAoIyljdHlwZV9pc28uaAkxLjEJOTkvMDgvMDkgU01JIgoKIyAx
ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMgNAojIDMxICIv
dXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewojIDYzICIv
dXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzIDQKZXh0ZXJuIGludCBpc2FsbnVtKGludCk7
CmV4dGVybiBpbnQgaXNhbHBoYShpbnQpOwpleHRlcm4gaW50IGlzY250cmwoaW50KTsKZXh0ZXJu
IGludCBpc2RpZ2l0KGludCk7CmV4dGVybiBpbnQgaXNncmFwaChpbnQpOwpleHRlcm4gaW50IGlz
bG93ZXIoaW50KTsKZXh0ZXJuIGludCBpc3ByaW50KGludCk7CmV4dGVybiBpbnQgaXNwdW5jdChp
bnQpOwpleHRlcm4gaW50IGlzc3BhY2UoaW50KTsKZXh0ZXJuIGludCBpc3VwcGVyKGludCk7CmV4
dGVybiBpbnQgaXN4ZGlnaXQoaW50KTsKCgoKCgoKCmV4dGVybiBpbnQgdG9sb3dlcihpbnQpOwpl
eHRlcm4gaW50IHRvdXBwZXIoaW50KTsKCgoKCgpleHRlcm4gdW5zaWduZWQgY2hhciBfX2N0eXBl
W107CmV4dGVybiB1bnNpZ25lZCBpbnQgKl9fY3R5cGVfbWFzazsKZXh0ZXJuIGludCAqX190cmFu
c191cHBlcjsKZXh0ZXJuIGludCAqX190cmFuc19sb3dlcjsKIyAxODYgIi91c3IvaW5jbHVkZS9p
c28vY3R5cGVfaXNvLmgiIDMgNAp9CiMgMjggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2N0eXBlLmgi
IDIgMyA0CiMgNTAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2N0eXBlLmgiIDMgNApleHRlcm4gIkMi
IHsKCgoKCgoKCmV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwpleHRlcm4gaW50IHRvYXNjaWkoaW50
KTsKZXh0ZXJuIGludCBfdG9sb3dlcihpbnQpOwpleHRlcm4gaW50IF90b3VwcGVyKGludCk7CiMg
OTkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2N0eXBlLmgiIDMgNAp9CiMgNDUgIi9ob21lNS9rcmFr
b3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMiAzIDQKIyAxICIvaG9tZTUva3Jha293L2dudS9s
b2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzIDQKIyA0NiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3djaGFyX2lz
by5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDEgMyA0CiMgNDkg
Ii9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMiAzIDQKCgpleHRlcm4gIkMi
IHsKIyA3NiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvaXNvL3djaGFyX2lzby5oIiAzIDQKdHlwZWRl
ZiBsb25nIHdpbnRfdDsKIyAxMTMgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28u
aCIgMyA0CnR5cGVkZWYgX19tYnN0YXRlX3QgbWJzdGF0ZV90OwojIDEyNCAiL2hvbWU1L2tyYWtv
dy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4w
L2luY2x1ZGUvaXNvL3djaGFyX2lzby5oIiAzIDQKZXh0ZXJuIHdpbnRfdCBmZ2V0d2MoX19GSUxF
ICopOwpleHRlcm4gd2NoYXJfdCAqZmdldHdzKHdjaGFyX3QgKiwgaW50LCBfX0ZJTEUgKik7CmV4
dGVybiB3aW50X3QgZnB1dHdjKHdpbnRfdCwgX19GSUxFICopOwpleHRlcm4gaW50IGZwdXR3cyhj
b25zdCB3Y2hhcl90ICosIF9fRklMRSAqKTsKZXh0ZXJuIHdpbnRfdCB1bmdldHdjKHdpbnRfdCwg
X19GSUxFICopOwpleHRlcm4gd2ludF90IGdldHdjKF9fRklMRSAqKTsKZXh0ZXJuIHdpbnRfdCBn
ZXR3Y2hhcih2b2lkKTsKZXh0ZXJuIHdpbnRfdCBwdXR3Yyh3aW50X3QsIF9fRklMRSAqKTsKZXh0
ZXJuIHdpbnRfdCBwdXR3Y2hhcih3aW50X3QpOwpleHRlcm4gZG91YmxlIHdjc3RvZChjb25zdCB3
Y2hhcl90ICosIHdjaGFyX3QgKiopOwpleHRlcm4gbG9uZyB3Y3N0b2woY29uc3Qgd2NoYXJfdCAq
LCB3Y2hhcl90ICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyB3Y3N0b3VsKGNvbnN0IHdj
aGFyX3QgKiwgd2NoYXJfdCAqKiwgaW50KTsKZXh0ZXJuIHdjaGFyX3QgKndjc2NhdCh3Y2hhcl90
ICosIGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiBpbnQgd2NzY21wKGNvbnN0IHdjaGFyX3QgKiwg
Y29uc3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIGludCB3Y3Njb2xsKGNvbnN0IHdjaGFyX3QgKiwgY29u
c3Qgd2NoYXJfdCAqKTsKZXh0ZXJuIHdjaGFyX3QgKndjc2NweSh3Y2hhcl90ICosIGNvbnN0IHdj
aGFyX3QgKik7CmV4dGVybiBzaXplX3Qgd2NzY3Nwbihjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdj
aGFyX3QgKik7CmV4dGVybiBzaXplX3Qgd2NzbGVuKGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiB3
Y2hhcl90ICp3Y3NuY2F0KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwpleHRl
cm4gaW50IHdjc25jbXAoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7
CmV4dGVybiB3Y2hhcl90ICp3Y3NuY3B5KHdjaGFyX3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXpl
X3QpOwpleHRlcm4gc2l6ZV90IHdjc3Nwbihjb25zdCB3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3Qg
Kik7CmV4dGVybiBzaXplX3Qgd2NzeGZybSh3Y2hhcl90ICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6
ZV90KTsKIyAxNjcgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMyA0CmV4
dGVybiB3Y2hhcl90ICp3Y3NjaHIoY29uc3Qgd2NoYXJfdCAqLCB3Y2hhcl90KTsKZXh0ZXJuIHdj
aGFyX3QgKndjc3BicmsoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4g
d2NoYXJfdCAqd2NzcmNocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QpOwojIDE4MyAiL2hvbWU1
L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wL2luY2x1ZGUvaXNvL3djaGFyX2lzby5oIiAzIDQKZXh0ZXJuIHdjaGFyX3QgKl9fd2Nz
dG9rX3hwZzUod2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QgKiopOwpleHRlcm4g
c2l6ZV90IF9fd2NzZnRpbWVfeHBnNSh3Y2hhcl90ICosIHNpemVfdCwgY29uc3Qgd2NoYXJfdCAq
LAogICAgICAgIGNvbnN0IHN0cnVjdCB0bSAqKTsKIyAxOTQgIi9ob21lNS9rcmFrb3cvZ251L2xv
Y2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRl
L2lzby93Y2hhcl9pc28uaCIgMyA0CmV4dGVybiB3aW50X3QgYnRvd2MoaW50KTsKZXh0ZXJuIGlu
dCBmd3ByaW50ZihfX0ZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IGZ3
c2NhbmYoX19GSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKZXh0ZXJuIGludCBmd2lkZShf
X0ZJTEUgKiwgaW50KTsKZXh0ZXJuIGludCBtYnNpbml0KGNvbnN0IG1ic3RhdGVfdCAqKTsKZXh0
ZXJuIHNpemVfdCBtYnJsZW4oY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0
ZXJuIHNpemVfdCBtYnJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIG1ic3Rh
dGVfdCAqKTsKZXh0ZXJuIHNpemVfdCBtYnNydG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICoq
LCBzaXplX3QsIG1ic3RhdGVfdCAqKTsKZXh0ZXJuIGludCBzd3ByaW50Zih3Y2hhcl90ICosIHNp
emVfdCwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwpleHRlcm4gaW50IHN3c2NhbmYoY29uc3Qgd2No
YXJfdCAqLCBjb25zdCB3Y2hhcl90ICosIC4uLik7CmV4dGVybiBpbnQgdmZ3cHJpbnRmKF9fRklM
RSAqLCBjb25zdCB3Y2hhcl90ICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQgdndwcmludGYoY29u
c3Qgd2NoYXJfdCAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZzd3ByaW50Zih3Y2hhcl90ICos
IHNpemVfdCwgY29uc3Qgd2NoYXJfdCAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gc2l6ZV90IHdjcnRv
bWIoY2hhciAqLCB3Y2hhcl90LCBtYnN0YXRlX3QgKik7CmV4dGVybiBzaXplX3Qgd2NzcnRvbWJz
KGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqKiwgc2l6ZV90LCBtYnN0YXRlX3QgKik7CmV4dGVybiBp
bnQgd2N0b2Iod2ludF90KTsKZXh0ZXJuIGludCB3bWVtY21wKGNvbnN0IHdjaGFyX3QgKiwgY29u
c3Qgd2NoYXJfdCAqLCBzaXplX3QpOwpleHRlcm4gd2NoYXJfdCAqd21lbWNweSh3Y2hhcl90ICos
IGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90KTsKZXh0ZXJuIHdjaGFyX3QgKndtZW1tb3ZlKHdjaGFy
X3QgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwpleHRlcm4gd2NoYXJfdCAqd21lbXNldCh3
Y2hhcl90ICosIHdjaGFyX3QsIHNpemVfdCk7CmV4dGVybiBpbnQgd3ByaW50Zihjb25zdCB3Y2hh
cl90ICosIC4uLik7CmV4dGVybiBpbnQgd3NjYW5mKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKIyAy
MzAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2lzby93Y2hhcl9pc28uaCIgMyA0CmV4dGVybiB3Y2hh
cl90ICp3Y3NzdHIoY29uc3Qgd2NoYXJfdCAqLCBjb25zdCB3Y2hhcl90ICopOwpleHRlcm4gd2No
YXJfdCAqd21lbWNocihjb25zdCB3Y2hhcl90ICosIHdjaGFyX3QsIHNpemVfdCk7CiMgMzI5ICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9pc28vd2NoYXJfaXNvLmgiIDMgNApleHRlcm4gd2ludF90IF9f
ZmdldHdjX3hwZzUoX19GSUxFICopOwpleHRlcm4gd2ludF90IF9fZ2V0d2NfeHBnNShfX0ZJTEUg
Kik7CmV4dGVybiB3aW50X3QgX19nZXR3Y2hhcl94cGc1KHZvaWQpOwpleHRlcm4gd2ludF90IF9f
ZnB1dHdjX3hwZzUod2ludF90LCBfX0ZJTEUgKik7CmV4dGVybiB3aW50X3QgX19wdXR3Y194cGc1
KHdpbnRfdCwgX19GSUxFICopOwpleHRlcm4gd2ludF90IF9fcHV0d2NoYXJfeHBnNSh3aW50X3Qp
OwpleHRlcm4gd2NoYXJfdCAqX19mZ2V0d3NfeHBnNSh3Y2hhcl90ICosIGludCwgX19GSUxFICop
OwpleHRlcm4gaW50IF9fZnB1dHdzX3hwZzUoY29uc3Qgd2NoYXJfdCAqLCBfX0ZJTEUgKik7CmV4
dGVybiB3aW50X3QgX191bmdldHdjX3hwZzUod2ludF90LCBfX0ZJTEUgKik7CiMgMzY3ICIvaG9t
ZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8zLjAvaW5jbHVkZS9pc28vd2NoYXJfaXNvLmgiIDMgNAp9CiMgMjEgIi9ob21lNS9rcmFr
b3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CiMgOTAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIw
MDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3djaGFy
LmgiIDMgNApleHRlcm4gIkMiIHsKCgoKCgp0eXBlZGVmIGludCB3Y3R5cGVfdDsKCgoKCgoKZXh0
ZXJuIGludCBpc3dhbHBoYSh3aW50X3QpOwpleHRlcm4gaW50IGlzd3VwcGVyKHdpbnRfdCk7CmV4
dGVybiBpbnQgaXN3bG93ZXIod2ludF90KTsKZXh0ZXJuIGludCBpc3dkaWdpdCh3aW50X3QpOwpl
eHRlcm4gaW50IGlzd3hkaWdpdCh3aW50X3QpOwpleHRlcm4gaW50IGlzd2FsbnVtKHdpbnRfdCk7
CmV4dGVybiBpbnQgaXN3c3BhY2Uod2ludF90KTsKZXh0ZXJuIGludCBpc3dwdW5jdCh3aW50X3Qp
OwpleHRlcm4gaW50IGlzd3ByaW50KHdpbnRfdCk7CmV4dGVybiBpbnQgaXN3Z3JhcGgod2ludF90
KTsKZXh0ZXJuIGludCBpc3djbnRybCh3aW50X3QpOwpleHRlcm4gaW50IGlzd2N0eXBlKHdpbnRf
dCwgd2N0eXBlX3QpOwpleHRlcm4gd2ludF90IHRvd2xvd2VyKHdpbnRfdCk7CmV4dGVybiB3aW50
X3QgdG93dXBwZXIod2ludF90KTsKZXh0ZXJuIHdjaGFyX3QgKndjc3djcyhjb25zdCB3Y2hhcl90
ICosIGNvbnN0IHdjaGFyX3QgKik7CmV4dGVybiBpbnQgd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAq
LCBzaXplX3QpOwpleHRlcm4gaW50IHdjd2lkdGgoY29uc3Qgd2NoYXJfdCk7CmV4dGVybiB3Y3R5
cGVfdCB3Y3R5cGUoY29uc3QgY2hhciAqKTsKIyAxNDkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2Fs
LjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3dj
aGFyLmgiIDMgNAp9CiMgNDcgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jd2No
YXIuaCIgMiAzCiMgNjIgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jd2NoYXIu
aCIgMwpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6Om1ic3RhdGVfdDsKfQojIDQxICIvaG9tZTUv
a3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
OC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zZndkLmgiIDIgMwojIDEgIi9ob21lNS9rcmFr
b3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC9pbmNsdWRlL2crKy9iaXRzL3N0cmluZ2Z3ZC5oIiAxIDMKIyAzOCAiL2hvbWU1L2tyYWtvdy9n
bnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2lu
Y2x1ZGUvZysrL2JpdHMvc3RyaW5nZndkLmgiIDMKCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9j
YWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUv
ZysrL3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDQwICIvaG9t
ZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdHJpbmdmd2QuaCIgMiAzCgpuYW1lc3BhY2Ugc3Rk
CnsKICB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9BbGxvYz4KICAgIGNsYXNzIGFsbG9jYXRvcjsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwK
ICAgICAgICAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFz
cyBiYXNpY19zdHJpbmc7CgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IHN0cmluZzsKCgoK
fQojIDQyICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zZndkLmgiIDIgMwoj
IDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL2Z1bmN0ZXhjZXB0LmgiIDEgMwojIDM0
ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9mdW5jdGV4Y2VwdC5oIiAzCiMgMSAiL2hv
bWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMy4wL2luY2x1ZGUvZysrL2V4Y2VwdGlvbl9kZWZpbmVzLmgiIDEgMwojIDM1ICIvaG9t
ZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9mdW5jdGV4Y2VwdC5oIiAyIDMKCm5hbWVzcGFjZSBz
dGQKewoKICB2b2lkCiAgX190aHJvd19iYWRfZXhjZXB0aW9uKHZvaWQpOwoKCiAgdm9pZAogIF9f
dGhyb3dfYmFkX2FsbG9jKHZvaWQpOwoKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2Nhc3Qodm9pZCk7
CgogIHZvaWQKICBfX3Rocm93X2JhZF90eXBlaWQodm9pZCk7CgoKICB2b2lkCiAgX190aHJvd19s
b2dpY19lcnJvcihjb25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19kb21haW5fZXJy
b3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVudChj
b25zdCBjaGFyKiBfX3MpOwoKICB2b2lkCiAgX190aHJvd19sZW5ndGhfZXJyb3IoY29uc3QgY2hh
ciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfb3V0X29mX3JhbmdlKGNvbnN0IGNoYXIqIF9fcyk7
CgogIHZvaWQKICBfX3Rocm93X3J1bnRpbWVfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9p
ZAogIF9fdGhyb3dfcmFuZ2VfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhy
b3dfb3ZlcmZsb3dfZXJyb3IoY29uc3QgY2hhciogX19zKTsKCiAgdm9pZAogIF9fdGhyb3dfdW5k
ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqIF9fcyk7CgoKICB2b2lkCiAgX190aHJvd19pb3NfZmFp
bHVyZShjb25zdCBjaGFyKiBfX3MpOwp9CiMgNDMgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIw
MDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9i
aXRzL3N0ZF9pb3Nmd2QuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkCnsKCiAgdGVtcGxhdGU8PiBjbGFz
cyBjaGFyX3RyYWl0czxjaGFyPjsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl
bmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pb3M7
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJh
aXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3RyZWFtYnVmOwoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAg
IGNsYXNzIGJhc2ljX2lzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h
bWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfb3N0cmVh
bTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90
cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pb3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlw
ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAg
ICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3Mg
YmFzaWNfc3RyaW5nYnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U
cmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+LAogICAgICAgICAgIHR5cGVuYW1lIF9BbGxvYyA9
IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX2lzdHJpbmdzdHJlYW07CgogIHRl
bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9D
aGFyVD4sCiAgICAgICAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgog
ICAgY2xhc3MgYmFzaWNfb3N0cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU
LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBl
bmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmdz
dHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNo
YXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfZmlsZWJ1ZjsKCiAgdGVtcGxhdGU8
dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+
CiAgICBjbGFzcyBiYXNpY19pZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0
eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19v
ZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0g
Y2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19mc3RyZWFtOwoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+
ID4KICAgIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D
aGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3Mg
b3N0cmVhbWJ1Zl9pdGVyYXRvcjsKCgoKICBjbGFzcyBpb3NfYmFzZTsKCgogIHRlbXBsYXRlPGNs
YXNzIF9TdGF0ZT4gc3RydWN0IGZwb3M7CgoKCgoKICB0eXBlZGVmIGZwb3M8bWJzdGF0ZV90PiBz
dHJlYW1wb3M7CgoKCgoKICB0eXBlZGVmIGJhc2ljX2lvczxjaGFyPiBpb3M7CiAgdHlwZWRlZiBi
YXNpY19zdHJlYW1idWY8Y2hhcj4gc3RyZWFtYnVmOwogIHR5cGVkZWYgYmFzaWNfaXN0cmVhbTxj
aGFyPiBpc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyPiBvc3RyZWFtOwogIHR5
cGVkZWYgYmFzaWNfaW9zdHJlYW08Y2hhcj4gaW9zdHJlYW07CiAgdHlwZWRlZiBiYXNpY19zdHJp
bmdidWY8Y2hhcj4gc3RyaW5nYnVmOwogIHR5cGVkZWYgYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFy
PiBpc3RyaW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyPiBvc3Ry
aW5nc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXI+IHN0cmluZ3N0cmVh
bTsKICB0eXBlZGVmIGJhc2ljX2ZpbGVidWY8Y2hhcj4gZmlsZWJ1ZjsKICB0eXBlZGVmIGJhc2lj
X2lmc3RyZWFtPGNoYXI+IGlmc3RyZWFtOwogIHR5cGVkZWYgYmFzaWNfb2ZzdHJlYW08Y2hhcj4g
b2ZzdHJlYW07CiAgdHlwZWRlZiBiYXNpY19mc3RyZWFtPGNoYXI+IGZzdHJlYW07CiMgMTQ3ICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zZndkLmgiIDMKfQojIDQwICIvaG9t
ZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zLmgiIDIgMwojIDEgIi9ob21lNS9rcmFr
b3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu
MC9pbmNsdWRlL2crKy9leGNlcHRpb24iIDEgMwojIDM0ICIvaG9tZTUva3Jha293L2dudS9sb2Nh
bC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9n
KysvZXhjZXB0aW9uIiAzCiNwcmFnbWEgaW50ZXJmYWNlICJleGNlcHRpb24iCgpleHRlcm4gIkMr
KyIgewoKbmFtZXNwYWNlIHN0ZAp7CiAgY2xhc3MgZXhjZXB0aW9uCiAgewogIHB1YmxpYzoKICAg
IGV4Y2VwdGlvbigpIHRocm93KCkgeyB9CiAgICB2aXJ0dWFsIH5leGNlcHRpb24oKSB0aHJvdygp
IHsgfQogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgdGhyb3coKTsKICB9OwoK
ICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAg
ICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmJhZF9leGNlcHRpb24o
KSB0aHJvdygpIHsgfQogIH07CgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAo
KTsKICB0eXBlZGVmIHZvaWQgKCp1bmV4cGVjdGVkX2hhbmRsZXIpICgpOwoKICB0ZXJtaW5hdGVf
aGFuZGxlciBzZXRfdGVybWluYXRlKHRlcm1pbmF0ZV9oYW5kbGVyKSB0aHJvdygpOwogIHZvaWQg
dGVybWluYXRlKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKICB1bmV4cGVjdGVk
X2hhbmRsZXIgc2V0X3VuZXhwZWN0ZWQodW5leHBlY3RlZF9oYW5kbGVyKSB0aHJvdygpOwogIHZv
aWQgdW5leHBlY3RlZCgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCiAgYm9vbCB1
bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwp9Cgp9CiMgNDEgIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL2crKy9iaXRzL3N0ZF9pb3MuaCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysr
L2JpdHMvY2hhcl90cmFpdHMuaCIgMSAzCiMgMzggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIw
MDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9i
aXRzL2NoYXJfdHJhaXRzLmgiIDMKCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAz
MjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMv
c3RkX2N3Y2hhci5oIiAxIDMKIyA0MCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvY2hh
cl90cmFpdHMuaCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2Nz
dHJpbmcuaCIgMSAzCiMgMzkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3Ry
aW5nLmgiIDMKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvYml0cy9jKytjb25maWcuaCIgMSAzCiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIw
MDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9i
aXRzL3N0ZF9jc3RyaW5nLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRz
L3N0ZF9jc3RkZGVmLmgiIDEgMwojIDQxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMy
MC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9z
dGRfY3N0cmluZy5oIiAyIDMKIyA0MyAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3Rk
X2NzdHJpbmcuaCIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0cmluZy5oIiAxIDMgNAoj
IDI1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAo
IylzdHJpbmcuaAkxLjI0CTk5LzA4LzEwIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9zdHJp
bmdfaXNvLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAzIDQK
I3ByYWdtYSBpZGVudCAiQCgjKXN0cmluZ19pc28uaAkxLjIJOTkvMTEvMDkgU01JIgoKCiMgMSAi
L2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMy4wL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzIDQKIyAzMiAiL3Vz
ci9pbmNsdWRlL2lzby9zdHJpbmdfaXNvLmgiIDIgMyA0CgoKZXh0ZXJuICJDIiB7CiMgNjAgIi91
c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAzIDQKZXh0ZXJuIGludCBtZW1jbXAoY29uc3Qg
dm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkICptZW1jcHkodm9pZCAq
LCBjb25zdCB2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkICptZW1tb3ZlKHZvaWQgKiwgY29u
c3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtc2V0KHZvaWQgKiwgaW50LCBzaXpl
X3QpOwpleHRlcm4gY2hhciAqc3RyY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGlu
dCBzdHJjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RyY3B5
KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBzdHJjb2xsKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsKZXh0ZXJuIHNpemVfdCBzdHJjc3BuKGNvbnN0IGNoYXIgKiwgY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cmVycm9yKGludCk7CmV4dGVybiBzaXplX3Qgc3RybGVu
KGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAq
LCBzaXplX3QpOwpleHRlcm4gaW50IHN0cm5jbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IHNpemVfdCk7CmV4dGVybiBjaGFyICpzdHJuY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXpl
X3QpOwpleHRlcm4gc2l6ZV90IHN0cnNwbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4
dGVybiBjaGFyICpzdHJ0b2soY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gc2l6ZV90IHN0
cnhmcm0oY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CiMgMTEyICIvdXNyL2luY2x1ZGUv
aXNvL3N0cmluZ19pc28uaCIgMyA0CmV4dGVybiB2b2lkICptZW1jaHIoY29uc3Qgdm9pZCAqLCBp
bnQsIHNpemVfdCk7CmV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRl
cm4gY2hhciAqc3RycGJyayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy
ICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKnN0cnN0cihjb25zdCBj
aGFyICosIGNvbnN0IGNoYXIgKik7CiMgMTUxICIvdXNyL2luY2x1ZGUvaXNvL3N0cmluZ19pc28u
aCIgMyA0Cn0KIyAyOCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CiMgNjAg
Ii9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuICJDIiB7CgoKCgoKCmV4
dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgoKCgpl
eHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwoK
CgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbChpbnQpOwpleHRlcm4gaW50IGZmcyhpbnQpOwpleHRl
cm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50
IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4g
c2l6ZV90IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBzaXpl
X3Qgc3RybGNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKCgoKCgpleHRlcm4gY2hh
ciAqc3RyZHVwKGNvbnN0IGNoYXIgKik7CiMgMTIyICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4y
MDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zdHJp
bmcuaCIgMyA0Cn0KIyA0NCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NzdHJp
bmcuaCIgMiAzCiMgNjkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jc3RyaW5n
LmgiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgZXh0ZXJuICJDIiB2b2lkKiBtZW1jcHkodm9pZCosIGNv
bnN0IHZvaWQqLCBzaXplX3QpOwogIGV4dGVybiAiQyIgdm9pZCogbWVtbW92ZSh2b2lkKiwgY29u
c3Qgdm9pZCosIHNpemVfdCk7CiAgZXh0ZXJuICJDIiBjaGFyKiBzdHJjcHkoY2hhciosIGNvbnN0
IGNoYXIqKTsKICBleHRlcm4gIkMiIGNoYXIqIHN0cm5jcHkoY2hhciosIGNvbnN0IGNoYXIqLCBz
aXplX3QpOwogIGV4dGVybiAiQyIgY2hhciogc3RyY2F0KGNoYXIqLCBjb25zdCBjaGFyKik7CiAg
ZXh0ZXJuICJDIiBjaGFyKiBzdHJuY2F0KGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKICBl
eHRlcm4gIkMiIGludCBtZW1jbXAoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QpOwog
IGV4dGVybiAiQyIgaW50IHN0cmNtcChjb25zdCBjaGFyKiwgY29uc3QgY2hhciopOwogIGV4dGVy
biAiQyIgaW50IHN0cmNvbGwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMi
IGludCBzdHJuY21wKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKICBleHRlcm4g
IkMiIHNpemVfdCBzdHJ4ZnJtKGNoYXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KTsKICBleHRlcm4g
IkMiIHZvaWQqIG1lbWNocihjb25zdCB2b2lkKiwgaW50LCBzaXplX3QpOwogIGV4dGVybiAiQyIg
Y2hhciogc3RyY2hyKGNvbnN0IGNoYXIqLCBpbnQpOwogIGV4dGVybiAiQyIgc2l6ZV90IHN0cmNz
cG4oY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGNoYXIqIHN0cnBicmso
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKICBleHRlcm4gIkMiIGNoYXIqIHN0cnJjaHIoY29u
c3QgY2hhciosIGludCk7CiAgZXh0ZXJuICJDIiBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKik7CiAgZXh0ZXJuICJDIiBjaGFyKiBzdHJzdHIoY29uc3QgY2hhciosIGNvbnN0
IGNoYXIqKTsKICBleHRlcm4gIkMiIGNoYXIqIHN0cnRvayhjaGFyKiwgY29uc3QgY2hhciopOwog
IGV4dGVybiAiQyIgdm9pZCogbWVtc2V0KHZvaWQqLCBpbnQsIHNpemVfdCk7CiAgZXh0ZXJuICJD
IiBjaGFyKiBzdHJlcnJvcihpbnQpOwogIGV4dGVybiAiQyIgc2l6ZV90IHN0cmxlbihjb25zdCBj
aGFyKik7Cn0KIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvY2hhcl90cmFpdHMu
aCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvZnBvcy5oIiAxIDMKIyAz
OCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvZnBvcy5oIiAzCgoKCgojIDEgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL2crKy9zcGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL2MrK2lvLmgiIDEg
MwojIDM1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0
cy9jKytpby5oIiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyAz
NiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysr
aW8uaCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzcg
Ii9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9zcGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL2MrK2lv
LmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9zcGFyYy1zdW4tc29sYXJpczIu
OC9iaXRzL2MrK3RocmVhZHMuaCIgMSAzCiMgNDggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIw
MDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9z
cGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL2MrK3RocmVhZHMuaCIgMwpuYW1lc3BhY2Ugc3RkIHsK
CiAgc3RydWN0IF9fbnVsbF9tdXRleHQgeyB9OwogIHR5cGVkZWYgX19udWxsX211dGV4dCBfX211
dGV4dF90eXBlOwoKfQojIDM4ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvYml0cy9jKytpby5oIiAyIDMKCm5hbWVzcGFjZSBzdGQKewoKICB0eXBlZGVmIGxv
bmcgc3RyZWFtb2ZmOwogIHR5cGVkZWYgcHRyZGlmZl90IHN0cmVhbXNpemU7CgoKCgogIHR5cGVk
ZWYgZnBvc190IF9fY19zdHJlYW1wb3M7CgoKCgogIHR5cGVkZWYgaW50IF9fY19sb2NrOwoKCgoK
ICB0eXBlZGVmIEZJTEUgX19jX2ZpbGVfdHlwZTsKCgogIHN0cnVjdCBfX2lvc19mbGFncwogIHsK
ICAgIHR5cGVkZWYgc2hvcnQgX19pbnRfdHlwZTsKCiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlw
ZSBfU19ib29sYWxwaGEgPSAweDAwMDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19k
ZWMgPSAweDAwMDI7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19maXhlZCA9IDB4MDAw
NDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2hleCA9IDB4MDAwODsKICAgIHN0YXRp
YyBjb25zdCBfX2ludF90eXBlIF9TX2ludGVybmFsID0gMHgwMDEwOwogICAgc3RhdGljIGNvbnN0
IF9faW50X3R5cGUgX1NfbGVmdCA9IDB4MDAyMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX29jdCA9IDB4MDA0MDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3JpZ2h0ID0g
MHgwMDgwOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2NpZW50aWZpYyA9IDB4MDEw
MDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX3Nob3diYXNlID0gMHgwMjAwOwogICAg
c3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvaW50ID0gMHgwNDAwOwogICAgc3RhdGlj
IGNvbnN0IF9faW50X3R5cGUgX1Nfc2hvd3BvcyA9IDB4MDgwMDsKICAgIHN0YXRpYyBjb25zdCBf
X2ludF90eXBlIF9TX3NraXB3cyA9IDB4MTAwMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX3VuaXRidWYgPSAweDIwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU191cHBl
cmNhc2UgPSAweDQwMDA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hZGp1c3RmaWVs
ZCA9IDB4MDAyMCB8IDB4MDA4MCB8IDB4MDAxMDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBl
IF9TX2Jhc2VmaWVsZCA9IDB4MDAwMiB8IDB4MDA0MCB8IDB4MDAwODsKICAgIHN0YXRpYyBjb25z
dCBfX2ludF90eXBlIF9TX2Zsb2F0ZmllbGQgPSAweDAxMDAgfCAweDAwMDQ7CgoKICAgIHN0YXRp
YyBjb25zdCBfX2ludF90eXBlIF9TX2JhZGJpdCA9IDB4MDE7CiAgICBzdGF0aWMgY29uc3QgX19p
bnRfdHlwZSBfU19lb2ZiaXQgPSAweDAyOwogICAgc3RhdGljIGNvbnN0IF9faW50X3R5cGUgX1Nf
ZmFpbGJpdCA9IDB4MDQ7CgoKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX2FwcCA9IDB4
MDE7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU19hdGUgPSAweDAyOwogICAgc3RhdGlj
IGNvbnN0IF9faW50X3R5cGUgX1NfYmluID0gMHgwNDsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90
eXBlIF9TX2luID0gMHgwODsKICAgIHN0YXRpYyBjb25zdCBfX2ludF90eXBlIF9TX291dCA9IDB4
MTA7CiAgICBzdGF0aWMgY29uc3QgX19pbnRfdHlwZSBfU190cnVuYyA9IDB4MjA7CiAgfTsKfQoj
IDQzICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9mcG9zLmgiIDIgMwoKbmFtZXNwYWNl
IHN0ZCB7CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBmcG9zCiAg
ICB7CiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9TdGF0ZVQgX19zdGF0ZV90eXBlOwoKICAg
IHByaXZhdGU6CiAgICAgIF9fc3RhdGVfdHlwZSBfTV9zdDsKICAgICAgc3RyZWFtb2ZmIF9NX29m
ZjsKCiAgICBwdWJsaWM6CiAgICAgIF9fc3RhdGVfdHlwZQogICAgICBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIF9NX3N0OyB9CgogICAgICB2b2lkCiAgICAgIHN0YXRlKF9fc3RhdGVfdHlwZSBfX3N0
KSB7IF9NX3N0ID0gX19zdDsgfQoKCgogICAgICBmcG9zKCk6IF9NX3N0KF9fc3RhdGVfdHlwZSgp
KSwgX01fb2ZmKHN0cmVhbW9mZigpKSB7IH0KCiAgICAgIGZwb3Moc3RyZWFtb2ZmIF9fb2ZmLCBf
X3N0YXRlX3R5cGUgX19zdCA9IF9fc3RhdGVfdHlwZSgpKQogICAgICA6IF9NX3N0KF9fc3QpLCBf
TV9vZmYoX19vZmYpIHsgfQoKICAgICAgb3BlcmF0b3Igc3RyZWFtb2ZmKCkgY29uc3QgeyByZXR1
cm4gX01fb2ZmOyB9CgogICAgICBmcG9zJgogICAgICBvcGVyYXRvcis9KHN0cmVhbW9mZiBfX29m
ZikgeyBfTV9vZmYgKz0gX19vZmY7IHJldHVybiAqdGhpczsgfQoKICAgICAgZnBvcyYKICAgICAg
b3BlcmF0b3ItPShzdHJlYW1vZmYgX19vZmYpIHsgX01fb2ZmIC09IF9fb2ZmOyByZXR1cm4gKnRo
aXM7IH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3I9PShjb25zdCBmcG9zJiBfX3BvcykgY29u
c3QgeyByZXR1cm4gX01fb2ZmID09IF9fcG9zLl9NX29mZjsgfQoKICAgICAgYm9vbAogICAgICBv
cGVyYXRvciE9KGNvbnN0IGZwb3MmIF9fcG9zKSBjb25zdCB7IHJldHVybiBfTV9vZmYgIT0gX19w
b3MuX01fb2ZmOyB9CgogICAgICBzdHJlYW1vZmYKICAgICAgX01fcG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBfTV9vZmY7IH0KCiAgICAgIHZvaWQKICAgICAgX01fcG9zaXRpb24oc3RyZWFtb2Zm
IF9fb2ZmKSB7IF9NX29mZiA9IF9fb2ZmOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf
U3RhdGU+CiAgICBpbmxpbmUgZnBvczxfU3RhdGU+CiAgICBvcGVyYXRvcisoY29uc3QgZnBvczxf
U3RhdGU+JiBfX3Bvcywgc3RyZWFtb2ZmIF9fb2ZmKQogICAgewogICAgICBmcG9zPF9TdGF0ZT4g
dChfX3Bvcyk7CiAgICAgIHJldHVybiB0ICs9IF9fb2ZmOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl
bmFtZSBfU3RhdGU+CiAgICBpbmxpbmUgZnBvczxfU3RhdGU+CiAgICBvcGVyYXRvci0oY29uc3Qg
ZnBvczxfU3RhdGU+JiBfX3Bvcywgc3RyZWFtb2ZmIF9fb2ZmKQogICAgewogICAgICBmcG9zPF9T
dGF0ZT4gdChfX3Bvcyk7CiAgICAgIHJldHVybiB0IC09IF9fb2ZmOwogICAgfQoKICB0ZW1wbGF0
ZTx0eXBlbmFtZSBfU3RhdGU+CiAgICBpbmxpbmUgc3RyZWFtb2ZmCiAgICBvcGVyYXRvci0oY29u
c3QgZnBvczxfU3RhdGU+JiBfX3BvczEsIGNvbnN0IGZwb3M8X1N0YXRlPiYgX19wb3MyKQogICAg
eyByZXR1cm4gX19wb3MxLl9NX3Bvc2l0aW9uKCkgLSBfX3BvczIuX01fcG9zaXRpb24oKTsgfQoK
fQojIDQyICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9jaGFyX3RyYWl0cy5oIiAyIDMK
Cm5hbWVzcGFjZSBzdGQgewoKCgoKCgoKICAgIHR5cGVkZWYgZnBvczxtYnN0YXRlX3Q+IHN0cmVh
bXBvczsKIyA2MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvY2hhcl90cmFpdHMuaCIg
MwogIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0cwogICAgewog
ICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CgogICAgICB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgc3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBl
ZGVmIHN0cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlwZWRlZiBtYnN0YXRlX3Qgc3RhdGVfdHlw
ZTsKCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGFzc2lnbihjaGFyX3R5cGUmIF9fYzEsIGNvbnN0
IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyBfX2MxID0gX19jMjsgfQoKICAgICAgc3RhdGljIGJv
b2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIp
CiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAg
bHQoY29uc3QgY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsg
cmV0dXJuIF9fYzEgPCBfX2MyOyB9CgogICAgICBzdGF0aWMgaW50CiAgICAgIGNvbXBhcmUoY29u
c3QgY2hhcl90eXBlKiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAg
ICAgIHsKICAgICAgICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX247ICsrX19pKQogICAg
ICAgICAgaWYgKCFlcShfX3MxW19faV0sIF9fczJbX19pXSkpCiAgICAgICAgICAgIHJldHVybiBs
dChfX3MxW19faV0sIF9fczJbX19pXSkgPyAtMSA6IDE7CiAgICAgICAgcmV0dXJuIDA7CiAgICAg
IH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19z
KQogICAgICB7CiAgICAgICAgY29uc3QgY2hhcl90eXBlKiBfX3AgPSBfX3M7CiAgICAgICAgd2hp
bGUgKCpfX3ApICsrX19wOwogICAgICAgIHJldHVybiAoX19wIC0gX19zKTsKICAgICAgfQoKICAg
ICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9f
cywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpCiAgICAgIHsKICAgICAgICBmb3Ig
KGNvbnN0IGNoYXJfdHlwZSogX19wID0gX19zOyBzaXplX3QoX19wIC0gX19zKSA8IF9fbjsgKytf
X3ApCiAgICAgICAgICBpZiAoKl9fcCA9PSBfX2EpIHJldHVybiBfX3A7CiAgICAgICAgcmV0dXJu
IDA7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBl
KiBfX3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsgcmV0dXJu
IChjaGFyX3R5cGUqKSBtZW1tb3ZlKF9fczEsIF9fczIsIF9fbiAqIHNpemVvZihjaGFyX3R5cGUp
KTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEs
IGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gKGNoYXJf
dHlwZSopIG1lbWNweShfX3MxLCBfX3MyLCBfX24gKiBzaXplb2YoY2hhcl90eXBlKSk7IH0KCiAg
ICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywgc2l6ZV90
IF9fbiwgY2hhcl90eXBlIF9fYSkKICAgICAgewogICAgICAgIGZvciAoY2hhcl90eXBlKiBfX3Ag
PSBfX3M7IF9fcCA8IF9fcyArIF9fbjsgKytfX3ApCiAgICAgICAgICBhc3NpZ24oKl9fcCwgX19h
KTsKICAgICAgICByZXR1cm4gX19zOwogICAgICB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlCiAg
ICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiBjaGFy
X3R5cGUoX19jKTsgfQoKICAgICAgc3RhdGljIGludF90eXBlCiAgICAgIHRvX2ludF90eXBlKGNv
bnN0IGNoYXJfdHlwZSYgX19jKSB7IHJldHVybiBpbnRfdHlwZShfX2MpOyB9CgogICAgICBzdGF0
aWMgYm9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50
X3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKICAgICAgc3RhdGlj
IGludF90eXBlCiAgICAgIGVvZigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigtMSk7
IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90eXBlJiBf
X2MpCiAgICAgIHsgcmV0dXJuIGVxX2ludF90eXBlKF9fYywgZW9mKCkpID8gaW50X3R5cGUoMCkg
OiBfX2M7IH0KICAgIH07CgoKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IGNoYXJfdHJhaXRzPGNo
YXI+CiAgICB7CiAgICAgIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgaW50
IGludF90eXBlOwogICAgICB0eXBlZGVmIHN0cmVhbXBvcyBwb3NfdHlwZTsKICAgICAgdHlwZWRl
ZiBzdHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7
CgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hhcl90eXBlJiBfX2MxLCBjb25zdCBj
aGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgX19jMSA9IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBib29s
CiAgICAgIGVxKGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQog
ICAgICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGx0
KGNvbnN0IGNoYXJfdHlwZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7IHJl
dHVybiBfX2MxIDwgX19jMjsgfQoKICAgICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0
IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAg
ICB7IHJldHVybiBtZW1jbXAoX19zMSwgX19zMiwgX19uKTsgfQoKICAgICAgc3RhdGljIHNpemVf
dAogICAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3MpCiAgICAgIHsgcmV0dXJuIHN0cmxl
bihfX3MpOyB9CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0
IGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjb25zdCBjaGFyX3R5cGUmIF9fYSkKICAgICAg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4obWVtY2hyKF9fcywgX19hLCBf
X24pKTsgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgbW92ZShjaGFyX3R5cGUqIF9f
czEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y2hhcl90eXBlKj4obWVtbW92ZShfX3MxLCBfX3MyLCBfX24pKTsgfQoKICAgICAg
c3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJf
dHlwZSogX19zMiwgc2l6ZV90IF9fbikKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90
eXBlKj4obWVtY3B5KF9fczEsIF9fczIsIF9fbikpOyB9CgogICAgICBzdGF0aWMgY2hhcl90eXBl
KgogICAgICBhc3NpZ24oY2hhcl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNoYXJfdHlwZSBfX2Ep
CiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZSo+KG1lbXNldChfX3MsIF9fYSwg
X19uKSk7IH0KCiAgICAgIHN0YXRpYyBjaGFyX3R5cGUKICAgICAgdG9fY2hhcl90eXBlKGNvbnN0
IGludF90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oX19j
KTsgfQoKCgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hh
cl90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihfX2MpKTsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgZXFf
aW50X3R5cGUoY29uc3QgaW50X3R5cGUmIF9fYzEsIGNvbnN0IGludF90eXBlJiBfX2MyKQogICAg
ICB7IHJldHVybiBfX2MxID09IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBl
b2YoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oKC0xKSk7IH0KCiAgICAgIHN0YXRp
YyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90eXBlJiBfX2MpCiAgICAgIHsgcmV0
dXJuIChfX2MgPT0gZW9mKCkpID8gMCA6IF9fYzsgfQogIH07CiMgMjc4ICIvaG9tZTUva3Jha293
L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAv
aW5jbHVkZS9nKysvYml0cy9jaGFyX3RyYWl0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No
YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgc3RydWN0IF9DaGFyX3RyYWl0c19tYXRjaAogICAg
ewogICAgICBfQ2hhclQgX01fYzsKICAgICAgX0NoYXJfdHJhaXRzX21hdGNoKF9DaGFyVCBjb25z
dCYgX19jKSA6IF9NX2MoX19jKSB7IH0KCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShfQ2hh
clQgY29uc3QmIF9fYSkgeyByZXR1cm4gX1RyYWl0czo6ZXEoX01fYywgX19hKTsgfQogICAgfTsK
Cn0KIyA0MiAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2lvcy5oIiAyIDMKIyAx
ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY3N0ZGlvLmgiIDEgMwojIDQzICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfaW9zLmgiIDIgMwojIDEgIi9ob21lNS9r
cmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzMuMC9pbmNsdWRlL2crKy9iaXRzL2xvY2FsZWZ3ZC5oIiAxIDMKIyAzOCAiL2hvbWU1L2tyYWtv
dy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4w
L2luY2x1ZGUvZysrL2JpdHMvbG9jYWxlZndkLmgiIDMKCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvZysrL3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDQwICIv
aG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9sb2NhbGVmd2QuaCIgMiAzCiMgMSAiL2hvbWU1
L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wL2luY2x1ZGUvZysrL3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysrbG9jYWxlLmgi
IDEgMwojIDM2ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
Yml0cy9jKytsb2NhbGUuaCIgMwpuYW1lc3BhY2Ugc3RkCnsKICB0eXBlZGVmIGludCogX19jX2xv
Y2FsZTsKfQojIDQxICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9sb2NhbGVmd2QuaCIg
MiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2NsaW1pdHMuaCIgMSAz
CiMgNDAgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9jbGltaXRzLmgiIDMKIyAx
ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAxMSAiL2hvbWU1L2tyYWtv
dy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4w
L2luY2x1ZGUvbGltaXRzLmgiIDMgNAojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5c2xpbWl0
cy5oIiAxIDMgNAojIDI1ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMyA0CiNw
cmFnbWEgaWRlbnQgIkAoIylsaW1pdHMuaAkxLjUxCTk5LzEwLzA4IFNNSSIKCiMgMSAiL2hvbWU1
L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMy4wL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzIDQKIyAyOCAiL2hvbWU1L2ty
YWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pc2Ff
ZGVmcy5oIiAxIDMgNAojIDI5ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvaXNvL2xpbWl0c19pc28uaCIgMSAzIDQKIyAyOCAiL3Vzci9p
bmNsdWRlL2lzby9saW1pdHNfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpbGltaXRzX2lz
by5oCTEuMQk5OS8wOC8wOSBTTUkiCgoKZXh0ZXJuICJDIiB7CiMgNzUgIi91c3IvaW5jbHVkZS9p
c28vbGltaXRzX2lzby5oIiAzIDQKfQojIDMwICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAx
MDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9zeXNsaW1p
dHMuaCIgMiAzIDQKIyA0MSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3lzbGltaXRzLmgiIDMgNAoj
IDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDEgMyA0CiMgMTggIi9o
b21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzMuMC9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJA
KCMpaW50X2xpbWl0cy5oCTEuNgk5OS8wOC8wNiBTTUkiCiMgNTMgIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL3N5cy9pbnRfbGltaXRzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMu
aCIgMSAzIDQKIyA1NCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3lzL2ludF9saW1pdHMuaCIgMiAz
IDQKCgpleHRlcm4gIkMiIHsKIyAxNzEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIw
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5cy9pbnRfbGlt
aXRzLmgiIDMgNAp9CiMgNDIgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMg
NAoKCgpleHRlcm4gIkMiIHsKIyAyNDYgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIw
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5c2xpbWl0cy5o
IiAzIDQKZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50KTsKIyAyNjggIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL3N5c2xpbWl0cy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAxIDMg
NAojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgj
KXVuaXN0ZC5oCTEuMzcJOTgvMTAvMjggU01JIgoKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2Nh
bC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9z
eXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5o
IiAyIDMgNAoKCmV4dGVybiAiQyIgewojIDI2NSAiL3Vzci9pbmNsdWRlL3N5cy91bmlzdGQuaCIg
MyA0Cn0KIyAyNjkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMgNAojIDI3
OSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3lzbGltaXRzLmgiIDMgNApleHRlcm4gbG9uZyBfc3lz
Y29uZihpbnQpOwojIDI4OSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvc3lzbGltaXRzLmgiIDMgNAp9
CiMgMTIgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDQxICIvaG9tZTUv
a3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
OC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRfY2xpbWl0cy5oIiAyIDMKIyA0MiAiL2hvbWU1L2ty
YWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wL2luY2x1ZGUvZysrL2JpdHMvbG9jYWxlZndkLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cv
Z251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9p
bmNsdWRlL2crKy9iaXRzL3N0ZF9zdHJpbmcuaCIgMSAzCiMgMzggIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL2crKy9iaXRzL3N0ZF9zdHJpbmcuaCIgMwoKIyAxICIvaG9tZTUva3Jha293L2dudS9sb2Nh
bC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9n
Kysvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9jKytjb25maWcuaCIgMSAzCiMgNDAgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0ZF9zdHJpbmcuaCIgMiAzCiMgMSAiL2hvbWU1L2ty
YWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
My4wL2luY2x1ZGUvZysrL2JpdHMvc3RyaW5nZndkLmgiIDEgMwojIDQxICIvaG9tZTUva3Jha293
L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAv
aW5jbHVkZS9nKysvYml0cy9zdGRfc3RyaW5nLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL2crKy9iaXRzL2NoYXJfdHJhaXRzLmgiIDEgMwojIDQyICIvaG9tZTUva3Jha293L2dudS9s
b2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVk
ZS9nKysvYml0cy9zdGRfc3RyaW5nLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2Fs
LjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2cr
Ky9iaXRzL3N0ZF9pdGVyYXRvci5oIiAxIDMKIyAzMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwu
MjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysr
L2JpdHMvc3RkX2l0ZXJhdG9yLmgiIDMKCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAw
MTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2Jp
dHMvc3RsX2NvbmZpZy5oIiAxIDMKIyAzMyAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAz
MjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMv
c3RkX2l0ZXJhdG9yLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIw
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0
ZF9jc3RkZGVmLmgiIDEgMwojIDM0ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGRf
aXRlcmF0b3IuaCIgMiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2lv
c2Z3ZC5oIiAxIDMKIyAzNSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RkX2l0ZXJh
dG9yLmgiIDIgMwojIDEgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0bF9pdGVyYXRv
cl9iYXNlLmgiIDEgMwojIDM4ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGxfaXRl
cmF0b3JfYmFzZS5oIiAzCiMgMSAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvY29uY2Vw
dF9jaGVja3MuaCIgMSAzCiMgMjMyICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9jb25j
ZXB0X2NoZWNrcy5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfTXV0YWJsZV90cmFp
dCB7CiAgdHlwZWRlZiBfVHAgX1R5cGU7Cn07CnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBf
TXV0YWJsZV90cmFpdDxjb25zdCBfVHA+IHsKICB0eXBlZGVmIF9UcCBfVHlwZTsKfTsKCgoKdGVt
cGxhdGUgPGNsYXNzIF9UeXBlPgp2b2lkIF9fc2lua191bnVzZWRfd2FybmluZyhfVHlwZSkgeyB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGVYLCBjbGFzcyBfVHlwZVk+CnN0cnVjdCBfU1RMX0NPTlZF
UlRfRVJST1IgewogIHN0YXRpYyB2b2lkCiAgX190eXBlX1hfaXNfbm90X2NvbnZlcnRpYmxlX3Rv
X3R5cGVfWShfVHlwZVggX194LCBfVHlwZVkpIHsKICAgIF9UeXBlWSBfX3kgPSBfX3g7CiAgICBf
X3NpbmtfdW51c2VkX3dhcm5pbmcoX195KTsKICB9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UeXBl
PiBzdHJ1Y3QgX19jaGVja19lcXVhbCB7IH07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGVYLCBjbGFz
cyBfVHlwZVk+CnN0cnVjdCBfU1RMX1NBTUVfVFlQRV9FUlJPUiB7CiAgc3RhdGljIHZvaWQKICBf
X3R5cGVfWF9ub3Rfc2FtZV9hc190eXBlX1koX1R5cGVYICwgX1R5cGVZICkgewogICAgX19jaGVj
a19lcXVhbDxfVHlwZVg+IHQxID0gX19jaGVja19lcXVhbDxfVHlwZVk+KCk7CiAgfQp9OwoKCgoK
dGVtcGxhdGUgPGNsYXNzIF9GdW5jLCBjbGFzcyBfUmV0PgpzdHJ1Y3QgX1NUTF9HRU5FUkFUT1Jf
RVJST1IgewogIHN0YXRpYyBfUmV0IF9fZ2VuZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihf
RnVuYyYgX19mKSB7CiAgICByZXR1cm4gX19mKCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9G
dW5jPgpzdHJ1Y3QgX1NUTF9HRU5FUkFUT1JfRVJST1I8X0Z1bmMsIHZvaWQ+IHsKICBzdGF0aWMg
dm9pZCBfX2dlbmVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0Z1bmMmIF9fZikgewogICAg
X19mKCk7CiAgfQp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfRnVuYywgY2xhc3MgX1JldCwgY2xhc3Mg
X0FyZz4Kc3RydWN0IF9TVExfVU5BUllfRlVOQ1RJT05fRVJST1IgewogIHN0YXRpYyBfUmV0CiAg
X191bmFyeV9mdW5jdGlvbl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0Z1bmMmIF9fZiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX0FyZyYgX19hcmcpIHsK
ICAgIHJldHVybiBfX2YoX19hcmcpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfRnVuYywgY2xh
c3MgX0FyZz4Kc3RydWN0IF9TVExfVU5BUllfRlVOQ1RJT05fRVJST1I8X0Z1bmMsIHZvaWQsIF9B
cmc+IHsKICBzdGF0aWMgdm9pZAogIF9fdW5hcnlfZnVuY3Rpb25fcmVxdWlyZW1lbnRfdmlvbGF0
aW9uKF9GdW5jJiBfX2YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IF9BcmcmIF9fYXJnKSB7CiAgICBfX2YoX19hcmcpOwogIH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfRnVuYywgY2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vjb25kPgpzdHJ1
Y3QgX1NUTF9CSU5BUllfRlVOQ1RJT05fRVJST1IgewogIHN0YXRpYyBfUmV0CiAgX19iaW5hcnlf
ZnVuY3Rpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9GdW5jJiBfX2YsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9GaXJzdCYgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1NlY29uZCYgX19zZWNv
bmQpIHsKICAgIHJldHVybiBfX2YoX19maXJzdCwgX19zZWNvbmQpOwogIH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfRnVuYywgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vjb25kPgpzdHJ1Y3QgX1NUTF9C
SU5BUllfRlVOQ1RJT05fRVJST1I8X0Z1bmMsIHZvaWQsIF9GaXJzdCwgX1NlY29uZD4gewogIHN0
YXRpYyB2b2lkCiAgX19iaW5hcnlfZnVuY3Rpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9GdW5j
JiBfX2YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9G
aXJzdCYgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgX1NlY29uZCYgX19zZWNvbmQpIHsKICAgIF9fZihfX2ZpcnN0LCBfX3NlY29uZCk7CiAg
fQp9OwojIDMzOCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvY29uY2VwdF9jaGVja3Mu
aCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vjb25kPiBz
dHJ1Y3QgX1NUTF9CSU5BUllfT1BfRVFVQUxfRVJST1IgeyBzdGF0aWMgX1JldCBfX2NvbnN0X2Jp
bmFyeV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oY29uc3QgX0ZpcnN0JiBfX2ZpcnN0
LCBjb25zdCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCA9PSBfX3NlY29uZDsg
fSBzdGF0aWMgX1JldCBfX2JpbmFyeV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0Zp
cnN0JiBfX2ZpcnN0LCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCA9PSBfX3Nl
Y29uZDsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vj
b25kPiBzdHJ1Y3QgX1NUTF9CSU5BUllfT1BfTk9UX0VRVUFMX0VSUk9SIHsgc3RhdGljIF9SZXQg
X19jb25zdF9iaW5hcnlfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKGNvbnN0IF9GaXJz
dCYgX19maXJzdCwgY29uc3QgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0dXJuIF9fZmlyc3QgIT0g
X19zZWNvbmQ7IH0gc3RhdGljIF9SZXQgX19iaW5hcnlfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlv
bGF0aW9uKF9GaXJzdCYgX19maXJzdCwgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0dXJuIF9fZmly
c3QgIT0gX19zZWNvbmQ7IH0gfTsKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9GaXJzdCwg
Y2xhc3MgX1NlY29uZD4gc3RydWN0IF9TVExfQklOQVJZX09QX0xFU1NfVEhBTl9FUlJPUiB7IHN0
YXRpYyBfUmV0IF9fY29uc3RfYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihj
b25zdCBfRmlyc3QmIF9fZmlyc3QsIGNvbnN0IF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBf
X2ZpcnN0IDwgX19zZWNvbmQ7IH0gc3RhdGljIF9SZXQgX19iaW5hcnlfb3BlcmF0b3JfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uKF9GaXJzdCYgX19maXJzdCwgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0
dXJuIF9fZmlyc3QgPCBfX3NlY29uZDsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X0ZpcnN0LCBjbGFzcyBfU2Vjb25kPiBzdHJ1Y3QgX1NUTF9CSU5BUllfT1BfTEVTU19FUVVBTF9F
UlJPUiB7IHN0YXRpYyBfUmV0IF9fY29uc3RfYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zp
b2xhdGlvbihjb25zdCBfRmlyc3QmIF9fZmlyc3QsIGNvbnN0IF9TZWNvbmQmIF9fc2Vjb25kKSB7
IHJldHVybiBfX2ZpcnN0IDw9IF9fc2Vjb25kOyB9IHN0YXRpYyBfUmV0IF9fYmluYXJ5X29wZXJh
dG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfRmlyc3QmIF9fZmlyc3QsIF9TZWNvbmQmIF9fc2Vj
b25kKSB7IHJldHVybiBfX2ZpcnN0IDw9IF9fc2Vjb25kOyB9IH07CnRlbXBsYXRlIDxjbGFzcyBf
UmV0LCBjbGFzcyBfRmlyc3QsIGNsYXNzIF9TZWNvbmQ+IHN0cnVjdCBfU1RMX0JJTkFSWV9PUF9H
UkVBVEVSX1RIQU5fRVJST1IgeyBzdGF0aWMgX1JldCBfX2NvbnN0X2JpbmFyeV9vcGVyYXRvcl9y
ZXF1aXJlbWVudF92aW9sYXRpb24oY29uc3QgX0ZpcnN0JiBfX2ZpcnN0LCBjb25zdCBfU2Vjb25k
JiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCA+IF9fc2Vjb25kOyB9IHN0YXRpYyBfUmV0IF9f
YmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfRmlyc3QmIF9fZmlyc3QsIF9T
ZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBfX2ZpcnN0ID4gX19zZWNvbmQ7IH0gfTsKdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9GaXJzdCwgY2xhc3MgX1NlY29uZD4gc3RydWN0IF9TVExf
QklOQVJZX09QX0dSRUFURVJfRVFVQUxfRVJST1IgeyBzdGF0aWMgX1JldCBfX2NvbnN0X2JpbmFy
eV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oY29uc3QgX0ZpcnN0JiBfX2ZpcnN0LCBj
b25zdCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCA+PSBfX3NlY29uZDsgfSBz
dGF0aWMgX1JldCBfX2JpbmFyeV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0ZpcnN0
JiBfX2ZpcnN0LCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCA+PSBfX3NlY29u
ZDsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vjb25k
PiBzdHJ1Y3QgX1NUTF9CSU5BUllfT1BfUExVU19FUlJPUiB7IHN0YXRpYyBfUmV0IF9fY29uc3Rf
YmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihjb25zdCBfRmlyc3QmIF9fZmly
c3QsIGNvbnN0IF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBfX2ZpcnN0ICsgX19zZWNvbmQ7
IH0gc3RhdGljIF9SZXQgX19iaW5hcnlfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9G
aXJzdCYgX19maXJzdCwgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0dXJuIF9fZmlyc3QgKyBfX3Nl
Y29uZDsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBjbGFzcyBfU2Vj
b25kPiBzdHJ1Y3QgX1NUTF9CSU5BUllfT1BfVElNRVNfRVJST1IgeyBzdGF0aWMgX1JldCBfX2Nv
bnN0X2JpbmFyeV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oY29uc3QgX0ZpcnN0JiBf
X2ZpcnN0LCBjb25zdCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19maXJzdCAqIF9fc2Vj
b25kOyB9IHN0YXRpYyBfUmV0IF9fYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlv
bihfRmlyc3QmIF9fZmlyc3QsIF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBfX2ZpcnN0ICog
X19zZWNvbmQ7IH0gfTsKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9GaXJzdCwgY2xhc3Mg
X1NlY29uZD4gc3RydWN0IF9TVExfQklOQVJZX09QX0RJVklERV9FUlJPUiB7IHN0YXRpYyBfUmV0
IF9fY29uc3RfYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihjb25zdCBfRmly
c3QmIF9fZmlyc3QsIGNvbnN0IF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBfX2ZpcnN0IC8g
X19zZWNvbmQ7IH0gc3RhdGljIF9SZXQgX19iaW5hcnlfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlv
bGF0aW9uKF9GaXJzdCYgX19maXJzdCwgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0dXJuIF9fZmly
c3QgLyBfX3NlY29uZDsgfSB9Owp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZpcnN0LCBj
bGFzcyBfU2Vjb25kPiBzdHJ1Y3QgX1NUTF9CSU5BUllfT1BfU1VCVFJBQ1RfRVJST1IgeyBzdGF0
aWMgX1JldCBfX2NvbnN0X2JpbmFyeV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oY29u
c3QgX0ZpcnN0JiBfX2ZpcnN0LCBjb25zdCBfU2Vjb25kJiBfX3NlY29uZCkgeyByZXR1cm4gX19m
aXJzdCAtIF9fc2Vjb25kOyB9IHN0YXRpYyBfUmV0IF9fYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVt
ZW50X3Zpb2xhdGlvbihfRmlyc3QmIF9fZmlyc3QsIF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVy
biBfX2ZpcnN0IC0gX19zZWNvbmQ7IH0gfTsKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9G
aXJzdCwgY2xhc3MgX1NlY29uZD4gc3RydWN0IF9TVExfQklOQVJZX09QX01PRF9FUlJPUiB7IHN0
YXRpYyBfUmV0IF9fY29uc3RfYmluYXJ5X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihj
b25zdCBfRmlyc3QmIF9fZmlyc3QsIGNvbnN0IF9TZWNvbmQmIF9fc2Vjb25kKSB7IHJldHVybiBf
X2ZpcnN0ICUgX19zZWNvbmQ7IH0gc3RhdGljIF9SZXQgX19iaW5hcnlfb3BlcmF0b3JfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uKF9GaXJzdCYgX19maXJzdCwgX1NlY29uZCYgX19zZWNvbmQpIHsgcmV0
dXJuIF9fZmlyc3QgJSBfX3NlY29uZDsgfSB9OwojIDM2MCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9j
YWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUv
ZysrL2JpdHMvY29uY2VwdF9jaGVja3MuaCIgMwpzdHJ1Y3QgX1NUTF9FUlJPUiB7CgogIHRlbXBs
YXRlIDxjbGFzcyBfVHlwZT4KICBzdGF0aWMgX1R5cGUKICBfX2RlZmF1bHRfY29uc3RydWN0b3Jf
cmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9UeXBlKSB7CiAgICByZXR1cm4gX1R5cGUoKTsKICB9CiAg
dGVtcGxhdGUgPGNsYXNzIF9UeXBlPgogIHN0YXRpYyBfVHlwZQogIF9fYXNzaWdubWVudF9vcGVy
YXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX1R5cGUgX19hKSB7CiAgICBfX2EgPSBfX2E7CiAg
ICByZXR1cm4gX19hOwogIH0KICB0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGU+CiAgc3RhdGljIF9UeXBl
CiAgX19jb3B5X2NvbnN0cnVjdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfVHlwZSBfX2EpIHsK
ICAgIF9UeXBlIF9fYyhfX2EpOwogICAgcmV0dXJuIF9fYzsKICB9CiAgdGVtcGxhdGUgPGNsYXNz
IF9UeXBlPgogIHN0YXRpYyBfVHlwZQogIF9fY29uc3RfcGFyYW1ldGVyX3JlcXVpcmVkX2Zvcl9j
b3B5X2NvbnN0cnVjdG9yKF9UeXBlICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBfVHlwZSYgX19iKSB7CiAgICBfVHlwZSBfX2MoX19iKTsK
ICAgIHJldHVybiBfX2M7CiAgfQogIHRlbXBsYXRlIDxjbGFzcyBfVHlwZT4KICBzdGF0aWMgX1R5
cGUKICBfX2NvbnN0X3BhcmFtZXRlcl9yZXF1aXJlZF9mb3JfYXNzaWdubWVudF9vcGVyYXRvcihf
VHlwZSBfX2EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX1R5cGUmIF9fYikgewogICAgX19hID0gX19iOwogICAgcmV0dXJuIF9fYTsK
ICB9CiAgdGVtcGxhdGUgPGNsYXNzIF9UeXBlPgogIHN0YXRpYyBfVHlwZQogIF9fbGVzc190aGFu
X2NvbXBhcmFibGVfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9UeXBlIF9fYSwgX1R5cGUgX19iKSB7
CiAgICBpZiAoX19hIDwgX19iKSByZXR1cm4gX19hOwogICAgcmV0dXJuIF9fYjsKICB9CiAgdGVt
cGxhdGUgPGNsYXNzIF9UeXBlPgogIHN0YXRpYyBfVHlwZQogIF9fZXF1YWxpdHlfY29tcGFyYWJs
ZV9yZXF1aXJlbWVudF92aW9sYXRpb24oX1R5cGUgX19hLCBfVHlwZSBfX2IpIHsKICAgIGlmIChf
X2EgPT0gX19iIHx8IF9fYSAhPSBfX2IpIHJldHVybiBfX2E7CiAgICByZXR1cm4gX19iOwogIH0K
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgogIHN0YXRpYyB2b2lkCiAgX19kZXJlZmVyZW5j
ZV9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0l0ZXJhdG9yIF9faSkgewogICAgX19z
aW5rX3VudXNlZF93YXJuaW5nKCpfX2kpOwogIH0KICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9y
PgogIHN0YXRpYyB2b2lkCiAgX19kZXJlZmVyZW5jZV9vcGVyYXRvcl9hbmRfYXNzaWdubWVudF9y
ZXF1aXJlbWVudF92aW9sYXRpb24oX0l0ZXJhdG9yIF9faSkgewogICAgKl9faSA9ICpfX2k7CiAg
fQogIHRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CiAgc3RhdGljIHZvaWQKICBfX3ByZWluY3Jl
bWVudF9vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0l0ZXJhdG9yIF9faSkgewogICAg
KytfX2k7CiAgfQogIHRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CiAgc3RhdGljIHZvaWQKICBf
X3Bvc3RpbmNyZW1lbnRfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9JdGVyYXRvciBf
X2kpIHsKICAgIF9faSsrOwogIH0KICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgogIHN0YXRp
YyB2b2lkCiAgX19wcmVkZWNyZW1lbnRfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9J
dGVyYXRvciBfX2kpIHsKICAgIC0tX19pOwogIH0KICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9y
PgogIHN0YXRpYyB2b2lkCiAgX19wb3N0ZGVjcmVtZW50X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zp
b2xhdGlvbihfSXRlcmF0b3IgX19pKSB7CiAgICBfX2ktLTsKICB9CiAgdGVtcGxhdGUgPGNsYXNz
IF9JdGVyYXRvciwgY2xhc3MgX1R5cGU+CiAgc3RhdGljIHZvaWQKICBfX3Bvc3RpbmNyZW1lbnRf
b3BlcmF0b3JfYW5kX2Fzc2lnbm1lbnRfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9JdGVyYXRvciBf
X2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfVHlwZSBfX3QpIHsKICAgICpfX2krKyA9IF9fdDsKICB9CiAgdGVtcGxhdGUg
PGNsYXNzIF9JdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgogIHN0YXRpYyBfSXRlcmF0b3IKICBf
X2l0ZXJhdG9yX2FkZGl0aW9uX2Fzc2lnbm1lbnRfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9JdGVy
YXRvciBfX2ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfRGlzdGFuY2UgX19uKSB7CiAgICBfX2kgKz0gX19uOwogICAgcmV0dXJuIF9faTsK
ICB9CiAgdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgogIHN0YXRp
YyBfSXRlcmF0b3IKICBfX2l0ZXJhdG9yX2FkZGl0aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihf
SXRlcmF0b3IgX19pLCBfRGlzdGFuY2UgX19uKSB7CiAgICBfX2kgPSBfX2kgKyBfX247CiAgICBf
X2kgPSBfX24gKyBfX2k7CiAgICByZXR1cm4gX19pOwogIH0KICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CiAgc3RhdGljIF9JdGVyYXRvcgogIF9faXRlcmF0b3Jf
c3VidHJhY3Rpb25fYXNzaWdubWVudF9yZXF1aXJlbWVudF92aW9sYXRpb24oX0l0ZXJhdG9yIF9f
aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZSBfX24pIHsKICAgIF9faSAtPSBfX247CiAgICByZXR1cm4gX19pOwogIH0K
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CiAgc3RhdGljIF9J
dGVyYXRvcgogIF9faXRlcmF0b3Jfc3VidHJhY3Rpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9J
dGVyYXRvciBfX2ksIF9EaXN0YW5jZSBfX24pIHsKICAgIF9faSA9IF9faSAtIF9fbjsKICAgIHJl
dHVybiBfX2k7CiAgfQogIHRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5j
ZT4KICBzdGF0aWMgX0Rpc3RhbmNlCiAgX19kaWZmZXJlbmNlX29wZXJhdG9yX3JlcXVpcmVtZW50
X3Zpb2xhdGlvbihfSXRlcmF0b3IgX19pLCBfSXRlcmF0b3IgX19qLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbikgewogICAgX19uID0g
X19pIC0gX19qOwogICAgcmV0dXJuIF9fbjsKICB9CiAgdGVtcGxhdGUgPGNsYXNzIF9FeHAsIGNs
YXNzIF9UeXBlLCBjbGFzcyBfRGlzdGFuY2U+CiAgc3RhdGljIF9UeXBlCiAgX19lbGVtZW50X2Fj
Y2Vzc19vcGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0V4cCBfX3gsIF9UeXBlKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2Ug
X19uKSB7CiAgICByZXR1cm4gX194W19fbl07CiAgfQogIHRlbXBsYXRlIDxjbGFzcyBfRXhwLCBj
bGFzcyBfVHlwZSwgY2xhc3MgX0Rpc3RhbmNlPgogIHN0YXRpYyB2b2lkCiAgX19lbGVtZW50X2Fz
c2lnbm1lbnRfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9FeHAgX194LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVHlwZSogX190
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
RGlzdGFuY2UgX19uKSB7CiAgICBfX3hbX19uXSA9ICpfX3Q7CiAgfQoKfTsKCgoKbmFtZXNwYWNl
IHN0ZCB7CnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+IHN0cnVjdCBpdGVyYXRvcl90cmFpdHM7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4Kc3RydWN0IF9fdmFsdWVfdHlwZV90eXBlX2RlZmlu
aXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uIHsKICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9JdGVyPgpzdHJ1Y3QgX19kaWZmZXJlbmNlX3R5cGVfdHlwZV9kZWZpbml0aW9uX3Jl
cXVpcmVtZW50X3Zpb2xhdGlvbiB7CiAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3Ry
YWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwp9
OwoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgpzdHJ1Y3QgX19yZWZlcmVuY2VfdHlwZV9kZWZpbml0
aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbiB7CiAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJh
dG9yX3RyYWl0czxfSXRlcj46OnJlZmVyZW5jZSByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0l0ZXI+CnN0cnVjdCBfX3BvaW50ZXJfdHlwZV9kZWZpbml0aW9uX3JlcXVpcmVtZW50X3Zp
b2xhdGlvbiB7CiAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxfSXRlcj46
OnBvaW50ZXIgcG9pbnRlcjsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4Kc3RydWN0IF9faXRl
cmF0b3JfY2F0ZWdvcnlfdHlwZV9kZWZpbml0aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbiB7CiAg
dHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2Nh
dGVnb3J5CiAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKfTsKCgoKCnRlbXBsYXRlIDxjbGFz
cyBfVHlwZT4Kc3RydWN0IF9Bc3NpZ25hYmxlX2NvbmNlcHRfc3BlY2lmaWNhdGlvbiB7CiAgc3Rh
dGljIHZvaWQgX0Fzc2lnbmFibGVfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9UeXBlIF9fYSkgewog
ICAgX1NUTF9FUlJPUjo6X19hc3NpZ25tZW50X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlv
bihfX2EpOwogICAgX1NUTF9FUlJPUjo6X19jb3B5X2NvbnN0cnVjdG9yX3JlcXVpcmVtZW50X3Zp
b2xhdGlvbihfX2EpOwogICAgX1NUTF9FUlJPUjo6X19jb25zdF9wYXJhbWV0ZXJfcmVxdWlyZWRf
Zm9yX2NvcHlfY29uc3RydWN0b3IoX19hLF9fYSk7CiAgICBfU1RMX0VSUk9SOjpfX2NvbnN0X3Bh
cmFtZXRlcl9yZXF1aXJlZF9mb3JfYXNzaWdubWVudF9vcGVyYXRvcihfX2EsX19hKTsKICB9Cn07
CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1R5cGU+CnN0cnVjdCBfRGVmYXVsdENvbnN0cnVjdGlibGVf
Y29uY2VwdF9zcGVjaWZpY2F0aW9uIHsKICBzdGF0aWMgdm9pZCBfRGVmYXVsdENvbnN0cnVjdGli
bGVfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9UeXBlIF9fYSkgewogICAgX1NUTF9FUlJPUjo6X19k
ZWZhdWx0X2NvbnN0cnVjdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2EpOwogIH0KfTsKCgoK
dGVtcGxhdGUgPGNsYXNzIF9UeXBlPgpzdHJ1Y3QgX0VxdWFsaXR5Q29tcGFyYWJsZV9jb25jZXB0
X3NwZWNpZmljYXRpb24gewogIHN0YXRpYyB2b2lkIF9FcXVhbGl0eUNvbXBhcmFibGVfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uKF9UeXBlIF9fYSkgewogICAgX1NUTF9FUlJPUjo6X19lcXVhbGl0eV9j
b21wYXJhYmxlX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2EsIF9fYSk7CiAgfQp9OwoKCnRlbXBs
YXRlIDxjbGFzcyBfVHlwZT4Kc3RydWN0IF9MZXNzVGhhbkNvbXBhcmFibGVfY29uY2VwdF9zcGVj
aWZpY2F0aW9uIHsKICBzdGF0aWMgdm9pZCBfTGVzc1RoYW5Db21wYXJhYmxlX3JlcXVpcmVtZW50
X3Zpb2xhdGlvbihfVHlwZSBfX2EpIHsKICAgIF9TVExfRVJST1I6Ol9fbGVzc190aGFuX2NvbXBh
cmFibGVfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9fYSwgX19hKTsKICB9Cn07CgoKCnRlbXBsYXRl
IDxjbGFzcyBfVHJpdmlhbEl0ZXJhdG9yPgpzdHJ1Y3QgX1RyaXZpYWxJdGVyYXRvcl9jb25jZXB0
X3NwZWNpZmljYXRpb24gewpzdGF0aWMgdm9pZApfVHJpdmlhbEl0ZXJhdG9yX3JlcXVpcmVtZW50
X3Zpb2xhdGlvbihfVHJpdmlhbEl0ZXJhdG9yIF9faSkgewogIHR5cGVkZWYgdHlwZW5hbWUKICAg
IF9fdmFsdWVfdHlwZV90eXBlX2RlZmluaXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uPF9Ucml2
aWFsSXRlcmF0b3I+OjoKICAgIHZhbHVlX3R5cGUgX19UOwoKICBfQXNzaWduYWJsZV9jb25jZXB0
X3NwZWNpZmljYXRpb248X1RyaXZpYWxJdGVyYXRvcj46OgogICAgX0Fzc2lnbmFibGVfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uKF9faSk7CgogIF9EZWZhdWx0Q29uc3RydWN0aWJsZV9jb25jZXB0X3Nw
ZWNpZmljYXRpb248X1RyaXZpYWxJdGVyYXRvcj46OgogICAgX0RlZmF1bHRDb25zdHJ1Y3RpYmxl
X3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwoKICBfRXF1YWxpdHlDb21wYXJhYmxlX2NvbmNl
cHRfc3BlY2lmaWNhdGlvbjxfVHJpdmlhbEl0ZXJhdG9yPjo6CiAgICBfRXF1YWxpdHlDb21wYXJh
YmxlX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwoKICBfU1RMX0VSUk9SOjpfX2RlcmVmZXJl
bmNlX29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwp9Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RyaXZpYWxJdGVyYXRvcj4Kc3RydWN0IF9NdXRhYmxlX1RyaXZpYWxJdGVyYXRvcl9j
b25jZXB0X3NwZWNpZmljYXRpb24gewpzdGF0aWMgdm9pZApfTXV0YWJsZV9Ucml2aWFsSXRlcmF0
b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9Ucml2aWFsSXRlcmF0b3IgX19pKSB7CiAgX1RyaXZp
YWxJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRpb248X1RyaXZpYWxJdGVyYXRvcj46OgogICAg
X1RyaXZpYWxJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX19pKTsKCiAgX1NUTF9FUlJP
Ujo6X19kZXJlZmVyZW5jZV9vcGVyYXRvcl9hbmRfYXNzaWdubWVudF9yZXF1aXJlbWVudF92aW9s
YXRpb24oX19pKTsKfQp9OwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CnN0cnVj
dCBfSW5wdXRJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRpb24gewpzdGF0aWMgdm9pZApfSW5w
dXRJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX0lucHV0SXRlcmF0b3IgX19pKSB7Cgog
IF9Ucml2aWFsSXRlcmF0b3JfY29uY2VwdF9zcGVjaWZpY2F0aW9uPF9JbnB1dEl0ZXJhdG9yPjo6
CiAgICBfVHJpdmlhbEl0ZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwoKICBfX2Rp
ZmZlcmVuY2VfdHlwZV90eXBlX2RlZmluaXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uPF9JbnB1
dEl0ZXJhdG9yPigpOwogIF9fcmVmZXJlbmNlX3R5cGVfZGVmaW5pdGlvbl9yZXF1aXJlbWVudF92
aW9sYXRpb248X0lucHV0SXRlcmF0b3I+KCk7CiAgX19wb2ludGVyX3R5cGVfZGVmaW5pdGlvbl9y
ZXF1aXJlbWVudF92aW9sYXRpb248X0lucHV0SXRlcmF0b3I+KCk7CiAgX19pdGVyYXRvcl9jYXRl
Z29yeV90eXBlX2RlZmluaXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uPF9JbnB1dEl0ZXJhdG9y
PigpOwoKICBfU1RMX0VSUk9SOjpfX3ByZWluY3JlbWVudF9vcGVyYXRvcl9yZXF1aXJlbWVudF92
aW9sYXRpb24oX19pKTsKICBfU1RMX0VSUk9SOjpfX3Bvc3RpbmNyZW1lbnRfb3BlcmF0b3JfcmVx
dWlyZW1lbnRfdmlvbGF0aW9uKF9faSk7Cn0KfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJ
dGVyYXRvcj4Kc3RydWN0IF9PdXRwdXRJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRpb24gewpz
dGF0aWMgdm9pZApfT3V0cHV0SXRlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9PdXRwdXRJ
dGVyYXRvciBfX2kpIHsKCiAgX0Fzc2lnbmFibGVfY29uY2VwdF9zcGVjaWZpY2F0aW9uPF9PdXRw
dXRJdGVyYXRvcj46OgogICAgX0Fzc2lnbmFibGVfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSk7
CgogIF9faXRlcmF0b3JfY2F0ZWdvcnlfdHlwZV9kZWZpbml0aW9uX3JlcXVpcmVtZW50X3Zpb2xh
dGlvbjxfT3V0cHV0SXRlcmF0b3I+KCk7CgogIF9TVExfRVJST1I6Ol9fZGVyZWZlcmVuY2Vfb3Bl
cmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSk7CiAgX1NUTF9FUlJPUjo6X19wcmVpbmNy
ZW1lbnRfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSk7CiAgX1NUTF9FUlJPUjo6
X19wb3N0aW5jcmVtZW50X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwogIF9T
VExfRVJST1I6OgogICAgX19wb3N0aW5jcmVtZW50X29wZXJhdG9yX2FuZF9hc3NpZ25tZW50X3Jl
cXVpcmVtZW50X3Zpb2xhdGlvbihfX2ksICpfX2kpOwp9Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBf
Rm9yd2FyZEl0ZXJhdG9yPgpzdHJ1Y3QgX0ZvcndhcmRJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmlj
YXRpb24gewpzdGF0aWMgdm9pZApfRm9yd2FyZEl0ZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlv
bihfRm9yd2FyZEl0ZXJhdG9yIF9faSkgewoKICBfSW5wdXRJdGVyYXRvcl9jb25jZXB0X3NwZWNp
ZmljYXRpb248X0ZvcndhcmRJdGVyYXRvcj46OgogICAgX0lucHV0SXRlcmF0b3JfcmVxdWlyZW1l
bnRfdmlvbGF0aW9uKF9faSk7Cn0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9y
PgpzdHJ1Y3QgX011dGFibGVfRm9yd2FyZEl0ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbiB7
CnN0YXRpYyB2b2lkCl9NdXRhYmxlX0ZvcndhcmRJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRp
b24oX0ZvcndhcmRJdGVyYXRvciBfX2kpIHsKICBfRm9yd2FyZEl0ZXJhdG9yX2NvbmNlcHRfc3Bl
Y2lmaWNhdGlvbjxfRm9yd2FyZEl0ZXJhdG9yPjo6CiAgICBfRm9yd2FyZEl0ZXJhdG9yX3JlcXVp
cmVtZW50X3Zpb2xhdGlvbihfX2kpOwoKICBfT3V0cHV0SXRlcmF0b3JfY29uY2VwdF9zcGVjaWZp
Y2F0aW9uPF9Gb3J3YXJkSXRlcmF0b3I+OjoKICAgIF9PdXRwdXRJdGVyYXRvcl9yZXF1aXJlbWVu
dF92aW9sYXRpb24oX19pKTsKfQp9OwoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJ
dGVyYXRvcj4Kc3RydWN0IF9CaWRpcmVjdGlvbmFsSXRlcmF0b3JfY29uY2VwdF9zcGVjaWZpY2F0
aW9uIHsKc3RhdGljIHZvaWQKX0JpZGlyZWN0aW9uYWxJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9s
YXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2kpIHsKCiAgX0ZvcndhcmRJdGVyYXRvcl9j
b25jZXB0X3NwZWNpZmljYXRpb248X0JpZGlyZWN0aW9uYWxJdGVyYXRvcj46OgogICAgX0Zvcndh
cmRJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX19pKTsKCiAgX1NUTF9FUlJPUjo6X19w
cmVkZWNyZW1lbnRfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSk7CiAgX1NUTF9F
UlJPUjo6X19wb3N0ZGVjcmVtZW50X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kp
Owp9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcj4Kc3RydWN0IF9N
dXRhYmxlX0JpZGlyZWN0aW9uYWxJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRpb24gewpzdGF0
aWMgdm9pZApfTXV0YWJsZV9CaWRpcmVjdGlvbmFsSXRlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0
aW9uKAogICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX2kpCnsKICBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbjxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6
CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2kpOwoK
ICBfTXV0YWJsZV9Gb3J3YXJkSXRlcmF0b3JfY29uY2VwdF9zcGVjaWZpY2F0aW9uPF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3I+OjoKICAgIF9NdXRhYmxlX0ZvcndhcmRJdGVyYXRvcl9yZXF1aXJlbWVu
dF92aW9sYXRpb24oX19pKTsKICB0eXBlZGVmIHR5cGVuYW1lCiAgICBfX3ZhbHVlX3R5cGVfdHlw
ZV9kZWZpbml0aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbjwKICAgIF9CaWRpcmVjdGlvbmFsSXRl
cmF0b3I+Ojp2YWx1ZV90eXBlIF9fVDsKICB0eXBlbmFtZSBfTXV0YWJsZV90cmFpdDxfX1Q+Ojpf
VHlwZSogX190bXBfcHRyID0gMDsKCiAgX1NUTF9FUlJPUjo6CiAgICBfX3Bvc3RpbmNyZW1lbnRf
b3BlcmF0b3JfYW5kX2Fzc2lnbm1lbnRfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKl9fdG1wX3B0cik7Cn0KfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kQWNjSXRlcj4Kc3Ry
dWN0IF9SYW5kb21BY2Nlc3NJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRpb24gewpzdGF0aWMg
dm9pZApfUmFuZG9tQWNjZXNzSXRlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9SYW5kQWNj
SXRlciBfX2kpIHsKCiAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRp
b248X1JhbmRBY2NJdGVyPjo6CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yX3JlcXVpcmVtZW50
X3Zpb2xhdGlvbihfX2kpOwoKICBfTGVzc1RoYW5Db21wYXJhYmxlX2NvbmNlcHRfc3BlY2lmaWNh
dGlvbjxfUmFuZEFjY0l0ZXI+OjoKICAgIF9MZXNzVGhhbkNvbXBhcmFibGVfcmVxdWlyZW1lbnRf
dmlvbGF0aW9uKF9faSk7CiAgdHlwZWRlZiB0eXBlbmFtZQogICAgICAgIF9fdmFsdWVfdHlwZV90
eXBlX2RlZmluaXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uPF9SYW5kQWNjSXRlcj4KICAgICAg
ICA6OnZhbHVlX3R5cGUKICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZQogICAgICAg
IF9fZGlmZmVyZW5jZV90eXBlX3R5cGVfZGVmaW5pdGlvbl9yZXF1aXJlbWVudF92aW9sYXRpb248
X1JhbmRBY2NJdGVyPgogICAgICAgIDo6ZGlmZmVyZW5jZV90eXBlCiAgICBfRGlzdDsKICB0eXBl
ZGVmIHR5cGVuYW1lIF9NdXRhYmxlX3RyYWl0PF9EaXN0Pjo6X1R5cGUgX011dERpc3Q7CgoKICBf
U1RMX0VSUk9SOjpfX2l0ZXJhdG9yX2FkZGl0aW9uX2Fzc2lnbm1lbnRfcmVxdWlyZW1lbnRfdmlv
bGF0aW9uKF9faSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9NdXREaXN0KCkpOwogIF9TVExfRVJST1I6Ol9faXRlcmF0
b3JfYWRkaXRpb25fcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTXV0RGlzdCgpKTsKICBfU1RM
X0VSUk9SOjoKICAgIF9faXRlcmF0b3Jfc3VidHJhY3Rpb25fYXNzaWdubWVudF9yZXF1aXJlbWVu
dF92aW9sYXRpb24oX19pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfTXV0RGlzdCgpKTsKICBfU1RMX0VSUk9SOjpfX2l0ZXJhdG9y
X3N1YnRyYWN0aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2ksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX011dERpc3QoKSk7CiAg
X1NUTF9FUlJPUjo6X19kaWZmZXJlbmNlX29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihf
X2ksIF9faSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9NdXREaXN0KCkpOwogIHR5cGVuYW1lIF9NdXRhYmxlX3RyYWl0PHZhbHVlX3R5
cGU+OjpfVHlwZSogX19kdW1teV9wdHIgPSAwOwogIF9TVExfRVJST1I6Ol9fZWxlbWVudF9hY2Nl
c3Nfb3BlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9faSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2R1bW15X3B0ciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfTXV0RGlzdCgpKTsKfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kQWNjSXRlcj4Kc3Ry
dWN0IF9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbiB7
CnN0YXRpYyB2b2lkCl9NdXRhYmxlX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yX3JlcXVpcmVtZW50X3Zp
b2xhdGlvbihfUmFuZEFjY0l0ZXIgX19pKQp7CiAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yX2NvbmNl
cHRfc3BlY2lmaWNhdGlvbjxfUmFuZEFjY0l0ZXI+OjoKICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRv
cl9yZXF1aXJlbWVudF92aW9sYXRpb24oX19pKTsKCiAgX011dGFibGVfQmlkaXJlY3Rpb25hbEl0
ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbjxfUmFuZEFjY0l0ZXI+OjoKICAgIF9NdXRhYmxl
X0JpZGlyZWN0aW9uYWxJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRpb24oX19pKTsKICB0eXBl
ZGVmIHR5cGVuYW1lCiAgICAgICAgX192YWx1ZV90eXBlX3R5cGVfZGVmaW5pdGlvbl9yZXF1aXJl
bWVudF92aW9sYXRpb248X1JhbmRBY2NJdGVyPgogICAgICAgIDo6dmFsdWVfdHlwZQogICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lCiAgICAgICAgX19kaWZmZXJlbmNlX3R5cGVfdHlw
ZV9kZWZpbml0aW9uX3JlcXVpcmVtZW50X3Zpb2xhdGlvbjxfUmFuZEFjY0l0ZXI+CiAgICAgICAg
OjpkaWZmZXJlbmNlX3R5cGUKICAgIF9EaXN0OwoKICB0eXBlbmFtZSBfTXV0YWJsZV90cmFpdDx2
YWx1ZV90eXBlPjo6X1R5cGUqIF9fdG1wX3B0ciA9IDA7CgogIF9TVExfRVJST1I6Ol9fZWxlbWVu
dF9hc3NpZ25tZW50X29wZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbihfX2ksCiAgICAgICAg
ICAgICAgICAgIF9fdG1wX3B0ciwgX0Rpc3QoKSk7Cn0KfTsKCgoKCgoKCnRlbXBsYXRlIDxjbGFz
cyBUeXBlPiBzdHJ1Y3QgX192YWx1ZV90eXBlX190eXBlZGVmX3JlcXVpcmVtZW50X3Zpb2xhdGlv
biB7IHR5cGVkZWYgdHlwZW5hbWUgVHlwZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOyB9Owp0ZW1w
bGF0ZSA8Y2xhc3MgVHlwZT4gc3RydWN0IF9fZGlmZmVyZW5jZV90eXBlX190eXBlZGVmX3JlcXVp
cmVtZW50X3Zpb2xhdGlvbiB7IHR5cGVkZWYgdHlwZW5hbWUgVHlwZTo6ZGlmZmVyZW5jZV90eXBl
IGRpZmZlcmVuY2VfdHlwZTsgfTsKdGVtcGxhdGUgPGNsYXNzIFR5cGU+IHN0cnVjdCBfX3NpemVf
dHlwZV9fdHlwZWRlZl9yZXF1aXJlbWVudF92aW9sYXRpb24geyB0eXBlZGVmIHR5cGVuYW1lIFR5
cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7IH07CnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBzdHJ1Y3Qg
X19yZWZlcmVuY2VfX3R5cGVkZWZfcmVxdWlyZW1lbnRfdmlvbGF0aW9uIHsgdHlwZWRlZiB0eXBl
bmFtZSBUeXBlOjpyZWZlcmVuY2UgcmVmZXJlbmNlOyB9Owp0ZW1wbGF0ZSA8Y2xhc3MgVHlwZT4g
c3RydWN0IF9fY29uc3RfcmVmZXJlbmNlX190eXBlZGVmX3JlcXVpcmVtZW50X3Zpb2xhdGlvbiB7
IHR5cGVkZWYgdHlwZW5hbWUgVHlwZTo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsg
fTsKdGVtcGxhdGUgPGNsYXNzIFR5cGU+IHN0cnVjdCBfX3BvaW50ZXJfX3R5cGVkZWZfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uIHsgdHlwZWRlZiB0eXBlbmFtZSBUeXBlOjpwb2ludGVyIHBvaW50ZXI7
IH07CnRlbXBsYXRlIDxjbGFzcyBUeXBlPiBzdHJ1Y3QgX19jb25zdF9wb2ludGVyX190eXBlZGVm
X3JlcXVpcmVtZW50X3Zpb2xhdGlvbiB7IHR5cGVkZWYgdHlwZW5hbWUgVHlwZTo6Y29uc3RfcG9p
bnRlciBjb25zdF9wb2ludGVyOyB9OwoKCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+CnN0cnVjdCBf
QWxsb2NhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbiB7CnN0YXRpYyB2b2lkCl9BbGxvY2F0b3Jf
cmVxdWlyZW1lbnRfdmlvbGF0aW9uKF9BbGxvYyBfX2EpIHsKCiAgX0RlZmF1bHRDb25zdHJ1Y3Rp
YmxlX2NvbmNlcHRfc3BlY2lmaWNhdGlvbjxfQWxsb2M+OjoKICAgIF9EZWZhdWx0Q29uc3RydWN0
aWJsZV9yZXF1aXJlbWVudF92aW9sYXRpb24oX19hKTsKCiAgX0VxdWFsaXR5Q29tcGFyYWJsZV9j
b25jZXB0X3NwZWNpZmljYXRpb248X0FsbG9jPjo6CiAgICBfRXF1YWxpdHlDb21wYXJhYmxlX3Jl
cXVpcmVtZW50X3Zpb2xhdGlvbihfX2EpOwoKICBfX3ZhbHVlX3R5cGVfX3R5cGVkZWZfcmVxdWly
ZW1lbnRfdmlvbGF0aW9uPF9BbGxvYz4oKTsKICBfX2RpZmZlcmVuY2VfdHlwZV9fdHlwZWRlZl9y
ZXF1aXJlbWVudF92aW9sYXRpb248X0FsbG9jPigpOwogIF9fc2l6ZV90eXBlX190eXBlZGVmX3Jl
cXVpcmVtZW50X3Zpb2xhdGlvbjxfQWxsb2M+KCk7CiAgX19yZWZlcmVuY2VfX3R5cGVkZWZfcmVx
dWlyZW1lbnRfdmlvbGF0aW9uPF9BbGxvYz4oKTsKICBfX2NvbnN0X3JlZmVyZW5jZV9fdHlwZWRl
Zl9yZXF1aXJlbWVudF92aW9sYXRpb248X0FsbG9jPigpOwogIF9fcG9pbnRlcl9fdHlwZWRlZl9y
ZXF1aXJlbWVudF92aW9sYXRpb248X0FsbG9jPigpOwogIF9fY29uc3RfcG9pbnRlcl9fdHlwZWRl
Zl9yZXF1aXJlbWVudF92aW9sYXRpb248X0FsbG9jPigpOwogIHR5cGVkZWYgdHlwZW5hbWUgX0Fs
bG9jOjp2YWx1ZV90eXBlIF9UcDsKCgp9Cn07CiMgMzkgIi9ob21lNS9rcmFrb3cvZ251L2xvY2Fs
LjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2cr
Ky9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCB7CgpzdHJ1Y3Qg
aW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3Qgb3V0cHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3Ry
dWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnIDogcHVibGljIGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsK
c3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0
b3JfdGFnIHt9OwpzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcge307CgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9EaXN0YW5jZT4gc3RydWN0IGlucHV0X2l0ZXJhdG9yIHsKICB0eXBlZGVmIGlucHV0X2l0
ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwog
IHR5cGVkZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogcG9pbnRl
cjsKICB0eXBlZGVmIF9UcCYgcmVmZXJlbmNlOwp9OwoKc3RydWN0IG91dHB1dF9pdGVyYXRvciB7
CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVk
ZWYgdm9pZCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiB2b2lkIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGZvcndhcmRfaXRlcmF0b3Igewog
IHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRl
ZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSBkaWZmZXJlbmNlX3R5cGU7CiAg
dHlwZWRlZiBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKfTsKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yIHsKICB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2Nh
dGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiByZWZl
cmVuY2U7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBy
YW5kb21fYWNjZXNzX2l0ZXJhdG9yIHsKICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3Jf
dGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiBfRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogIHR5
cGVkZWYgX1RwJiByZWZlcmVuY2U7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9DYXRlZ29yeSwgY2xh
c3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3QsCiAgICAgICAgICBjbGFzcyBfUG9p
bnRlciA9IF9UcCosIGNsYXNzIF9SZWZlcmVuY2UgPSBfVHAmPgpzdHJ1Y3QgaXRlcmF0b3Igewog
IHR5cGVkZWYgX0NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVl
X3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1Bv
aW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgcmVmZXJlbmNlOwp9OwoKCgoKdGVt
cGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4Kc3RydWN0IGl0ZXJhdG9yX3RyYWl0cyB7CiAgdHlwZWRl
ZiB0eXBlbmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5
OwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5
cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBvaW50ZXIgcG9pbnRlcjsKICB0eXBl
ZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8X1RwKj4gewogIHR5cGVkZWYgcmFu
ZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAg
dmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRl
ZiBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4gewogIHR5cGVkZWYg
cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiBjb25zdCBfVHAqIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAmIHJlZmVyZW5jZTsK
fTsKIyAxNDIgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0bF9pdGVyYXRvcl9iYXNl
LmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkKX19pdGVyYXRvcl9jYXRlZ29yeShjb25zdCBf
SXRlciYpCnsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJh
dG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICByZXR1cm4gX0NhdGVnb3J5KCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OmRp
ZmZlcmVuY2VfdHlwZSoKX19kaXN0YW5jZV90eXBlKGNvbnN0IF9JdGVyJikKewogIHJldHVybiBz
dGF0aWNfY2FzdDx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5
cGUqPigwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZSoKX192YWx1ZV90eXBlKGNvbnN0IF9JdGVyJikK
ewogIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2
YWx1ZV90eXBlKj4oMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5Cml0ZXJhdG9yX2NhdGVn
b3J5KGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9faXRlcmF0b3JfY2F0ZWdvcnkoX19pKTsg
fQoKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0
czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSoKZGlzdGFuY2VfdHlwZShjb25zdCBfSXRlciYgX19p
KSB7IHJldHVybiBfX2Rpc3RhbmNlX3R5cGUoX19pKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVy
PgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZSoKdmFs
dWVfdHlwZShjb25zdCBfSXRlciYgX19pKSB7IHJldHVybiBfX3ZhbHVlX3R5cGUoX19pKTsgfQoj
IDI2NyAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2UuaCIg
Mwp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5l
IHZvaWQgX19kaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlJiBfX24sIGlucHV0X2l0ZXJh
dG9yX3RhZykKewogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgeyArK19fZmlyc3Q7ICsrX19u
OyB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0
YW5jZT4KaW5saW5lIHZvaWQgX19kaXN0YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSYgX19uLCByYW5kb21fYWNjZXNzX2l0ZXJh
dG9yX3RhZykKewogIGRvIHsgdm9pZCAoKl9feCkoIF9SYW5kb21BY2Nlc3NJdGVyYXRvciApID0g
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbjwgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yID4gOjpfUmFuZG9tQWNjZXNzSXRlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9u
OyBfX3ggPSBfX3g7IH0gd2hpbGUgKDApOwogIF9fbiArPSBfX2xhc3QgLSBfX2ZpcnN0Owp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZv
aWQgZGlzdGFuY2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAg
X0lucHV0SXRlcmF0b3IgX19sYXN0LCBfRGlzdGFuY2UmIF9fbikKewogIGRvIHsgdm9pZCAoKl9f
eCkoIF9JbnB1dEl0ZXJhdG9yICkgPSBfSW5wdXRJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRp
b248IF9JbnB1dEl0ZXJhdG9yID4gOjpfSW5wdXRJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRp
b247IF9feCA9IF9feDsgfSB3aGlsZSAoMCk7CiAgX19kaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3Qs
IF9fbiwgaXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7
CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICArK19fZmlyc3Q7ICsrX19uOwogIH0K
ICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRl
cmF0b3JfdGFnKSB7CiAgZG8geyB2b2lkICgqX194KSggX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yICkg
PSBfUmFuZG9tQWNjZXNzSXRlcmF0b3JfY29uY2VwdF9zcGVjaWZpY2F0aW9uPCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgPiA6Ol9SYW5kb21BY2Nlc3NJdGVyYXRvcl9yZXF1aXJlbWVudF92aW9sYXRp
b247IF9feCA9IF9feDsgfSB3aGlsZSAoMCk7CiAgcmV0dXJuIF9fbGFzdCAtIF9fZmlyc3Q7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5jZShfSW5wdXRJ
dGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAg
ICBfQ2F0ZWdvcnk7CiAgZG8geyB2b2lkICgqX194KSggX0lucHV0SXRlcmF0b3IgKSA9IF9JbnB1
dEl0ZXJhdG9yX2NvbmNlcHRfc3BlY2lmaWNhdGlvbjwgX0lucHV0SXRlcmF0b3IgPiA6Ol9JbnB1
dEl0ZXJhdG9yX3JlcXVpcmVtZW50X3Zpb2xhdGlvbjsgX194ID0gX194OyB9IHdoaWxlICgwKTsK
ICByZXR1cm4gX19kaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9DYXRlZ29yeSgpKTsKfQoKCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBf
X2FkdmFuY2UoX0lucHV0SXRlciYgX19pLCBfRGlzdGFuY2UgX19uLCBpbnB1dF9pdGVyYXRvcl90
YWcpIHsKICB3aGlsZSAoX19uLS0pICsrX19pOwp9CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRp
cmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNl
KF9CaWRpcmVjdGlvbmFsSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwKICAgICAgICAgICAg
ICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKSB7CiAgZG8geyB2b2lkICgqX194
KSggX0JpZGlyZWN0aW9uYWxJdGVyYXRvciApID0gX0JpZGlyZWN0aW9uYWxJdGVyYXRvcl9jb25j
ZXB0X3NwZWNpZmljYXRpb248IF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgPiA6Ol9CaWRpcmVjdGlv
bmFsSXRlcmF0b3JfcmVxdWlyZW1lbnRfdmlvbGF0aW9uOyBfX3ggPSBfX3g7IH0gd2hpbGUgKDAp
OwogIGlmIChfX24gPj0gMCkKICAgIHdoaWxlIChfX24tLSkgKytfX2k7CiAgZWxzZQogICAgd2hp
bGUgKF9fbisrKSAtLV9faTsKfQoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKF9SYW5kb21BY2Nl
c3NJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLAogICAgICAgICAgICAgICAgICAgICAgcmFu
ZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICBkbyB7IHZvaWQgKCpfX3gpKCBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgKSA9IF9SYW5kb21BY2Nlc3NJdGVyYXRvcl9jb25jZXB0X3NwZWNpZmljYXRp
b248IF9SYW5kb21BY2Nlc3NJdGVyYXRvciA+IDo6X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yX3JlcXVp
cmVtZW50X3Zpb2xhdGlvbjsgX194ID0gX194OyB9IHdoaWxlICgwKTsKICBfX2kgKz0gX19uOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5l
IHZvaWQgYWR2YW5jZShfSW5wdXRJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uKSB7CiAgZG8g
eyB2b2lkICgqX194KSggX0lucHV0SXRlcmF0b3IgKSA9IF9JbnB1dEl0ZXJhdG9yX2NvbmNlcHRf
c3BlY2lmaWNhdGlvbjwgX0lucHV0SXRlcmF0b3IgPiA6Ol9JbnB1dEl0ZXJhdG9yX3JlcXVpcmVt
ZW50X3Zpb2xhdGlvbjsgX194ID0gX194OyB9IHdoaWxlICgwKTsKICBfX2FkdmFuY2UoX19pLCBf
X24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9faSkpOwp9Cgp9CiMgMzYgIi9ob21lNS9rcmFrb3cvZ251
L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNs
dWRlL2crKy9iaXRzL3N0ZF9pdGVyYXRvci5oIiAyIDMKIyAxICIvaG9tZTUva3Jha293L2dudS9s
b2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVk
ZS9nKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMSAzCiMgMzQgIi9ob21lNS9rcmFrb3cvZ251L2xv
Y2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRl
L2crKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCm5hbWVzcGFjZSBzdGQgewoKCnRlbXBsYXRlIDxj
bGFzcyBfQ29udGFpbmVyPgpjbGFzcyBiYWNrX2luc2VydF9pdGVyYXRvciB7CnByb3RlY3RlZDoK
ICBfQ29udGFpbmVyKiBjb250YWluZXI7CnB1YmxpYzoKICB0eXBlZGVmIF9Db250YWluZXIgY29u
dGFpbmVyX3R5cGU7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVn
b3J5OwogIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCBkaWZmZXJlbmNl
X3R5cGU7CiAgdHlwZWRlZiB2b2lkIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkIHJlZmVyZW5jZTsK
CiAgZXhwbGljaXQgYmFja19pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194KSA6IGNvbnRh
aW5lcigmX194KSB7fQogIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JgogIG9wZXJh
dG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3ZhbHVlKSB7CiAg
ICBjb250YWluZXItPnB1c2hfYmFjayhfX3ZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAg
YmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0
aGlzOyB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7
IHJldHVybiAqdGhpczsgfQogIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVy
YXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKIyA3MSAiL2hvbWU1L2tyYWtvdy9nbnUv
bG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1
ZGUvZysrL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+
CmlubGluZSBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBiYWNrX2luc2VydGVyKF9D
b250YWluZXImIF9feCkgewogIHJldHVybiBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgZnJvbnRfaW5zZXJ0
X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKcHVibGljOgog
IHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVy
YXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiB2b2lkIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgcG9pbnRlcjsKICB0
eXBlZGVmIHZvaWQgcmVmZXJlbmNlOwoKICBleHBsaWNpdCBmcm9udF9pbnNlcnRfaXRlcmF0b3Io
X0NvbnRhaW5lciYgX194KSA6IGNvbnRhaW5lcigmX194KSB7fQogIGZyb250X2luc2VydF9pdGVy
YXRvcjxfQ29udGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6
dmFsdWVfdHlwZSYgX192YWx1ZSkgewogICAgY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUp
OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5l
cj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9y
PF9Db250YWluZXI+JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9pbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsg
fQp9OwojIDExMCAiL2hvbWU1L2tyYWtvdy9nbnUvbG9jYWwuMjAwMTAzMjAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wL2luY2x1ZGUvZysrL2JpdHMvc3RsX2l0ZXJhdG9yLmgi
IDMKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmlubGluZSBmcm9udF9pbnNlcnRfaXRlcmF0
b3I8X0NvbnRhaW5lcj4gZnJvbnRfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KSB7CiAgcmV0dXJu
IGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0NvbnRhaW5lcj4KY2xhc3MgaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250
YWluZXIqIGNvbnRhaW5lcjsKICB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwpw
dWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVyIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0
cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgdmFsdWVf
dHlwZTsKICB0eXBlZGVmIHZvaWQgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCBwb2lu
dGVyOwogIHR5cGVkZWYgdm9pZCByZWZlcmVuY2U7CgogIGluc2VydF9pdGVyYXRvcihfQ29udGFp
bmVyJiBfX3gsIHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9faSkKICAgIDogY29udGFp
bmVyKCZfX3gpLCBpdGVyKF9faSkge30KICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAg
b3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUp
IHsKICAgIGl0ZXIgPSBjb250YWluZXItPmluc2VydChpdGVyLCBfX3ZhbHVlKTsKICAgICsraXRl
cjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBv
cGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250
YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKIyAxNTIgIi9ob21l
NS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCnRlbXBsYXRlIDxjbGFz
cyBfQ29udGFpbmVyLCBjbGFzcyBfSXRlcmF0b3I+CmlubGluZQppbnNlcnRfaXRlcmF0b3I8X0Nv
bnRhaW5lcj4gaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194LCBfSXRlcmF0b3IgX19pKQp7CiAgdHlw
ZWRlZiB0eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBfX2l0ZXI7CiAgcmV0dXJuIGluc2Vy
dF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gsIF9faXRlcihfX2kpKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9
IF9UcCYsCiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3Q+CmNsYXNzIHJldmVy
c2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9u
YWxfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgX1RwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4gX1NlbGY7CnBy
b3RlY3RlZDoKICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGN1cnJlbnQ7CnB1YmxpYzoKICB0eXBl
ZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVk
ZWYgX1RwIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgX1RwKiBwb2ludGVyOwogIHR5cGVkZWYgX1JlZmVyZW5jZSByZWZlcmVuY2U7Cgog
IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcigpIHt9CiAgZXhwbGljaXQgcmV2ZXJzZV9i
aWRpcmVjdGlvbmFsX2l0ZXJhdG9yKF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX194KQogICAgOiBj
dXJyZW50KF9feCkge30KICBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGJhc2UoKSBjb25zdCB7IHJl
dHVybiBjdXJyZW50OyB9CiAgX1JlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7CiAgICBfQmlk
aXJlY3Rpb25hbEl0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKICAgIHJldHVybiAqLS1fX3RtcDsK
ICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3IqKCkp
OyB9CgogIF9TZWxmJiBvcGVyYXRvcisrKCkgewogICAgLS1jdXJyZW50OwogICAgcmV0dXJuICp0
aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvcisrKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhp
czsKICAgIC0tY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9CiAgX1NlbGYmIG9wZXJhdG9y
LS0oKSB7CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJh
dG9yLS0oaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgKytjdXJyZW50OwogICAg
cmV0dXJuIF9fdG1wOwogIH0KfTsKIyAyMzggIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEw
MzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRz
L3N0bF9pdGVyYXRvci5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfQmlJdGVyLCBjbGFzcyBfVHAsIGNs
YXNzIF9SZWYsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PSgKICAgIGNv
bnN0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxfQmlJdGVyLCBfVHAsIF9SZWYsIF9E
aXN0YW5jZT4mIF9feCwKICAgIGNvbnN0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxf
QmlJdGVyLCBfVHAsIF9SZWYsIF9EaXN0YW5jZT4mIF9feSkKewogIHJldHVybiBfX3guYmFzZSgp
ID09IF9feS5iYXNlKCk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9CaUl0ZXIsIGNsYXNzIF9UcCwg
Y2xhc3MgX1JlZiwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KAogICAg
Y29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9CaUl0ZXIsIF9UcCwgX1JlZiwg
X0Rpc3RhbmNlPiYgX194LAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
PF9CaUl0ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX195KQp7CiAgcmV0dXJuICEoX194ID09
IF9feSk7Cn0KIyAyNjcgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0bF9pdGVyYXRv
ci5oIiAzCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmNsYXNzIHJldmVyc2VfaXRlcmF0b3IK
ewpwcm90ZWN0ZWQ6CiAgX0l0ZXJhdG9yIGN1cnJlbnQ7CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeQogICAgICAg
ICAgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8
X0l0ZXJhdG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHR5
cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICAg
ICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf
SXRlcmF0b3I+Ojpwb2ludGVyCiAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZQogICAgICAgICAgcmVmZXJlbmNl
OwoKICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogIHR5cGVkZWYgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+IF9TZWxmOwoKcHVibGljOgogIHJldmVyc2VfaXRlcmF0b3IoKSB7
fQogIGV4cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoaXRlcmF0b3JfdHlwZSBfX3gpIDogY3VycmVu
dChfX3gpIHt9CgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgX1NlbGYmIF9feCkgOiBjdXJyZW50
KF9feC5jdXJyZW50KSB7fQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CiAgcmV2ZXJzZV9pdGVy
YXRvcihjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyPiYgX194KQogICAgOiBjdXJyZW50KF9f
eC5iYXNlKCkpIHt9CgoKICBpdGVyYXRvcl90eXBlIGJhc2UoKSBjb25zdCB7IHJldHVybiBjdXJy
ZW50OyB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIF9JdGVyYXRvciBfX3Rt
cCA9IGN1cnJlbnQ7CiAgICByZXR1cm4gKi0tX190bXA7CiAgfQoKICBwb2ludGVyIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKCiAgX1NlbGYmIG9wZXJhdG9y
KysoKSB7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJh
dG9yKysoaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAg
cmV0dXJuIF9fdG1wOwogIH0KICBfU2VsZiYgb3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsK
ICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxm
IF9fdG1wID0gKnRoaXM7CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQoKICBf
U2VsZiBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QgewogICAgcmV0dXJuIF9T
ZWxmKGN1cnJlbnQgLSBfX24pOwogIH0KICBfU2VsZiYgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5
cGUgX19uKSB7CiAgICBjdXJyZW50IC09IF9fbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1Nl
bGYgb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IHsKICAgIHJldHVybiBfU2Vs
ZihjdXJyZW50ICsgX19uKTsKICB9CiAgX1NlbGYmIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBl
IF9fbikgewogICAgY3VycmVudCArPSBfX247CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIHJlZmVy
ZW5jZSBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IHsgcmV0dXJuICooKnRo
aXMgKyBfX24pOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KSB7
CiAgcmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
dGVyYXRvcj4KaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0
ZXJhdG9yPiYgX194LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX195LmJhc2UoKSA8IF9feC5iYXNlKCk7Cn0K
CgoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiAhKF9f
eCA9PSBfX3kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVy
YXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3kgPCBfX3g7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSBib29s
IG9wZXJhdG9yPD0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsCiAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kp
IHsKICByZXR1cm4gIShfX3kgPCBfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYg
X194LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0
b3I+JiBfX3kpIHsKICByZXR1cm4gIShfX3ggPCBfX3kpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBf
SXRlcmF0b3I+CmlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZQpvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+
JiBfX3gsCiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkg
ewogIHJldHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
dGVyYXRvcj4KaW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPgpvcGVyYXRvcisodHlw
ZW5hbWUgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uLAog
ICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gpIHsKICByZXR1
cm4gcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+KF9feC5iYXNlKCkgLSBfX24pOwp9CiMgODIz
ICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdCA9IHB0cmRpZmZfdD4gY2xhc3MgaXN0cmVhbV9pdGVy
YXRvcjsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0PgppbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4mLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4mKTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0PgpjbGFzcyBpc3RyZWFtX2l0ZXJhdG9yIHsKCiAgdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX0QxPgogIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXN0cmVhbV9pdGVyYXRvcjxfVDEsIF9EMT4mLAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVDEsIF9EMT4mKTsKCgoKCgoKcHJvdGVjdGVkOgogIGlz
dHJlYW0qIF9NX3N0cmVhbTsKICBfVHAgX01fdmFsdWU7CiAgYm9vbCBfTV9lbmRfbWFya2VyOwog
IHZvaWQgX01fcmVhZCgpIHsKICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVl
IDogZmFsc2U7CiAgICBpZiAoX01fZW5kX21hcmtlcikgKl9NX3N0cmVhbSA+PiBfTV92YWx1ZTsK
ICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVlIDogZmFsc2U7CiAgfQpwdWJs
aWM6CiAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlw
ZWRlZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0IGRpZmZlcmVuY2VfdHlwZTsKICB0
eXBlZGVmIGNvbnN0IF9UcCogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCYgcmVmZXJlbmNl
OwoKICBpc3RyZWFtX2l0ZXJhdG9yKCkgOiBfTV9zdHJlYW0oJmNpbiksIF9NX2VuZF9tYXJrZXIo
ZmFsc2UpIHt9CiAgaXN0cmVhbV9pdGVyYXRvcihpc3RyZWFtJiBfX3MpIDogX01fc3RyZWFtKCZf
X3MpIHsgX01fcmVhZCgpOyB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJu
IF9NX3ZhbHVlOyB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3Bl
cmF0b3IqKCkpOyB9CgogIGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4mIG9wZXJhdG9yKyso
KSB7CiAgICBfTV9yZWFkKCk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGlzdHJlYW1faXRlcmF0
b3I8X1RwLCBfRGlzdD4gb3BlcmF0b3IrKyhpbnQpIHsKICAgIGlzdHJlYW1faXRlcmF0b3I8X1Rw
LCBfRGlzdD4gX190bXAgPSAqdGhpczsKICAgIF9NX3JlYWQoKTsKICAgIHJldHVybiBfX3RtcDsK
ICB9Cn07CiMgODkzICIvaG9tZTUva3Jha293L2dudS9sb2NhbC4yMDAxMDMyMC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAvaW5jbHVkZS9nKysvYml0cy9zdGxfaXRlcmF0b3Iu
aCIgMwp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feCwKICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rpc3RhbmNl
PiYgX195KSB7CiAgcmV0dXJuIChfX3guX01fc3RyZWFtID09IF9feS5fTV9zdHJlYW0gJiYKICAg
ICAgICAgIF9feC5fTV9lbmRfbWFya2VyID09IF9feS5fTV9lbmRfbWFya2VyKSB8fAogICAgICAg
ICBfX3guX01fZW5kX21hcmtlciA9PSBmYWxzZSAmJiBfX3kuX01fZW5kX21hcmtlciA9PSBmYWxz
ZTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feCwK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rpc3Rh
bmNlPiYgX195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNz
IF9UcD4KY2xhc3Mgb3N0cmVhbV9pdGVyYXRvciB7CnByb3RlY3RlZDoKICBvc3RyZWFtKiBfTV9z
dHJlYW07CiAgY29uc3QgY2hhciogX01fc3RyaW5nOwpwdWJsaWM6CiAgdHlwZWRlZiBvdXRwdXRf
aXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdm9pZCB2YWx1ZV90eXBl
OwogIHR5cGVkZWYgdm9pZCBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkIHBvaW50ZXI7
CiAgdHlwZWRlZiB2b2lkIHJlZmVyZW5jZTsKCiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtJiBf
X3MpIDogX01fc3RyZWFtKCZfX3MpLCBfTV9zdHJpbmcoMCkge30KICBvc3RyZWFtX2l0ZXJhdG9y
KG9zdHJlYW0mIF9fcywgY29uc3QgY2hhciogX19jKQogICAgOiBfTV9zdHJlYW0oJl9fcyksIF9N
X3N0cmluZyhfX2MpIHt9CiAgb3N0cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvcj0oY29uc3Qg
X1RwJiBfX3ZhbHVlKSB7CiAgICAqX01fc3RyZWFtIDw8IF9fdmFsdWU7CiAgICBpZiAoX01fc3Ry
aW5nKSAqX01fc3RyZWFtIDw8IF9NX3N0cmluZzsKICAgIHJldHVybiAqdGhpczsKICB9CiAgb3N0
cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIG9zdHJl
YW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgb3N0cmVh
bV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKIyA5
NTUgIi9ob21lNS9rcmFrb3cvZ251L2xvY2FsLjIwMDEwMzIwL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzMuMC9pbmNsdWRlL2crKy9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCnRlbXBs
YXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KY2xhc3MgX19ub3Jt
YWxfaXRlcmF0b3IKICA6IHB1YmxpYyBpdGVyYXRvcjxpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9y
Pjo6aXRlcmF0b3JfY2F0ZWdvcnksCiAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHJhaXRz
PF9JdGVyYXRvcj46OnZhbHVlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHJh
aXRzPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKICAgICAgICAgICAgICAgICAgICBpdGVy
YXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlciwKICAgICAgICAgICAgICAgICAgICBpdGVy
YXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlPgp7Cgpwcm90ZWN0ZWQ6CiAgX0l0ZXJh
dG9yIF9NX2N1cnJlbnQ7CgpwdWJsaWM6CiAgdHlwZWRlZiBfX25vcm1hbF9pdGVyYXRvcjxfSXRl
cmF0b3IsIF9Db250YWluZXI+IG5vcm1hbF9pdGVyYXRvcl90eXBlOwogIHR5cGVkZWYgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj4gX190cmFpdHNfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9f
dHJhaXRzX3R5cGU6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVk
ZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwogIHR5cGVk
ZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlw
ZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKICB0
eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OnJlZmVyZW5jZSByZWZlcmVuY2U7CgogIF9f
bm9ybWFsX2l0ZXJhdG9yKCkgOiBfTV9jdXJyZW50KF9JdGVyYXRvcigpKSB7IH0KCiAgZXhwbGlj
aXQgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX0l0ZXJhdG9yJiBfX2kpIDogX01fY3VycmVudChf
X2kpIHsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+CiAgaW5saW5lIF9fbm9ybWFsX2l0
ZXJhdG9yKGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyLCBfQ29udGFpbmVyPiYgX19pKQog
ICAgOiBfTV9jdXJyZW50KF9faS5iYXNlKCkpIHsgfQoKCiAgcmVmZXJlbmNlCiAgb3BlcmF0b3Iq
KCkgY29uc3QgeyByZXR1cm4gKl9NX2N1cnJlbnQ7IH0KCiAgcG9pbnRlcgogIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiBfTV9jdXJyZW50OyB9CgogIG5vcm1hbF9pdGVyYXRvcl90eXBlJgog
IG9wZXJhdG9yKysoKSB7ICsrX01fY3VycmVudDsgcmV0dXJuICp0aGlzOyB9CgogIG5vcm1hbF9p
dGVyYXRvcl90eXBlCiAgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9y
KF9NX2N1cnJlbnQrKyk7IH0KCgogIG5vcm1hbF9pdGVyYXRvcl90eXBlJgogIG9wZXJhdG9yLS0o
KSB7IC0tX01fY3VycmVudDsgcmV0dXJuICp0aGlzOyB9CgogIG5vcm1hbF9pdGVyYXRvcl90eXBl
CiAgb3BlcmF0b3ItLShpbnQpIHsgcmV0dXJuIF9fbm9ybWFsX2l0ZXJhdG9yKF9NX2N1cnJlbnQt
LSk7IH0KCgogIHJlZmVyZW5jZQogIG9wZXJhdG9yW10oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBf
X24pIGNvbnN0CiAgeyByZXR1cm4gX01fY3VycmVudFtfX25dOyB9CgogIG5vcm1hbF9pdGVyYXRv
cl90eXBlJgogIG9wZXJhdG9yKz0oY29uc3QgZGlmZmVyZW5jZV90eXBlJiBfX24pCiAgeyBfTV9j
dXJyZW50ICs9IF9fbjsgcmV0dXJuICp0aGlzOyB9CgogIG5vcm1hbF9pdGVyYXRvcl90eXBlCiAg
b3BlcmF0b3IrKGNvbnN0IGRpZmZlcmVuY2VfdHlwZSYgX19uKSBjb25zdAogIHsgcmV0dXJuIF9f
bm9ybWFsX2l0ZXJhdG9yKF9NX2N1cnJlbnQgKyBfX24pOyB9CgogIG5vcm1hbF9pdGVyYXRvcl90
eXBlJgogIG9wZXJhdG9yL