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/2404: arm-linux-gcc ice



>Number:         2404
>Category:       c
>Synopsis:       arm-linux-gcc ice
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Mar 27 12:46:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     bkohlen@intrinsyc.com
>Release:        gcc version 2.95.3 20010315 (release)
>Organization:
>Environment:
gcc cross compiler for arm with fairly standard configure
flags. used in combination with glibc-2.1.3 and binutils-2.10.
I was compiling xfree86 for arm when error occured.
>Description:
When installing xfree86 (on my pc, so that I can package it
for arm) it compiles shadow.c and I get the following error:

shadow.c: In function `shadowImageGlyphBlt':
shadow.c:1173: Internal compiler error in `purge_addressof_1', at function.c:3183
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

I had this exact same problem with gcc-2.95.2, so i tried .3
and it was duplicated perfectly.  I haven't included the
sources you will need to duplicate the error yourself because
it's a 60M tarball (gzipped).  I read the bug reporting
howto though, and I think i've included everything else
that was asked for.  If you need the full sources (i've already
included shadow.c) just email me for them.
>How-To-Repeat:
First you'll need the 60M tarball... then you can just run
the bugcommand script i've provided...
>Fix:

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

IyAxICJzaGFkb3cuYyIKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uLy4uLy4uLy4u
L2V4cG9ydHMvaW5jbHVkZS9YMTEvWC5oIiAxCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiAKCgoKCgoKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBYSUQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBNYXNrOwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgQXRvbTsJCSAKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBWaXN1YWxJRDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFRpbWU7CiMgOTUgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVk
ZS9YMTEvWC5oIgoKCnR5cGVkZWYgWElEIFdpbmRvdzsKdHlwZWRlZiBYSUQgRHJhd2FibGU7CgoK
dHlwZWRlZiBYSUQgRm9udDsKCnR5cGVkZWYgWElEIFBpeG1hcDsKdHlwZWRlZiBYSUQgQ3Vyc29y
Owp0eXBlZGVmIFhJRCBDb2xvcm1hcDsKdHlwZWRlZiBYSUQgR0NvbnRleHQ7CnR5cGVkZWYgWElE
IEtleVN5bTsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBLZXlDb2RlOwoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCQkgICAgICAgCiAKCgoK
CgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKIAoK
CgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDM2NSAiLi4vLi4vLi4vLi4vZXhwb3J0
cy9pbmNsdWRlL1gxMS9YLmgiCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoKIAoKCgoK
IAoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgogCgoK
CgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKIAoKCgog
CgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKIAoKCgoKIAoKCgoKIAoKCgoK
CgoKCgoKCiAKCgoKCgojIDI2ICJzaGFkb3cuYyIgMgoKIyAxICIuLi8uLi9pbmNsdWRlL3Njcm5p
bnRzdHIuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgojIDEgIi4uLy4uL2luY2x1ZGUvc2NyZWVuaW50LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5o
IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgogCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBnbG9iYWxTZXJpYWxO
dW1iZXI7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNlcnZlckdlbmVyYXRpb247CgojIDEgIi4uLy4u
Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG9zZGVmcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAg
CgoKCgoKCgojIDg5ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNzYgIi4uLy4uL2luY2x1ZGUv
bWlzYy5oIiAyCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNwcm90
by5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA3NyAiLi4vLi4vaW5jbHVkZS9t
aXNjLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YbWQuaCIgMQog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyAxMTkg
Ii4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgp0eXBlZGVmIGxv
bmcgSU5UMzI7Cgp0eXBlZGVmIHNob3J0IElOVDE2OwoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyICAg
IElOVDg7CgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIENBUkQzMjsKCnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgQ0FSRDE2Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIENBUkQ4OwoKdHlwZWRl
ZiBDQVJEMzIJCUJJVFMzMjsKdHlwZWRlZiBDQVJEMTYJCUJJVFMxNjsKCgoKdHlwZWRlZiBDQVJE
OAkJQllURTsKdHlwZWRlZiBDQVJEOCAgICAgICAgICAgQk9PTDsKCgoKCgoKCgoKCgoKCgoKCgog
CgoKIyAxODMgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCiAgCgoKCgojIDc4ICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCiMg
MSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YZGVmcy5oIiAxCiAKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IEJvb2w7
CgoKCgoKdHlwZWRlZiB2b2lkICpwb2ludGVyOwoKCgp0eXBlZGVmIHN0cnVjdCBfQ2xpZW50ICpD
bGllbnRQdHI7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnQgKkZv
bnRQdHI7ICAKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEZTSUQ7CgoKCgoKdHlwZWRl
ZiBGU0lEIEFjY0NvbnRleHQ7CgogCgp0eXBlZGVmIHN0cnVjdCB0aW1ldmFsICoqT1NUaW1lUHRy
OwoKCnR5cGVkZWYgdm9pZCAoKiBCbG9ja0hhbmRsZXJQcm9jUHRyKShwb2ludGVyICAsCgkJCQkg
ICAgIE9TVGltZVB0ciAgLAoJCQkJICAgICBwb2ludGVyICApOwoKCiMgODAgIi4uLy4uL2luY2x1
ZGUvbWlzYy5oIiAyCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgoKCiAKCiAKCgoKCiAKCgogCgoKCgoK
IAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXpl
X3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJf
dDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsK
CgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyA4NSAiLi4vLi4vaW5j
bHVkZS9taXNjLmgiIDIKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBQSVhF
TDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEFUT007CgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0Nh
bGxiYWNrTGlzdCAqQ2FsbGJhY2tMaXN0UHRyOyAgCgoKCnR5cGVkZWYgc3RydWN0IF94UmVxICp4
UmVxUHRyOwoKIyAxICIuLi8uLi9pbmNsdWRlL29zLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAxICIuLi8uLi9pbmNsdWRlL21pc2MuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCiMgMjkzICIuLi8uLi9pbmNsdWRlL21pc2MuaCIKCiMgNDkgIi4uLy4uL2lu
Y2x1ZGUvb3MuaCIgMgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGFs
bG9jYS5oIiAxCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA4MyAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNs
dWRlL1gxMS9YYWxsb2NhLmgiCgoKCgoKCgoKCiMgMTIwICIuLi8uLi8uLi8uLi9leHBvcnRzL2lu
Y2x1ZGUvWDExL1hhbGxvY2EuaCIKCgoKCiMgMTMyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1
ZGUvWDExL1hhbGxvY2EuaCIKCgoKIyA1MiAiLi4vLi4vaW5jbHVkZS9vcy5oIiAyCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKdm9pZCB2YV9lbmQgKF9fZ251Y192YV9saXN0KTsJCSAKCgogCgoKCiAK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoKIyAx
NzUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAz
CgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDU0ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYgcG9pbnRlcglGSUQ7CnR5cGVkZWYgc3RydWN0IF9Gb250UGF0aFJlYyAq
Rm9udFBhdGhQdHI7CnR5cGVkZWYgc3RydWN0IF9OZXdDbGllbnRSZWMgKk5ld0NsaWVudFB0cjsK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v
Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKIyAxNjYgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0
dXJlcy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMv
Y2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoK
CiAKCgoKCiMgNzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAKCgoKCgoKCiAKCgoKIyAxMDMg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIyAyNTAgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0dXJl
cy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjc4ICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKCiAKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
CgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJt
LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
CiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt
LWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVybiB2b2lkICogIG1lbWNweSAg
KHZvaWQgKiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0
cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAo
dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19u
KSAgICA7CgogCgoKCmV4dGVybiB2b2lkICogIG1lbWNjcHkgICh2b2lkICogIF9fZGVzdCwgX19j
b25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCgoK
IApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikgICAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2Nv
bnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCAqICBt
ZW1jaHIgIChfX2NvbnN0IHZvaWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgICA7CgoK
IAoKZXh0ZXJuIHZvaWQgKiAgcmF3bWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9f
YykgICAgOwoKCgogCmV4dGVybiBjaGFyICpzdHJjcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpICAgIDsKIApleHRlcm4gY2hh
ciAqc3RybmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNh
dCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYykgICAgOwogCmV4dGVybiBjaGFyICpzdHJuY2F0ICAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
ICAgOwoKIApleHRlcm4gaW50IHN0cmNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKSAgICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBzdHJj
b2xsICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRl
cm4gc2l6ZV90IHN0cnhmcm0gIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKCiAKCgojIDEgIi91
c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5j
bHVkZS94bG9jYWxlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCnR5cGVkZWYg
c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNb
Nl07CSAKCiAgIAogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0
IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpf
X2xvY2FsZV90OwoKCiMgOTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u
Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIApleHRlcm4gaW50IF9f
c3RyY29sbF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAg
ICAgX19sb2NhbGVfdCBfX2wpICAgIDsKIApleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sICAoY2hh
ciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAoJCQkJX19sb2NhbGVf
dCBfX2wpICAgIDsKCgoKIApleHRlcm4gY2hhciAqX19zdHJkdXAgIChfX2NvbnN0IGNoYXIgKl9f
cykgICAgOwpleHRlcm4gY2hhciAqc3RyZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCgog
CgoKCmV4dGVybiBjaGFyICpzdHJuZHVwICAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90
IF9fbikgICAgOwoKCgogCgoKCgoKCgoKCiAKCiMgMTQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDMKCgog
CmV4dGVybiBjaGFyICpzdHJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwog
CmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK
CgogCgpleHRlcm4gY2hhciAqc3RyY2hybnVsICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
ICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJuIGNoYXIg
KnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgICAg
OwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgogCmV4dGVybiBjaGFyICpfX3N0cmNhc2VzdHIgIChf
X2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssCgkJCQlfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7
CmV4dGVybiBjaGFyICpzdHJjYXNlc3RyICAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLAoJCQkg
ICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7CgoKIApleHRlcm4gY2hhciAqc3RydG9r
ICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3RydG9r
X3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoKCgog
CgoKZXh0ZXJuIHZvaWQgKiAgbWVtbWVtICAoX19jb25zdCB2b2lkICogIF9faGF5c3RhY2ssIHNp
emVfdCBfX2hheXN0YWNrbGVuLAoJCQkgICAgX19jb25zdCB2b2lkICogIF9fbmVlZGxlLCBzaXpl
X3QgX19uZWVkbGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIF9fbWVtcGNweSAgKHZvaWQg
KiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwpleHRlcm4gdm9pZCAqICBtZW1wY3B5ICAodm9pZCAq
ICBfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgICAgOwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAoX19jb25z
dCBjaGFyICpfX3MpICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pICAgIDsKCgoKIApleHRlcm4gY2hhciAqc3Ry
ZXJyb3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3Ig
IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJu
IGNoYXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVf
dCBfX24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3Jj
LCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAg
KHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29u
c3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoK
IApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoK
IApleHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK
CiAKCmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0
KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkp
OwoKIAoKCmV4dGVybiBpbnQgZmZzbCAgKGxvbmcgaW50IF9fbCkgICAgIF9fYXR0cmlidXRlX18g
KChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsICAobG9uZyBsb25nIGlu
dCBfX2xsKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKIApleHRlcm4gaW50
IF9fc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAg
ICA7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKSAgICA7CgogCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKCQkJICAgICBzaXplX3QgX19uKSAgICA7CgoKCiAK
CmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwKCQkJCV9fbG9jYWxlX3QgX19sb2MpICAgIDsKCmV4dGVybiBpbnQgX19zdHJu
Y2FzZWNtcF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCQkg
c2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKCgogCgpleHRlcm4gY2hhciAqc3Ry
c2VwICAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAoJCQkgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2RlbGltKSAgICA7CgoKCiAKZXh0ZXJuIGludCBzdHJ2ZXJzY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0
cnNpZ25hbCAgKGludCBfX3NpZykgICAgOwoKIApleHRlcm4gY2hhciAqX19zdHBjcHkgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YykgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJ
CSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CgogCgpleHRlcm4gY2hhciAq
X19zdHBuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBjaGFyICpzdHBuY3B5
ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gY2hhciAqc3RyZnJ5ICAoY2hhciAq
X19zdHJpbmcpICAgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtZnJvYiAgKHZvaWQgKiAgX19zLCBz
aXplX3QgX19uKSAgICA7CgoKIAoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgIChfX2NvbnN0IGNo
YXIgKl9fZmlsZW5hbWUpICAgIDsKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1
ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg
MzQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp
bnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDc0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp
bnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCiAKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5z
aWduZWQgY2hhciBfX2FyclsgMiBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjIgIF9fYXR0cmlidXRl
X18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgMyBd
OyB9CV9fU1RSSU5HMl9DT1BZX0FSUjMgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVk
ZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FS
UjQgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQg
Y2hhciBfX2FyclsgNSBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjUgIF9fYXR0cmlidXRlX18gKChw
YWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNiBdOyB9CV9f
U1RSSU5HMl9DT1BZX0FSUjYgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3Ry
dWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNyBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjcgIF9f
YXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBf
X2FyclsgOCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjggIF9fYXR0cmlidXRlX18gKChwYWNrZWQp
KSA7CgoKCiAKCgoKCgogCgojIDE4MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgog
CgoKCgoKCgoKCiAKCgojIDM2NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgogCgpleHRl
cm4gdm9pZCAqICBfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqICBfX3MsIGludCBfX2MpOwoKCgoK
CgoKIAojIDUzMiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCiAKCiMgNjk2ICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgoKCiAKCiMgNzEyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51
eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKCgoKCgoKCgogCgojIDczMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoK
IAoKCiMgNzY2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgojIDc5MyAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKIyA4MTUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8u
Li8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgODQwICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIAoKCgoKCgoKCgoKCiAKCgoKIyA4NzIgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJjc3BuX2Mx
IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgc2l6
ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJu
IF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBfX3JlamVjdDIpOwpl
eHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNz
cG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBf
X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJj
c3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
LAoJICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCiAKCgoK
IyA5MjcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t
bGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3Qg
X19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9f
aW5saW5lICBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj
ZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19z
LCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGlu
ZSAgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
IGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAg
d2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19h
Y2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lu
bGluZSAgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2Vw
dDEsCgkJCQkgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5s
aW5lICBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9f
cmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCgkgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMp
CiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgogCgoKIyA5ODIgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2Vw
dDIpOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICAgCiAgd2hpbGUgKCpfX3Mg
IT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MikKICAgICsr
X19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6
ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCgkJCQkgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFy
IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSAgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25z
dCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwKCSAgICAgIGNoYXIg
X19hY2NlcHQzKQp7CiAgIAogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2Vw
dDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKCSAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19z
OwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6ZV90
KSBfX3M7Cn0KCgoKIAoKCiMgMTAyMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKZXh0
ZXJuIF9faW5saW5lICBzaXplX3QKc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6
ZV90IF9fbWF4bGVuKQp7CiAgX19jb25zdCBjaGFyICpfX2VuZCA9IChfX2NvbnN0IGNoYXIgKikg
bWVtY2hyIChfX3N0cmluZywgJ1wwJywgX19tYXhsZW4pOwogIHJldHVybiBfX2VuZCA/IChzaXpl
X3QpIChfX2VuZCAtIF9fc3RyaW5nKSA6IF9fbWF4bGVuOwp9CgoKCgoKCgoKCgoKCgpleHRlcm4g
X19pbmxpbmUgIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hh
ciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAg
aWYgKF9fcyA9PSAoKHZvaWQgKikwKSApCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9f
cyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09ICdcMCcpCiAgICBfX3Jlc3VsdCA9
ICgodm9pZCAqKTApIDsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCgkrK19fczsKICAgICAgaWYgKCpf
X3MgPT0gJ1wwJykKCSpfX25leHRwID0gX19zOwogICAgICBlbHNlCgl7CgkgICpfX3MgPSAnXDAn
OwoJICAqX19uZXh0cCA9IF9fcyArIDE7Cgl9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoK
CgoKCgoKCiMgMTA5MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u
Ly4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxpbmUg
IGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsK
ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p
ZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwg
PT0gX19yZWplY3QpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIGlmICgoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICBfX3JlamVjdCApICYmICgg
IF9fcmVqZWN0ICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggX19yZXR2YWwgLCAg
IF9fcmVqZWN0ICkJOiBzdHJjaHIgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSkpICkgIT0gKCh2
b2lkICopMCkgKQogICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgZWxzZQogICAgICAqX19zID0g
KCh2b2lkICopMCkgOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFy
ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g
Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAgcmV0dXJuICpfX3MgPSAo
KHZvaWQgKikwKSA7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09
IF9fcmVqZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdp
c3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYm
ICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCgkrK19fY3A7CiAgICAg
IGlmICgqX19jcCAhPSAnXDAnKQoJewoJICAqX19zID0gX19jcDsKCSAgKigqX19zKSsrID0gJ1ww
JzsKCX0KICAgICAgZWxzZQoJKl9fcyA9ICgodm9pZCAqKTApIDsKICAgIH0KICByZXR1cm4gX19y
ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKCQkJCSAgIGNoYXIgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19y
ZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFy
ICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJl
dHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8
ICpfX3JldHZhbCA9PSBfX3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykK
ICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpf
X2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9f
cmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIKCSAgICAgJiYgKl9fY3AgIT0gX19yZWplY3Qz
KQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7Cgkg
ICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVsc2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAg
ICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2Vw
X2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUg
IGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7
CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZv
aWQgKikwKSApCiAgICByZXR1cm4gKCh2b2lkICopMCkgOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5z
aW9uX18JKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOwkoX19idWlsdGluX2NvbnN0YW50X3AgKCAg
X19yZWplY3QgKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgX19yZWplY3QgICkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgX19yZWplY3QgICkgPT0gMSkgCT8gKChfX2Ew
ID0gKChfX2NvbnN0IGNoYXIgICopICggIF9fcmVqZWN0ICkpWzBdLCBfX2EwID09ICdcMCcpCT8g
KCh2b2lkICopMCkgCTogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlb
MV0sIF9fYTEgPT0gJ1wwJykJPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCAgX19hMCApICYmICggIF9fYTAgKSA9PSAnXDAnCT8gKGNoYXIgKikgX19yYXdtZW1jaHIgKCAg
X19yZXR2YWwgICwgICBfX2EwICkJOiBzdHJjaHIgKCAgX19yZXR2YWwgICwgICBfX2EwICkpKSAJ
OiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoICBfX3JlamVjdCApKVsyXSwgX19hMiA9PSAn
XDAnKQk/IF9fc3RycGJya19jMiAoIF9fcmV0dmFsICwgX19hMCwgX19hMSkJOiAoKChfX2NvbnN0
IGNoYXIgKikgKCAgX19yZWplY3QgKSlbM10gPT0gJ1wwJwk/IF9fc3RycGJya19jMyAoIF9fcmV0
dmFsICwgX19hMCwgX19hMSwgX19hMikJOiBzdHJwYnJrICggX19yZXR2YWwgLCAgIF9fcmVqZWN0
ICkpKSkpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKTsgfSkgKSAhPSAoKHZv
aWQgKikwKSApCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKCgoK
CiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v
Li4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2Mt
bGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgoj
IDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKIyA0Njkg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAqICBtYWxsb2MgIChzaXplX3Qg
X19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgojIDEx
ODcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoKCgojIDM0NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK
CiAKCgojIDk1ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCiAKCgoKCgoKZXh0ZXJu
IEJvb2wgT3NEZWxheUluaXRDb2xvcnM7CmV4dGVybiB2b2lkICgqT3NWZW5kb3JWRXJyb3JGUHJv
YykoY29uc3QgY2hhciAqLCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJuIGludCBXYWl0Rm9yU29tZXRo
aW5nKAoKICAgIGludCogIAoKKTsKCiMgMTM0ICIuLi8uLi9pbmNsdWRlL29zLmgiCgpleHRlcm4g
aW50IFJlYWRSZXF1ZXN0RnJvbUNsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCgpleHRlcm4g
Qm9vbCBJbnNlcnRGYWtlUmVxdWVzdCgKCiAgICBDbGllbnRQdHIgICwKICAgIGNoYXIqICAsCiAg
ICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVzZXRDdXJyZW50UmVxdWVzdCgKCiAgICBDbGllbnRQ
dHIgIAoKKTsKCmV4dGVybiB2b2lkIEZsdXNoQWxsT3V0cHV0KAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBGbHVzaElmQ3JpdGljYWxPdXRwdXRQZW5kaW5nKAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBTZXRDcml0aWNhbE91dHB1dFBlbmRpbmcoCgogICAgdm9pZAoKKTsKCmV4dGVybiBp
bnQgV3JpdGVUb0NsaWVudCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgLAogICAgY2hhciog
IAoKKTsKCmV4dGVybiB2b2lkIFJlc2V0T3NCdWZmZXJzKAoKICAgIHZvaWQKCik7CgpleHRlcm4g
dm9pZCBDcmVhdGVXZWxsS25vd25Tb2NrZXRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBS
ZXNldFdlbGxLbm93blNvY2tldHMoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYSUQKQXV0aG9yaXph
dGlvbklET2ZDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4gY2hhciAqQ2xpZW50
QXV0aG9yaXplZCgKCiAgICBDbGllbnRQdHIgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hh
ciogICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hhciogIAoKKTsKCmV4dGVybiBCb29sIEVz
dGFibGlzaE5ld0Nvbm5lY3Rpb25zKAoKICAgIENsaWVudFB0ciAgLAogICAgcG9pbnRlciAgCgop
OwoKZXh0ZXJuIHZvaWQgQ2hlY2tDb25uZWN0aW9ucygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZv
aWQgQ2xvc2VEb3duQ29ubmVjdGlvbigKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBpbnQg
QWRkRW5hYmxlZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVtb3ZlRW5hYmxl
ZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgT25seUxpc3RlblRvT25lQ2xpZW50
KAoKICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIGludCBMaXN0ZW5Ub0FsbENsaWVudHMoCgog
ICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgSWdub3JlQ2xpZW50KAoKICAgIENsaWVudFB0ciAgCgop
OwoKZXh0ZXJuIGludCBBdHRlbmRDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4g
aW50IE1ha2VDbGllbnRHcmFiSW1wZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVy
biBpbnQgTWFrZUNsaWVudEdyYWJQZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCgoKCgoK
CgoKZXh0ZXJuIHZvaWQgQXZhaWxhYmxlQ2xpZW50SW5wdXQoCgogICAgQ2xpZW50UHRyICAKCik7
CgpleHRlcm4gdm9pZCBFcnJvcigKCiAgICBjaGFyKiAgCgopOwoKZXh0ZXJuIENBUkQzMiBHZXRU
aW1lSW5NaWxsaXMoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIEFkanVzdFdhaXRGb3JEZWxh
eSgKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7Cgp0eXBlZGVmCXN0cnVj
dCBfT3NUaW1lclJlYyAqT3NUaW1lclB0cjsKCnR5cGVkZWYgQ0FSRDMyICgqT3NUaW1lckNhbGxi
YWNrKSgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBDQVJEMzIgICwKICAgIHBvaW50ZXIgIAoKKTsK
CmV4dGVybiB2b2lkIFRpbWVySW5pdCgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIEJvb2wgVGltZXJG
b3JjZSgKCiAgICBPc1RpbWVyUHRyICAKCik7CgoKCgpleHRlcm4gT3NUaW1lclB0ciBUaW1lclNl
dCgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBpbnQgICwKICAgIENBUkQzMiAgLAogICAgT3NUaW1l
ckNhbGxiYWNrICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBUaW1lckNoZWNrKAoK
ICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBUaW1lckNhbmNlbCgKCiAgICBPc1RpbWVyUHRyICAK
Cik7CgpleHRlcm4gdm9pZCBUaW1lckZyZWUoCgogICAgT3NUaW1lclB0ciAgCgopOwoKZXh0ZXJu
IHZvaWQgIEF1dG9SZXNldFNlcnZlcigKCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkICBHaXZl
VXAoCgogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBVc2VNc2coCgogICAgdm9pZAoKKTsKCmV4
dGVybiB2b2lkIFByb2Nlc3NDb21tYW5kTGluZSgKCiAgICBpbnQgICwKICAgIGNoYXIqICBbXQoK
KTsKCmV4dGVybiBwb2ludGVyIFhhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRl
cm4gcG9pbnRlciBYTkZhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9p
bnRlciBYY2FsbG9jKAoKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4dGVybiBwb2ludGVyIFhO
RmNhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRlciBYcmVhbGxv
YygKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRl
ciBYTkZyZWFsbG9jKAoKICAgIHBvaW50ZXIgICwKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4
dGVybiB2b2lkIFhmcmVlKAoKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiB2b2lkIE9zSW5pdEFs
bG9jYXRvcigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhzdHJkdXAoY29uc3QgY2hhciAq
cyk7CmV4dGVybiBjaGFyICpYTkZzdHJkdXAoY29uc3QgY2hhciAqcyk7Cgp0eXBlZGVmIHZvaWQg
ICgqT3NTaWdIYW5kbGVyUHRyKSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBPc1NpZ0hhbmRsZXJQ
dHIgT3NTaWduYWwoCgogICAgaW50ICAsCiAgICBPc1NpZ0hhbmRsZXJQdHIgIAoKKTsKCmV4dGVy
biBpbnQgYXVkaXRUcmFpbExldmVsOwoKZXh0ZXJuIHZvaWQgQXVkaXRGKAoKICAgIGNvbnN0IGNo
YXIqICAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBGYXRhbEVycm9yKAoKICAgIGNvbnN0IGNo
YXIqICAsCiAgICAuLi4KCikKCl9fYXR0cmlidXRlKChub3JldHVybikpCgo7CgpleHRlcm4gdm9p
ZCBFcnJvckYoCgogICAgY29uc3QgY2hhciogICwKICAgIC4uLgoKKTsKCgpleHRlcm4gdm9pZCBW
RXJyb3JGKGNvbnN0IGNoYXIgKmYsIHZhX2xpc3QgYXJncyk7CgoKIyA1MDQgIi4uLy4uL2luY2x1
ZGUvb3MuaCIKCgpleHRlcm4gaW50IE9zTG9va3VwQ29sb3IoCgogICAgaW50CSAsCiAgICBjaGFy
ICogICwKICAgIHVuc2lnbmVkICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAsCiAgICB1bnNpZ25l
ZCBzaG9ydCAqICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAKCik7CgpleHRlcm4gdm9pZCBPc0lu
aXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIE9zQ2xlYW51cCgKCiAgICB2b2lkCgopOwoK
ZXh0ZXJuIHZvaWQgT3NWZW5kb3JGYXRhbEVycm9yKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9p
ZCBPc1ZlbmRvckluaXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgT3NJbml0Q29sb3JzKAoK
ICAgIHZvaWQKCik7Cgp2b2lkIE9zQmxvY2tTaWduYWxzICgKCgkJICAgICB2b2lkCgoJCSAgICAg
KTsKCnZvaWQgT3NSZWxlYXNlU2lnbmFscyAoCgoJCSAgICAgdm9pZAoKCQkgICAgICk7CgoKZXh0
ZXJuIGludCBTeXN0ZW0oY2hhciAqKTsKZXh0ZXJuIHBvaW50ZXIgUG9wZW4oY2hhciAqLCBjaGFy
ICopOwpleHRlcm4gaW50IFBjbG9zZShwb2ludGVyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgQ2hlY2tV
c2VyUGFyYW1ldGVycyhpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNoYXIgKiplbnZwKTsKZXh0ZXJu
IHZvaWQgQ2hlY2tVc2VyQXV0aG9yaXphdGlvbih2b2lkKTsKCmV4dGVybiBpbnQgQWRkSG9zdCgK
CiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1bnNpZ25lZCAgICAgLAog
ICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBCb29sIEZvckVhY2hIb3N0SW5GYW1pbHkgKAoK
ICAgIGludAkgICAgICwKICAgIEJvb2wgICAgKCogICApKAoKICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciAqICAsCiAgICAgICAgICAgIHNob3J0ICAgICAgICAgICAgLAogICAgICAgICAgICBwb2lu
dGVyICAgICAgICAgIAoKICAgICAgICAgICAgKSwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiBp
bnQgUmVtb3ZlSG9zdCgKCiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1
bnNpZ25lZCAgICAgLAogICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBpbnQgR2V0SG9zdHMo
CgogICAgcG9pbnRlciAqICAsCiAgICBpbnQJICAgICogICwKICAgIGludAkgICAgKiAgLAogICAg
Qk9PTCAgICAqICAKCik7Cgp0eXBlZGVmIHN0cnVjdCBzb2NrYWRkciAqIHNvY2thZGRyUHRyOwoK
ZXh0ZXJuIGludCBJbnZhbGlkSG9zdCgKCiAgICBzb2NrYWRkclB0ciAgLAogICAgaW50CQkgCgop
OwoKZXh0ZXJuIGludCBMb2NhbENsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBp
bnQgQ2hhbmdlQWNjZXNzQ29udHJvbCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgCgopOwoK
ZXh0ZXJuIGludCBHZXRBY2Nlc3NDb250cm9sKAoKICAgIHZvaWQKCik7CgoKZXh0ZXJuIHZvaWQg
QWRkTG9jYWxIb3N0cygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgUmVzZXRIb3N0cygKCiAg
ICBjaGFyICpkaXNwbGF5CgopOwoKZXh0ZXJuIHZvaWQgRW5hYmxlTG9jYWxIb3N0KAoKICAgIHZv
aWQKCik7CgpleHRlcm4gdm9pZCBEaXNhYmxlTG9jYWxIb3N0KAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBBY2Nlc3NVc2luZ1hkbWNwKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBEZWZp
bmVTZWxmKAoKICAgIGludCAgCgopOwoKZXh0ZXJuIHZvaWQgQXVnbWVudFNlbGYoCgogICAgcG9p
bnRlciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBJbml0QXV0aG9yaXphdGlvbigKCiAg
ICBjaGFyICogIAoKKTsKCmV4dGVybiBpbnQgTG9hZEF1dGhvcml6YXRpb24oCgogICAgdm9pZAoK
KTsKCmV4dGVybiB2b2lkIFJlZ2lzdGVyQXV0aG9yaXphdGlvbnMoCgogICAgdm9pZAoKKTsKCmV4
dGVybiBYSUQgQXV0aG9yaXphdGlvblRvSUQgKAoJdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgs
CgljaGFyCQkqbmFtZSwKCXVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAoJY2hhcgkJKmRhdGEp
OwoKZXh0ZXJuIGludCBBdXRob3JpemF0aW9uRnJvbUlEICgKCVhJRCAJCWlkLAoJdW5zaWduZWQg
c2hvcnQJKm5hbWVfbGVucCwKCWNoYXIJCSoqbmFtZXAsCgl1bnNpZ25lZCBzaG9ydAkqZGF0YV9s
ZW5wLAoJY2hhcgkJKipkYXRhcCk7CgpleHRlcm4gWElEIENoZWNrQXV0aG9yaXphdGlvbigKCiAg
ICB1bnNpZ25lZCBpbnQgICwKICAgIGNoYXIgKiAgLAogICAgdW5zaWduZWQgaW50ICAsCiAgICBj
aGFyICogICwKICAgIENsaWVudFB0ciAgLAogICAgY2hhciAqKiAgCgopOwoKZXh0ZXJuIHZvaWQg
UmVzZXRBdXRob3JpemF0aW9uKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFJlbW92ZUF1dGhv
cml6YXRpb24gKAogICAgdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgsCiAgICBjaGFyCQkqbmFt
ZSwKICAgIHVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAogICAgY2hhcgkJKmRhdGEpOwoKZXh0
ZXJuIGludCBBZGRBdXRob3JpemF0aW9uKAoKICAgIHVuc2lnbmVkIGludAkgLAogICAgY2hhciAq
CQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBjaGFyICoJCSAKCik7CgpleHRlcm4gWElEIEdl
bmVyYXRlQXV0aG9yaXphdGlvbigKCiAgICB1bnNpZ25lZCBpbnQgICAgLAogICAgY2hhcgkqICAg
LAogICAgdW5zaWduZWQgaW50ICAgICwKICAgIGNoYXIJKiAgICwKICAgIHVuc2lnbmVkIGludCAq
ICAsCiAgICBjaGFyCSoqICAKCik7CgoKCgoKCgoKCgpleHRlcm4gaW50IGRkeFByb2Nlc3NBcmd1
bWVudCgKCiAgICBpbnQgICwKICAgIGNoYXIgKiAgIFtdLAogICAgaW50ICAKCik7CgpleHRlcm4g
dm9pZCBkZHhVc2VNc2codm9pZCk7CgogCgoKCnhSZXFQdHIgUGVla05leHRSZXF1ZXN0KAoKICAg
IHhSZXFQdHIgcmVxLCBDbGllbnRQdHIgY2xpZW50LCBCb29sIHJlYWRtb3JlCgopOwoKdm9pZCBT
a2lwUmVxdWVzdHMoCgogICAgeFJlcVB0ciByZXEsIENsaWVudFB0ciBjbGllbnQsIGludCBudW1z
a2lwcGVkCgopOwoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKZXh0ZXJuIENhbGxiYWNrTGlz
dFB0ciBTa2lwcGVkUmVxdWVzdHNDYWxsYmFjazsKdHlwZWRlZiBzdHJ1Y3QgewogICAgeFJlcVB0
ciByZXE7CiAgICBDbGllbnRQdHIgY2xpZW50OwogICAgaW50IG51bXNraXBwZWQ7Cn0gU2tpcHBl
ZFJlcXVlc3RJbmZvUmVjOwoKIApleHRlcm4gQ2FsbGJhY2tMaXN0UHRyIFJlcGx5Q2FsbGJhY2s7
CnR5cGVkZWYgc3RydWN0IHsKICAgIENsaWVudFB0ciBjbGllbnQ7CiAgICBwb2ludGVyIHJlcGx5
RGF0YTsKICAgIHVuc2lnbmVkIGxvbmcgZGF0YUxlbkJ5dGVzOwogICAgdW5zaWduZWQgbG9uZyBi
eXRlc1JlbWFpbmluZzsKICAgIEJvb2wgc3RhcnRPZlJlcGx5Owp9IFJlcGx5SW5mb1JlYzsKCiAK
ZXh0ZXJuIENhbGxiYWNrTGlzdFB0ciBGbHVzaENhbGxiYWNrOwoKZXh0ZXJuIHZvaWQgQWJvcnRE
RFgodm9pZCk7CmV4dGVybiB2b2lkIGRkeEdpdmVVcCh2b2lkKTsKZXh0ZXJuIGludCBUaW1lU2lu
Y2VMYXN0SW5wdXRFdmVudCh2b2lkKTsKCgojIDExNyAiLi4vLi4vaW5jbHVkZS9taXNjLmgiIDIK
CgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDY2ICIuLi8uLi8uLi8u
Li9leHBvcnRzL2luY2x1ZGUvWDExL1hmdW5jcy5oIgoKCgogCgoKIAoKCgoKCiMgOTIgIi4uLy4u
Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiCgoKCgoKCgoKCiMgMTE5ICIuLi8u
Li9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKICAgICAKCgoKCgoKCiAKCgoKCgogCgoKCgoKCgoK
CgoKCgogCgogIAojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8u
Li8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoK
CiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgogCgoKCgog
CnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CQkJIAogICAgaW50IHJlbTsJCQkgCiAg
fSBkaXZfdDsKCiAKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsJCSAKICAg
IGxvbmcgaW50IHJlbTsJCSAKICB9IGxkaXZfdDsKCgoKCiAKX19leHRlbnNpb25fXyB0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgbG9uZyBpbnQg
cmVtOwkJIAogIH0gbGxkaXZfdDsKCgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBzaXplX3QgX19j
dHlwZV9nZXRfbWJfY3VyX21heCAgKHZvaWQpICAgIDsKCgogCmV4dGVybiBkb3VibGUgYXRvZiAg
KF9fY29uc3QgY2hhciAqX19ucHRyKSAgICA7CiAKZXh0ZXJuIGludCBhdG9pICAoX19jb25zdCBj
aGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgICA7CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xs
ICAoX19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKCgogCmV4dGVybiBkb3VibGUgc3RydG9kICAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpICAgIDsKCgogCmV4dGVybiBmbG9hdCBzdHJ0b2YgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgICA7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgIHN0cnRvbGQgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAoJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgICAgOwoKCiAKZXh0ZXJu
IGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICAgIDsKIApleHRlcm4g
dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50
IF9fYmFzZSkgICAgOwoKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b3EgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQg
X19iYXNlKSAgICA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBz
dHJ0b2xsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgICA7CiAKX19leHRlbnNpb25fXwpleHRl
cm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkg
ICAgIGludCBfX2Jhc2UpICAgIDsKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKZXh0ZXJuIGxvbmcg
aW50IF9fc3RydG9sX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAoJCQkJIF9fbG9jYWxlX3QgX19s
b2MpICAgIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCgkJCQkJICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UsCgkJCQkgICAgICAgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QKCQkJCQkJIF9fbnB0ciwKCQkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQkgaW50IF9fYmFzZSwKCQkJCQkJIF9fbG9jYWxlX3QgX19sb2MpICAgIDsK
CmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xv
YykgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAoJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVf
dCBfX2xvYykgICAgOwoKZXh0ZXJuIGxvbmcgZG91YmxlICBfX3N0cnRvbGRfbCAgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAoJCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgICA7CgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry
dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw
KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK
CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl
cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo
YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ
CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0
b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg
IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp
bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICAK
ewogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIApzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgIAp7CiAgcmV0dXJuIF9fc3Ry
dG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkgIAp7
CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50
CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAoJIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkgaW50IF9fYmFzZSkgIAp7
CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50
CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCgkgIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIHN0cnRvZCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0
b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25w
dHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBp
bnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0
ciwgKGNoYXIgKiopICgodm9pZCAqKTApICwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4g
X19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewog
IHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoK
CgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikgICAgOwoKIApleHRlcm4g
bG9uZyBpbnQgYTY0bCAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK
CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAy
NjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg
MjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9f
dV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu
dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAq
X19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVkZWYgX191X2lu
dCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRlZiBfX3VfbG9u
ZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVkZWYgX191X2lu
dCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19x
dWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBlZGVmIGludCBf
X3NzaXplX3Q7CQkJIAp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90OwkJIAp0eXBlZGVmIF9fdV9x
dWFkX3QgX19ybGltNjRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsJCQkgCgp0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwkJCQkgCgogCnR5cGVk
ZWYgaW50IF9fZGFkZHJfdDsJCQkgCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv
bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsJCSAKDAp0eXBlZGVm
IGxvbmcgaW50IF9fY2xvY2tfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21h
c2s7CgogCgoKIAoKCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgICAKCgogICAgX19mZF9tYXNr
IGZkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpIF07CgoKCgoKICB9IF9f
ZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
aW50IF9faXBjX3BpZF90OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9u
ZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCiAKdHlw
ZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoK
IAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoK
CgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CiMgNjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t
bGludXgvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKCgoKCgogCnN0cnVjdCBfX3NjaGVkX3BhcmFt
CiAgewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CgoKIyAyMyAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGlu
dCBfX3N0YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3BpbmxvY2s7ICAgICAgICAgICAgICAg
IAp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9k
ZXNjcjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBf
X3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQg
X19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGlu
dCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tz
aXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAg
ICAgICAgIAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1
bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVh
ZF9rZXlfdDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAg
ICAgICAgICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVh
ZF9kZXNjciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAg
ICAgICAKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211
dGV4X3Q7CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRf
bXV0ZXhhdHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKIAp0eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9f
cndfbG9jazsgIAogIGludCBfX3J3X3JlYWRlcnM7ICAgICAgICAgICAgICAgICAgICAKICBfcHRo
cmVhZF9kZXNjciBfX3J3X3dyaXRlcjsgICAgICAgICAgCiAgX3B0aHJlYWRfZGVzY3IgX19yd19y
ZWFkX3dhaXRpbmc7ICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsgICAK
ICBpbnQgX19yd19raW5kOyAgICAgICAgICAgICAgICAgICAgICAgCiAgaW50IF9fcndfcHNoYXJl
ZDsgICAgICAgICAgICAgICAgICAgIAp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKIAp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9j
a2F0dHJfdDsKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgojIDE1
MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51
eC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKCgojIDMwICIvdXNyL2xpYi9nY2MtbGliL2Fy
bS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9y
dDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRl
ZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBf
X2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19p
bm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYg
X19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19t
b2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYg
X191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYg
X19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVm
IF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBf
X2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBf
X2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu
OTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5
cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgoKCiAKdHlwZWRlZiBfX3RpbWVfdCB0aW1l
X3Q7CgoKCgoKIyA4OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u
Ly4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgi
IDMKCgoKIyAxMjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAx
OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
IAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoK
CgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTI1ICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dWludDsKCgogCgojIDE1OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRl
ZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlw
ZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7
CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyAp
KSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJ
X18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAg
X19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t
bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvZW5k
aWFuLmgiIDEgMwogCgoKCgoKCgoKCgoKIyAzNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoK
CgoKCgoKCgoKCgojIDE5MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCiMgMzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0
cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX19zaWdf
YXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBf
X3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSBdOwogIH0gX19z
aWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKCiMgMzQg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t
bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9saWIvZ2NjLWxpYi9h
cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoK
CgojIDYyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt
LWxpbnV4L2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoK
CgogCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25n
IGludCB0dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz
OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51
eC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZhbDsKCnR5
cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0OwoKIAoK
CgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19uZmRzLCBf
X2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq
X19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpleHRlcm4g
aW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0
ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpf
X3RpbWVvdXQpICAgIDsKCgogCgogCgoKZXh0ZXJuIGludCBwc2VsZWN0ICAoaW50IF9fbmZkcywg
X19mZF9zZXQgKl9fcmVhZGZkcywKCQkJIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq
X19leGNlcHRmZHMsCgkJCSBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKCQkJIGNv
bnN0IF9fc2lnc2V0X3QgKl9fc2lnbWFzaykgICAgOwoKCiAKCgojIDE5NCAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMK
CgoKIyAxOTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9h
cm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgogCgp0eXBlZGVmIF9fYmxrY250
X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7ICAKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudDY0X3Qg
YmxrY250NjRfdDsgICAgICAKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7ICAK
dHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7ICAKCgogCgoKIyAzMzkgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAg
IDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAK
CgoKZXh0ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAq
ICBfX3N0YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVy
biB2b2lkICogIHNldHN0YXRlICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3Ry
dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJw
dHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBp
bnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRy
OwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmLAoJCQkgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4
dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9k
YXRhICpfX2J1ZikgICAgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBf
X3NlZWQsCgkJCSAgICAgdm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6
ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmKSAgICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19z
dGF0ZWJ1ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAg
OwoKCgoKIApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQg
ICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2ln
bmVkIGludCAqX19zZWVkKSAgICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZv
aWQpICAgIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVy
biBsb25nIGludCBucmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsK
CiAKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBq
cmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hv
cnQgaW50ICpzZWVkNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4
dGVybiB2b2lkIGxjb25nNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoK
IApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAK
ICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJ
IAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAg
fTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4
dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hv
cnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4
dGVybiBpbnQgbXJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGlu
dCBqcmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHQpICAgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBf
X3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50
IHNlZWQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19i
dWZmZXIpICAgIDsKCgoKCgoKCgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9p
ZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lk
ICogIF9fcHRyKSAgICA7CgoKIApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAg
IDsKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGli
L2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoK
CiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2Fy
bS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIyAyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgogCgogCgoKIApleHRlcm4gdm9pZCAq
ICBhbGxvY2EgIChzaXplX3QgX19zaXplKSAgICA7CgoKCgoKIAoKCiMgNDkyICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3Rk
bGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2MgIChzaXplX3QgX19zaXplKSAg
ICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgICh2b2lkICgqX19mdW5jKSAodm9p
ZCkpICAgIDsKCgogCgpleHRlcm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQg
X19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgICA7CmV4dGVy
biBpbnQgb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19h
cmcpLAoJCQkgdm9pZCAqICBfX2FyZykgICAgOwoKCiAKCgpleHRlcm4gdm9pZCBleGl0ICAoaW50
IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCmV4dGVy
biB2b2lkIF9FeGl0ICAoaW50IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKCgogCmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
ICAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAgKF9fY29uc3QgY2hhciAqX19u
YW1lKSAgICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9fc3RyaW5nKSAgICA7
CgoKCiAKCmV4dGVybiBpbnQgc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3Qg
Y2hhciAqX192YWx1ZSwKCQkJaW50IF9fcmVwbGFjZSkgICAgOwoKIApleHRlcm4gdm9pZCB1bnNl
dGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFy
ZW52ICAodm9pZCkgICAgOwoKCgoKIAoKCgpleHRlcm4gY2hhciAqbWt0ZW1wICAoY2hhciAqX190
ZW1wbGF0ZSkgICAgOwoKIAoKCgoKZXh0ZXJuIGludCBta3N0ZW1wICAoY2hhciAqX190ZW1wbGF0
ZSkgICAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQp
ICAgIDsKCgoKIAoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lICAoX19jb25z
dCBjaGFyICpfX25hbWUpICAgIDsKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
cmVzb2x2ZWQpICAgIDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2Nv
bnN0IHZvaWQgKiAsIF9fY29uc3Qgdm9pZCAqICkgIDsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3Qg
Y29tcGFyaXNvbl9mbl90OwoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2
b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9f
bm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAg
OwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVy
biBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzICAobG9u
ZyBsb25nIGludCBfX3gpICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
IAoKIApleHRlcm4gZGl2X3QgZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKSAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBf
X251bWVyLCBsb25nIGludCBfX2Rlbm9tKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2ICAobG9uZyBsb25nIGlu
dCBfX251bWVyLAoJCQkJCSBsb25nIGxvbmcgaW50IF9fZGVub20pICAgIAogICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBjaGFyICpmY3Z0ICAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAq
X19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7CgogCmV4dGVybiBjaGFyICpx
ZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwpleHRlcm4gY2hhciAq
cWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCQkgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKZXh0ZXJuIGNoYXIg
KnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYp
ICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg
ZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
CgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUg
IF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
bGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgoK
IAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSAgICA7
CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKCQkJX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gaW50
IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAgICA7CgoKIApleHRlcm4gc2l6
ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19wd2NzLAoJCQkgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAgIDsKIApleHRlcm4gc2l6ZV90
IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoKCgogCgoKCmV4dGVybiBpbnQg
cnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAgOwoKCgoKIAoKCgoKCmV4dGVy
biBpbnQgZ2V0c3Vib3B0ICAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAoJCQkgICBfX2Nv
bnN0IGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCgkJCSAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fdmFsdWVwKSAgICA7CgoKCgoKIApleHRlcm4gdm9pZCBzZXRrZXkgIChfX2NvbnN0
IGNoYXIgKl9fa2V5KSAgICA7CgogCgogCgoKIApleHRlcm4gaW50IGdyYW50cHQgIChpbnQgX19m
ZCkgICAgOwoKIAoKZXh0ZXJuIGludCB1bmxvY2twdCAgKGludCBfX2ZkKSAgICA7CgogCgoKZXh0
ZXJuIGNoYXIgKnB0c25hbWUgIChpbnQgX19mZCkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBwdHNu
YW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgICAgOwoKIApl
eHRlcm4gaW50IGdldHB0ICAodm9pZCkgICAgOwoKCgoKCiAKCgojIDE1NyAiLi4vLi4vaW5jbHVk
ZS9taXNjLmgiIDIKCgoKCgoKCiAKCiAKCgoKCgoKCgoKIAojIDEgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKCgoKIAoKCgogCgoKCiAKCgoK
CiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKIAoKIAoKCgoKIAoKCgogCgoKCgoKCgoKIAoKCgog
CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKIAoKCgoKCgojIDE3NyAiLi4vLi4vaW5jbHVk
ZS9taXNjLmgiIDIKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNTMgIi91c3IvbGli
L2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9i
aXRzL2h1Z2VfdmFsLmgiIDMKCgoKIAoKCgoKCgoKCgoKIyA4MSAiL3Vzci9saWIvZ2NjLWxpYi9h
cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvaHVnZV92
YWwuaCIgMwoKCgogCgoKCgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgogCgojIDEgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL25hbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ4
ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4
L2luY2x1ZGUvYml0cy9uYW4uaCIgMwoKIyAzNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKIAojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0
eXBlZGVmIGZsb2F0IGZsb2F0X3Q7CQkgCgp0eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsJIAoKCiAK
CgogCgoKCiAKCgoKIAoKCgoKCiAKCiAKCgoKIyA0MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19hY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbiAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhdGFuICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4gICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbjIgICAgICAgICAg
KGRvdWJsZSAgX195LCBkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2F0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgICAgOwoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2NvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwog
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
ICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbiAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX190YW4gICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKCgogCmV4dGVybiAgIHZvaWQgICAgICAgIHNpbmNvcyAgICAgICAKCSAgICAoZG91
YmxlICBfX3gsIGRvdWJsZSAgKl9fc2lueCwgZG91YmxlICAqX19jb3N4KSAgIDsgZXh0ZXJuICAg
dm9pZCAgICAgICAgX19zaW5jb3MgICAgICAgIAkgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpf
X3NpbngsIGRvdWJsZSAgKl9fY29zeCkgICAgOwoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fY29zaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX190YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbmggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbmggICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbmggICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBleHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg
IF9fZXhwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsK
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gs
IGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2ZyZXhwICAg
ICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGxkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25l
bnQpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZGV4cCAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGxvZyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19sb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGxvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2xvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBtb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19p
cHRyKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbW9kZiAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGxvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2xvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwMiAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHAyICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cyICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZzIgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcG93
ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19wb3cgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBoeXBvdCAgICAgICAgICAoZG91
YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9faHlw
b3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIGNicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fY2JydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoK
CgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjZWlsICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZhYnMgICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2ZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBmbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19mbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRv
dWJsZSAgX195KSAgICAgIDsKCgogCgpleHRlcm4gIGludCAgICAgX19pc2luZiAgICAgIChkb3Vi
bGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGlu
dCAgICAgX19maW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3Zh
bHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIGZp
bml0ZSAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKIAoKCgoKCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBpbmZuYW4gICAgICAgICAgKGludCBf
X2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2luZm5hbiAgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJp
YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGRyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2RyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg
ICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2lnbmlmaWNhbmQg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0
cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19j
b3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgX19hdHRyaWJ1
dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IG5hbiAgICAgICAgICAoX19jb25zdCBjaGFyICpfX3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICgg
ICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbmFuICAgICAgICAg
IChfX2NvbnN0IGNoYXIgKl9fdGFnYikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKCgogCmV4dGVybiAgaW50ICAgICBfX2lzbmFuICAgICAgKGRvdWJsZSAgX192YWx1
ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICAgaXNu
YW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGowICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRl
cm4gICBkb3VibGUgICAgICAgICAgajEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19qMSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBqbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgICA7CmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICB5MCAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3kwICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHkxICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9feTEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgeW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg
ICBfX3luICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgICAgOwoKCgoKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgZXJmICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fZXJmICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGVyZmMgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19lcmZjICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGxnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg
ICBfX2xnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICB0Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX190Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2dhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBsZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19z
aWduZ2FtcCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xnYW1tYV9yICAgICAgICAg
ICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICByaW50ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3JpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIG5leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRv
dWJsZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX25leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4g
ICBkb3VibGUgICAgICAgICAgbmV4dHRvd2FyZCAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19uZXh0dG93YXJkICAgICAgICAgIChkb3VibGUgIF9feCwgbG9u
ZyBkb3VibGUgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgcmVtYWluZGVyICAgICAgICAgIChkb3VibGUgIF9f
eCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBk
b3VibGUgICAgICAgICAgc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxiICAgICAgICAgIChkb3VibGUgIF9f
eCwgZG91YmxlICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNjYWxi
biAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsKCiAK
ZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu
ICAgaW50ICAgICAgICBfX2lsb2diICAgICAgICAoZG91YmxlICBfX3gpICAgIDsKCgoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgc2NhbGJsbiAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg
aW50IF9fbikgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxibG4gICAgICAgICAg
KGRvdWJsZSAgX194LCBsb25nIGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIG5lYXJieWludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19uZWFyYnlpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAK
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICByb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAg
IDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRydW5jICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX190cnVuYyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICBfX2F0dHJp
YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKCgpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgcmVtcXVvICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3ksIGludCAqX19xdW8p
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1xdW8gICAgICAgICAgKGRvdWJsZSAg
X194LCBkb3VibGUgIF9feSwgaW50ICpfX3F1bykgICAgICA7CgoKIAoKIAoKZXh0ZXJuICAgbG9u
ZyBpbnQgICAgICAgIGxyaW50ICAgICAgICAoZG91YmxlICBfX3gpICAgOyBleHRlcm4gICBsb25n
IGludCAgICAgICAgX19scmludCAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CmV4dGVybiAgIGxv
bmcgbG9uZyBpbnQgICAgICAgIGxscmludCAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu
ICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJpbnQgICAgICAgIChkb3VibGUgIF9feCkgICAg
OwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIGxyb3VuZCAgICAgICAgKGRvdWJsZSAgX194
KSAgIDsgZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIF9fbHJvdW5kICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgbGxyb3VuZCAgICAgICAgKGRv
dWJsZSAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJvdW5kICAg
ICAgICAoZG91YmxlICBfX3gpICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmZGlt
ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19mZGltICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZm1heCAgICAgICAgICAoZG91YmxlICBfX3gs
IGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1heCAgICAgICAg
ICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2ZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg
IF9feSkgICAgICA7CgoKIApleHRlcm4gIGludCAgICAgIF9fZnBjbGFzc2lmeSAgICAgIChkb3Vi
bGUgIF9fdmFsdWUpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVy
biAgaW50ICAgICAgX19zaWduYml0ICAgICAgKGRvdWJsZSAgX192YWx1ZSkgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbWEg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSwgZG91YmxlICBfX3opICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19mbWEgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg
IF9feSwgZG91YmxlICBfX3opICAgICAgOwoKIyA2MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoK
CgogCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v
Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19hY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW4yZiAgICAgICAgIChmbG9hdCAgIF9f
eSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW4yZiAgICAg
ICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19zaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICB0YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX190YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVy
biAgIHZvaWQgICAgICAgc2luY29zZiAgICAgIAoJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAq
X19zaW54LCBmbG9hdCAgICpfX2Nvc3gpICAgOyBleHRlcm4gICB2b2lkICAgICAgIF9fc2luY29z
ZiAgICAgICAJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19zaW54LCBmbG9hdCAgICpfX2Nv
c3gpICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvc2hmICAgICAgICAgKGZs
b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luaGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpbmhmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuaGYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
YWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAg
ICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIAoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cDEwZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMTBmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3cxMGYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3BvdzEwZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4cGYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fZnJleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAg
ICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsZGV4cGYgICAgICAgICAoZmxvYXQgICBf
X3gsIGludCBfX2V4cG9uZW50KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYg
ICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZmxvYXQgICAgICAgICAgbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgKl9faXB0cikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAg
ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBleHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2V4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHAyZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMmYgICAgICAgICAoZmxvYXQg
ICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cyZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nMmYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHBvd2Yg
ICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19wb3dmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
ICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBf
X3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBjYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGNlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19jZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAg
KF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9k
ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2Ztb2RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7
CgoKIAoKZXh0ZXJuICBpbnQgICAgX19pc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAg
IChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKCmV4
dGVybiAgaW50ICAgIGlzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgIGZpbml0ZWYgICAgIChmbG9hdCAgIF9f
dmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGluZm5hbmYgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19pbmZuYW5m
ICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p
ICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGRyZW1mICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZHJlbWYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHNpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fc2lnbmlmaWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3B5c2lnbmYgICAgICAgICAoZmxvYXQg
ICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5hbmYgICAgICAgICAoX19jb25zdCBjaGFyICpf
X3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19uYW5mICAgICAgICAgKF9fY29uc3QgY2hhciAqX190YWdiKSAgICAgX19h
dHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICBpbnQgICAgX19p
c25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBmICAg
ICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2owZiAgICAgICAg
IChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajFmICAgICAgICAgKGZs
b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAgICAgICAgIChmbG9hdCAg
KSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAgICAgICAgKGludCwgZmxvYXQg
ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fam5mICAgICAgICAgKGludCwgZmxvYXQg
ICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAgKSAg
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYgICAgICAgICAoZmxvYXQgICkgICAgICA7
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIHluZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX3luZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwoKCgoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9h
dCAgICAgICAgICBsZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHRnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsKCgoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwoKCgogCgoKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgbGdhbW1hZl9yICAgICAgICAgICAgKGZsb2F0ICAsIGludCAqX19z
aWduZ2FtcCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAgICAg
ICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRlcm4gICBmbG9h
dCAgICAgICAgICByaW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fcmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAg
IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195
KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4gICBmbG9h
dCAgICAgICAgICBuZXh0dG93YXJkZiAgICAgICAgIChmbG9hdCAgIF9feCwgbG9uZyBkb3VibGUg
X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fbmV4dHRvd2FyZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgcmVtYWluZGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQg
ICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3JlbWFpbmRlcmYgICAgICAgICAo
ZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX24pICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3NjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBf
X24pICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2NhbGJuZiAgICAgICAgIChm
bG9hdCAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJu
ZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAgIGludCAg
ICAgICBpbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgaW50ICAgICAgIF9f
aWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIHNjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25nIGludCBfX24pICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25n
IGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbmVhcmJ5aW50ZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbmVhcmJ5
aW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBmbG9hdCAgICAg
ICAgICByb3VuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX3JvdW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBm
bG9hdCAgICAgICAgICB0cnVuY2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190cnVuY2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykg
ICkgIDsKCiAKCgpleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1xdW9mICAgICAgICAgKGZsb2F0
ICAgX194LCBmbG9hdCAgIF9feSwgaW50ICpfX3F1bykgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fcmVtcXVvZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3ksIGludCAqX19x
dW8pICAgICAgOwoKCiAKCiAKCmV4dGVybiAgIGxvbmcgaW50ICAgICAgIGxyaW50ZiAgICAgICAo
ZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBfX2xyaW50ZiAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICBsbHJpbnRmICAg
ICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGxvbmcgbG9uZyBpbnQgICAgICAgX19sbHJp
bnRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAg
bHJvdW5kZiAgICAgICAoZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBf
X2xyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgICA7CmV4dGVybiAgIGxvbmcgbG9uZyBpbnQg
ICAgICAgbGxyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25n
IGludCAgICAgICBfX2xscm91bmRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgZmRpbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mZGltZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgZmxvYXQgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbWF4ZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX2ZtYXhmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZtaW5mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9h
dCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1pbmYgICAgICAgICAoZmxv
YXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgaW50ICAgICBfX2ZwY2xh
c3NpZnlmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKIApleHRlcm4gIGludCAgICAgX19zaWduYml0ZiAgICAgKGZsb2F0ICAgX192YWx1
ZSkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIGZtYWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195LCBmbG9hdCAg
IF9feikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1hZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3ksIGZsb2F0ICAgX196KSAgICAgIDsKCiMgODIgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRo
LmgiIDIgMwoKCgoKIyAxMDMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u
Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCgoKCgoKIApleHRlcm4gaW50
IHNpZ25nYW07CgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt
CiAgewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBf
U1VCTk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRl
ZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwJIAogIF9TVklEXywJIAogIF9YT1BFTl8sCSAKICBfUE9T
SVhfLAogIF9JU09DXwkgCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgogCgoKZXh0ZXJuIF9MSUJfVkVS
U0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKCgoKCiAKCgoKCgoKCnN0cnVjdCBleGNlcHRpb24KCiAg
ewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3Vi
bGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAg
KHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSAgICA7CgoKCgogCgoKCgoKCgogCgojIDEgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2Zsb2F0LmgiIDEgMwogCgoKIAoK
ICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgoKIyAyODkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgi
IDIgMwoKCiMgMjk5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v
Li4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51
eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDEgMwogCgoKCgoKCgoKIAoKCiMgMzQ4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1
LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgogCgoKCgoK
IAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgog
CgoKCiMgMTkwICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAzMiAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2Fzc2Vy
dC5oIiAzCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxMDkgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9hc3NlcnQuaCIg
MwoKIyAyMDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5oIiAyCgojIDEgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9jdHlwZS5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgplbnVt
CnsKICBfSVN1cHBlciA9ICgoIDAgKSA8IDggPyAoKDEgPDwgKCAwICkpIDw8IDgpIDogKCgxIDw8
ICggMCApKSA+PiA4KSkgLAkgCiAgX0lTbG93ZXIgPSAoKCAxICkgPCA4ID8gKCgxIDw8ICggMSAp
KSA8PCA4KSA6ICgoMSA8PCAoIDEgKSkgPj4gOCkpICwJIAogIF9JU2FscGhhID0gKCggMiApIDwg
OCA/ICgoMSA8PCAoIDIgKSkgPDwgOCkgOiAoKDEgPDwgKCAyICkpID4+IDgpKSAsCSAKICBfSVNk
aWdpdCA9ICgoIDMgKSA8IDggPyAoKDEgPDwgKCAzICkpIDw8IDgpIDogKCgxIDw8ICggMyApKSA+
PiA4KSkgLAkgCiAgX0lTeGRpZ2l0ID0gKCggNCApIDwgOCA/ICgoMSA8PCAoIDQgKSkgPDwgOCkg
OiAoKDEgPDwgKCA0ICkpID4+IDgpKSAsCSAKICBfSVNzcGFjZSA9ICgoIDUgKSA8IDggPyAoKDEg
PDwgKCA1ICkpIDw8IDgpIDogKCgxIDw8ICggNSApKSA+PiA4KSkgLAkgCiAgX0lTcHJpbnQgPSAo
KCA2ICkgPCA4ID8gKCgxIDw8ICggNiApKSA8PCA4KSA6ICgoMSA8PCAoIDYgKSkgPj4gOCkpICwJ
IAogIF9JU2dyYXBoID0gKCggNyApIDwgOCA/ICgoMSA8PCAoIDcgKSkgPDwgOCkgOiAoKDEgPDwg
KCA3ICkpID4+IDgpKSAsCSAKICBfSVNibGFuayA9ICgoIDggKSA8IDggPyAoKDEgPDwgKCA4ICkp
IDw8IDgpIDogKCgxIDw8ICggOCApKSA+PiA4KSkgLAkgCiAgX0lTY250cmwgPSAoKCA5ICkgPCA4
ID8gKCgxIDw8ICggOSApKSA8PCA4KSA6ICgoMSA8PCAoIDkgKSkgPj4gOCkpICwJIAogIF9JU3B1
bmN0ID0gKCggMTAgKSA8IDggPyAoKDEgPDwgKCAxMCApKSA8PCA4KSA6ICgoMSA8PCAoIDEwICkp
ID4+IDgpKSAsCSAKICBfSVNhbG51bSA9ICgoIDExICkgPCA4ID8gKCgxIDw8ICggMTEgKSkgPDwg
OCkgOiAoKDEgPDwgKCAxMSApKSA+PiA4KSkgCSAKfTsKCgogCgoKCgoKCgoKCgpleHRlcm4gX19j
b25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsJIApleHRlcm4gX19jb25zdCBfX2lu
dDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsgIApleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5
cGVfdG91cHBlcjsgIAoKCgoKCgoKCgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAg
ICAgOwpleHRlcm4gaW50ICBpc2FscGhhICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNjbnRy
bCAgIChpbnQpICAgICA7CmV4dGVybiBpbnQgIGlzZGlnaXQgICAoaW50KSAgICAgOwpleHRlcm4g
aW50ICBpc2xvd2VyICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNncmFwaCAgIChpbnQpICAg
ICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3B1bmN0
ICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNzcGFjZSAgIChpbnQpICAgICA7CmV4dGVybiBp
bnQgIGlzdXBwZXIgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3hkaWdpdCAgIChpbnQpICAg
ICA7CgoKZXh0ZXJuIGludCAgaXNibGFuayAgIChpbnQpICAgICA7CgoKCiAKZXh0ZXJuIGludCB0
b2xvd2VyICAoaW50IF9fYykgICAgOwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAg
ICA7CgoKCgogCgpleHRlcm4gaW50IGlzYXNjaWkgIChpbnQgX19jKSAgICA7CgogCgpleHRlcm4g
aW50IHRvYXNjaWkgIChpbnQgX19jKSAgICA7CgoKCgogCgpleHRlcm4gaW50ICBfdG91cHBlciAg
IChpbnQpICAgICA7CmV4dGVybiBpbnQgIF90b2xvd2VyICAgKGludCkgICAgIDsKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKSAgCnsKICBy
ZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBf
X2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykgIAp7CiAgcmV0dXJu
IF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDogX19jOwp9
CgoKCgojIDE4MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2N0eXBlLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgogCgoKCiAKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50ICBfX2lzYWxudW1fbCAgIChpbnQsIF9f
bG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNhbHBoYV9sICAgKGludCwgX19sb2NhbGVf
dCkgICAgIDsKZXh0ZXJuIGludCAgX19pc2NudHJsX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAg
OwpleHRlcm4gaW50ICBfX2lzZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVy
biBpbnQgIF9faXNsb3dlcl9sICAgKGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAg
X19pc2dyYXBoX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzcHJp
bnRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNwdW5jdF9sICAg
KGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAgX19pc3NwYWNlX2wgICAoaW50LCBf
X2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzdXBwZXJfbCAgIChpbnQsIF9fbG9jYWxl
X3QpICAgICA7CmV4dGVybiBpbnQgIF9faXN4ZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAg
ICA7CgpleHRlcm4gaW50ICBfX2lzYmxhbmtfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CgoK
IApleHRlcm4gaW50IF9fdG9sb3dlcl9sICAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpICAgIDsK
CiAKZXh0ZXJuIGludCBfX3RvdXBwZXJfbCAgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSAgICA7
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMjAyICIuLi8uLi9pbmNsdWRlL21pc2Mu
aCIgMgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCiAKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4
ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCiAK
dHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9saWJpby5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmln
LmgiIDEgMwogCgoKCgoKIAoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoK
CiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAz
MTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDE0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMwICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv
bGliaW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyA2NyAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlv
LmgiIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKIyA5OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVj
dCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAoKCgoKCgoKdHlwZWRlZiB2b2lkIF9J
T19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAq
X25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAx
ODYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9saWJpby5oIiAzCgp9OwoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdz
OwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVhZF9l
bmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSAK
ICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNoYXIq
IF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9JT19z
YXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3NhdmVf
ZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxF
ICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90ICAgX29s
ZF9vZmZzZXQ7ICAKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQg
Y2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9fbG9j
a190ICpfbG9jazsKCgoKCgoKCgogIF9fb2ZmNjRfdCAgIF9vZmZzZXQ7CiAgIAogIGludCBfdW51
c2VkMlsxNl07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVj
dCBfSU9fRklMRV9wbHVzOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRp
bl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CgoKCgoKCgoKCgoKIAoKIAoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgY2hhciAqX19i
dWYsCgkJCQkgICAgICAgc2l6ZV90IF9fbmJ5dGVzKSAgOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6
ZV90IF9faW9fd3JpdGVfZm4gICh2b2lkICogIF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVm
LAoJCQkJICAgICAgc2l6ZV90IF9fbikgIDsKCiAKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtf
Zm4gICh2b2lkICogIF9fY29va2llLCBfX29mZl90ICAgX19wb3MsIGludCBfX3cpICA7CgogCnR5
cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gICh2b2lkICogIF9fY29va2llKSAgOwoKCgogCnR5cGVk
ZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0
ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2ll
X3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5j
dGlvbl90OwoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwkJIAogIF9f
aW9fd3JpdGVfZm4gKndyaXRlOwkJIAogIF9faW9fc2Vla19mbiAqc2VlazsJCSAKICBfX2lvX2Ns
b3NlX2ZuICpjbG9zZTsJCSAKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9J
T19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgX19maWxlOwogIGNvbnN0IHZvaWQg
Kl9fdnRhYmxlOwogIHZvaWQgKl9fY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Qg
X19pb19mdW5jdGlvbnM7Cn07CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJ
TEUgKikgICAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBp
bnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuIGludCBfSU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1
dGMgIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAo
X0lPX0ZJTEUgKl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9f
ZnApICAgIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAg
ICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4
dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBf
SU9fZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50
IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0
cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRl
cm4gaW50IF9JT192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVf
dCAgIF9JT19wYWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4g
c2l6ZV90ICAgX0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoK
ZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAs
IGludCwgaW50KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxF
ICosIF9fb2ZmNjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9h
cmVhICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
IAoKdHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgZnBvczY0
X3Q7CgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpz
dGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAK
IAoKCgoKCiAKZXh0ZXJuIGludCByZW1vdmUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICAg
IDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hh
ciAqX19uZXcpICAgIDsKCgogCgpleHRlcm4gRklMRSAqdG1wZmlsZSAgKHZvaWQpICAgIDsKCgoK
CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICAodm9pZCkgICAgOwoKIApleHRlcm4gY2hhciAq
dG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAoY2hh
ciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBj
aGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQgZmNs
b3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUgKl9f
c3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3Ry
ZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2VhbGwgICh2b2lkKSAgICA7CgoKCgogCmV4
dGVybiBGSUxFICpmb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJ
CQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpICAgIDsKIApleHRlcm4gRklMRSAq
ZnJlb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgICAgOwojIDIwMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42
NCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19tb2RlcykgICAgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0ICAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCgkJCSAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgICAg
OwoKCgogCmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21v
ZGVzKSAgICA7CgoKCiAKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAgKHZvaWQgKl9fcmVzdHJp
Y3QgX19tYWdpY19jb29raWUsCgkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcywKCQkJICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgICAg
OwoKIAoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAgKGNoYXIgKipfX3Jlc3RyaWN0IF9f
YnVmbG9jLAoJCQkJICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSAgICA7CgoKCiAKCmV4
dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYpICAgIDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSBpbnQgX19tb2Rlcywgc2l6
ZV90IF9fbikgICAgOwoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgICBzaXplX3QgX19zaXpl
KSAgICA7CgogCmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgICAgOwoK
CgogCmV4dGVybiBpbnQgZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJCSBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg
cHJpbnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl
eHRlcm4gaW50IHNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgICA7CgogCmV4dGVybiBpbnQgdmZwcmludGYg
IChGSUxFICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsCgkJCSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2cHJp
bnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xp
c3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNf
dmFfbGlzdCAgX19hcmcpICAgIDsKCgogCmV4dGVybiBpbnQgc25wcmludGYgIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZz
bnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJCSAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg
MCkpKTsKCgoKIAoKZXh0ZXJuIGludCB2YXNwcmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0
ciwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MCkpKTsKZXh0ZXJuIGludCBfX2FzcHJpbnRmICAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCgkJ
CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw
cmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CgogCmV4dGVybiBpbnQgdmRwcmludGYgIChpbnQgX19mZCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykg
ICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7
CmV4dGVybiBpbnQgZHByaW50ZiAgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDMpKSk7CgoKCiAKZXh0ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwog
CmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u
LikgICAgOwogCmV4dGVybiBpbnQgc3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCgogCmV4
dGVybiBpbnQgdmZzY2FuZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKIApleHRl
cm4gaW50IHZzY2FuZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVj
X3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z
Y2FuZl9fLCAxLCAwKSkpOwoKIApleHRlcm4gaW50IHZzc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkg
X19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf
XyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgogCmV4dGVybiBpbnQgZmdldGMgI