public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: objc/4110: Error messages like bug 666, that was never resolved
@ 2002-07-02  6:58 sayle
  0 siblings, 0 replies; 2+ messages in thread
From: sayle @ 2002-07-02  6:58 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, jones.peter, nobody

Synopsis: Error messages like bug 666, that was never resolved

State-Changed-From-To: open->closed
State-Changed-By: sayle
State-Changed-When: Tue Jul  2 06:57:36 2002
State-Changed-Why:
    See Nicola Pero's post
    http://gcc.gnu.org/ml/gcc/2002-06/msg01712.html

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4110


^ permalink raw reply	[flat|nested] 2+ messages in thread

* objc/4110: Error messages like bug 666, that was never resolved
@ 2001-08-24  0:56 jones.peter
  0 siblings, 0 replies; 2+ messages in thread
From: jones.peter @ 2001-08-24  0:56 UTC (permalink / raw)
  To: gcc-gnats; +Cc: jones.peter

>Number:         4110
>Category:       objc
>Synopsis:       Error messages like bug 666, that was never resolved
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 24 00:56:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Peter Jones
>Release:        3.0.1 built locally
>Organization:
>Environment:
RedHat 7.1 on Intel 686, "everything" installed.
>Description:
I have installed Swarm from SantaFe at /uar/local/swarm, and gcc 3.0.1 at /usr/local/gcc3, HDF5 at /usr/local/hdf5.
When a user of swarm tries to run the first "hello-world" program in the Swarm package, spurious load errors are produced.
They are of the form:
"/usr/bin/ld: warning: type and size of dynamic symbol `__objc_class_name_XXXXXXX' are not defined."

This problem has already been reported as bug 666, using GCC 2.95.
>How-To-Repeat:
Try to run a Swarm program.
>Fix:

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

U29ycnkgYWxsIHRoaXMgaXMgaW4gb25lIGZpbGUsIGFzIHRoZSBXZWIgaW50ZXJmYWNlIGRvZXNu
J3Qgc2VlbSB0byBhbGxvdwp1cGxvYWRpbmcgb25lIGF0IGEgdGltZS4gVGhlIGZpbGVzIEkgYW0g
c3VibWl0dGlnIGFyZToKCnNob3didWcgLSBwcm9jZWR1cmUgdG8gZG8gYSB0cmlhbCBydW4KYnVn
c291dCAtIGFiYnJldmlhdGVkIG91dHB1dC4gVGhlIG91dHB1dCBvZiAibm0iIHNob3dzIHRoZSBz
eW1ib2xzIGFyZQogICAgICAgICAgZGVmaW5lZCAod2l0aCBhbiAiUiIgZmxhZykuClNvdXJjZSBm
aWxlczoKQ291bnRlci5taQptYWluLm1pClBlcnNvbi5taQpQcGxNb2RlbFN3YXJtLm1pClBwbE9i
c2VydmVyU3dhcm0ubWkKClNvcnJyeSwgd2hlbiBJIHRyaWVkIGNvbmNhdGVuYXRpbmcgYWxsIHRo
ZXNlIGZpbGVzLCBJIGdvdCBsb3RzIG9mCmR1cGxpY2F0ZSBzeW1ib2wgbWVzc2FnZXMuIEkgd291
bGQgaGF2ZSBsaWtlZCB0byBzdWJtaXQganVzdCBvbmUgZmlsZS4KCgoyMDAxLTA4LTI0IDAyOjQw
ICAgICAgICAgICAgICAgICAgICBzaG93YnVnICAgICAgICAgICAgICAgICAgICBQYWdlICAgIDEK
CgojIS9iaW4vYmFzaCAteAovdXNyL2xvY2FsL2djYzMvYmluL2djYyAtYyAtZyAtTzIgLVdhbGwg
LVduby1pbXBvcnQgLVduby1wcm90b2NvbCAtV2Vycm9yICAtRF9HTlVfU09VUkNFIC1EQVBQTkFN
RT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4xIC1EQlVHQUREUkVTUz1idWctc3dhcm1Ac3dh
cm0ub3JnIC1EQVBQTkFNRT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4xIC1EQlVHQUREUkVT
Uz1idWctc3dhcm1Ac3dhcm0ub3JnIC0tc2F2ZS10ZW1wcyAgIC1JL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlIG1haW4ubWkKL3Vzci9sb2NhbC9nY2MzL2Jpbi9nY2MgLWMgLWcgLU8yIC1XYWxsIC1X
bm8taW1wb3J0IC1Xbm8tcHJvdG9jb2wgLVdlcnJvciAgLURfR05VX1NPVVJDRSAtREFQUE5BTUU9
aGVsbG8td29ybGQgLURBUFBWRVJTSU9OPTIuMSAtREJVR0FERFJFU1M9YnVnLXN3YXJtQHN3YXJt
Lm9yZyAtREFQUE5BTUU9aGVsbG8td29ybGQgLURBUFBWRVJTSU9OPTIuMSAtREJVR0FERFJFU1M9
YnVnLXN3YXJtQHN3YXJtLm9yZyAtLXNhdmUtdGVtcHMgICAtSS91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZSBQZXJzb24ubWkKL3Vzci9sb2NhbC9nY2MzL2Jpbi9nY2MgLWMgLWcgLU8yIC1XYWxsIC1X
bm8taW1wb3J0IC1Xbm8tcHJvdG9jb2wgLVdlcnJvciAgLURfR05VX1NPVVJDRSAtREFQUE5BTUU9
aGVsbG8td29ybGQgLURBUFBWRVJTSU9OPTIuMSAtREJVR0FERFJFU1M9YnVnLXN3YXJtQHN3YXJt
Lm9yZyAtREFQUE5BTUU9aGVsbG8td29ybGQgLURBUFBWRVJTSU9OPTIuMSAtREJVR0FERFJFU1M9
YnVnLXN3YXJtQHN3YXJtLm9yZyAtLXNhdmUtdGVtcHMgICAtSS91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZSBDb3VudGVyLm1pCi91c3IvbG9jYWwvZ2NjMy9iaW4vZ2NjIC1jIC1nIC1PMiAtV2FsbCAt
V25vLWltcG9ydCAtV25vLXByb3RvY29sIC1XZXJyb3IgIC1EX0dOVV9TT1VSQ0UgLURBUFBOQU1F
PWhlbGxvLXdvcmxkIC1EQVBQVkVSU0lPTj0yLjEgLURCVUdBRERSRVNTPWJ1Zy1zd2FybUBzd2Fy
bS5vcmcgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQVkVSU0lPTj0yLjEgLURCVUdBRERSRVNT
PWJ1Zy1zd2FybUBzd2FybS5vcmcgLS1zYXZlLXRlbXBzICAgLUkvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUgUHBsTW9kZWxTd2FybS5taQovdXNyL2xvY2FsL2djYzMvYmluL2djYyAtYyAtZyAtTzIg
LVdhbGwgLVduby1pbXBvcnQgLVduby1wcm90b2NvbCAtV2Vycm9yICAtRF9HTlVfU09VUkNFIC1E
QVBQTkFNRT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4xIC1EQlVHQUREUkVTUz1idWctc3dh
cm1Ac3dhcm0ub3JnIC1EQVBQTkFNRT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4xIC1EQlVH
QUREUkVTUz1idWctc3dhcm1Ac3dhcm0ub3JnIC0tc2F2ZS10ZW1wcyAgIC1JL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlIFBwbE9ic2VydmVyU3dhcm0ubWkKL3Vzci9sb2NhbC9nY2MzL2Jpbi9nY2Mg
LWcgLU8yIC1vIC5saWJzL2hlbGxvLXdvcmxkIG1haW4ubyBQZXJzb24ubyBDb3VudGVyLm8gUHBs
TW9kZWxTd2FybS5vIFBwbE9ic2VydmVyU3dhcm0ubyAtTC91c3IvbG9jYWwvc3dhcm0vbGliIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLnNvIC1ML3Vzci9sb2NhbC9oZGY1L2xpYiAtTC91
c3IvbGliIC1ML3Vzci9YMTFSNi9saWIgLUwvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLnNvIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
YnNpbXRvb2xzZ3VpLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzLnNvIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYnJhbmRvbS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0a29i
amMuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGNsb2JqYy5zbyAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJvYmplY3RiYXNlLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5LnNv
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmRlZm9iai5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJjb2xsZWN0aW9ucy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNjLnNvIC91c3IvbG9j
YWwvc3dhcm0vbGliL2xpYm9iamMuc28gLWxnY2MgLWxCTFQyNCAtbHRrOC4zIC1sdGNsOC4zIC1s
WHBtIC1scG5nIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5zbyAtbHNzbCAtbGNyeXB0byAt
bHogLWxtIC1sWDExIC1sZGwgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5zbyAtTC91c3Iv
bG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS8gLWxnY2MgLVds
LC0tcnBhdGggLVdsLC91c3IvbG9jYWwvc3dhcm0vbGliIC1XbCwtLXJwYXRoIC1XbCwvdXNyL2xv
Y2FsL2hkZjUvbGliIC1XbCwtLXJwYXRoIC1XbCwvdXNyL2xvY2FsL2djYzMvbGliIC1XbCwtLXJw
YXRoIC1XbCwvdXNyL2xpYiAtV2wsLS1ycGF0aCAtV2wsL3Vzci9YMTFSNi9saWIKZm9yIHggaW4g
U3dhcm1PYmplY3QgR1VJU3dhcm0gRW1wdHlQcm9iZU1hcCBTd2FybQpkbyBlY2hvIFNlYXJjaGlu
ZyBmb3IgJHgKbm0gLW8gQ291bnRlci5vIG1haW4ubyBQZXJzb24ubyBQcGxNb2RlbFN3YXJtLm8g
UHBsT2JzZXJ2ZXJTd2FybS5vICAvdXNyL2xvY2FsL2hkZjUvbGliLyogL3Vzci9sb2NhbC9zd2Fy
bS9saWIvKiB8IGdyZXAgX19vYmpjX2NsYXNzX25hbWVfIiR4Igpkb25lCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAyOjUyICAg
ICAgICAgICAgICAgICAgICBidWdzb3V0ICAgICAgICAgICAgICAgICAgICBQYWdlICAgIDEKCgpB
YmJyZXZpYXRlZCBvdXRwdXQgb2Ygc2hvd2J1ZyxBdWcgMjQsIDIwMDEKCisgL3Vzci9sb2NhbC9n
Y2MzL2Jpbi9nY2MgLWMgLWcgLU8yIC1XYWxsIC1Xbm8taW1wb3J0IC1Xbm8tcHJvdG9jb2wgLVdl
cnJvciAtRF9HTlVfU09VUkNFIC1EQVBQTkFNRT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4x
IC1EQlVHQUREUkVTUz1idWctc3dhcm1Ac3dhcm0ub3JnIC1EQVBQTkFNRT1oZWxsby13b3JsZCAt
REFQUFZFUlNJT049Mi4xIC1EQlVHQUREUkVTUz1idWctc3dhcm1Ac3dhcm0ub3JnIC0tc2F2ZS10
ZW1wcyAtSS91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZSBtYWluLm1pCisgL3Vzci9sb2NhbC9nY2Mz
L2Jpbi9nY2MgLWMgLWcgLU8yIC1XYWxsIC1Xbm8taW1wb3J0IC1Xbm8tcHJvdG9jb2wgLVdlcnJv
ciAtRF9HTlVfU09VUkNFIC1EQVBQTkFNRT1oZWxsby13b3JsZCAtREFQUFZFUlNJT049Mi4xIC1E
QlVHQUREUkVTUz1idWctc3dhcm1Ac3dhcm0ub3JnIC1EQVBQTkFNRT1oZWxsby13b3JsZCAtREFQ
UFZFUlNJT049Mi4xIC1EQlVHQUREUkVTUz1idWctc3dhcm1Ac3dhcm0ub3JnIC0tc2F2ZS10ZW1w
cyAtSS91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZSBQZXJzb24ubWkKKyAvdXNyL2xvY2FsL2djYzMv
YmluL2djYyAtYyAtZyAtTzIgLVdhbGwgLVduby1pbXBvcnQgLVduby1wcm90b2NvbCAtV2Vycm9y
IC1EX0dOVV9TT1VSQ0UgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQVkVSU0lPTj0yLjEgLURC
VUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQ
VkVSU0lPTj0yLjEgLURCVUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLS1zYXZlLXRlbXBz
IC1JL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlIENvdW50ZXIubWkKKyAvdXNyL2xvY2FsL2djYzMv
YmluL2djYyAtYyAtZyAtTzIgLVdhbGwgLVduby1pbXBvcnQgLVduby1wcm90b2NvbCAtV2Vycm9y
IC1EX0dOVV9TT1VSQ0UgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQVkVSU0lPTj0yLjEgLURC
VUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQ
VkVSU0lPTj0yLjEgLURCVUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLS1zYXZlLXRlbXBz
IC1JL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlIFBwbE1vZGVsU3dhcm0ubWkKKyAvdXNyL2xvY2Fs
L2djYzMvYmluL2djYyAtYyAtZyAtTzIgLVdhbGwgLVduby1pbXBvcnQgLVduby1wcm90b2NvbCAt
V2Vycm9yIC1EX0dOVV9TT1VSQ0UgLURBUFBOQU1FPWhlbGxvLXdvcmxkIC1EQVBQVkVSU0lPTj0y
LjEgLURCVUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLURBUFBOQU1FPWhlbGxvLXdvcmxk
IC1EQVBQVkVSU0lPTj0yLjEgLURCVUdBRERSRVNTPWJ1Zy1zd2FybUBzd2FybS5vcmcgLS1zYXZl
LXRlbXBzIC1JL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlIFBwbE9ic2VydmVyU3dhcm0ubWkKKyAv
dXNyL2xvY2FsL2djYzMvYmluL2djYyAtZyAtTzIgLW8gLmxpYnMvaGVsbG8td29ybGQgbWFpbi5v
IFBlcnNvbi5vIENvdW50ZXIubyBQcGxNb2RlbFN3YXJtLm8gUHBsT2JzZXJ2ZXJTd2FybS5vIC1M
L3Vzci9sb2NhbC9zd2FybS9saWIgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0uc28gLUwv
dXNyL2xvY2FsL2hkZjUvbGliIC1ML3Vzci9saWIgLUwvdXNyL1gxMVI2L2xpYiAtTC91c3IvbG9j
YWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS8gL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlic3BhY2Uuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYW5hbHlzaXMuc28g
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHNndWkuc28gL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlic2ltdG9vbHMuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlicmFuZG9tLnNvIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYnRrb2JqYy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0Y2xv
YmpjLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28gL3Vzci9sb2NhbC9z
d2FybS9saWIvbGliYWN0aXZpdHkuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGliZGVmb2JqLnNv
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmNvbGxlY3Rpb25zLnNvIC91c3IvbG9jYWwvc3dhcm0v
bGliL2xpYm1pc2Muc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5zbyAtbGdjYyAtbEJM
VDI0IC1sdGs4LjMgLWx0Y2w4LjMgLWxYcG0gLWxwbmcgL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJo
ZGY1LnNvIC1sc3NsIC1sY3J5cHRvIC1seiAtbG0gLWxYMTEgLWxkbCAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJvYmpjLnNvIC1ML3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xLyAtbGdjYyAtV2wsLS1ycGF0aCAtV2wsL3Vzci9sb2NhbC9zd2FybS9saWIg
LVdsLC0tcnBhdGggLVdsLC91c3IvbG9jYWwvaGRmNS9saWIgLVdsLC0tcnBhdGggLVdsLC91c3Iv
bG9jYWwvZ2NjMy9saWIgLVdsLC0tcnBhdGggLVdsLC91c3IvbGliIC1XbCwtLXJwYXRoIC1XbCwv
dXNyL1gxMVI2L2xpYgovdXNyL2Jpbi9sZDogd2FybmluZzogdHlwZSBhbmQgc2l6ZSBvZiBkeW5h
bWljIHN5bWJvbCBgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QnIGFyZSBub3QgZGVmaW5l
ZAovdXNyL2Jpbi9sZDogd2FybmluZzogdHlwZSBhbmQgc2l6ZSBvZiBkeW5hbWljIHN5bWJvbCBg
X19vYmpjX2NsYXNzX25hbWVfR1VJU3dhcm0nIGFyZSBub3QgZGVmaW5lZAovdXNyL2Jpbi9sZDog
d2FybmluZzogdHlwZSBhbmQgc2l6ZSBvZiBkeW5hbWljIHN5bWJvbCBgX19vYmpjX2NsYXNzX25h
bWVfRW1wdHlQcm9iZU1hcCcgYXJlIG5vdCBkZWZpbmVkCi91c3IvYmluL2xkOiB3YXJuaW5nOiB0
eXBlIGFuZCBzaXplIG9mIGR5bmFtaWMgc3ltYm9sIGBfX29iamNfY2xhc3NfbmFtZV9Td2FybScg
YXJlIG5vdCBkZWZpbmVkCisgZWNobyBTZWFyY2hpbmcgZm9yIFN3YXJtT2JqZWN0ClNlYXJjaGlu
ZyBmb3IgU3dhcm1PYmplY3QKKyBubSAtbyBDb3VudGVyLm8gbWFpbi5vIFBlcnNvbi5vIFBwbE1v
ZGVsU3dhcm0ubyBQcGxPYnNlcnZlclN3YXJtLm8gL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJoZGY1
LmEgL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJoZGY1LmxhIC91c3IvbG9jYWwvaGRmNS9saWIvbGli
aGRmNS5zZXR0aW5ncyAvdXNyL2xvY2FsL2hkZjUvbGliL2xpYmhkZjUuc28gL3Vzci9sb2NhbC9o
ZGY1L2xpYi9saWJoZGY1LnNvLjAgL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJoZGY1LnNvLjAuMC4w
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5LmEgL3Vzci9sb2NhbC9zd2FybS9saWIv
bGliYWN0aXZpdHkubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYWN0aXZpdHkuc28gL3Vzci9s
b2NhbC9zd2FybS9saWIvbGliYWN0aXZpdHkuc28uNSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJh
Y3Rpdml0eS5zby41LjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNpcy5hIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFu
YWx5c2lzLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLnNvLjQgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGliYW5hbHlzaXMuc28uNC4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
Y29sbGVjdGlvbnMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJjb2xsZWN0aW9ucy5sYSAvdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJjb2xsZWN0aW9ucy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJjb2xsZWN0aW9ucy5zby4zIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmNvbGxlY3Rpb25zLnNv
LjMuMC4xIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmRlZm9iai5hIC91c3IvbG9jYWwvc3dhcm0v
bGliL2xpYmRlZm9iai5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJkZWZvYmouc28gL3Vzci9s
b2NhbC9zd2FybS9saWIvbGliZGVmb2JqLnNvLjQgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliZGVm
b2JqLnNvLjQuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybS5hIC91c3IvbG9j
YWwvc3dhcm0vbGliL2xpYmphdmFzd2FybS5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZh
c3dhcm0uc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGliamF2YXN3YXJtLnNvLjEgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGliamF2YXN3YXJtLnNvLjEuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
YmphdmFzd2FybXN0dWJzLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliamF2YXN3YXJtc3R1YnMu
bGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliamF2YXN3YXJtc3R1YnMuc28gL3Vzci9sb2NhbC9z
d2FybS9saWIvbGliamF2YXN3YXJtc3R1YnMuc28uMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJq
YXZhc3dhcm1zdHVicy5zby4wLjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNjLmEgL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGlibWlzYy5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNj
LnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm1pc2Muc28uMSAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJtaXNjLnNvLjEuMS4zIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamMuYSAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJvYmpjLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamMuc28g
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
Ym9iamMuc28uMC4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5hIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2UubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
b2JqZWN0YmFzZS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLnNvLjQgL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5zby40LjAuMCAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJyYW5kb20uYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJyYW5kb20ubGEgL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlicmFuZG9tLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnJhbmRv
bS5zby4xIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnJhbmRvbS5zby4xLjAuMCAvdXNyL2xvY2Fs
L3N3YXJtL2xpYi9saWJzaW10b29scy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xz
Z3VpLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHNndWkubGEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlic2ltdG9vbHNndWkuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9v
bHNndWkuc28uNSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29sc2d1aS5zby41LjAuMCAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29scy5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJzaW10b29scy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29scy5zby40IC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzLnNvLjQuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYnNwYWNlLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3BhY2UubGEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlic3BhY2Uuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3BhY2Uuc28uMiAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzcGFjZS5zby4yLjAuMSAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJzd2FybS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLmxhIC91c3IvbG9jYWwv
c3dhcm0vbGliL2xpYnN3YXJtLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLnNvLjAg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0uc28uMC4wLjAgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlidGNsb2JqYy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMubGEgL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlidGNsb2JqYy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0Y2xv
YmpjLnNvLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGNsb2JqYy5zby4wLjEuMyAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJ0a29iamMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0a29iamMu
bGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGtvYmpjLnNvIC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYnRrb2JqYy5zby41IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRrb2JqYy5zby41LjAuMQor
IGdyZXAgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKQ291bnRlci5vOiAgICAgICAgIFUg
X19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKUGVyc29uLm86ICAgICAgICAgVSBfX29iamNf
Y2xhc3NfbmFtZV9Td2FybU9iamVjdAouLi4KL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0
YmFzZS5hOlN3YXJtT2JqZWN0Lm86MDAwMDAwMDAgUiBfX29iamNfY2xhc3NfbmFtZV9Td2FybU9i
amVjdAovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLnNvOjAwMDFjMTAwIFIgX19v
YmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0
YmFzZS5zby40OjAwMDFjMTAwIFIgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5zby40LjAuMDowMDAxYzEwMCBSIF9fb2JqY19j
bGFzc19uYW1lX1N3YXJtT2JqZWN0Ci4uLgoKKyBlY2hvIFNlYXJjaGluZyBmb3IgR1VJU3dhcm0K
U2VhcmNoaW5nIGZvciBHVUlTd2FybQorIG5tIC1vIENvdW50ZXIubyBtYWluLm8gUGVyc29uLm8g
UHBsTW9kZWxTd2FybS5vIFBwbE9ic2VydmVyU3dhcm0ubyAvdXNyL2xvY2FsL2hkZjUvbGliL2xp
YmhkZjUuYSAvdXNyL2xvY2FsL2hkZjUvbGliL2xpYmhkZjUubGEgL3Vzci9sb2NhbC9oZGY1L2xp
Yi9saWJoZGY1LnNldHRpbmdzIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5zbyAvdXNyL2xv
Y2FsL2hkZjUvbGliL2xpYmhkZjUuc28uMCAvdXNyL2xvY2FsL2hkZjUvbGliL2xpYmhkZjUuc28u
MC4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYWN0aXZpdHkuYSAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJhY3Rpdml0eS5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhY3Rpdml0eS5zbyAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhY3Rpdml0eS5zby41IC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYmFjdGl2aXR5LnNvLjUuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLmEg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGliYW5hbHlzaXMubGEgL3Vzci9sb2NhbC9zd2FybS9saWIv
bGliYW5hbHlzaXMuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYW5hbHlzaXMuc28uNCAvdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNpcy5zby40LjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJjb2xsZWN0aW9ucy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmNvbGxlY3Rpb25zLmxh
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmNvbGxlY3Rpb25zLnNvIC91c3IvbG9jYWwvc3dhcm0v
bGliL2xpYmNvbGxlY3Rpb25zLnNvLjMgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliY29sbGVjdGlv
bnMuc28uMy4wLjEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliZGVmb2JqLmEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGliZGVmb2JqLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmRlZm9iai5zbyAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJkZWZvYmouc28uNCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJkZWZvYmouc28uNC4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliamF2YXN3YXJtLmEgL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGliamF2YXN3YXJtLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
YmphdmFzd2FybS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm0uc28uMSAvdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm0uc28uMS4wLjAgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGliamF2YXN3YXJtc3R1YnMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm1z
dHVicy5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm1zdHVicy5zbyAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm1zdHVicy5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYmphdmFzd2FybXN0dWJzLnNvLjAuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm1pc2Mu
YSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNjLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
Ym1pc2Muc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlibWlzYy5zby4xIC91c3IvbG9jYWwvc3dh
cm0vbGliL2xpYm1pc2Muc28uMS4xLjMgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5hIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamMubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2Jq
Yy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmpjLnNvLjAgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlib2JqYy5zby4wLjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLmEg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5sYSAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJvYmplY3RiYXNlLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28u
NCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLnNvLjQuMC4wIC91c3IvbG9jYWwv
c3dhcm0vbGliL2xpYnJhbmRvbS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnJhbmRvbS5sYSAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJyYW5kb20uc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
cmFuZG9tLnNvLjEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlicmFuZG9tLnNvLjEuMC4wIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2lt
dG9vbHNndWkuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29sc2d1aS5sYSAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJzaW10b29sc2d1aS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJz
aW10b29sc2d1aS5zby41IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzZ3VpLnNvLjUu
MC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzLmxhIC91c3IvbG9jYWwvc3dhcm0v
bGliL2xpYnNpbXRvb2xzLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzLnNvLjQg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMuc28uNC4wLjAgL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGlic3BhY2UuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzcGFjZS5sYSAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJzcGFjZS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzcGFjZS5z
by4yIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLnNvLjIuMC4xIC91c3IvbG9jYWwvc3dh
cm0vbGliL2xpYnN3YXJtLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0ubGEgL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlic3dhcm0uc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0u
c28uMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2FybS5zby4wLjAuMCAvdXNyL2xvY2FsL3N3
YXJtL2xpYi9saWJ0Y2xvYmpjLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGNsb2JqYy5sYSAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0Y2xvYmpjLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
YnRjbG9iamMuc28uMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0Y2xvYmpjLnNvLjAuMS4zIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRrb2JqYy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRr
b2JqYy5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0a29iamMuc28gL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGlidGtvYmpjLnNvLjUgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGtvYmpjLnNvLjUu
MC4xCisgZ3JlcCBfX29iamNfY2xhc3NfbmFtZV9HVUlTd2FybQpQcGxPYnNlcnZlclN3YXJtLm86
ICAgICAgICAgVSBfX29iamNfY2xhc3NfbmFtZV9HVUlTd2FybQovdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJzaW10b29sc2d1aS5hOkdVSVN3YXJtLm86MDAwMDAwMjUgUiBfX29iamNfY2xhc3NfbmFt
ZV9HVUlTd2FybQovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29sc2d1aS5zbzowMDAxNjZl
NSBSIF9fb2JqY19jbGFzc19uYW1lX0dVSVN3YXJtCi91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNp
bXRvb2xzZ3VpLnNvLjU6MDAwMTY2ZTUgUiBfX29iamNfY2xhc3NfbmFtZV9HVUlTd2FybQovdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29sc2d1aS5zby41LjAuMDowMDAxNjZlNSBSIF9fb2Jq
Y19jbGFzc19uYW1lX0dVSVN3YXJtCisgZWNobyBTZWFyY2hpbmcgZm9yIEVtcHR5UHJvYmVNYXAK
U2VhcmNoaW5nIGZvciBFbXB0eVByb2JlTWFwCisgbm0gLW8gQ291bnRlci5vIG1haW4ubyBQZXJz
b24ubyBQcGxNb2RlbFN3YXJtLm8gUHBsT2JzZXJ2ZXJTd2FybS5vIC91c3IvbG9jYWwvaGRmNS9s
aWIvbGliaGRmNS5hIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5sYSAvdXNyL2xvY2FsL2hk
ZjUvbGliL2xpYmhkZjUuc2V0dGluZ3MgL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJoZGY1LnNvIC91
c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5zby4wIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRm
NS5zby4wLjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhY3Rpdml0eS5hIC91c3IvbG9jYWwv
c3dhcm0vbGliL2xpYmFjdGl2aXR5LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5
LnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5LnNvLjUgL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGliYWN0aXZpdHkuc28uNS4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYW5hbHlz
aXMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNpcy5sYSAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJhbmFseXNpcy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNpcy5zby40
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLnNvLjQuMC4wIC91c3IvbG9jYWwvc3dh
cm0vbGliL2xpYmNvbGxlY3Rpb25zLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliY29sbGVjdGlv
bnMubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliY29sbGVjdGlvbnMuc28gL3Vzci9sb2NhbC9z
d2FybS9saWIvbGliY29sbGVjdGlvbnMuc28uMyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJjb2xs
ZWN0aW9ucy5zby4zLjAuMSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJkZWZvYmouYSAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJkZWZvYmoubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliZGVmb2Jq
LnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmRlZm9iai5zby40IC91c3IvbG9jYWwvc3dhcm0v
bGliL2xpYmRlZm9iai5zby40LjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm0u
YSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm0ubGEgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGliamF2YXN3YXJtLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybS5zby4x
IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybS5zby4xLjAuMCAvdXNyL2xvY2FsL3N3
YXJtL2xpYi9saWJqYXZhc3dhcm1zdHVicy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFz
d2FybXN0dWJzLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybXN0dWJzLnNvIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybXN0dWJzLnNvLjAgL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGliamF2YXN3YXJtc3R1YnMuc28uMC4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
bWlzYy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm1pc2MubGEgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlibWlzYy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNjLnNvLjEgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGlibWlzYy5zby4xLjEuMyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmpj
LmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJvYmpjLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamMuc28uMCAvdXNyL2xvY2FsL3N3
YXJtL2xpYi9saWJvYmpjLnNvLjAuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJh
c2UuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLmxhIC91c3IvbG9jYWwvc3dh
cm0vbGliL2xpYm9iamVjdGJhc2Uuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFz
ZS5zby40IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28uNC4wLjAgL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlicmFuZG9tLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlicmFuZG9t
LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnJhbmRvbS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJyYW5kb20uc28uMSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJyYW5kb20uc28uMS4wLjAg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJzaW10b29sc2d1aS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzZ3VpLmxhIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzZ3VpLnNvIC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYnNpbXRvb2xzZ3VpLnNvLjUgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHNndWku
c28uNS4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMubGEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlic2ltdG9vbHMuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMu
c28uNCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29scy5zby40LjAuMCAvdXNyL2xvY2Fs
L3N3YXJtL2xpYi9saWJzcGFjZS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLmxhIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNw
YWNlLnNvLjIgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3BhY2Uuc28uMi4wLjEgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGlic3dhcm0uYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2FybS5sYSAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2FybS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJz
d2FybS5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLnNvLjAuMC4wIC91c3IvbG9j
YWwvc3dhcm0vbGliL2xpYnRjbG9iamMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0Y2xvYmpj
LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMuc28gL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlidGNsb2JqYy5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMuc28uMC4x
LjMgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGtvYmpjLmEgL3Vzci9sb2NhbC9zd2FybS9saWIv
bGlidGtvYmpjLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRrb2JqYy5zbyAvdXNyL2xvY2Fs
L3N3YXJtL2xpYi9saWJ0a29iamMuc28uNSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0a29iamMu
c28uNS4wLjEKKyBncmVwIF9fb2JqY19jbGFzc19uYW1lX0VtcHR5UHJvYmVNYXAKUHBsTW9kZWxT
d2FybS5vOiAgICAgICAgIFUgX19vYmpjX2NsYXNzX25hbWVfRW1wdHlQcm9iZU1hcApQcGxPYnNl
cnZlclN3YXJtLm86ICAgICAgICAgVSBfX29iamNfY2xhc3NfbmFtZV9FbXB0eVByb2JlTWFwCi91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2UuYTpBY3Rpdml0eUNvbnRyb2wubzogICAg
ICAgICBVIF9fb2JqY19jbGFzc19uYW1lX0VtcHR5UHJvYmVNYXAKL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlib2JqZWN0YmFzZS5hOkVtcHR5UHJvYmVNYXAubzowMDAwMDAwMCBSIF9fb2JqY19jbGFz
c19uYW1lX0VtcHR5UHJvYmVNYXAKL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5z
bzowMDAxOTJlMCBSIF9fb2JqY19jbGFzc19uYW1lX0VtcHR5UHJvYmVNYXAKL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlib2JqZWN0YmFzZS5zby40OjAwMDE5MmUwIFIgX19vYmpjX2NsYXNzX25hbWVf
RW1wdHlQcm9iZU1hcAovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLnNvLjQuMC4w
OjAwMDE5MmUwIFIgX19vYmpjX2NsYXNzX25hbWVfRW1wdHlQcm9iZU1hcAorIGVjaG8gU2VhcmNo
aW5nIGZvciBTd2FybQpTZWFyY2hpbmcgZm9yIFN3YXJtCisgbm0gLW8gQ291bnRlci5vIG1haW4u
byBQZXJzb24ubyBQcGxNb2RlbFN3YXJtLm8gUHBsT2JzZXJ2ZXJTd2FybS5vIC91c3IvbG9jYWwv
aGRmNS9saWIvbGliaGRmNS5hIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5sYSAvdXNyL2xv
Y2FsL2hkZjUvbGliL2xpYmhkZjUuc2V0dGluZ3MgL3Vzci9sb2NhbC9oZGY1L2xpYi9saWJoZGY1
LnNvIC91c3IvbG9jYWwvaGRmNS9saWIvbGliaGRmNS5zby4wIC91c3IvbG9jYWwvaGRmNS9saWIv
bGliaGRmNS5zby4wLjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhY3Rpdml0eS5hIC91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFj
dGl2aXR5LnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFjdGl2aXR5LnNvLjUgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGliYWN0aXZpdHkuc28uNS4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
YW5hbHlzaXMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNpcy5sYSAvdXNyL2xvY2Fs
L3N3YXJtL2xpYi9saWJhbmFseXNpcy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhbmFseXNp
cy5zby40IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmFuYWx5c2lzLnNvLjQuMC4wIC91c3IvbG9j
YWwvc3dhcm0vbGliL2xpYmNvbGxlY3Rpb25zLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliY29s
bGVjdGlvbnMubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGliY29sbGVjdGlvbnMuc28gL3Vzci9s
b2NhbC9zd2FybS9saWIvbGliY29sbGVjdGlvbnMuc28uMyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJjb2xsZWN0aW9ucy5zby4zLjAuMSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJkZWZvYmouYSAv
dXNyL2xvY2FsL3N3YXJtL2xpYi9saWJkZWZvYmoubGEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
ZGVmb2JqLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmRlZm9iai5zby40IC91c3IvbG9jYWwv
c3dhcm0vbGliL2xpYmRlZm9iai5zby40LjAuMCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZh
c3dhcm0uYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm0ubGEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGliamF2YXN3YXJtLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2Fy
bS5zby4xIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybS5zby4xLjAuMCAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJqYXZhc3dhcm1zdHVicy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xp
YmphdmFzd2FybXN0dWJzLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybXN0dWJz
LnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYmphdmFzd2FybXN0dWJzLnNvLjAgL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGliamF2YXN3YXJtc3R1YnMuc28uMC4wLjAgL3Vzci9sb2NhbC9zd2FybS9s
aWIvbGlibWlzYy5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm1pc2MubGEgL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlibWlzYy5zbyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJtaXNjLnNvLjEgL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGlibWlzYy5zby4xLjEuMyAvdXNyL2xvY2FsL3N3YXJtL2xpYi9s
aWJvYmpjLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2JqYy5sYSAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJvYmpjLnNvIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamMuc28uMCAvdXNyL2xv
Y2FsL3N3YXJtL2xpYi9saWJvYmpjLnNvLjAuMC4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9i
amVjdGJhc2UuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLmxhIC91c3IvbG9j
YWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlib2Jq
ZWN0YmFzZS5zby40IC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28uNC4wLjAg
L3Vzci9sb2NhbC9zd2FybS9saWIvbGlicmFuZG9tLmEgL3Vzci9sb2NhbC9zd2FybS9saWIvbGli
cmFuZG9tLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnJhbmRvbS5zbyAvdXNyL2xvY2FsL3N3
YXJtL2xpYi9saWJyYW5kb20uc28uMSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJyYW5kb20uc28u
MS4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMuYSAvdXNyL2xvY2FsL3N3YXJt
L2xpYi9saWJzaW10b29sc2d1aS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzZ3Vp
LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNpbXRvb2xzZ3VpLnNvIC91c3IvbG9jYWwvc3dh
cm0vbGliL2xpYnNpbXRvb2xzZ3VpLnNvLjUgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9v
bHNndWkuc28uNS4wLjAgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMubGEgL3Vzci9s
b2NhbC9zd2FybS9saWIvbGlic2ltdG9vbHMuc28gL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic2lt
dG9vbHMuc28uNCAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzaW10b29scy5zby40LjAuMCAvdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJzcGFjZS5hIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNl
LmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLnNvIC91c3IvbG9jYWwvc3dhcm0vbGli
L2xpYnNwYWNlLnNvLjIgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3BhY2Uuc28uMi4wLjEgL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0uYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2Fy
bS5sYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2FybS5zbyAvdXNyL2xvY2FsL3N3YXJtL2xp
Yi9saWJzd2FybS5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLnNvLjAuMC4wIC91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMuYSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0
Y2xvYmpjLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMuc28gL3Vzci9sb2NhbC9z
d2FybS9saWIvbGlidGNsb2JqYy5zby4wIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRjbG9iamMu
c28uMC4xLjMgL3Vzci9sb2NhbC9zd2FybS9saWIvbGlidGtvYmpjLmEgL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGlidGtvYmpjLmxhIC91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnRrb2JqYy5zbyAvdXNy
L2xvY2FsL3N3YXJtL2xpYi9saWJ0a29iamMuc28uNSAvdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJ0
a29iamMuc28uNS4wLjEKKyBncmVwIF9fb2JqY19jbGFzc19uYW1lX1N3YXJtCkNvdW50ZXIubzog
ICAgICAgICBVIF9fb2JqY19jbGFzc19uYW1lX1N3YXJtT2JqZWN0ClBlcnNvbi5vOiAgICAgICAg
IFUgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKUHBsTW9kZWxTd2FybS5vOiAgICAgICAg
IFUgX19vYmpjX2NsYXNzX25hbWVfU3dhcm0KL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYWN0aXZp
dHkuYTpTd2FybVByb2Nlc3MubzowMDAwMDcxNSBSIF9fb2JqY19jbGFzc19uYW1lX1N3YXJtQWN0
aXZpdHlfYwovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJhY3Rpdml0eS5hOmFjdGl2aXR5Lm86ICAg
ICAgICAgVSBfX29iamNfY2xhc3NfbmFtZV9Td2FybUFjdGl2aXR5X2MKL3Vzci9sb2NhbC9zd2Fy
bS9saWIvbGliYWN0aXZpdHkuc286MDAwMWU5ZDUgUiBfX29iamNfY2xhc3NfbmFtZV9Td2FybUFj
dGl2aXR5X2MKL3Vzci9sb2NhbC9zd2FybS9saWIvbGliYWN0aXZpdHkuc28uNTowMDAxZTlkNSBS
IF9fb2JqY19jbGFzc19uYW1lX1N3YXJtQWN0aXZpdHlfYwoKMjAwMS0wOC0yNCAwMjo1MiAgICAg
ICAgICAgICAgICAgICAgYnVnc291dCAgICAgICAgICAgICAgICAgICAgUGFnZSAgICAyCgoKL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGliYWN0aXZpdHkuc28uNS4wLjA6MDAwMWU5ZDUgUiBfX29iamNf
Y2xhc3NfbmFtZV9Td2FybUFjdGl2aXR5X2MKLi4uCi91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9i
amVjdGJhc2UuYTpTd2FybS5vOjAwMDAwMDAwIFIgX19vYmpjX2NsYXNzX25hbWVfU3dhcm0KL3Vz
ci9sb2NhbC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5hOlN3YXJtT2JqZWN0Lm86MDAwMDAwMDAg
UiBfX29iamNfY2xhc3NfbmFtZV9Td2FybU9iamVjdAovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJv
YmplY3RiYXNlLnNvOjAwMDFiYmMwIFIgX19vYmpjX2NsYXNzX25hbWVfU3dhcm0KL3Vzci9sb2Nh
bC9zd2FybS9saWIvbGlib2JqZWN0YmFzZS5zbzowMDAxYzEwMCBSIF9fb2JqY19jbGFzc19uYW1l
X1N3YXJtT2JqZWN0Ci91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28uNDowMDAx
YmJjMCBSIF9fb2JqY19jbGFzc19uYW1lX1N3YXJtCi91c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9i
amVjdGJhc2Uuc28uNDowMDAxYzEwMCBSIF9fb2JqY19jbGFzc19uYW1lX1N3YXJtT2JqZWN0Ci91
c3IvbG9jYWwvc3dhcm0vbGliL2xpYm9iamVjdGJhc2Uuc28uNC4wLjA6MDAwMWJiYzAgUiBfX29i
amNfY2xhc3NfbmFtZV9Td2FybQovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJvYmplY3RiYXNlLnNv
LjQuMC4wOjAwMDFjMTAwIFIgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1PYmplY3QKLi4uCi91c3Iv
bG9jYWwvc3dhcm0vbGliL2xpYnNwYWNlLnNvLjIuMC4xOiAgICAgICAgIFUgX19vYmpjX2NsYXNz
X25hbWVfU3dhcm1PYmplY3QKL3Vzci9sb2NhbC9zd2FybS9saWIvbGlic3dhcm0uYTpTd2FybUVu
dmlyb25tZW50Lm86MDAwMDAwNGUgUiBfX29iamNfY2xhc3NfbmFtZV9Td2FybUVudmlyb25tZW50
Ci91c3IvbG9jYWwvc3dhcm0vbGliL2xpYnN3YXJtLnNvOjAwMDAzMzBlIFIgX19vYmpjX2NsYXNz
X25hbWVfU3dhcm1FbnZpcm9ubWVudAovdXNyL2xvY2FsL3N3YXJtL2xpYi9saWJzd2FybS5zby4w
OjAwMDAzMzBlIFIgX19vYmpjX2NsYXNzX25hbWVfU3dhcm1FbnZpcm9ubWVudAouc28uMC4wLjA6
MDAwMDMzMGUgUiBfX29iamNfY2xhc3NfbmFtZV9Td2FybUVudmlyb25tZW50CgoyMDAxLTA4LTI0
IDAwOjU0ICAgICAgICAgICAgICAgICAgIHRlc3RtYWtlICAgICAgICAgICAgICAgICAgICBQYWdl
ICAgIDEKCgojIS9iaW4vYmFzaCAtdngKcm0gLWZyICoubyAqLm1pICoucwptYWtlIFNXQVJNSE9N
RT0vdXNyL2xvY2FsL3N3YXJtIEVYVFJBTERGTEFHUz0iLXJwYXRoIC91c3IvbG9jYWwvZ2NjMy9s
aWIiCmZvciB4IGluIFN3YXJtT2JqZWN0IEdVSVN3YXJtIEVtcHR5UHJvYmVNYXAgU3dhcm0KZG8g
ZWNobyBTZWFyY2hpbmcgZm9yICR4Cm5tIC1vICoubyB8IGdyZXAgX19vYmpjX2NsYXNzX25hbWVf
IiR4Igpkb25lCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1p
ICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgMQoKCiMgNiAiQ291bnRlci5tIgojIDEgIkNvdW50
ZXIuaCIgMQoKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dh
cm1PYmplY3QuaCIgMQojIDkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlL1N3
YXJtT2JqZWN0LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DcmVhdGUu
aCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiIDEKIyAxMiAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL09iamVjdC5oIiAxCiMgMzAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09i
amVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDM0
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiCiMgMSAiL3Vzci9sb2NhbC9n
Y2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwojIDE0NyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDE5OSAi
L3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI4NyAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM1ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqYy9vYmpjLmgiIDIKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBCT09M
OwojIDUxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiCnR5cGVkZWYgY29u
c3Qgc3RydWN0IG9iamNfc2VsZWN0b3IKewogIHZvaWQgKnNlbF9pZDsKICBjb25zdCBjaGFyICpz
ZWxfdHlwZXM7Cn0gKlNFTDsKCmlubGluZSBzdGF0aWMgQk9PTApzZWxfZXEgKFNFTCBzMSwgU0VM
IHMyKQp7CiAgaWYgKHMxID09IDAgfHwgczIgPT0gMCkKICAgIHJldHVybiBzMSA9PSBzMjsKICBl
bHNlCiAgICByZXR1cm4gczEtPnNlbF9pZCA9PSBzMi0+c2VsX2lkOwp9CgoKCgoKdHlwZWRlZiBz
dHJ1Y3Qgb2JqY19vYmplY3QgewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgICAyCgoKICBzdHJ1Y3Qgb2Jq
Y19jbGFzcyogY2xhc3NfcG9pbnRlcjsKfSAqaWQ7CgoKCgoKdHlwZWRlZiBpZCAoKklNUCkoaWQs
IFNFTCwgLi4uKTsKCgoKCgoKdHlwZWRlZiBjaGFyICpTVFI7CiMgOTcgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9vYmpjL29iamMuaCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19jbGFzcyAqTWV0YUNs
YXNzOwp0eXBlZGVmIHN0cnVjdCBvYmpjX2NsYXNzICpDbGFzczsKc3RydWN0IG9iamNfY2xhc3Mg
ewogIE1ldGFDbGFzcyBjbGFzc19wb2ludGVyOwoKICBzdHJ1Y3Qgb2JqY19jbGFzcyogc3VwZXJf
Y2xhc3M7CgoKICBjb25zdCBjaGFyKiBuYW1lOwogIGxvbmcgdmVyc2lvbjsKICB1bnNpZ25lZCBs
b25nIGluZm87CgogIGxvbmcgaW5zdGFuY2Vfc2l6ZTsKCgoKICBzdHJ1Y3Qgb2JqY19pdmFyX2xp
c3QqIGl2YXJzOwoKCgoKCgogIHN0cnVjdCBvYmpjX21ldGhvZF9saXN0KiBtZXRob2RzOwoKCiAg
c3RydWN0IHNhcnJheSAqIGR0YWJsZTsKCiAgc3RydWN0IG9iamNfY2xhc3MqIHN1YmNsYXNzX2xp
c3Q7CiAgc3RydWN0IG9iamNfY2xhc3MqIHNpYmxpbmdfY2xhc3M7CgogIHN0cnVjdCBvYmpjX3By
b3RvY29sX2xpc3QgKnByb3RvY29sczsKICB2b2lkKiBnY19vYmplY3RfdHlwZTsKfTsKIyAxNDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIKQGNsYXNzIFByb3RvY29sOwoK
CnR5cGVkZWYgdm9pZCogcmV0dmFsX3Q7CnR5cGVkZWYgdm9pZCgqYXBwbHlfdCkodm9pZCk7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAgIDMKCgp0eXBlZGVmIHVuaW9uIHsKICBjaGFyICphcmdfcHRyOwog
IGNoYXIgYXJnX3JlZ3Nbc2l6ZW9mIChjaGFyKildOwp9ICphcmdsaXN0X3Q7CgoKSU1QIG9iamNf
bXNnX2xvb2t1cCAoaWQgcmVjZWl2ZXIsIFNFTCBvcCk7CiMgMzEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9vYmpjL09iamVjdC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amMvdHlwZWRzdHJlYW0uaCIgMQojIDMwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90
eXBlZHN0cmVhbS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIg
MQojIDMxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIiAyCiMg
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAxCiMgMzEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDMzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqYy9oYXNoLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9leHRl
cm52YXIuaCIgMQojIDM0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDIK
IyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMzExICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiMgMzEyICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIg
MwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSA7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpf
X3NyYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3Jj
LAogICAgICAgICAgICAgICAgICAgICAgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAg
OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICAgNAoKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQg
Kl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0
IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2
b2lkICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2
b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpz
dHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAg
IDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
bikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6
ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3Ry
eGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKCgoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgICAgNQoKCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjggIi91
c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsK
CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQg
c2hvcnQgaW50ICpfX2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29u
c3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7Cn0gKl9fbG9jYWxlX3Q7CiMgMTA5ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDIgMwoKCmV4dGVybiBpbnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBfX2xvY2FsZV90IF9fbCkKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hh
ciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAo
X19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4
dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQog
ICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNo
ciAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChf
X2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0
IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAq
X19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSk7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENv
dW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgICA2CgoKZXh0ZXJuIGNoYXIgKnN0cnN0
ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJj
YXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIg
KnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2RlbGltKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2RlbGltLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0
IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKCgoKCgpleHRlcm4gdm9pZCAq
bWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5c3RhY2ssIHNpemVfdCBfX2hheXN0YWNrbGVuLAog
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVk
bGVsZW4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJu
IHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwpl
eHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsK
CgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAq
X19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAg
ICAgICAgICAgICAgIFBhZ2UgICAgNwoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19l
cnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9f
Ynplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19j
b25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZv
aWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19j
b25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAg
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl
eHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0
ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJp
YnV0ZV9fICgoY29uc3QpKTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBs
b25nIGludCBfX2xsKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCgpl
eHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpf
X3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGlu
dCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNp
emVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpl
eHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hh
ciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19j
b25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgIDgKCgoKCgoKCmV4dGVy
biBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBp
bnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ry
c2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRlcm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAg
IDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKCgpleHRlcm4gY2hhciAqX19z
dHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiBjaGFy
ICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBj
aGFyICpzdHJmcnkgKGNoYXIgKl9fc3RyaW5nKSA7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2IgKHZv
aWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29u
c3QgY2hhciAqX19maWxlbmFtZSkgOwojIDM1NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nLmgiIDEgMwojIDM1NyAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiMgNTIg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4u
aCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9m
ZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vz
ci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEg
MwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgICA5
CgoKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMv
dHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9i
aXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7
CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBs
b25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAz
CnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3Vp
bnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWdu
ZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5
cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2ln
bmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90
OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0
eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVm
IF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYgX191X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9u
ZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19w
aWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90Owp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0
eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRfdDsKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5
cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRl
ZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGlu
dCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxv
bmcgaW50IF9fc3VzZWNvbmRzX3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTAKCgp0eXBlZGVmIGxv
bmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYg
aW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBp
bnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoK
dHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtj
bnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBf
X2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVm
IF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90
OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lubzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29m
ZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQg
bG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVk
ZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90OwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDExCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2lu
Y2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVk
LmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVk
X3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7
CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0
cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYg
c3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3Nj
aGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19p
bmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBf
X3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXpl
Owp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJl
YWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9j
b25kYXR0cl90OwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291
bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTIKCgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVk
OwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21f
a2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRl
eF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0
ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1
Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xv
Y2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBf
cHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dy
aXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJl
YWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQg
X19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBp
bnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJl
YWRfZmFzdGxvY2sgX19iYV9sb2NrOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDEzCgoKICBpbnQgX19i
YV9yZXF1aXJlZDsKICBpbnQgX19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2Fp
dGluZzsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNo
YXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA1
NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAyMTcgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2
b2lkICosIGNoYXIsIGNoYXIsIGNoYXIsIGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fdWludDE2X3QsIF9fdWludDE2X3QsIF9fdWludDMyX3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVy
biBfX2lubGluZSB2b2lkICoKX19tZW1wY3B5X3NtYWxsICh2b2lkICpfX2Rlc3QxLAogICAgICAg
ICAgICAgICAgIGNoYXIgX19zcmMwXzEsIGNoYXIgX19zcmMyXzEsIGNoYXIgX19zcmM0XzEsIGNo
YXIgX19zcmM2XzEsCiAgICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50
MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3Vp
bnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVu
aW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNp
Z25lZCBjaGFyIF9fdWM7CiAgICB1bnNpZ25lZCBjaGFyIF9fYzsKICB9ICpfX3UgPSBfX2Rlc3Qx
OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAg
ICAgIF9fdS0+X19jID0gX19zcmMwXzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsK
ICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19j
ID0gX19zcmMyXzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEp
OwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsK
ICAgIGNhc2UgNToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdl
ICAgMTQKCgogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgX191LT5fX2MgPSBfX3NyYzRfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBf
X3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAg
ICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMik7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19jID0gX19zcmM2XzE7CiAgICAgIF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2Ug
ODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgX191
ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwogICAgfQog
IHJldHVybiAodm9pZCAqKSBfX3U7Cn0KIyAzNzEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gdm9pZCAqX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7
CiMgMzk1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3RyY3B5X3NtYWxsIChjaGFyICosIF9fdWludDE2X3QsIF9fdWludDE2X3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwg
c2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cmNweV9zbWFsbCAoY2hhciAqX19k
ZXN0LAogICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3Ny
YzRfMiwKICAgICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19z
cmM0XzQsCiAgICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICBf
X3VpbnQzMl90IF9fdWk7CiAgICBfX3VpbnQxNl90IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBf
X3VjOwogIH0gKl9fdSA9ICh2b2lkICopIF9fZGVzdDsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQp
IF9fc3JjbGVuKQogICAgewogICAgY2FzZSAxOgogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAg
ICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBi
cmVhazsKICAgIGNhc2UgMzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1ww
JzsKICAgICAgYnJlYWs7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
Q291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTUKCgogICAgY2FzZSA0OgogICAg
ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9f
dS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVh
azsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0
XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBf
X3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3Vp
ID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJu
IF9fZGVzdDsKfQojIDU1NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cGNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQx
Nl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9f
dWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHBjcHlfc21hbGwg
KGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWlu
dDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3Vp
bnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5p
b24gewogICAgdW5zaWduZWQgaW50IF9fdWk7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7
CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgICBjaGFyIF9fYzsKICB9ICpfX3UgPSAodm9pZCAq
KSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNh
c2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAg
ICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNp
ID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIp
OwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDE2CgoKICAgICAg
YnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICBjYXNl
IDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7
CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8y
OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3Jj
NF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAg
X191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191
aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDMpOwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gJl9fdS0+X19j
Owp9CiMgODczICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5l
IHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0KTsK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBj
aGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAo
X19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0
MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdo
aWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEK
ICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0Owog
IHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMg
KF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAx
NwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Miwg
Y2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMyAoX19j
b25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAg
ICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAg
d2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0
MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRd
ICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTI4
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBf
X3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19p
bmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2Vw
dCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1
bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFy
IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX2Fj
Y2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIg
Kl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90
IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1
bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApf
X3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNj
ZXB0MiwgY2hhciBfX2FjY2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoK
ICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBf
X2FjY2VwdDIKICAgICAgICAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMpCiAgICArK19f
cmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQojIDk4MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChf
X2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3aGls
ZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQy
KQogICAgKytfX3M7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291
bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTgKCgogIHJldHVybiAqX19zID09ICdc
MCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9faW5s
aW5lIGNoYXIgKl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQg
X19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29uc3Qg
Y2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAgICAgICAgICAgIGlu
dCBfX2FjY2VwdDMpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0
MSAmJiAqX19zICE9IF9fYWNjZXB0MgogICAgICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykKICAg
ICsrX19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChz
aXplX3QpIF9fczsKfQojIDEwMjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90CnN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVf
dCBfX21heGxlbikKewogIF9fY29uc3QgY2hhciAqX19lbmQgPSAoX19jb25zdCBjaGFyICopIG1l
bWNociAoX19zdHJpbmcsICdcMCcsIF9fbWF4bGVuKTsKICByZXR1cm4gX19lbmQgPyAoc2l6ZV90
KSAoX19lbmQgLSBfX3N0cmluZykgOiBfX21heGxlbjsKfQojIDEwNDUgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hh
ciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFy
ICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkK
ewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAq
X19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09
ICdcMCcpCiAgICBfX3Jlc3VsdCA9ICgodm9pZCAqKTApOwogIGVsc2UKICAgIHsKICAgICAgX19y
ZXN1bHQgPSBfX3M7CiAgICAgIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX3NlcCkK
ICAgICAgICArK19fczsKICAgICAgaWYgKCpfX3MgPT0gJ1wwJykKICAgICAgICAqX19uZXh0cCA9
IF9fczsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSAnXDAnOwogICAgICAg
ICAgKl9fbmV4dHAgPSBfX3MgKyAxOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gX19yZXN1bHQ7
Cn0KIyAxMDk1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkKewog
IHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lk
ICopMCkpCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTkKCgogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQg
KikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsK
ICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50
X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNo
ciAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAh
PSAoKHZvaWQgKikwKSkKICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9f
cyA9ICgodm9pZCAqKTApOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj
dDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9
ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAo
KHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0g
X19yZWplY3QyKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lz
dGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYg
Kl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7
CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2Nw
OwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAg
ICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4g
X19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBj
aGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9f
cmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdp
c3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTAp
KQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVq
ZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3Jl
amVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIg
Y2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19j
cCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyCiAgICAgICAgICAgICAmJiAqX19j
cCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykK
ICAgICAgICB7CiAgICAgICAgICAqX19zID0gX19jcDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyMAoK
CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
ICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVq
ZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwog
IGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKICBp
ZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fICh7IGNoYXIgX19hMCwgX19hMSwgX19hMjsgKF9fYnVp
bHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKF9f
cmVqZWN0KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShfX3JlamVjdCkgPT0gMSkgPyAo
KF9fYTAgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVswXSwgX19hMCA9PSAnXDAnKSA/
ICgodm9pZCkgKF9fcmV0dmFsKSwgKCh2b2lkICopMCkpIDogKChfX2ExID0gKChfX2NvbnN0IGNo
YXIgKikgKF9fcmVqZWN0KSlbMV0sIF9fYTEgPT0gJ1wwJykgPyAoX19leHRlbnNpb25fXyAoX19i
dWlsdGluX2NvbnN0YW50X3AgKF9fYTApICYmIChfX2EwKSA9PSAnXDAnID8gKGNoYXIgKikgX19y
YXdtZW1jaHIgKF9fcmV0dmFsLCBfX2EwKSA6IHN0cmNociAoX19yZXR2YWwsIF9fYTApKSkgOiAo
KF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsyXSwgX19hMiA9PSAnXDAnKSA/
IF9fc3RycGJya19jMiAoX19yZXR2YWwsIF9fYTAsIF9fYTEpIDogKCgoX19jb25zdCBjaGFyICop
IChfX3JlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0cnBicmtfYzMgKF9fcmV0dmFsLCBfX2EwLCBf
X2ExLCBfX2EyKSA6IHN0cnBicmsgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkpIDogc3RycGJyayAo
X19yZXR2YWwsIF9fcmVqZWN0KSk7IH0pKSAhPSAoKHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9
ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CiMgMTE4OCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry
aW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMg
MzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNTI4ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXpl
X3QgX19zaXplKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAx
MTg5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwoKCgoKZXh0ZXJuIGNoYXIgKl9f
c3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwojIDEyMTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAq
X19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAzNjAgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMiAzCiMgMzUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgoj
IDQzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCnR5cGVkZWYgc3RydWN0
IGNhY2hlX25vZGUKewogIHN0cnVjdCBjYWNoZV9ub2RlICpuZXh0OwoKICBjb25zdCB2b2lkICpr
ZXk7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDIxCgoKCgogIHZvaWQgKnZhbHVlOwp9ICpub2RlX3B0
cjsKIyA2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgp0eXBlZGVmIHVu
c2lnbmVkIGludCAoKmhhc2hfZnVuY190eXBlKSh2b2lkICosIGNvbnN0IHZvaWQgKik7CiMgNzMg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKdHlwZWRlZiBpbnQgKCpjb21w
YXJlX2Z1bmNfdHlwZSkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwojIDgyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgbm9kZV9w
dHIgKm5vZGVfdGFibGU7CgoKICB1bnNpZ25lZCBpbnQgc2l6ZTsKCgogIHVuc2lnbmVkIGludCB1
c2VkOwogIHVuc2lnbmVkIGludCBtYXNrOwoKCgogIHVuc2lnbmVkIGludCBsYXN0X2J1Y2tldDsK
CgoKICBoYXNoX2Z1bmNfdHlwZSBoYXNoX2Z1bmM7CgogIGNvbXBhcmVfZnVuY190eXBlIGNvbXBh
cmVfZnVuYzsKfSBjYWNoZV90OwoKdHlwZWRlZiBjYWNoZV90ICpjYWNoZV9wdHI7CgoKCmV4dGVy
biBjYWNoZV9wdHIgbW9kdWxlX2hhc2hfdGFibGUsIGNsYXNzX2hhc2hfdGFibGU7CgoKCmNhY2hl
X3B0ciBoYXNoX25ldyAodW5zaWduZWQgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgaGFz
aF9mdW5jX3R5cGUgaGFzaF9mdW5jLAogICAgICAgICAgICAgICAgICAgIGNvbXBhcmVfZnVuY190
eXBlIGNvbXBhcmVfZnVuYyk7CgoKCnZvaWQgaGFzaF9kZWxldGUgKGNhY2hlX3B0ciBjYWNoZSk7
CgoKCgoKCnZvaWQgaGFzaF9hZGQgKGNhY2hlX3B0ciAqY2FjaGVwLCBjb25zdCB2b2lkICprZXks
IHZvaWQgKnZhbHVlKTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
IENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDIyCgoKCgp2b2lkIGhhc2hfcmVt
b3ZlIChjYWNoZV9wdHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtleSk7CiMgMTQyICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCm5vZGVfcHRyIGhhc2hfbmV4dCAoY2FjaGVfcHRy
IGNhY2hlLCBub2RlX3B0ciBub2RlKTsKCgoKdm9pZCAqaGFzaF92YWx1ZV9mb3Jfa2V5IChjYWNo
ZV9wdHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtleSk7CgoKCkJPT0wgaGFzaF9pc19rZXlfaW5faGFz
aCAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lkICprZXkpOwojIDE2NCAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludApoYXNo
X3B0ciAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lkICprZXkpCnsKICByZXR1cm4gKChzaXpl
X3Qpa2V5IC8gc2l6ZW9mICh2b2lkICopKSAmIGNhY2hlLT5tYXNrOwp9CgoKCgoKc3RhdGljIGlu
bGluZSB1bnNpZ25lZCBpbnQKaGFzaF9zdHJpbmcgKGNhY2hlX3B0ciBjYWNoZSwgY29uc3Qgdm9p
ZCAqa2V5KQp7CiAgdW5zaWduZWQgaW50IHJldCA9IDA7CiAgdW5zaWduZWQgaW50IGN0ciA9IDA7
CgoKICB3aGlsZSAoKihjaGFyKilrZXkpIHsKICAgIHJldCBePSAqKGNoYXIqKWtleSsrIDw8IGN0
cjsKICAgIGN0ciA9IChjdHIgKyAxKSAlIHNpemVvZiAodm9pZCAqKTsKICB9CgogIHJldHVybiBy
ZXQgJiBjYWNoZS0+bWFzazsKfQoKCgpzdGF0aWMgaW5saW5lIGludApjb21wYXJlX3B0cnMgKGNv
bnN0IHZvaWQgKmsxLCBjb25zdCB2b2lkICprMikKewogIHJldHVybiAhKGsxIC0gazIpOwp9CgoK
CnN0YXRpYyBpbmxpbmUgaW50CmNvbXBhcmVfc3RyaW5ncyAoY29uc3Qgdm9pZCAqazEsIGNvbnN0
IHZvaWQgKmsyKQp7CiAgaWYgKGsxID09IGsyKQogICAgcmV0dXJuIDE7CiAgZWxzZSBpZiAoazEg
PT0gMCB8fCBrMiA9PSAwKQogICAgcmV0dXJuIDA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMjMKCgog
IGVsc2UKICAgIHJldHVybiAhX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJf
bGVuOyAoX19idWlsdGluX2NvbnN0YW50X3AgKGsxKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAo
azIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoazEpLCBfX3MyX2xlbiA9IHN0cmxlbiAoazIpLCAo
ISgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg
KikoazEpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKGsyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMikgPT0gMSkgfHwgX19zMl9s
ZW4gPj0gNCkpID8gbWVtY21wICgoX19jb25zdCBjaGFyICopIChrMSksIChfX2NvbnN0IGNoYXIg
KikgKGsyKSwgKF9fczFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEp
IDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChrMSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKiko
KGsxKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMSkgPT0gMSkgJiYgKF9fczFfbGVu
ID0gc3RybGVuIChrMSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGsy
KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoazIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2
b2lkICopKGsyKSA9PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzBd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShrMikpWzBdKTsg
aWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMV0gLSAoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzFdKTsgaWYgKF9fczFfbGVu
ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl
c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoazIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsg
X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo
X19jb25zdCBjaGFyICopIChrMik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzBdIC0gX19zMlswXSk7IGlm
IChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzFdIC0gX19zMlsxXSk7IGlm
IChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzJdIC0gX19zMlsyXSk7IGlm
IChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVszXSAtIF9fczJbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKGsyKSAmJiAoKHNpemVfdCko
Y29uc3Qgdm9pZCAqKSgoazIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsyKSA9PSAx
KSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKGsyKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoazEpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMSkgKyAxKSAtIChz
aXplX3QpKGNvbnN0IHZvaWQgKikoazEpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0
ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGsxKSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopKGsyKSlbMF0pOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsx
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMV0p
OyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsyXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMl0pOyBpZiAoX19zMl9s
ZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KGsyKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
azIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9
IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo
azIpKVsyXSk7IGlmIChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAo
X19zMVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsy
KSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGsxLCBrMikpKSk7IH0pOwp9CiMg
MzIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiIDIKIyAxICIv
dXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2dj
YzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgNDMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAxIDMKIyA0NSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNTMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBz
dHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA2MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBf
SU9fRklMRSBfX0ZJTEU7CiMgNzMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAxMCAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxMiAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDIgMwojIDI0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMg
NjcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3Vu
dDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0g
X192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAyNSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAy
IDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICAyNAoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBf
X3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QK
ewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90
OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2Nv
bnYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9nY29udi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAx
ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5o
IiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2dj
YzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMzEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05W
X09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01F
TSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NP
TlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZf
SUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7
CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAxLAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4
MDAwMgp9OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIu
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDI1CgoKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsK
c3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0Owpz
dHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAo
c3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1
bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
ICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2Zj
dCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2Zj
dCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFu
c19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWdu
ZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsK
Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVk
ZWYgaW50ICgqX19nY29udl90cmFuc19xdWVyeV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25z
dCBjaGFyICoqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBj
b25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lk
ICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9f
dHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2Zj
dDsKICBfX2djb252X3RyYW5zX2VuZF9mY3QgX190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0
YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2dj
b252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxl
OwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDI2CgoKCiAg
aW50IF9fY291bnRlcjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190b19uYW1lOwoK
ICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19n
Y29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50
IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25l
ZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVj
dCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWdu
ZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2Nh
dGlvbl9jb3VudGVyOwoKCgogIGludCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9f
c3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNf
ZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXpl
X3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAg
IFBhZ2UgICAyNwoKCiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19k
YXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAz
CnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7
CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2Rh
dGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0df
aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQg
X0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19TSV9fKSkpOwojIDMxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTEgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRh
cmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgMTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpz
dHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9JT19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIg
ewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoK
CgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9f
Y29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBf
X2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdzOwoKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgIDI4CgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2Vu
ZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIq
IF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jh
c2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAq
X0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJr
ZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87
CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hv
cnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hv
cnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CiMgMzAzICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQg
Kl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQp
IC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9J
T19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9z
dGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDI5CgoKIyAzNDIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVk
ZWYgX19zc2l6ZV90IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAo
dm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24pOwoKCgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2Zu
ICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBp
bnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19jb29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRf
Zm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93
cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlv
bl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4gY29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9mbiAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0
ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAgX19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nv
b2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRlZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNv
b2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVjdCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZv
aWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQg
X19yZWFkX3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2ll
LCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191
bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJTEUgKiwgaW50KSA7CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAgMzAKCgpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRl
cm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZs
b3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
ZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0
YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJ
TEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0
ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2
b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tm
aWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUg
KikgOwojIDQ1NCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2Fu
ZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRl
cm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9f
cmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRl
cm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRl
cm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVy
biBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQp
IDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBp
bnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMg
NzQgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9p
bmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCBfX25vdF92YV9s
aXN0X187CiMgODggIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoK
dHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRfdDsKIyAxMzcgIi91c3IvbG9jYWwvZ2NjMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMTM4ICIvdXNyL2xvY2FsL2djYzMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMK
CgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAq
c3RkZXJyOwojIDE1MiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lKSA7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29s
ZCwgX19jb25zdCBjaGFyICpfX25ldykgOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDMxCgoKCgoKCmV4
dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7CiMgMTY4ICIvdXNyL2xvY2FsL2djYzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBG
SUxFICp0bXBmaWxlNjQgKHZvaWQpIDsKCgpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3Mp
IDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciAqX19zKSA7CiMgMTg4ICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRp
by5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFtIChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0
IGNoYXIgKl9fcGZ4KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1
c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgpleHRl
cm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRl
cm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMzIgIi91
c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbW9kZXMpIDsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25z
dCBjaGFyICpfX21vZGVzKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMzIKCgoKCgoKCmV4dGVybiBG
SUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVu
Y3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBf
X2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAo
Y2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxvYykgOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpl
eHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24p
IDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19z
aXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJu
IGludCBwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7Cgpl
eHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGlu
dCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsK
CmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAz
MwoKCmV4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJnKSA7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAq
X19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkp
KTsKCgoKCgpleHRlcm4gaW50IHZhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2YsCiAgICAgICAgICAgICAgICAgICAgICBfX2dudWNf
dmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZtdCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0
IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
bXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50
Zl9fLCAyLCAzKSkpOwoKCmV4dGVybiBpbnQgdmRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0
IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y
bWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKCgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNjYW5m
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwg
MCkpKTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIu
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDM0CgoKZXh0ZXJuIGludCB2c3NjYW5mIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0
ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpf
X3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGlu
dCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5s
b2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpl
eHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBw
dXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgpleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQg
X19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQg
X19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBf
X2MpIDsKCgoKCgpleHRlcm4gaW50IGdldHcgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgIDM1CgoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0p
IDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIg
KmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRl
cm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSA7CiMgNDM2ICIvdXNyL2xvY2FsL2djYzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBf
X3NzaXplX3QgX19nZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVs
aW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwpleHRlcm4gX19zc2l6ZV90IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBf
X2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0
IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIg
KipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CgoK
CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CgoKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVu
Z2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAo
dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVf
dCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAg
ICAgICAgICAgICAgIFBhZ2UgICAzNgoKCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19u
LCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2Vk
ICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4
dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19w
dHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChG
SUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxv
bmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxF
ICpfX3N0cmVhbSkgOwojIDQ5OSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklM
RSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIF9fb2Zm
X3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAg
ICAgOwoKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3Qg
Kl9fcG9zKSA7CiMgNTMzICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUg
Kl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgOwpleHRlcm4gX19vZmY2
NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklM
RSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAg
ICAgICAgIDsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZw
b3M2NF90ICpfX3BvcykgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0p
IDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9y
IChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
OwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVy
biB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICAzNwoKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0
IHN5c19lcnJsaXN0W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNo
YXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwg
X19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVy
biBjaGFyICpjdXNlcmlkIChjaGFyICpfX3MpIDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVy
biBpbnQgb2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFj
aywKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
Zm9ybWF0LCAuLi4pIDsKZXh0ZXJuIGludCBvYnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNr
ICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0IF9fYXJncykgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAzOAoKCgoK
CmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm
dHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUg
KEZJTEUgKl9fc3RyZWFtKSA7CiMgNjQwICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc3RkaW8uaCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0
ZXJuIF9faW5saW5lIGludAp2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQs
IF9fZ251Y192YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10
LCBfX2FyZyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1
cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9j
a2VkIChGSUxFICpfX2ZwKQp7CiAgcmV0dXJuICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19m
cCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChf
X2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3Vu
bG9ja2VkICh2b2lkKQp7CiAgcmV0dXJuICgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGlu
KS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoc3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChz
dGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFy
IChpbnQgX19jKQp7CiAgcmV0dXJuIF9JT19wdXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVy
biBfX2lubGluZSBpbnQKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBD
b3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAzOQoKCmZwdXRjX3VubG9ja2VkIChp
bnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0
ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVh
bSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSkt
Pl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1
dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3Zl
cmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIp
ICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lu
bGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQp
LT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cg
KHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRv
dXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9f
c3NpemVfdApnZXRsaW5lIChjaGFyICoqX19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19z
dHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3Ry
ZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoK
CmV4dGVybiBfX2lubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewog
IHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CiMgNjQxICIvdXNy
L2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9z
dGRpby5oIiAyIDMKIyAzMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJl
YW0uaCIgMgoKdHlwZWRlZiBpbnQgKCpvYmpjX3R5cGVkX3JlYWRfZnVuYykodm9pZCosIGNoYXIq
LCBpbnQpOwp0eXBlZGVmIGludCAoKm9iamNfdHlwZWRfd3JpdGVfZnVuYykodm9pZCosIGNvbnN0
IGNoYXIqLCBpbnQpOwp0eXBlZGVmIGludCAoKm9iamNfdHlwZWRfZmx1c2hfZnVuYykodm9pZCop
Owp0eXBlZGVmIGludCAoKm9iamNfdHlwZWRfZW9mX2Z1bmMpKHZvaWQqKTsKIyA0OCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0MAoKCnR5cGVkZWYgc3RydWN0IG9iamNfdHlwZWRfc3RyZWFtIHsKICB2b2lkKiBwaHlzaWNh
bDsKICBjYWNoZV9wdHIgb2JqZWN0X3RhYmxlOwogIGNhY2hlX3B0ciBzdHJlYW1fdGFibGU7CiAg
Y2FjaGVfcHRyIGNsYXNzX3RhYmxlOwogIGNhY2hlX3B0ciBvYmplY3RfcmVmczsKICBpbnQgbW9k
ZTsKICBpbnQgdHlwZTsKICBpbnQgdmVyc2lvbjsKICBpbnQgd3JpdGluZ19yb290X3A7CiAgb2Jq
Y190eXBlZF9yZWFkX2Z1bmMgcmVhZDsKICBvYmpjX3R5cGVkX3dyaXRlX2Z1bmMgd3JpdGU7CiAg
b2JqY190eXBlZF9lb2ZfZnVuYyBlb2Y7CiAgb2JqY190eXBlZF9mbHVzaF9mdW5jIGZsdXNoOwp9
IFR5cGVkU3RyZWFtOwojIDkzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0
cmVhbS5oIgppbnQgb2JqY193cml0ZV90eXBlIChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBj
aGFyKiB0eXBlLCBjb25zdCB2b2lkKiBkYXRhKTsKaW50IG9iamNfcmVhZF90eXBlIChUeXBlZFN0
cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLCB2b2lkKiBkYXRhKTsKCmludCBvYmpjX3dy
aXRlX3R5cGVzIChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLCAuLi4pOwpp
bnQgb2JqY19yZWFkX3R5cGVzIChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBl
LCAuLi4pOwoKaW50IG9iamNfd3JpdGVfb2JqZWN0X3JlZmVyZW5jZSAoVHlwZWRTdHJlYW0qIHN0
cmVhbSwgaWQgb2JqZWN0KTsKaW50IG9iamNfd3JpdGVfcm9vdF9vYmplY3QgKFR5cGVkU3RyZWFt
KiBzdHJlYW0sIGlkIG9iamVjdCk7Cgpsb25nIG9iamNfZ2V0X3N0cmVhbV9jbGFzc192ZXJzaW9u
IChUeXBlZFN0cmVhbSogc3RyZWFtLCBDbGFzcyBjbGFzcyk7CgoKCgoKCmludCBvYmpjX3dyaXRl
X2FycmF5IChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgaW50IGNvdW50LCBjb25zdCB2b2lkKiBkYXRhKTsKaW50IG9iamNfcmVhZF9h
cnJheSAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvdW50LCB2b2lkKiBkYXRhKTsKCmludCBvYmpjX3dyaXRlX29iamVjdCAo
VHlwZWRTdHJlYW0qIHN0cmVhbSwgaWQgb2JqZWN0KTsKaW50IG9iamNfcmVhZF9vYmplY3QgKFR5
cGVkU3RyZWFtKiBzdHJlYW0sIGlkKiBvYmplY3QpOwojIDEyNCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIKVHlwZWRTdHJlYW0qIG9iamNfb3Blbl90eXBlZF9z
dHJlYW0gKEZJTEUqIHBoeXNpY2FsLCBpbnQgbW9kZSk7ClR5cGVkU3RyZWFtKiBvYmpjX29wZW5f
dHlwZWRfc3RyZWFtX2Zvcl9maWxlIChjb25zdCBjaGFyKiBmaWxlX25hbWUsIGludCBtb2RlKTsK
CnZvaWQgb2JqY19jbG9zZV90eXBlZF9zdHJlYW0gKFR5cGVkU3RyZWFtKiBzdHJlYW0pOwoKQk9P
TCBvYmpjX2VuZF9vZl90eXBlZF9zdHJlYW0gKFR5cGVkU3RyZWFtKiBzdHJlYW0pOwp2b2lkIG9i
amNfZmx1c2hfdHlwZWRfc3RyZWFtIChUeXBlZFN0cmVhbSogc3RyZWFtKTsKIyAzMiAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiIDIKCgoKCgpAaW50ZXJmYWNlIE9iamVj
dAp7CiAgICBDbGFzcyBpc2E7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNDEKCgp9CgoKKyBpbml0aWFs
aXplOwotIGluaXQ7CgoKKyBuZXc7CisgYWxsb2M7Ci0gZnJlZTsKLSBjb3B5OwotIHNoYWxsb3dD
b3B5OwotIGRlZXBlbjsKLSBkZWVwQ29weTsKCgotIChDbGFzcyljbGFzczsKLSAoQ2xhc3Mpc3Vw
ZXJDbGFzczsKLSAoTWV0YUNsYXNzKW1ldGFDbGFzczsKLSAoY29uc3QgY2hhciAqKW5hbWU7CgoK
LSBzZWxmOwotICh1bnNpZ25lZCBpbnQpaGFzaDsKLSAoQk9PTClpc0VxdWFsOmFuT2JqZWN0Owot
IChpbnQpY29tcGFyZTphbm90aGVyT2JqZWN0OwoKCi0gKEJPT0wpaXNNZXRhQ2xhc3M7Ci0gKEJP
T0wpaXNDbGFzczsKLSAoQk9PTClpc0luc3RhbmNlOwoKCi0gKEJPT0wpaXNLaW5kT2Y6KENsYXNz
KWFDbGFzc09iamVjdDsKLSAoQk9PTClpc01lbWJlck9mOihDbGFzcylhQ2xhc3NPYmplY3Q7Ci0g
KEJPT0wpaXNLaW5kT2ZDbGFzc05hbWVkOihjb25zdCBjaGFyICopYUNsYXNzTmFtZTsKLSAoQk9P
TClpc01lbWJlck9mQ2xhc3NOYW1lZDooY29uc3QgY2hhciAqKWFDbGFzc05hbWU7CgoKKyAoQk9P
TClpbnN0YW5jZXNSZXNwb25kVG86KFNFTClhU2VsOwotIChCT09MKXJlc3BvbmRzVG86KFNFTClh
U2VsOwoKCi0gKEJPT0wpY29uZm9ybXNUbzooUHJvdG9jb2wqKWFQcm90b2NvbDsKCgorIChJTVAp
aW5zdGFuY2VNZXRob2RGb3I6KFNFTClhU2VsOwotIChJTVApbWV0aG9kRm9yOihTRUwpYVNlbDsK
KyAoc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uICopZGVzY3JpcHRpb25Gb3JJbnN0YW5j
ZU1ldGhvZDooU0VMKWFTZWw7Ci0gKHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiAqKWRl
c2NyaXB0aW9uRm9yTWV0aG9kOihTRUwpYVNlbDsKCgotIHBlcmZvcm06KFNFTClhU2VsOwotIHBl
cmZvcm06KFNFTClhU2VsIHdpdGg6YW5PYmplY3Q7Ci0gcGVyZm9ybTooU0VMKWFTZWwgd2l0aDph
bk9iamVjdDEgd2l0aDphbk9iamVjdDI7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQyCgoKCi0gKHJl
dHZhbF90KWZvcndhcmQ6KFNFTClhU2VsIDooYXJnbGlzdF90KWFyZ0ZyYW1lOwotIChyZXR2YWxf
dClwZXJmb3JtdjooU0VMKWFTZWwgOihhcmdsaXN0X3QpYXJnRnJhbWU7CgoKKyBwb3NlQXM6KENs
YXNzKWFDbGFzc09iamVjdDsKLSAoQ2xhc3MpdHJhbnNtdXRlQ2xhc3NUbzooQ2xhc3MpYUNsYXNz
T2JqZWN0OwoKCi0gc3ViY2xhc3NSZXNwb25zaWJpbGl0eTooU0VMKWFTZWw7Ci0gbm90SW1wbGVt
ZW50ZWQ6KFNFTClhU2VsOwotIHNob3VsZE5vdEltcGxlbWVudDooU0VMKWFTZWw7CgoKLSBkb2Vz
Tm90UmVjb2duaXplOihTRUwpYVNlbDsKLSBlcnJvcjooY29uc3QgY2hhciAqKWFTdHJpbmcsIC4u
LjsKCgorIChpbnQpdmVyc2lvbjsKKyBzZXRWZXJzaW9uOihpbnQpYVZlcnNpb247CisgKGludClz
dHJlYW1WZXJzaW9uOiAoVHlwZWRTdHJlYW0qKWFTdHJlYW07CgotIHJlYWQ6IChUeXBlZFN0cmVh
bSopYVN0cmVhbTsKLSB3cml0ZTogKFR5cGVkU3RyZWFtKilhU3RyZWFtOwotIGF3YWtlOwoKQGVu
ZAojIDEzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDIKIyAx
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIiAxCiMgMzQgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy5oIiAxCiMgMzUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL29iamMtYXBpLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNo
LmgiIDEKIyAzNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIiAxCiMgNDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL29iamMuaCIgMQojIDQyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90aHIu
aCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2V4dGVybnZhci5oIiAxCiMg
NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIiAyCgoKCgpleHRlcm4gaW50
IF9fb2JqY190aHJlYWRfZXhpdF9zdGF0dXM7CiMgNTkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL3Roci5oIgp0eXBlZGVmIHZvaWQgKiBvYmpjX3RocmVhZF90OwoKCnN0cnVjdCBvYmpj
X211dGV4CnsKICB2b2xhdGlsZSBvYmpjX3RocmVhZF90IG93bmVyOwogIHZvbGF0aWxlIGludCBk
ZXB0aDsKICB2b2lkICogYmFja2VuZDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19tdXRleCAqb2Jq
Y19tdXRleF90OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50
ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQzCgoKCgpzdHJ1Y3Qgb2JqY19jb25kaXRp
b24KewogIHZvaWQgKiBiYWNrZW5kOwp9Owp0eXBlZGVmIHN0cnVjdCBvYmpjX2NvbmRpdGlvbiAq
b2JqY19jb25kaXRpb25fdDsKCgpvYmpjX211dGV4X3Qgb2JqY19tdXRleF9hbGxvY2F0ZSh2b2lk
KTsKaW50IG9iamNfbXV0ZXhfZGVhbGxvY2F0ZShvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2Jq
Y19tdXRleF9sb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBvYmpjX211dGV4X3VubG9jayhv
YmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2JqY19tdXRleF90cnlsb2NrKG9iamNfbXV0ZXhfdCBt
dXRleCk7CgoKb2JqY19jb25kaXRpb25fdCBvYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZSh2b2lkKTsK
aW50IG9iamNfY29uZGl0aW9uX2RlYWxsb2NhdGUob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24p
OwppbnQgb2JqY19jb25kaXRpb25fd2FpdChvYmpjX2NvbmRpdGlvbl90IGNvbmRpdGlvbiwgb2Jq
Y19tdXRleF90IG11dGV4KTsKaW50IG9iamNfY29uZGl0aW9uX3NpZ25hbChvYmpjX2NvbmRpdGlv
bl90IGNvbmRpdGlvbik7CmludCBvYmpjX2NvbmRpdGlvbl9icm9hZGNhc3Qob2JqY19jb25kaXRp
b25fdCBjb25kaXRpb24pOwoKCm9iamNfdGhyZWFkX3Qgb2JqY190aHJlYWRfZGV0YWNoKFNFTCBz
ZWxlY3RvciwgaWQgb2JqZWN0LCBpZCBhcmd1bWVudCk7CnZvaWQgb2JqY190aHJlYWRfeWllbGQo
dm9pZCk7CmludCBvYmpjX3RocmVhZF9leGl0KHZvaWQpOwppbnQgb2JqY190aHJlYWRfc2V0X3By
aW9yaXR5KGludCBwcmlvcml0eSk7CmludCBvYmpjX3RocmVhZF9nZXRfcHJpb3JpdHkodm9pZCk7
CnZvaWQgKiBvYmpjX3RocmVhZF9nZXRfZGF0YSh2b2lkKTsKaW50IG9iamNfdGhyZWFkX3NldF9k
YXRhKHZvaWQgKnZhbHVlKTsKb2JqY190aHJlYWRfdCBvYmpjX3RocmVhZF9pZCh2b2lkKTsKIyAx
MTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIgp0eXBlZGVmIHZvaWQgKCpv
YmpjX3RocmVhZF9jYWxsYmFjaykoKTsKb2JqY190aHJlYWRfY2FsbGJhY2sgb2JqY19zZXRfdGhy
ZWFkX2NhbGxiYWNrKG9iamNfdGhyZWFkX2NhbGxiYWNrIGZ1bmMpOwoKCmludCBfX29iamNfaW5p
dF90aHJlYWRfc3lzdGVtKHZvaWQpOwppbnQgX19vYmpjX2ZpbmlfdGhyZWFkX3N5c3RlbSh2b2lk
KTsKCgppbnQgX19vYmpjX211dGV4X2FsbG9jYXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBf
X29iamNfbXV0ZXhfZGVhbGxvY2F0ZShvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX211
dGV4X2xvY2sob2JqY19tdXRleF90IG11dGV4KTsKaW50IF9fb2JqY19tdXRleF90cnlsb2NrKG9i
amNfbXV0ZXhfdCBtdXRleCk7CmludCBfX29iamNfbXV0ZXhfdW5sb2NrKG9iamNfbXV0ZXhfdCBt
dXRleCk7CgoKaW50IF9fb2JqY19jb25kaXRpb25fYWxsb2NhdGUob2JqY19jb25kaXRpb25fdCBj
b25kaXRpb24pOwppbnQgX19vYmpjX2NvbmRpdGlvbl9kZWFsbG9jYXRlKG9iamNfY29uZGl0aW9u
X3QgY29uZGl0aW9uKTsKaW50IF9fb2JqY19jb25kaXRpb25fd2FpdChvYmpjX2NvbmRpdGlvbl90
IGNvbmRpdGlvbiwgb2JqY19tdXRleF90IG11dGV4KTsKaW50IF9fb2JqY19jb25kaXRpb25fYnJv
YWRjYXN0KG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IF9fb2JqY19jb25kaXRpb25f
c2lnbmFsKG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKCgpvYmpjX3RocmVhZF90IF9fb2Jq
Y190aHJlYWRfZGV0YWNoKHZvaWQgKCpmdW5jKSh2b2lkICphcmcpLCB2b2lkICphcmcpOwppbnQg
X19vYmpjX3RocmVhZF9zZXRfcHJpb3JpdHkoaW50IHByaW9yaXR5KTsKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBh
Z2UgICA0NAoKCmludCBfX29iamNfdGhyZWFkX2dldF9wcmlvcml0eSh2b2lkKTsKdm9pZCBfX29i
amNfdGhyZWFkX3lpZWxkKHZvaWQpOwppbnQgX19vYmpjX3RocmVhZF9leGl0KHZvaWQpOwpvYmpj
X3RocmVhZF90IF9fb2JqY190aHJlYWRfaWQodm9pZCk7CmludCBfX29iamNfdGhyZWFkX3NldF9k
YXRhKHZvaWQgKnZhbHVlKTsKdm9pZCAqIF9fb2JqY190aHJlYWRfZ2V0X2RhdGEodm9pZCk7CiMg
MzcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKIyAxICIvdXNy
L2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9z
dGRpby5oIiAxIDMKIyAzOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGku
aCIgMgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyAxMTAgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYg
X19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyAzOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amMvb2JqYy1hcGkuaCIgMgoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9leHRl
cm52YXIuaCIgMQojIDQxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5o
IiAyCiMgNTAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCnN0cnVj
dCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbgp7CiAgICBTRUwgbmFtZTsKICAgIGNoYXIgKnR5cGVz
Owp9OwojIDEwNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKZXh0
ZXJuIHZvaWQgb2JqY19lcnJvciAoaWQgb2JqZWN0LCBpbnQgY29kZSwgY29uc3QgY2hhciogZm10
LCAuLi4pOwpleHRlcm4gdm9pZCBvYmpjX3ZlcnJvciAoaWQgb2JqZWN0LCBpbnQgY29kZSwgY29u
c3QgY2hhciogZm10LCB2YV9saXN0IGFwKTsKdHlwZWRlZiBCT09MICgqb2JqY19lcnJvcl9oYW5k
bGVyKSAoaWQsIGludCBjb2RlLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApOwpvYmpjX2Vy
cm9yX2hhbmRsZXIgb2JqY19zZXRfZXJyb3JfaGFuZGxlciAob2JqY19lcnJvcl9oYW5kbGVyIGZ1
bmMpOwojIDE0NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKc3Ry
dWN0IG9iamNfc3RhdGljX2luc3RhbmNlcwp7CiAgY2hhciAqY2xhc3NfbmFtZTsKICBpZCBpbnN0
YW5jZXNbMF07Cn07CiMgMTYyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFw
aS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX3N5bXRhYiB7CiAgdW5zaWduZWQgbG9uZyBzZWxfcmVm
X2NudDsKICBTRUwgcmVmczsKICB1bnNpZ25lZCBzaG9ydCBjbHNfZGVmX2NudDsKCiAgdW5zaWdu
ZWQgc2hvcnQgY2F0X2RlZl9jbnQ7CgoKCiAgdm9pZCAqZGVmc1sxXTsKCgoKCgp9IFN5bXRhYiwg
KlN5bXRhYl90OwojIDE4OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGku
aCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19tb2R1bGUgewogIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsK
ICB1bnNpZ25lZCBsb25nIHNpemU7CiAgY29uc3QgY2hhciogbmFtZTsKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAgNDUKCgoKCiAgU3ltdGFiX3Qgc3ltdGFiOwoKCgoKCn0gTW9kdWxlLCAqTW9kdWxlX3Q7
CgoKCgoKCnR5cGVkZWYgc3RydWN0IG9iamNfaXZhciogSXZhcl90Owp0eXBlZGVmIHN0cnVjdCBv
YmpjX2l2YXJfbGlzdCB7CiAgaW50IGl2YXJfY291bnQ7CgoKCgogIHN0cnVjdCBvYmpjX2l2YXIg
ewogICAgY29uc3QgY2hhciogaXZhcl9uYW1lOwoKCiAgICBjb25zdCBjaGFyKiBpdmFyX3R5cGU7
CgoKICAgIGludCBpdmFyX29mZnNldDsKCgoKICB9IGl2YXJfbGlzdFsxXTsKCn0gSXZhckxpc3Qs
ICpJdmFyTGlzdF90OwojIDI0MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1h
cGkuaCIKc3RydWN0IG9iamNfbWV0aG9kIHsKICBTRUwgbWV0aG9kX25hbWU7CgoKCgoKICBjb25z
dCBjaGFyKiBtZXRob2RfdHlwZXM7CgoKICBJTVAgbWV0aG9kX2ltcDsKCn07Cgp0eXBlZGVmIHN0
cnVjdCBvYmpjX21ldGhvZCBNZXRob2Q7Cgp0eXBlZGVmIE1ldGhvZCogTWV0aG9kX3Q7CnR5cGVk
ZWYgc3RydWN0IG9iamNfbWV0aG9kX2xpc3QgewogIHN0cnVjdCBvYmpjX21ldGhvZF9saXN0KiBt
ZXRob2RfbmV4dDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3Vu
dGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA0NgoKCgoKICBpbnQgbWV0aG9kX2NvdW50
OwoKICBzdHJ1Y3Qgb2JqY19tZXRob2QgbWV0aG9kX2xpc3RbMV07Cgp9IE1ldGhvZExpc3QsICpN
ZXRob2RMaXN0X3Q7CgpzdHJ1Y3Qgb2JqY19wcm90b2NvbF9saXN0IHsKICBzdHJ1Y3Qgb2JqY19w
cm90b2NvbF9saXN0ICpuZXh0OwogIGludCBjb3VudDsKICBQcm90b2NvbCAqbGlzdFsxXTsKfTsK
IyAzMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCnR5cGVkZWYg
c3RydWN0IG9iamNfY2F0ZWdvcnkgewogIGNvbnN0IGNoYXIqIGNhdGVnb3J5X25hbWU7CgoKICBj
b25zdCBjaGFyKiBjbGFzc19uYW1lOwoKICBNZXRob2RMaXN0X3QgaW5zdGFuY2VfbWV0aG9kczsK
CgoKICBNZXRob2RMaXN0X3QgY2xhc3NfbWV0aG9kczsKCgoKICBzdHJ1Y3Qgb2JqY19wcm90b2Nv
bF9saXN0ICpwcm90b2NvbHM7Cgp9IENhdGVnb3J5LCAqQ2F0ZWdvcnlfdDsKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3Qgb2JqY19zdXBlciB7CiAgaWQgc2VsZjsKCiAgQ2xhc3MgY2xhc3M7Cn0gU3VwZXIs
ICpTdXBlcl90OwoKSU1QIG9iamNfbXNnX2xvb2t1cF9zdXBlcihTdXBlcl90IHN1cGVyLCBTRUwg
c2VsKTsKCgpyZXR2YWxfdCBvYmpjX21zZ19zZW5kdihpZCwgU0VMLCBhcmdsaXN0X3QpOwojIDM2
NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKZXh0ZXJuIENsYXNz
ICgqX29iamNfbG9va3VwX2NsYXNzKSAoY29uc3QgY2hhciAqbmFtZSk7CgoKCgoKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAg
ICAgICAgUGFnZSAgIDQ3CgoKZXh0ZXJuIHZvaWQgKCpfb2JqY19sb2FkX2NhbGxiYWNrKSAoQ2xh
c3MgY2xhc3MsIENhdGVnb3J5KiBjYXRlZ29yeSk7CgoKCgpleHRlcm4gaWQgKCpfb2JqY19vYmpl
Y3RfYWxsb2MpIChDbGFzcyBjbGFzcyk7CmV4dGVybiBpZCAoKl9vYmpjX29iamVjdF9jb3B5KSAo
aWQgb2JqZWN0KTsKZXh0ZXJuIGlkICgqX29iamNfb2JqZWN0X2Rpc3Bvc2UpIChpZCBvYmplY3Qp
OwoKCgoKCgoKdm9pZCAqb2JqY19tYWxsb2MgKHNpemVfdCBzaXplKTsKCnZvaWQgKm9iamNfYXRv
bWljX21hbGxvYyAoc2l6ZV90IHNpemUpOwoKdm9pZCAqb2JqY192YWxsb2MgKHNpemVfdCBzaXpl
KTsKCnZvaWQgKm9iamNfcmVhbGxvYyAodm9pZCAqbWVtLCBzaXplX3Qgc2l6ZSk7Cgp2b2lkICpv
YmpjX2NhbGxvYyAoc2l6ZV90IG5lbGVtLCBzaXplX3Qgc2l6ZSk7Cgp2b2lkIG9iamNfZnJlZSAo
dm9pZCAqbWVtKTsKIyA0MTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBp
LmgiCmV4dGVybiB2b2lkICooKl9vYmpjX21hbGxvYykgKHNpemVfdCk7CmV4dGVybiB2b2lkICoo
Kl9vYmpjX2F0b21pY19tYWxsb2MpIChzaXplX3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY192YWxs
b2MpIChzaXplX3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY19yZWFsbG9jKSAodm9pZCAqLCBzaXpl
X3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY19jYWxsb2MpIChzaXplX3QsIHNpemVfdCk7CmV4dGVy
biB2b2lkICgqX29iamNfZnJlZSkgKHZvaWQgKik7CgpNZXRob2RfdCBjbGFzc19nZXRfY2xhc3Nf
bWV0aG9kIChNZXRhQ2xhc3MgY2xhc3MsIFNFTCBhU2VsKTsKCk1ldGhvZF90IGNsYXNzX2dldF9p
bnN0YW5jZV9tZXRob2QgKENsYXNzIGNsYXNzLCBTRUwgYVNlbCk7CgpDbGFzcyBjbGFzc19wb3Nl
X2FzIChDbGFzcyBpbXBvc3RvciwgQ2xhc3Mgc3VwZXJjbGFzcyk7CgpDbGFzcyBvYmpjX2dldF9j
bGFzcyAoY29uc3QgY2hhciAqbmFtZSk7CgpDbGFzcyBvYmpjX2xvb2t1cF9jbGFzcyAoY29uc3Qg
Y2hhciAqbmFtZSk7CgpDbGFzcyBvYmpjX25leHRfY2xhc3MgKHZvaWQgKiplbnVtX3N0YXRlKTsK
CmNvbnN0IGNoYXIgKnNlbF9nZXRfbmFtZSAoU0VMIHNlbGVjdG9yKTsKCmNvbnN0IGNoYXIgKnNl
bF9nZXRfdHlwZSAoU0VMIHNlbGVjdG9yKTsKClNFTCBzZWxfZ2V0X3VpZCAoY29uc3QgY2hhciAq
bmFtZSk7CgpTRUwgc2VsX2dldF9hbnlfdWlkIChjb25zdCBjaGFyICpuYW1lKTsKClNFTCBzZWxf
Z2V0X2FueV90eXBlZF91aWQgKGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0OAoKClNFTCBzZWxfZ2V0X3R5cGVkX3VpZCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh
ciopOwoKU0VMIHNlbF9yZWdpc3Rlcl9uYW1lIChjb25zdCBjaGFyICpuYW1lKTsKClNFTCBzZWxf
cmVnaXN0ZXJfdHlwZWRfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhcip0eXBlKTsK
CgpCT09MIHNlbF9pc19tYXBwZWQgKFNFTCBhU2VsKTsKCmV4dGVybiBpZCBjbGFzc19jcmVhdGVf
aW5zdGFuY2UgKENsYXNzIGNsYXNzKTsKCnN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCmNsYXNz
X2dldF9jbGFzc19uYW1lIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNs
YXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSk/Y2xhc3MtPm5hbWU6KChjbGFzcz09KENsYXNz
KTApPyJOaWwiOjApOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcKY2xhc3NfZ2V0X2luc3RhbmNlX3Np
emUgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAm
IDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT5pbnN0YW5jZV9zaXplIDogMDsKfQoKc3RhdGljIGlu
bGluZSBNZXRhQ2xhc3MKY2xhc3NfZ2V0X21ldGFfY2xhc3MgKENsYXNzIGNsYXNzKQp7CiAgcmV0
dXJuICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNz
LT5jbGFzc19wb2ludGVyIDogKENsYXNzKTA7Cn0KCnN0YXRpYyBpbmxpbmUgQ2xhc3MKY2xhc3Nf
Z2V0X3N1cGVyX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNs
YXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkgPyBjbGFzcy0+c3VwZXJfY2xhc3MgOiAoQ2xh
c3MpMDsKfQoKc3RhdGljIGlubGluZSBpbnQKY2xhc3NfZ2V0X3ZlcnNpb24gKENsYXNzIGNsYXNz
KQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwp
KSA/IGNsYXNzLT52ZXJzaW9uIDogLTE7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApjbGFzc19pc19j
bGFzcyAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8p
ICYgMHgxTCkgPT0gMHgxTCkpOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKY2xhc3NfaXNfbWV0YV9j
bGFzcyAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8p
ICYgMHgyTCkgPT0gMHgyTCkpOwp9CgoKc3RhdGljIGlubGluZSB2b2lkCmNsYXNzX3NldF92ZXJz
aW9uIChDbGFzcyBjbGFzcywgbG9uZyB2ZXJzaW9uKQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQ5CgoK
ewogIGlmICgoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkpCiAg
ICBjbGFzcy0+dmVyc2lvbiA9IHZlcnNpb247Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCAqCmNsYXNz
X2dldF9nY19vYmplY3RfdHlwZSAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigo
KChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpID8gY2xhc3MtPmdjX29iamVjdF90eXBl
IDogKCh2b2lkICopMCk7Cn0KCgpleHRlcm4gdm9pZCBjbGFzc19pdmFyX3NldF9nY2ludmlzaWJs
ZSAoQ2xhc3MgY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBpdmFybmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJPT0wgZ2NJbnZpc2libGUpOwoKc3RhdGljIGlubGluZSBJTVAKbWV0aG9kX2dldF9pbXAg
KE1ldGhvZF90IG1ldGhvZCkKewogIHJldHVybiAobWV0aG9kICE9IChNZXRob2RfdCkwKSA/IG1l
dGhvZC0+bWV0aG9kX2ltcCA6IChJTVApIDA7Cn0KCklNUCBnZXRfaW1wIChDbGFzcyBjbGFzcywg
U0VMIHNlbCk7CgoKCgoKCgppZCBvYmplY3RfY29weSAoaWQgb2JqZWN0KTsKCmlkIG9iamVjdF9k
aXNwb3NlIChpZCBvYmplY3QpOwoKc3RhdGljIGlubGluZSBDbGFzcwpvYmplY3RfZ2V0X2NsYXNz
IChpZCBvYmplY3QpCnsKICByZXR1cm4gKChvYmplY3QgIT0gKGlkKTApCiAgICAgICAgICA/ICgo
KG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZv
KSAmIDB4MUwpID09IDB4MUwpKQogICAgICAgICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXIK
ICAgICAgICAgICAgIDogKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xh
c3NfcG9pbnRlciktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpCiAgICAgICAgICAgICAgICA/IChD
bGFzcykgb2JqZWN0CiAgICAgICAgICAgICAgICA6IChDbGFzcykwKSkKICAgICAgICAgIDogKENs
YXNzKTApOwp9CgpzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgpvYmplY3RfZ2V0X2NsYXNzX25h
bWUgKGlkIG9iamVjdCkKewogIHJldHVybiAoKG9iamVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5j
bGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkg
PT0gMHgxTCkpCiAgICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRl
ci0+bmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgOiAoKENsYXNzKSBvYmplY3QpLT5uYW1l
KQogICAgICAgICAgICAgICAgICAgICAgIDoiTmlsIik7Cn0KCnN0YXRpYyBpbmxpbmUgTWV0YUNs
YXNzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAg
ICAgICAgICAgICAgICAgICBQYWdlICAgNTAKCgpvYmplY3RfZ2V0X21ldGFfY2xhc3MoaWQgb2Jq
ZWN0KQp7CiAgcmV0dXJuICgob2JqZWN0IT0oaWQpMCkgPyAoKChvYmplY3QtPmNsYXNzX3BvaW50
ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXItPmNsYXNz
X3BvaW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3Bv
aW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJM
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOihDbGFzcykwKSkKICAgICAgICAgIDogKENs
YXNzKTApOwp9CgpzdGF0aWMgaW5saW5lIENsYXNzCm9iamVjdF9nZXRfc3VwZXJfY2xhc3MgKGlk
IG9iamVjdCkKewogIHJldHVybiAoKG9iamVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19w
b2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgx
TCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyLT5z
dXBlcl9jbGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoKG9iamVjdC0+Y2xhc3Nf
cG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MkwpID09IDB4
MkwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICA/KChDbGFzcykgb2JqZWN0KS0+c3VwZXJf
Y2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoQ2xhc3MpMCkpCiAgICAgICAg
ICA6IChDbGFzcykwKTsKfQoKc3RhdGljIGlubGluZSBCT09MCm9iamVjdF9pc19jbGFzcyAoaWQg
b2JqZWN0KQp7CiAgcmV0dXJuICgoKENsYXNzKSBvYmplY3QpJiYoKCgoKENsYXNzKSBvYmplY3Qp
LT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKTsKfQoKc3RhdGljIGlubGluZSBCT09MCm9iamVjdF9p
c19pbnN0YW5jZShpZCBvYmplY3QpCnsKICByZXR1cm4gKG9iamVjdCAhPSAoaWQpMCkgJiYgKChv
YmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykg
JiAweDFMKSA9PSAweDFMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfbWV0YV9j
bGFzcyAoaWQgb2JqZWN0KQp7CiAgcmV0dXJuICgoKENsYXNzKSBvYmplY3QpJiYoKCgoKENsYXNz
KSBvYmplY3QpLT5pbmZvKSAmIDB4MkwpID09IDB4MkwpKTsKfQoKc3RydWN0IHNhcnJheSogb2Jq
Y19nZXRfdW5pbnN0YWxsZWRfZHRhYmxlICh2b2lkKTsKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2RlZm9iai9EZWZDbGFzcy5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCBjbGFzc0RhdGEg
KmNsYXNzRGF0YV90Owp0eXBlZGVmIHN0cnVjdCBtZXRob2REZWZzICptZXRob2REZWZzX3Q7CgoK
CgpAaW50ZXJmYWNlIENsYXNzX3M6IE9iamVjdAp7CkBwdWJsaWMKICBDbGFzc19zICpzdXBlcmNs
YXNzOwogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNTEKCgogIGxvbmcg
dmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIGluZm87CiAgbG9uZyBpbnN0YW5jZVNpemU7CiAgdm9p
ZCAqaXZhckxpc3Q7CiAgdm9pZCAqbWV0aG9kTGlzdDsKICBzdHJ1Y3Qgc2FycmF5ICpkdGFibGU7
Cn0KCgpAZW5kCgoKCgpleHRlcm4gY2xhc3NEYXRhX3QgX29ial9nZXRDbGFzc0RhdGEgKENsYXNz
X3MgKmNsYXNzKTsKCgoKCnZvaWQgX29ial9pbml0TWV0aG9kSW50ZXJmYWNlcyAoQ2xhc3NfcyAq
Y2xhc3MpOwoKCgoKCgoKQGludGVyZmFjZSBDcmVhdGVkQ2xhc3NfczogQ2xhc3Nfcwp7CkBwdWJs
aWMKICBDbGFzc19zICpkZWZpbmluZ0NsYXNzOwogIGlkIG1ldGFvYmplY3RzOwp9CgorIGNyZWF0
ZUJlZ2luOiBhWm9uZTsKLSBzZXROYW1lOiAoY29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSBzZXRD
bGFzczogYUNsYXNzOwotIHNldFN1cGVyY2xhc3M6IGFDbGFzczsKLSBzZXREZWZpbmluZ0NsYXNz
OiBhQ2xhc3M7Ci0gYXQ6IChTRUwpYVNlbCBhZGRNZXRob2Q6IChJTVApYU1ldGhvZDsKLSBsaXNw
SW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUluQ3JlYXRlOiBleHByOwotIGNyZWF0ZUVuZDsKLSAodm9p
ZCloZGY1T3V0U2hhbGxvdzogc3RyZWFtOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07
CkBlbmQKCkBpbnRlcmZhY2UgQmVoYXZpb3JQaGFzZV9zOiBDcmVhdGVkQ2xhc3Nfcwp7CkBwdWJs
aWMKICBDbGFzc19zICpuZXh0UGhhc2U7CiAgaWQgZmlsbGVyOwogIGlkIG1vcmVmaWxsZXI7Cn0K
Ci0gKHZvaWQpc2V0TmV4dFBoYXNlOiBhQmVoYXZpb3JQaGFzZTsKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA1MgoKCkBlbmQKCgoKCgoKCnN0cnVjdCBjbGFzc0RhdGEgewogIGlkICpjbGFzc0lEOwogIGlk
IG93bmVyOwogIGlkIHR5cGVJbXBsZW1lbnRlZDsKICBCZWhhdmlvclBoYXNlX3MgKmluaXRpYWxQ
aGFzZTsKICBpZCBtZXRhb2JqZWN0czsKfTsKCgoKCnN0cnVjdCBtZXRob2REZWZzIHsKICBtZXRo
b2REZWZzX3QgbmV4dDsKICBpZCBpbnRlcmZhY2VJRDsKICBNZXRob2RfdCBmaXJzdEVudHJ5Owog
IGludCBjb3VudDsKfTsKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0
b21pemUuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0
LmgiIDEKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDEKIyAxOCAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgp0eXBlZGVmIGVudW0ge2ZjYWxsX3R5cGVfdm9pZCA9
IDAsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV9ib29sZWFuLAogICAgICAgICAgICAgIGZjYWxs
X3R5cGVfdWNoYXIsIGZjYWxsX3R5cGVfc2NoYXIsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91
c2hvcnQsIGZjYWxsX3R5cGVfc3Nob3J0LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWludCwg
ZmNhbGxfdHlwZV9zaW50LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWxvbmcsIGZjYWxsX3R5
cGVfc2xvbmcsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91bG9uZ2xvbmcsIGZjYWxsX3R5cGVf
c2xvbmdsb25nLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfZmxvYXQsIGZjYWxsX3R5cGVfZG91
YmxlLCBmY2FsbF90eXBlX2xvbmdfZG91YmxlLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfb2Jq
ZWN0LCBmY2FsbF90eXBlX2NsYXNzLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfc3RyaW5nLCBm
Y2FsbF90eXBlX3NlbGVjdG9yLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfam9iamVjdCwgZmNh
bGxfdHlwZV9qc3RyaW5nLCBmY2FsbF90eXBlX2pzZWxlY3RvciwKICAgICAgICAgICAgICBmY2Fs
bF90eXBlX2lpZAogICAgICAgICAgICAgIH0gZmNhbGxfdHlwZV90OwoKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2RlZm9iai5oIiAyCgp0eXBlZGVmIHVuaW9uIHsKICBpZCBvYmplY3Q7CiAgU0VMIHNlbGVj
dG9yOwogIENsYXNzIF9jbGFzczsKICBjb25zdCBjaGFyICpzdHJpbmc7CiAgQk9PTCBib29sZWFu
OwogIGNoYXIgc2NoYXI7CiAgdW5zaWduZWQgY2hhciB1Y2hhcjsKICBzaG9ydCBzc2hvcnQ7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAgNTMKCgogIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKICBpbnQgc2lu
dDsKICB1bnNpZ25lZCBpbnQgdWludDsKICBsb25nIHNsb25nOwogIHVuc2lnbmVkIGxvbmcgdWxv
bmc7CiAgbG9uZyBsb25nIHNsb25nbG9uZzsKICB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdsb25n
OwogIGZsb2F0IF9mbG9hdDsKICBkb3VibGUgX2RvdWJsZTsKICBsb25nIGRvdWJsZSBfbG9uZ19k
b3VibGU7CiAgdm9pZCAqaWlkOwp9IHR5cGVzX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgZmNhbGxf
dHlwZV90IHR5cGU7CiAgdHlwZXNfdCB2YWw7Cn0gdmFsX3Q7CgoKCgoKCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiIDEKIyAyMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvT2JqZWN0LmgiIDEKIyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9k
ZWZ0eXBlLmgiIDIKCgoKCgoKQHByb3RvY29sIENSRUFUQUJMRQpAZW5kCgoKQHByb3RvY29sIFJF
VFVSTkFCTEUKQGVuZAojIDQ2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL2RlZnR5
cGUuaCIKdHlwZWRlZiB2b2lkICgqbm90aWZ5X3QpKCBpZCBvYmplY3QsIGlkIHJlYWxsb2NBZGRy
ZXNzLCB2b2lkICphcmcgKTsKCgoKCgoKdHlwZWRlZiB2b2lkICpyZWZfdDsKCgoKCnR5cGVkZWYg
dm9pZCAoKmZ1bmNfdCkoIHZvaWQgKTsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA1NAoKCgp0eXBl
ZGVmIGlkICgqZml4dXBSb3V0aW5lX3QpKCB2b2lkICpmaXh1cENvbnRleHQsIGlkIGZpeHVwT2Jq
ZWN0ICk7CnR5cGVkZWYgdm9pZCAoKmZpeHVwX3QpKCBmaXh1cFJvdXRpbmVfdCBmaXh1cFJvdXRp
bmUsIHZvaWQgKmZpeHVwQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZCBmaXh1
cEFyZ3VtZW50ICk7CiMgNjcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDY4ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKIyA3NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2RlZm9iai5oIgpAcHJvdG9jb2wgR2V0TmFtZQojIDg5ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7Ci0gKGNvbnN0IGNoYXIgKilnZXROYW1lOwpAZW5k
CgpAcHJvdG9jb2wgRGVmaW5lZE9iamVjdCA8R2V0TmFtZT4KIyAxMDggIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9Vc2luZzsKIyAxMTcgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmouaCIKLSAoQk9PTClyZXNwb25kc1RvOiAoU0VMKWFTZWw7CgorIChCT09M
KWNvbmZvcm1zVG86IChQcm90b2NvbCAqKXByb3RvY29sOwotIChCT09MKWNvbmZvcm1zVG86IChQ
cm90b2NvbCAqKXByb3RvY29sOwoKCgotIGdldENsYXNzOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRU
eXBlTmFtZTsKCgoKLSAocmVmX3QpYWRkUmVmOiAobm90aWZ5X3Qpbm90aWZ5RnVuY3Rpb24gd2l0
aEFyZ3VtZW50OiAodm9pZCAqKWFyZzsKCgotICh2b2lkKXJlbW92ZVJlZjogKHJlZl90KXJlZlZh
bDsKCgotIChpbnQpY29tcGFyZTogYW5PYmplY3Q7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWw7CgoK
LSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxOwoKCi0gcGVyZm9ybTogKFNFTClh
U2VsIHdpdGg6IGFuT2JqZWN0MSB3aXRoOiBhbk9iajI7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWwg
d2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqMiB3aXRoOiBhbk9iajM7CgoKCi0gKHZvaWQpc2V0
RGlzcGxheU5hbWU6IChjb25zdCBjaGFyICopZGlzcGxheU5hbWU7CgoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDU1CgoKCgoKLSAoY29uc3QgY2hhciAqKWdldERpc3BsYXlOYW1lOwojIDE2OCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotICh2b2lkKWRlc2NyaWJlOiBvdXRwdXRDaGFy
U3RyZWFtOwoKCgotICh2b2lkKWRlc2NyaWJlSUQ6IG91dHB1dENoYXJTdHJlYW07CgoKLSAodm9p
ZCl4cHJpbnQ7CgoKLSAodm9pZCl4cHJpbnRpZDsKCgotICh2b2lkKXhmcHJpbnQ7CgoKLSAodm9p
ZCl4ZnByaW50aWQ7CgoKLSBnZXRab25lOwpAZW5kCgpAcHJvdG9jb2wgQ3VzdG9taXplCiMgMjIz
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMgMjM5
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCisgY3VzdG9taXplQmVnaW46IGFa
b25lOwoKCi0gY3VzdG9taXplRW5kOwojIDI2NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Rl
Zm9iai5oIgotIGN1c3RvbWl6ZUNvcHk6IGFab25lOwpAZW5kCgpAcHJvdG9jb2wgQ3JlYXRlIDxE
ZWZpbmVkT2JqZWN0LCBDdXN0b21pemU+CiMgMzE5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMgMzM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCisgY3JlYXRlOiBhWm9uZTsKCgoKCgoKCisgY3JlYXRlQmVnaW46IGFab25lOwoj
IDM3MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIGNyZWF0ZUVuZDsKQGVu
ZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICA1NgoKCkBwcm90b2NvbCBEcm9wCiMgNDAxICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7Ci0gKHZvaWQpZHJvcDsKQGVu
ZAoKQHByb3RvY29sIFpvbmUgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgojIDQ1NiAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0NyZWF0aW5nOwoKCgoKCgoKLSAodm9p
ZClzZXRQYWdlU2l6ZTogKHNpemVfdClwYWdlU2l6ZTsKCi0gX0lfVXNpbmc7Ci0gKHNpemVfdCln
ZXRQYWdlU2l6ZTsKCgoKCgoKLSBhbGxvY0lWYXJzOiAoQ2xhc3MpYUNsYXNzOwoKCgoKCgotIGNv
cHlJVmFyczogYW5PYmplY3Q7CgoKCgoKCgotICh2b2lkKWZyZWVJVmFyczogYW5PYmplY3Q7CiMg
NDk5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gYWxsb2NJVmFyc0NvbXBv
bmVudDogKENsYXNzKWFDbGFzczsKCgoKLSBjb3B5SVZhcnNDb21wb25lbnQ6IGFuT2JqZWN0OwoK
Ci0gKHZvaWQpZnJlZUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKCgoKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAg
UGFnZSAgIDU3CgoKCi0gZ2V0Q29tcG9uZW50Wm9uZTsKCgoKCgotICh2b2lkICopYWxsb2M6IChz
aXplX3Qpc2l6ZTsKCgoKCgoKLSAodm9pZClmcmVlOiAodm9pZCAqKWFCbG9jazsKCgoKCi0gKHZv
aWQgKilhbGxvY0Jsb2NrOiAoc2l6ZV90KXNpemU7CgoKCi0gKHZvaWQpZnJlZUJsb2NrOiAodm9p
ZCAqKWFCbG9jayBibG9ja1NpemU6IChzaXplX3Qpc2l6ZTsKIyA1NDUgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9kZWZvYmouaCIKLSBnZXRQb3B1bGF0aW9uOwoKCi0gKHZvaWQpZGVzY3JpYmVG
b3JFYWNoOiBvdXRwdXRDaGFyU3RyZWFtOwoKCi0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoSUQ6IG91
dHB1dENoYXJTdHJlYW07CkBlbmQKCkBwcm90b2NvbCBEZWZpbmVkQ2xhc3MgPERlZmluZWRPYmpl
Y3Q+CgoKCi0gX0lfVXNpbmc7CisgZ2V0U3VwZXJjbGFzczsKKyAoQk9PTClpc1N1YmNsYXNzOiBh
Q2xhc3M7CgorICh2b2lkKXNldFR5cGVJbXBsZW1lbnRlZDogYVR5cGU7CisgZ2V0VHlwZUltcGxl
bWVudGVkOwoKKyAoSU1QKWdldE1ldGhvZEZvcjogKFNFTClhU2VsOwpAZW5kCgpAcHJvdG9jb2wg
Q3JlYXRlZENsYXNzIDxDcmVhdGUsIERlZmluZWRDbGFzcz4KCgoKCi0gX0lfQ3JlYXRpbmc7Ci0g
c2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIHNldENsYXNzOiBhQ2xhc3M7CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAg
ICAgICBQYWdlICAgNTgKCgotIHNldFN1cGVyY2xhc3M6IGFDbGFzczsKLSBzZXREZWZpbmluZ0Ns
YXNzOiBhQ2xhc3M7Ci0gYXQ6IChTRUwpYVNlbCBhZGRNZXRob2Q6IChJTVApYU1ldGhvZDsKLSBs
aXNwSW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUluQ3JlYXRlOiBoZGY1T2JqOwotICh2b2lkKWxpc3BP
dXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpaGRmNU91dFNoYWxsb3c6IGhkZjVPYmo7Ci0gKHZv
aWQpdXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwotIF9JX1VzaW5nOwotIGdldERlZmluaW5nQ2xh
c3M7CkBlbmQKCkBwcm90b2NvbCBCZWhhdmlvclBoYXNlIDxDcmVhdGVkQ2xhc3M+CgoKCgotIF9J
X0NyZWF0aW5nOwotICh2b2lkKXNldE5leHRQaGFzZTogYUNsYXNzOwoKLSBfSV9Vc2luZzsKLSBn
ZXROZXh0UGhhc2U7CkBlbmQKCkBwcm90b2NvbCBDb3B5CiMgNjIwICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7Ci0gY29weTogKGlkIDxab25lPilhWm9uZTsK
QGVuZAoKCgoKCkBwcm90b2NvbCBHZXRPd25lcgojIDY0NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2RlZm9iai5oIgotIF9JX1VzaW5nOwotIGdldE93bmVyOwpAZW5kCgpAcHJvdG9jb2wgU2V0
SW5pdGlhbFZhbHVlCiMgNjcyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0g
X0lfQ3JlYXRpbmc7CgoKCgoKCgotICh2b2lkKXNldEluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
OwpAZW5kCgpAcHJvdG9jb2wgU3ltYm9sIDxDcmVhdGUsIEdldE5hbWUsIENSRUFUQUJMRT4KIyA3
MDYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICA1OQoKCgoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldE5h
bWU6IChjb25zdCBjaGFyICopbmFtZTsKCgoKQGVuZAoKQHByb3RvY29sIEV2ZW50VHlwZSA8U3lt
Ym9sPgoKCgoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpcmFpc2VFdmVudDsKCgoKLSAodm9pZClyYWlz
ZUV2ZW50OiAoY29uc3Qgdm9pZCAqKWV2ZW50RGF0YSwgLi4uOwoKCgoKCkBlbmQKCgpAcHJvdG9j
b2wgV2FybmluZyA8RXZlbnRUeXBlLCBDUkVBVEFCTEU+CgoKCgotIF9JX1VzaW5nOwoKLSAodm9p
ZClzZXRNZXNzYWdlU3RyaW5nOiAoY29uc3QgY2hhciAqKW1lc3NhZ2VTdHJpbmc7CgoKLSAoY29u
c3QgY2hhciAqKWdldE1lc3NhZ2VTdHJpbmc7CgpleHRlcm4gaWQgPFdhcm5pbmc+CiAgV2Fybmlu
Z01lc3NhZ2UsCiAgUmVzb3VyY2VBdmFpbGFiaWxpdHksCiAgTGlicmFyeVVzYWdlLAogIERlZmF1
bHRBc3N1bWVkLAogIE9ic29sZXRlRmVhdHVyZSwKICBPYnNvbGV0ZU1lc3NhZ2UsCiAgU2F2ZVdh
cm5pbmc7CgoKCgoKQGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2MAoKCkBwcm90b2NvbCBFcnJv
ciA8V2FybmluZywgQ1JFQVRBQkxFPgoKCgoKZXh0ZXJuIGlkIDxFcnJvcj4KICBTb3VyY2VNZXNz
YWdlLAogIE5vdEltcGxlbWVudGVkLAogIFN1YmNsYXNzTXVzdEltcGxlbWVudCwKICBJbnZhbGlk
Q29tYmluYXRpb24sCiAgSW52YWxpZE9wZXJhdGlvbiwKICBJbnZhbGlkQXJndW1lbnQsCiAgQ3Jl
YXRlU3ViY2xhc3NpbmcsCiAgQ3JlYXRlVXNhZ2UsCiAgT3V0T2ZNZW1vcnksCiAgSW52YWxpZEFs
bG9jU2l6ZSwKICBJbnRlcm5hbEVycm9yLAogIEJsb2NrZWRPYmplY3RBbGxvYywKICBCbG9ja2Vk
T2JqZWN0VXNhZ2UsCiAgUHJvdG9jb2xWaW9sYXRpb24sCiAgTG9hZEVycm9yLAogIFNhdmVFcnJv
cjsKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQXJndW1lbnRzIDxDcmVhdGUsIERyb3AsIENSRUFUQUJM
RT4KIyA4NzYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9DcmVhdGlu
ZzsKLSBzZXRBcmdjOiAodW5zaWduZWQpY291bnQgQXJndjogKGNvbnN0IGNoYXIgKiopdGhlQXJn
djsKLSBzZXRBcHBOYW1lOiAoY29uc3QgY2hhciAqKWFwcE5hbWU7Ci0gc2V0QXBwTW9kZVN0cmlu
ZzogKGNvbnN0IGNoYXIgKilhcHBNb2RlU3RyaW5nOwotIHNldE9wdGlvbkZ1bmM6IChpbnQgKCop
IChpbnQsIGNvbnN0IGNoYXIgKikpb3B0aW9uRnVuYzsKLSBzZXRCdWdBZGRyZXNzOiAoY29uc3Qg
Y2hhciAqKWJ1Z0FkZHJlc3M7Ci0gc2V0VmVyc2lvbjogKGNvbnN0IGNoYXIgKil2ZXJzaW9uOwot
IGFkZE9wdGlvbnM6IChzdHJ1Y3QgYXJncF9vcHRpb24gKilvcHRpb25zOwojIDkwMyAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotICh2b2lkKWFkZE9wdGlvbjogKGNvbnN0IGNo
YXIgKiluYW1lIGtleTogKGludClrZXkgYXJnOiAoY29uc3QgY2hhciAqKWFyZyBmbGFnczogKGlu
dClmbGFncyBkb2M6IChjb25zdCBjaGFyICopZG9jIGdyb3VwOiAoaW50KWdyb3VwOwoKKyBjcmVh
dGVBcmdjOiAoaW50KWFyZ2MgQXJndjogKGNvbnN0IGNoYXIgKiopYXJndiBhcHBOYW1lOiAoY29u
c3QgY2hhciAqKWFwcE5hbWUgdmVyc2lvbjogKGNvbnN0IGNoYXIgKil2ZXJzaW9uIGJ1Z0FkZHJl
c3M6IChjb25zdCBjaGFyICopYnVnQWRkcmVzcyBvcHRpb25zOiAoc3RydWN0IGFyZ3Bfb3B0aW9u
ICopb3B0aW9ucyBvcHRpb25GdW5jOiAoaW50ICgqKSAoaW50LCBjb25zdCBjaGFyICopKW9wdGlv
bkZ1bmMgaW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOiAoQk9PTClpbmhpYml0RXhlY3V0YWJs
ZVNlYXJjaEZsYWc7CgoKLSAoaW50KXBhcnNlS2V5OiAoaW50KWtleSBhcmc6IChjb25zdCBjaGFy
ICopYXJnOwotIF9JX1NldHRpbmc7Ci0gc2V0SW5oaWJpdEFyY2hpdmVyTG9hZEZsYWc6IChCT09M
KWluaGliaXRBcmNoaXZlckxvYWRGbGFnOwotIHNldEluaGliaXRFeGVjdXRhYmxlU2VhcmNoRmxh
ZzogKEJPT0wpdGhlSW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOwotIHNldEJhdGNoTW9kZUZs
YWc6IChCT09MKWJhdGNoTW9kZUZsYWc7Ci0gc2V0VmFyeVNlZWRGbGFnOiAoQk9PTCl2YXJ5U2Vl
ZEZsYWc7Ci0gc2V0VmVyYm9zZUZsYWc6IChCT09MKXZlcmJvc2VGbGFnOwoKCgotIHNldERlZmF1
bHRBcHBDb25maWdQYXRoOiAoY29uc3QgY2hhciAqKXBhdGg7CgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAg
NjEKCgoKCi0gc2V0RGVmYXVsdEFwcERhdGFQYXRoOiAoY29uc3QgY2hhciAqKXBhdGg7Ci0gc2V0
Rml4ZWRTZWVkOiAodW5zaWduZWQpc2VlZDsKCgotIF9JX1VzaW5nOwotIChCT09MKWdldEJhdGNo
TW9kZUZsYWc7Ci0gKEJPT0wpZ2V0VmFyeVNlZWRGbGFnOwotIChCT09MKWdldEZpeGVkU2VlZEZs
YWc7Ci0gKHVuc2lnbmVkKWdldEZpeGVkU2VlZDsKLSAoQk9PTClnZXRWZXJib3NlRmxhZzsKLSAo
Y29uc3QgY2hhciAqKWdldEFwcE5hbWU7Ci0gKGNvbnN0IGNoYXIgKilnZXRBcHBNb2RlU3RyaW5n
OwotIChpbnQpZ2V0QXJnYzsKLSAoaW50KWdldExhc3RBcmdJbmRleDsKLSAoY29uc3QgY2hhciAq
KilnZXRBcmd2OwotIChjb25zdCBjaGFyICopZ2V0RXhlY3V0YWJsZVBhdGg7Ci0gKGNvbnN0IGNo
YXIgKilnZXRTd2FybUhvbWU7Ci0gKGNvbnN0IGNoYXIgKilnZXRDb25maWdQYXRoOwotIChjb25z
dCBjaGFyICopZ2V0RGF0YVBhdGg7CgotIChjb25zdCBjaGFyICopZ2V0QXBwRGF0YVBhdGg7CgoK
LSAoY29uc3QgY2hhciAqKWdldEFwcENvbmZpZ1BhdGg7Ci0gKEJPT0wpZ2V0U2hvd0N1cnJlbnRU
aW1lRmxhZzsKLSAoQk9PTClnZXRJbmhpYml0QXJjaGl2ZXJMb2FkRmxhZzsKCkBlbmQKCkBwcm90
b2NvbCBBcmNoaXZlciA8Q3JlYXRlLCBEcm9wLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7
CgoKLSBzZXRJbmhpYml0TG9hZEZsYWc6IChCT09MKWluaGliaXRMb2FkRmxhZzsKCgotIHNldFBh
dGg6IChjb25zdCBjaGFyICopcGF0aDsKCgoKLSBzZXRTeXN0ZW1BcmNoaXZlckZsYWc6IChCT09M
KXN5c3RlbUFyY2hpdmVyRmxhZzsKCgotIHNldERlZmF1bHRQYXRoOwoKCi0gc2V0RGVmYXVsdEFw
cFBhdGg7Ci0gX0lfVXNpbmc7Ci0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6IGNsaWVudDsKLSAodm9p
ZCl1bnJlZ2lzdGVyQ2xpZW50OiBjbGllbnQ7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2MgoKCgot
ICh2b2lkKXB1dERlZXA6IChjb25zdCBjaGFyICopa2V5IG9iamVjdDogb2JqZWN0OwoKCi0gKHZv
aWQpcHV0U2hhbGxvdzogKGNvbnN0IGNoYXIgKilrZXkgb2JqZWN0OiBvYmplY3Q7CgoKLSBnZXRP
YmplY3Q6IChjb25zdCBjaGFyICopa2V5OwoKCi0gZ2V0V2l0aFpvbmU6IChpZCA8Wm9uZT4pYVpv
bmUga2V5OiAoY29uc3QgY2hhciAqKWtleTsKCgoKLSAodm9pZClzeW5jOwpAZW5kCgpAcHJvdG9j
b2wgTGlzcEFyY2hpdmVyIDxBcmNoaXZlciwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7
CgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0UGF0aDogKGNvbnN0IGNoYXIgKilwYXRo
OwoKLSBfSV9TZXR0aW5nOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgSERGNUFyY2hpdmVy
IDxBcmNoaXZlciwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGU6IChp
ZCA8Wm9uZT4pYVpvbmUgc2V0UGF0aDogKGNvbnN0IGNoYXIgKilwYXRoOwoKLSBfSV9TZXR0aW5n
OwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgSERGNSA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFC
TEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRXcml0ZUZsYWc6IChCT09MKXdyaXRlRmxhZzsKLSBz
ZXREYXRhc2V0RmxhZzogKEJPT0wpZGF0YXNldEZsYWc7Ci0gc2V0RXh0ZW5zaWJsZVZlY3RvclR5
cGU6IChmY2FsbF90eXBlX3QpdHlwZTsKLSBzZXRFeHRlbnNpYmxlRG91YmxlVmVjdG9yOwotIHNl
dFBhcmVudDogcGFyZW50OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
IENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDYzCgoKLSBzZXRDb21wb3VuZFR5
cGU6IGNvbXBvdW5kVHlwZTsKLSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwotIF9JX1NldHRp
bmc7CgoKCi0gc2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIHNldEJhc2VUeXBlT2JqZWN0
OiBiYXNlVHlwZU9iamVjdDsKLSBfSV9Vc2luZzsKLSAodm9pZClpdGVyYXRlOiAoaW50ICgqKSAo
aWQgPEhERjU+aGRmNU9iaikpaXRlcmF0ZUZ1bmM7Ci0gKHZvaWQpaXRlcmF0ZTogKGludCAoKikg
KGlkIDxIREY1PmhkZjVPYmopKWl0ZXJhdGVGdW5jIGRyb3A6IChCT09MKWRyb3BGbGFnOwotIChC
T09MKWdldERhdGFzZXRGbGFnOwotIChCT09MKWdldFdyaXRlRmxhZzsKLSAoc2l6ZV90KWdldERh
dGFzZXRSYW5rOwotIChzaXplX3QpZ2V0RGF0YXNldERpbWVuc2lvbjogKHVuc2lnbmVkKWRpbU51
bWJlcjsKLSAodW5zaWduZWQpZ2V0Q291bnQ7Ci0gZ2V0Q29tcG91bmRUeXBlOwotIGdldENsYXNz
OwotICh2b2lkKWFzc2lnbkl2YXI6IG9iajsKCi0gKEJPT0wpY2hlY2tOYW1lOiAoY29uc3QgY2hh
ciAqKW5hbWU7Ci0gKEJPT0wpY2hlY2tEYXRhc2V0TmFtZTogKGNvbnN0IGNoYXIgKilkYXRhc2V0
TmFtZTsKCi0gKHZvaWQpbG9hZERhdGFzZXQ6ICh2b2lkICopcHRyOwotICh2b2lkKXN0b3JlQXNE
YXRhc2V0OiAoY29uc3QgY2hhciAqKW5hbWUgdHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlwZU5h
bWUgdHlwZTogKGZjYWxsX3R5cGVfdCl0eXBlIHJhbms6ICh1bnNpZ25lZClyYW5rIGRpbXM6ICh1
bnNpZ25lZCAqKWRpbXMgcHRyOiAodm9pZCAqKXB0cjsKCi0gKHZvaWQpYWRkRG91YmxlVG9WZWN0
b3I6IChkb3VibGUpdmFsOwoKLSAodm9pZClzdG9yZVR5cGVOYW1lOiAoY29uc3QgY2hhciAqKXR5
cGVOYW1lOwotICh2b2lkKXN0b3JlQ29tcG9uZW50VHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlw
ZU5hbWU7Ci0gKHZvaWQpc2hhbGxvd0xvYWRPYmplY3Q6IG9iajsKLSAodm9pZClzaGFsbG93U3Rv
cmVPYmplY3Q6IG9iajsKLSAodm9pZCluYW1lUmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVtYmVy
IG5hbWU6IChjb25zdCBjaGFyICopcmVjb3JkTmFtZTsKLSAodm9pZCludW1iZXJSZWNvcmQ6ICh1
bnNpZ25lZClyZWNvcmROdW1iZXI7Ci0gKHZvaWQpc2VsZWN0UmVjb3JkOiAodW5zaWduZWQpcmVj
b3JkTnVtYmVyOwoKLSAoY29uc3QgY2hhciAqKilyZWFkUm93TmFtZXM7Ci0gKHZvaWQpd3JpdGVS
b3dOYW1lczsKLSAodm9pZCl3cml0ZUxldmVsczsKCi0gKHZvaWQpc3RvcmVBdHRyaWJ1dGU6IChj
b25zdCBjaGFyICopYXR0cmlidXRlTmFtZSB2YWx1ZTogKGNvbnN0IGNoYXIgKil2YWx1ZVN0cmlu
ZzsKLSAodm9pZClpdGVyYXRlQXR0cmlidXRlczogKGludCAoKikgKGNvbnN0IGNoYXIgKmtleSwg
Y29uc3QgY2hhciAqdmFsdWUpKWl0ZXJhdGVGdW5jOwotIChjb25zdCBjaGFyICopZ2V0QXR0cmli
dXRlOiAoY29uc3QgY2hhciAqKWF0dHJpYnV0ZU5hbWU7Ci0gKHZvaWQpZmx1c2g7CkBlbmQKCkBw
cm90b2NvbCBIREY1Q29tcG91bmRUeXBlIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgotIF9J
X0NyZWF0aW5nOwotIHNldFByb3RvdHlwZTogcHJvdG90eXBlOwotIF9JX1VzaW5nOwotIGdldFBy
b3RvdHlwZTsKQGVuZAoKdHlwZWRlZiB2b2lkICpKT0JKRUNUOwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAg
IDY0CgoKdHlwZWRlZiBjb25zdCB2b2lkICpDT01PQkpFQ1Q7CgpAcHJvdG9jb2wgRkFyZ3VtZW50
cyA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRMYW5ndWFn
ZTogKGlkIDxTeW1ib2w+KWxhbmd1YWdlVHlwZTsKCgotIHNldFNlbGVjdG9yOiAoU0VMKWFTZWw7
Ci0gc2V0SmF2YVNpZ25hdHVyZTogKGNvbnN0IGNoYXIgKilqYXZhU2lnbmF0dXJlOworIGNyZWF0
ZTogKGlkIDxab25lPilhWm9uZSBzZXRTZWxlY3RvcjogKFNFTClhU2VsOwotIGFkZEFyZ3VtZW50
OiAodHlwZXNfdCAqKXZhbHVlIG9mVHlwZTogKGZjYWxsX3R5cGVfdCl0eXBlOwotIGFkZEFyZ3Vt
ZW50OiAodm9pZCAqKXZhbHVlIG9mT2JqQ1R5cGU6IChjaGFyKXR5cGU7Ci0gYWRkQ2hhcjogKGNo
YXIpdmFsdWU7Ci0gYWRkQm9vbGVhbjogKEJPT0wpdmFsdWU7Ci0gYWRkVW5zaWduZWRDaGFyOiAo
dW5zaWduZWQgY2hhcil2YWx1ZTsKLSBhZGRTaG9ydDogKHNob3J0KXZhbHVlOwotIGFkZFVuc2ln
bmVkU2hvcnQ6ICh1bnNpZ25lZCBzaG9ydCl2YWx1ZTsKLSBhZGRJbnQ6IChpbnQpdmFsdWU7Ci0g
YWRkVW5zaWduZWQ6ICh1bnNpZ25lZCl2YWx1ZTsKLSBhZGRMb25nOiAobG9uZyl2YWx1ZTsKLSBh
ZGRVbnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25nKXZhbHVlOwotIGFkZExvbmdMb25nOiAobG9u
ZyBsb25nKXZhbHVlOwotIGFkZFVuc2lnbmVkTG9uZ0xvbmc6ICh1bnNpZ25lZCBsb25nIGxvbmcp
dmFsdWU7Ci0gYWRkRmxvYXQ6IChmbG9hdCl2YWx1ZTsKLSBhZGREb3VibGU6IChkb3VibGUpdmFs
dWU7Ci0gYWRkTG9uZ0RvdWJsZTogKGxvbmcgZG91YmxlKXZhbHVlOwotIGFkZFN0cmluZzogKGNv
bnN0IGNoYXIgKil2YWx1ZTsKLSBhZGRPYmplY3Q6IG9iajsKLSBhZGRTZWxlY3RvcjogKFNFTClh
U2VsOwotIGFkZEphdmFPYmplY3Q6IChKT0JKRUNUKW9iajsKLSBzZXRPYmpDUmV0dXJuVHlwZTog
KGNoYXIpdHlwZTsKLSBzZXRSZXR1cm5UeXBlOiAoZmNhbGxfdHlwZV90KXJldFR5cGU7Ci0gc2V0
Qm9vbGVhblJldHVyblR5cGU7Ci0gX0lfVXNpbmc7Ci0gKHZhbF90KWdldFJldFZhbDsKLSAoaWQg
PFN5bWJvbD4pZ2V0TGFuZ3VhZ2U7Ci0gKHZvaWQgKilnZXRSZXN1bHQ7CkBlbmQKCnR5cGVkZWYg
ZW51bSBjYWxsVHlwZXMgeyBjY2FsbCwgQ09NY2FsbCwgSlNjYWxsLCBqYXZhY2FsbCwgamF2YXN0
YXRpY2NhbGwsIG9iamNjYWxsIH0gY2FsbF90OwoKQHByb3RvY29sIEZDYWxsIDxDcmVhdGUsIERy
b3AsIENSRUFUQUJMRT4KCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9u
ZSB0YXJnZXQ6IG9iagogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IChTRUwpc2Vs
CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogKGlkIDxGQXJndW1lbnRzPilmYTsK
KyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgdGFyZ2V0OiBvYmoKICAgICAgICAgICAgICAgICAg
ICAgICBtZXRob2ROYW1lOiAoY29uc3QgY2hhciAqKW1ldGhvZE5hbWUKICAgICAgICAgICAgICAg
ICAgICAgICAgYXJndW1lbnRzOiAoaWQgPEZBcmd1bWVudHM+KWZhOwotIHNldEFyZ3VtZW50czog
YXJnczsKLSBzZXRGdW5jdGlvblBvaW50ZXI6IChmdW5jX3QpZm47Ci0gc2V0TWV0aG9kRnJvbVNl
bGVjdG9yOiAoU0VMKW1ldGhvZCBpbk9iamVjdDogb2JqZWN0OwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAg
IDY1CgoKLSBzZXRNZXRob2RGcm9tTmFtZTogKGNvbnN0IGNoYXIgKiltZXRob2ROYW1lIGluT2Jq
ZWN0OiBvYmplY3Q7Ci0gc2V0SmF2YU1ldGhvZEZyb21OYW1lOiAoY29uc3QgY2hhciAqKW1ldGhv
ZE5hbWUgaW5PYmplY3Q6IChKT0JKRUNUKWpPYmo7Ci0gc2V0SmF2YU1ldGhvZEZyb21OYW1lOiAo
Y29uc3QgY2hhciAqKW1ldGhvZE5hbWUgaW5DbGFzczogKGNvbnN0IGNoYXIgKiljbGFzc05hbWU7
Ci0gX0lfVXNpbmc7Ci0gKGNhbGxfdClnZXRDYWxsVHlwZTsKLSBnZXRBcmd1bWVudHM7Ci0gKHZv
aWQpcGVyZm9ybUNhbGw7Ci0gKHZvaWQgKilnZXRSZXN1bHQ7Ci0gKHJldHZhbF90KWdldFJldFZh
bDogKHJldHZhbF90KXJldFZhbCBidWY6ICh0eXBlc190ICopYnVmOwotIChmdW5jX3QpZ2V0RnVu
Y3Rpb25Qb2ludGVyOwpleHRlcm4gdm9pZCBkZWZvYmpfaW5pdF9qYXZhX2NhbGxfdGFibGVzICh2
b2lkICpqbmlFbnYpOwpleHRlcm4gdm9pZCB1cGRhdGVUYXJnZXQgKGlkIGNhbGwsIGlkIHRhcmdl
dCk7CkBlbmQKCkBwcm90b2NvbCBTZXJpYWxpemF0aW9uCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBs
aXNwSW5DcmVhdGU6IGV4cHI7CgoKLSBoZGY1SW5DcmVhdGU6IChpZCA8SERGNT4paGRmNU9iajsK
CgoKZXh0ZXJuIGlkIGxpc3BJbiAoaWQgPFpvbmU+IGFab25lLCBpZCBleHByKTsKCgpleHRlcm4g
aWQgaGRmNUluIChpZCA8Wm9uZT4gYVpvbmUsIGlkIDxIREY1PiBoZGY1T2JqKTsKCi0gX0lfU2V0
dGluZzsKCgotIGxpc3BJbjogZXhwcjsKCgotIGhkZjVJbjogKGlkIDxIREY1PiloZGY1T2JqOwoK
LSBfSV9Vc2luZzsKCi0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IHN0cmVhbTsKCgotICh2b2lkKWxp
c3BPdXREZWVwOiBzdHJlYW07CgoKCi0gKHZvaWQpbGlzcE91dFZhcnM6IHN0cmVhbSBkZWVwOiAo
Qk9PTClkZWVwRmxhZzsKCgotICh2b2lkKWhkZjVPdXRTaGFsbG93OiAoaWQgPEhERjU+KWhkZjVv
Ymo7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1p
ICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2NgoKCi0gKHZvaWQpaGRmNU91dERlZXA6IChpZCA8
SERGNT4paGRmNW9iajsKCi0gKHZvaWQpdXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwoKCmV4dGVy
biBCT09MIGxpc3BJbkJvb2xlYW4gKGlkIGluZGV4KTsKCgpleHRlcm4gaW50IGxpc3BJbkludGVn
ZXIgKGlkIGluZGV4KTsKCgpleHRlcm4gY29uc3QgY2hhciAqbGlzcEluU3RyaW5nIChpZCBpbmRl
eCk7CgoKZXh0ZXJuIGlkIGxpc3BJbktleXdvcmQgKGlkIGluZGV4KTsKCkBlbmQKCgpleHRlcm4g
aWQgPEFyZ3VtZW50cz4gYXJndW1lbnRzOwoKCmV4dGVybiBpZCA8SERGNUFyY2hpdmVyPiBoZGY1
QXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxMaXNwQXJjaGl2ZXI+IGxpc3BBcmNoaXZlcjsKCgpleHRl
cm4gaWQgPEhERjVBcmNoaXZlcj4gaGRmNUFwcEFyY2hpdmVyOwoKCmV4dGVybiBpZCA8TGlzcEFy
Y2hpdmVyPiBsaXNwQXBwQXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxTeW1ib2w+IHRfQnl0ZUFycmF5
LCB0X0xlYWZPYmplY3QsIHRfUG9wdWxhdGlvbk9iamVjdDsKCgpleHRlcm4gaWQgPFN5bWJvbD4g
TGFuZ3VhZ2VDT00sIExhbmd1YWdlSlMsIExhbmd1YWdlSmF2YSwgTGFuZ3VhZ2VPYmpjOwoKCgoK
CgpleHRlcm4gdm9pZCBfb2JqX2Zvcm1hdElEU3RyaW5nIChjaGFyICpidWZmZXIsIGlkIGFuT2Jq
ZWN0KTsKCgoKZXh0ZXJuIENsYXNzIG9iamNfZ2V0X2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsK
CgpleHRlcm4gaWQgZGVmb2JqX2xvb2t1cF90eXBlIChjb25zdCBjaGFyICpuYW1lKTsKCgoKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAgNjcKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovdHlwZXMuaCIgMQpleHRlcm4gdm9pZCAqX2RlZm9ial9bXTsKCmV4dGVybiBpZCBHZXROYW1l
OwpleHRlcm4gaWQgRGVmaW5lZE9iamVjdDsKZXh0ZXJuIGlkIEN1c3RvbWl6ZTsKZXh0ZXJuIGlk
IENyZWF0ZTsKZXh0ZXJuIGlkIERyb3A7CmV4dGVybiBpZCBab25lOwpleHRlcm4gaWQgRGVmaW5l
ZENsYXNzOwpleHRlcm4gaWQgQ3JlYXRlZENsYXNzOwpleHRlcm4gaWQgQmVoYXZpb3JQaGFzZTsK
ZXh0ZXJuIGlkIENvcHk7CmV4dGVybiBpZCBHZXRPd25lcjsKZXh0ZXJuIGlkIFNldEluaXRpYWxW
YWx1ZTsKZXh0ZXJuIGlkIFN5bWJvbDsKZXh0ZXJuIGlkIEV2ZW50VHlwZTsKZXh0ZXJuIGlkIFdh
cm5pbmc7CmV4dGVybiBpZCBFcnJvcjsKZXh0ZXJuIGlkIEFyZ3VtZW50czsKZXh0ZXJuIGlkIEFy
Y2hpdmVyOwpleHRlcm4gaWQgTGlzcEFyY2hpdmVyOwpleHRlcm4gaWQgSERGNUFyY2hpdmVyOwpl
eHRlcm4gaWQgSERGNTsKZXh0ZXJuIGlkIEhERjVDb21wb3VuZFR5cGU7CmV4dGVybiBpZCBGQXJn
dW1lbnRzOwpleHRlcm4gaWQgRkNhbGw7CmV4dGVybiBpZCBTZXJpYWxpemF0aW9uOwoKCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9jbGFzc2VzLmgiIDEKZXh0ZXJuIGlkIGlk
X0FyY2hpdmVyX2M7CmV4dGVybiBpZCBpZF9BcHBsaWNhdGlvbjsKZXh0ZXJuIGlkIGlkX0xpc3BB
cmNoaXZlcl9jOwpleHRlcm4gaWQgaWRfSERGNUFyY2hpdmVyX2M7CmV4dGVybiBpZCBpZF9Bcmd1
bWVudHNfYzsKZXh0ZXJuIGlkIGlkX0NyZWF0ZURyb3BfczsKZXh0ZXJuIGlkIGlkX0NyZWF0ZURy
b3A7CmV4dGVybiBpZCBpZF9DdXN0b21pemVfczsKZXh0ZXJuIGlkIGlkX0NyZWF0ZUJ5X2M7CmV4
dGVybiBpZCBpZF9DcmVhdGVfYnljb3B5OwpleHRlcm4gaWQgaWRfQ3JlYXRlX2J5c2VuZDsKZXh0
ZXJuIGlkIGlkX0NyZWF0ZV9ieWJvdGg7CmV4dGVybiBpZCBpZF9DbGFzc19zOwpleHRlcm4gaWQg
aWRfQ3JlYXRlZENsYXNzX3M7CmV4dGVybiBpZCBpZF9CZWhhdmlvclBoYXNlX3M7CmV4dGVybiBp
ZCBpZF9PYmplY3RfczsKZXh0ZXJuIGlkIGlkX0hERjVDb21wb3VuZFR5cGVfYzsKZXh0ZXJuIGlk
IGlkX0hERjVfYzsKZXh0ZXJuIGlkIGlkX1R5cGVfYzsKZXh0ZXJuIGlkIGlkX1Byb2dyYW1Nb2R1
bGVfYzsKZXh0ZXJuIGlkIGlkX01vZHVsZV9zdXBlcl87CmV4dGVybiBpZCBpZF9TeW1ib2xfYzsK
ZXh0ZXJuIGlkIGlkX0V2ZW50VHlwZV9jOwpleHRlcm4gaWQgaWRfV2FybmluZ19jOwpleHRlcm4g
aWQgaWRfRXJyb3JfYzsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBD
b3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2OAoKCmV4dGVybiBpZCBpZF9ab25l
X2M7CmV4dGVybiBpZCBpZF9Db21wb25lbnRab25lX2M7CmV4dGVybiBpZCBpZF9GQ2FsbF9jOwpl
eHRlcm4gaWQgaWRfRkFyZ3VtZW50c19jOwpleHRlcm4gaWQgaWRfRGlyZWN0b3J5RW50cnk7CmV4
dGVybiBpZCBpZF9PYmplY3RFbnRyeTsKZXh0ZXJuIGlkIGlkX1NlbGVjdG9yRW50cnk7CmV4dGVy
biBpZCBpZF9EaXJlY3Rvcnk7CmV4dGVybiBpZCBpZF9KYXZhUHJveHk7CmV4dGVybiBpZCBpZF9K
YXZhQ2xhc3NQcm94eTsKZXh0ZXJuIGlkIGlkX0phdmFDb2xsZWN0aW9uOwpleHRlcm4gaWQgaWRf
SmF2YUNvbGxlY3Rpb25JbmRleDsKZXh0ZXJuIGlkIGlkX0NPTVByb3h5OwojIDMxICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL3R5cGVzLmgiIDIKIyAxMjU2ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKCmV4dGVybiB2b2lkIGluaXREZWZvYmogKGlkIDxBcmd1
bWVudHM+IGFyZ3VtZW50cyk7CgoKZXh0ZXJuIHZvaWQgX29ial9pbml0TW9kdWxlICh2b2lkICpt
b2R1bGUpOwoKCgoKCmV4dGVybiBpZCBfb2JqX2dsb2JhbFpvbmU7CgoKZXh0ZXJuIGlkIF9vYmpf
c2NyYXRjaFpvbmU7CiMgMTI3OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgpl
eHRlcm4gQk9PTCBfb2JqX2RlYnVnOwoKCgpleHRlcm4gRklMRSAqX29ial94ZXJyb3I7CgpleHRl
cm4gRklMRSAqX29ial94ZGVidWc7CgoKZXh0ZXJuIHZvaWQgeHNldG5hbWUgKGlkIGFuT2JqZWN0
LCBjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gdm9pZCB4cHJpbnQgKGlkIGFuT2JqZWN0KTsK
CgpleHRlcm4gdm9pZCB4cHJpbnRpZCAoaWQgYW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhmcHJp
bnQgKGlkIGFuT2JqZWN0KTsKCgpleHRlcm4gdm9pZCB4ZnByaW50aWQgKGlkIGFuT2JqZWN0KTsK
CgpleHRlcm4gdm9pZCB4ZXhlYyAoaWQgYW5PYmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICA2OQoKCgpleHRlcm4gdm9pZCB4ZmV4ZWMgKGlkIGFuT2JqZWN0LCBj
b25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gaWQgbmFtZVRvT2JqZWN0IChjb25zdCBjaGFyICpu
YW1lKTsKIyAxMzI1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCmV4dGVybiBj
aGFyICp6c3RyZHVwIChpZCA8Wm9uZT4gYVpvbmUsIGNvbnN0IGNoYXIgKnN0cik7CiMgMTQgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiIDIKCiMgMSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL3N3YXJtY29uZmlnLmgiIDEKIyAxNiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIgMgoKQGNsYXNzIE9iamVjdEVudHJ5OwoKCkBp
bnRlcmZhY2UgT2JqZWN0X3M6IE9iamVjdCA8RGVmaW5lZENsYXNzLCBTZXJpYWxpemF0aW9uLCBH
ZXROYW1lPgp7CkBwdWJsaWMKCgogIHVuc2lnbmVkIHpiaXRzOwogIE9iamVjdEVudHJ5ICpmb3Jl
aWduRW50cnk7Cn0KIyA0MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmpl
Y3QuaCIKLSAoY29uc3QgY2hhciAqKWdldE5hbWU7CisgKEJPT0wpcmVzcG9uZHNUbzogKFNFTClh
U2VsOwotIChCT09MKXJlc3BvbmRzVG86IChTRUwpYVNlbDsKKyAoQk9PTCljb25mb3Jtc1RvOiAo
UHJvdG9jb2wgKilhUHJvdG9jb2w7CisgZ2V0Q2xhc3M7Ci0gZ2V0Q2xhc3M7Ci0gZ2V0Wm9uZTsK
LSAodm9pZClkcm9wQWxsb2NhdGlvbnM6IChCT09MKWNvbXBvbmVudEFsbG9jOwotICh2b2lkKWRy
b3A7Ci0gKHJlZl90KWFkZFJlZjogKG5vdGlmeV90KW5vdGlmeUZ1bmN0aW9uIHdpdGhBcmd1bWVu
dDogKHZvaWQgKilhcmc7OwotICh2b2lkKXJlbW92ZVJlZjogKHJlZl90KXJlZlZhbDsKKyBnZXRT
dXBlcmNsYXNzOworIChCT09MKWlzU3ViY2xhc3M6IGFDbGFzczsKKyAodm9pZClzZXRUeXBlSW1w
bGVtZW50ZWQ6IGFUeXBlOworIGdldFR5cGVJbXBsZW1lbnRlZDsKKyBnZXRPd25lcjsKKyAoSU1Q
KWdldE1ldGhvZEZvcjogKFNFTClhU2VsOworIGdldERlZmluaW5nQ2xhc3M7CisgZ2V0TmV4dFBo
YXNlOworIHNlbGY7Ci0gZ2V0VHlwZTsKLSAoaW50KWNvbXBhcmU6IGFuT2JqZWN0OwotIHBlcmZv
cm06IChTRUwpYVNlbDsKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxOwotIHBl
cmZvcm06IChTRUwpYVNlbCB3aXRoOiBhbk9iamVjdDEgd2l0aDogYW5PYmplY3QyOwotIHBlcmZv
cm06IChTRUwpYVNlbCB3aXRoOiBhbk9iamVjdDEgd2l0aDogYW5PYmplY3QyIHdpdGg6IGFuT2Jq
ZWN0MzsKLSAodm9pZClzZXREaXNwbGF5TmFtZTogKGNvbnN0IGNoYXIgKilhTmFtZTsKLSAoY29u
c3QgY2hhciAqKWdldERpc3BsYXlOYW1lOwotIChjb25zdCBjaGFyICopZ2V0T2JqZWN0TmFtZTsK
LSAoY29uc3QgY2hhciAqKWdldFR5cGVOYW1lOwotICh2b2lkKWRlc2NyaWJlOiBvdXRwdXRDaGFy
U3RyZWFtOwotICh2b2lkKWRlc2NyaWJlSUQ6IG91dHB1dENoYXJTdHJlYW07CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAg
ICBQYWdlICAgNzAKCgotICh2b2lkKXhwcmludDsKLSAodm9pZCl4cHJpbnRpZDsKLSAodm9pZCl4
ZnByaW50OwotICh2b2lkKXhmcHJpbnRpZDsKLSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gbGlzcElu
OiBleHByOwotIGhkZjVJbkNyZWF0ZTogZXhwcjsKLSBoZGY1SW46IGV4cHI7Ci0gKHZvaWQpbGlz
cE91dFZhcnM6IHN0cmVhbSBkZWVwOiAoQk9PTClkZWVwRmxhZzsKLSAodm9pZClsaXNwT3V0RGVl
cDogc3RyZWFtOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpaGRmNU91
dERlZXA6IGhkZjVvYmo7Ci0gKHZvaWQpaGRmNU91dFNoYWxsb3c6IGhkZjVvYmo7Ci0gKHZvaWQp
dXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwpAZW5kCgpleHRlcm4gaWQgbGlzcEluIChpZCBhWm9u
ZSwgaWQgZXhwcik7CgpleHRlcm4gQk9PTCBsaXNwSW5Cb29sZWFuIChpZCBpbmRleCk7CmV4dGVy
biBpbnQgbGlzcEluSW50ZWdlciAoaWQgaW5kZXgpOwpleHRlcm4gY29uc3QgY2hhciAqbGlzcElu
U3RyaW5nIChpZCBpbmRleCk7CmV4dGVybiBpZCBsaXNwSW5LZXl3b3JkIChpZCBpbmRleCk7CiMg
MTIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIgpleHRlcm4g
SU1QIGdldF9pbXAgKENsYXNzIGNsYXNzLCBTRUwgc2VsKTsKCgoKCmV4dGVybiBCT09MIHJlc3Bv
bmRzVG8gKGlkIGFuT2JqZWN0LCBTRUwgYVNlbCk7CgoKCgoKZXh0ZXJuIElNUCBnZXRNZXRob2RG
b3IgKGlkIGFuT2JqZWN0LCBTRUwgYVNlbCk7CiMgMTU0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvZGVmb2JqL0RlZk9iamVjdC5oIgp0eXBlZGVmIHN0cnVjdCBtYXBhbGxvYyAqbWFwYWxsb2Nf
dDsKCnN0cnVjdCBtYXBhbGxvYyB7CiAgdm9pZCAoKm1hcHBpbmdGdW5jdGlvbikgKG1hcGFsbG9j
X3QgbWFwYWxsb2MsIEJPT0wgb2JqZWN0QWxsb2NhdGlvbik7CiAgdm9pZCAqYWxsb2M7CiAgaWQg
PFN5bWJvbD4gZGVzY3JpcHRvcjsKICBpZCB6b25lOwogIHNpemVfdCBzaXplOwp9OwojIDE0ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIiAyCiMgMjQgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiCmV4dGVybiBpZCBDcmVhdGlu
ZywgU2V0dGluZywgVXNpbmcsIENyZWF0aW5nT25seSwgVXNpbmdPbmx5OwoKCgoKQGludGVyZmFj
ZSBDdXN0b21pemVfczogT2JqZWN0X3MKCisgY3VzdG9taXplQmVnaW46IGFab25lOwotIGN1c3Rv
bWl6ZUVuZDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVy
Lm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3MQoKCi0gY3VzdG9taXplQ29weTogYVpvbmU7
CisgY3VzdG9taXplQmVnaW5FbmQ6IGFab25lOwotIF9zZXRDcmVhdGVCeV86IChDbGFzcylzdWJj
bGFzcyBtZXNzYWdlOiAoU0VMKW1lc3NhZ2VTZWxlY3RvciB0bzogYW5PYmplY3Q7Ci0gKHZvaWQp
X3NldENyZWF0ZUJ5Q29weV87Ci0gKHZvaWQpX3NldENyZWF0ZUJ5TWVzc2FnZV86IChTRUwpbWVz
c2FnZVNlbGVjdG9yIHRvOiBhbk9iamVjdDsKLSAodm9pZClfc2V0Q3JlYXRlQnlNZXNzYWdlXzog
KFNFTCltZXNzYWdlU2VsZWN0b3IgdG9Db3B5OiBhbk9iamVjdDsKLSAodm9pZClfc2V0UmVjdXN0
b21pemVfOiBhbk9iamVjdDsKKyAodm9pZClzZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOwpAZW5k
CiMgNTYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiCmV4dGVy
biBpbmxpbmUgQk9PTApfb2JqX2N1c3RvbWl6ZSAoaWQgYW5PYmplY3QpCnsKICByZXR1cm4gKCgq
KENsYXNzICopKGFuT2JqZWN0KSktPmluZm8gJiAweDIwMCkgIT0gMDsKfQojIDgyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIgpAaW50ZXJmYWNlIENyZWF0ZUJ5
X2M6IE9iamVjdF9zCnsKQHB1YmxpYwogIGlkIGltcGxlbWVudGVkVHlwZTsKICBpZCBjcmVhdGVS
ZWNlaXZlcjsKICBTRUwgY3JlYXRlTWVzc2FnZTsKICBJTVAgY3JlYXRlTWV0aG9kOwogIGlkIHJl
Y3VzdG9taXplOwp9CgotIGNyZWF0ZUJlZ2luOiBhWm9uZTsKLSBjdXN0b21pemVCZWdpbjogYVpv
bmU7Ci0gKHZvaWQpbWFwQWxsb2NhdGlvbnM6IChtYXBhbGxvY190KW1hcGFsbG9jOwpAZW5kCgpA
aW50ZXJmYWNlIENyZWF0ZV9ieWNvcHk6IENyZWF0ZUJ5X2MKCi0gY3JlYXRlOiBhWm9uZTsKQGVu
ZAoKQGludGVyZmFjZSBDcmVhdGVfYnlzZW5kOiBDcmVhdGVCeV9jCgotIGNyZWF0ZTogYVpvbmU7
CkBlbmQKCkBpbnRlcmZhY2UgQ3JlYXRlX2J5Ym90aDogQ3JlYXRlQnlfYwoKLSBjcmVhdGU6IGFa
b25lOwpAZW5kCgoKCgpleHRlcm4gaW5saW5lIENsYXNzCmdldE5leHRQaGFzZSAoaWQgYUNsYXNz
KQp7CiAgcmV0dXJuIChDbGFzcykgKChCZWhhdmlvclBoYXNlX3MgKikgYUNsYXNzKS0+bmV4dFBo
YXNlOwp9CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVy
Lm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3MgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkCnNl
dE5leHRQaGFzZSAoaWQgYW5PYmplY3QpCnsKICAqKENsYXNzICopIGFuT2JqZWN0ID0gKENsYXNz
KSAoKihCZWhhdmlvclBoYXNlX3MgKiopIGFuT2JqZWN0KS0+bmV4dFBoYXNlOwp9CiMgMTMgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3JlYXRlLmgiIDIKCgoKCkBpbnRlcmZhY2Ug
Q3JlYXRlRHJvcF9zOiBDdXN0b21pemVfcwoKKyBjcmVhdGU6IGFab25lOworIGNyZWF0ZUJlZ2lu
OiBhWm9uZTsKLSBjcmVhdGVFbmQ7CkBlbmQKCkBpbnRlcmZhY2UgQ3JlYXRlRHJvcDogQ3JlYXRl
RHJvcF9zCgotIGNyZWF0ZUVuZDsKQGVuZAojIDEwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqZWN0YmFzZS9Td2FybU9iamVjdC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamVjdGJhc2UuaCIgMQojIDIwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMQojIDIxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2FjdGl2aXR5LmgiIDEKIyAyNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Fj
dGl2aXR5LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiIDEK
IyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCiMgMSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIiAxCiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9jb2xsZWN0aW9ucy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2V4dGVy
bnZhci5oIiAxCiMgMTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIiAy
CiMgMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAcHJvdG9jb2wg
T2Zmc2V0cwojIDQyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBf
SV9Vc2luZzsKCi0gYXRPZmZzZXQ6ICh1bnNpZ25lZClvZmZzZXQ7CgoKCi0gYXRPZmZzZXQ6ICh1
bnNpZ25lZClvZmZzZXQgcHV0OiBhbk9iamVjdDsKCgotIGdldEZpcnN0OwoKCi0gZ2V0TGFzdDsK
QGVuZAoKQHByb3RvY29sIEZvckVhY2gKIyA3OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Nv
bGxlY3Rpb25zLmgiCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291
bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNzMKCgotIF9JX1VzaW5nOwotICh2b2lk
KWZvckVhY2g6IChTRUwpYVNlbGVjdG9yOwotICh2b2lkKWZvckVhY2g6IChTRUwpYVNlbGVjdG9y
IDogYXJnMTsKLSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxlY3RvciA6IGFyZzEgOiBhcmcyOwot
ICh2b2lkKWZvckVhY2g6IChTRUwpYVNlbGVjdG9yIDogYXJnMSA6IGFyZzIgOiBhcmczOwoKLSAo
dm9pZClkZXNjcmliZUZvckVhY2g6IG91dHB1dENoYXJTdHJlYW07Ci0gKHZvaWQpZGVzY3JpYmVG
b3JFYWNoSUQ6IG91dHB1dENoYXJTdHJlYW07CgpAZW5kCgpAcHJvdG9jb2wgRm9yRWFjaEtleQoK
CgoKCi0gX0lfVXNpbmc7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3I7Ci0gKHZv
aWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3IgOiBhcmcxOwotICh2b2lkKWZvckVhY2hLZXk6
IChTRUwpYVNlbGVjdG9yIDogYXJnMSA6IGFyZzI7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClh
U2VsZWN0b3IgOiBhcmcxIDogYXJnMiA6IGFyZzM7CkBlbmQKCkBwcm90b2NvbCBJbmRleCA8RGVm
aW5lZE9iamVjdCwgRHJvcCwgUkVUVVJOQUJMRT4KIyAxNTcgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKCi0gZ2V0Q29sbGVjdGlvbjsKCgoKCgoK
LSBuZXh0OwoKCgoKLSBwcmV2OwoKCgoKLSBmaW5kTmV4dDogYW5PYmplY3Q7CgoKCgotIGZpbmRQ
cmV2OiBhbk9iamVjdDsKIyAxOTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9u
cy5oIgotIGdldDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENv
dW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDc0CgoKCgotIHB1dDogYW5PYmplY3Q7
CiMgMjA5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSByZW1vdmU7
CiMgMjUzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAoaWQgPFN5
bWJvbD4pZ2V0TG9jOwojIDI2NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gKHZvaWQpc2V0TG9jOiAoaWQgPFN5bWJvbD4pbG9jU3ltYm9sOwojIDI4OCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKGludClnZXRPZmZzZXQ7CgoKCgoK
CgotIHNldE9mZnNldDogKHVuc2lnbmVkKW9mZnNldDsKIyAzMDggIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIChpbnQpY29tcGFyZTogYW5JbmRleDsKIyAzMjEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpleHRlcm4gaWQgPFN5bWJvbD4g
U3RhcnQsIEVuZCwgQmV0d2VlbiwgUmVtb3ZlZCwgTWVtYmVyOwoKCgoKCgoKZXh0ZXJuIGlkIDxF
cnJvcj4gT2Zmc2V0T3V0T2ZSYW5nZSwgTm9NZW1iZXJzLAogIEFscmVhZHlBdEVuZCwgQWxyZWFk
eUF0U3RhcnQsIEludmFsaWRJbmRleExvYywgSW52YWxpZExvY1N5bWJvbDsKCkBlbmQKCkBwcm90
b2NvbCBQZXJtdXRlZEluZGV4IDxJbmRleCwgUkVUVVJOQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5n
OwotIHNldENvbGxlY3Rpb246IGFDb2xsZWN0aW9uOwotIHNldFVuaWZvcm1SYW5kb206IHJuZDsK
LSBfSV9Vc2luZzsKLSByZXNodWZmbGU7CkBlbmQ7CgpAcHJvdG9jb2wgQ29sbGVjdGlvbiA8Q3Jl
YXRlLCBTZXRJbml0aWFsVmFsdWUsIENvcHksIERyb3AsIE9mZnNldHMsIEZvckVhY2g+CiMgNDA3
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsK
CgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDc1CgoKCgotICh2b2lkKXNldFJlcGxhY2VPbmx5OiAo
Qk9PTClyZXBsYWNlT25seTsKCi0gKHZvaWQpc2V0SW5kZXhGcm9tTWVtYmVyTG9jOiAoaW50KWJ5
dGVPZmZzZXQ7CgotIF9JX1VzaW5nOwoKCi0gY29weTogKGlkIDxab25lPilhWm9uZTsKCgotIChC
T09MKWdldFJlcGxhY2VPbmx5OwoKCgoKCi0gKHVuc2lnbmVkKWdldENvdW50OwojIDQ0MCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKEJPT0wpY29udGFpbnM6IGFN
ZW1iZXI7CgoKCgoKCi0gcmVtb3ZlOiBhTWVtYmVyOwojIDQ1NiAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKHZvaWQpcmVtb3ZlQWxsOwoKCi0gKHZvaWQpZGVsZXRl
QWxsOwoKCi0gKEJPT0wpYWxsU2FtZUNsYXNzOwoKCgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlk
IDxab25lPilhWm9uZTsKCi0gKGlkIDxQZXJtdXRlZEluZGV4PiliZWdpblBlcm11dGVkOiAoaWQg
PFpvbmU+KWFab25lOwpAZW5kCgoKCkBwcm90b2NvbCBEZWZhdWx0TWVtYmVyCiMgNDg4ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9TZXR0aW5nOwotICh2b2lk
KXNldERlZmF1bHRNZW1iZXI6IG1lbWJlclZhbHVlOwoKLSBfSV9Vc2luZzsKLSBnZXREZWZhdWx0
TWVtYmVyOwpAZW5kCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENv
dW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDc2CgoKQHByb3RvY29sIE1lbWJlckJs
b2NrCiMgNTM3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9D
cmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0TWVtYmVyQmxvY2s6IChpZCAq
KW1lbWJlcnMgc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKCi0gX0lfU2V0dGluZzsKLSAodm9p
ZClzZXRNZW1iZXJCbG9jazogKGlkICopbWVtYmVycyBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50
OwoKLSBfSV9Vc2luZzsKLSAodm9pZCAqKWdldE1lbWJlckJsb2NrOwpAZW5kCgpAcHJvdG9jb2wg
QXJyYXkgPENvbGxlY3Rpb24sIERlZmF1bHRNZW1iZXIsIE1lbWJlckJsb2NrLCBDUkVBVEFCTEU+
CiMgNTk4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVh
dGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0Q291bnQ6ICh1bnNpZ25lZCljb3Vu
dDsKCi0gX0lfU2V0dGluZzsKCgoKCgoKCi0gc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKQGVu
ZAoKQHByb3RvY29sIExpc3RJbmRleCA8SW5kZXgsIFJFVFVSTkFCTEU+CiMgNjQwICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRk
QWZ0ZXI6IGFuT2JqZWN0OwoKCi0gKHZvaWQpYWRkQmVmb3JlOiBhbk9iamVjdDsKQGVuZAoKCkBw
cm90b2NvbCBMaXN0IDxDb2xsZWN0aW9uLCBDUkVBVEFCTEU+CiMgNjY5ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkRmlyc3Q6
IGFuT2JqZWN0OwoKCi0gKHZvaWQpYWRkTGFzdDogYW5PYmplY3Q7CgoKLSByZW1vdmVGaXJzdDsK
CgotIHJlbW92ZUxhc3Q7CgoKLSAoaWQgPExpc3RJbmRleD4pbGlzdEJlZ2luOiAoaWQgPFpvbmU+
KWFab25lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIu
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDc3CgoKQGVuZAoKCgpleHRlcm4gaW50IGNvbXBh
cmVJRHMgKGlkLCBpZCk7CgoKZXh0ZXJuIGludCBjb21wYXJlSW50ZWdlcnMgKGlkLCBpZCk7CgoK
ZXh0ZXJuIGludCBjb21wYXJlVW5zaWduZWRJbnRlZ2VycyAoaWQsIGlkKTsKCgpleHRlcm4gaW50
IGNvbXBhcmVDU3RyaW5ncyAoaWQsIGlkKTsKCkBwcm90b2NvbCBDb21wYXJlRnVuY3Rpb24KIyA3
MjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgp0eXBlZGVmIGludCAo
KmNvbXBhcmVfdCkgKGlkLCBpZCk7CgotIF9JX0NyZWF0aW5nOwotIHNldENvbXBhcmVGdW5jdGlv
bjogKGNvbXBhcmVfdClhRnVuY3Rpb247Ci0gc2V0Q29tcGFyZUNTdHJpbmdzOwotIHNldENvbXBh
cmVJRHM7Ci0gc2V0Q29tcGFyZUludGVnZXJzOwotIHNldENvbXBhcmVVbnNpZ25lZEludGVnZXJz
OwotIF9JX1VzaW5nOwotIChjb21wYXJlX3QpZ2V0Q29tcGFyZUZ1bmN0aW9uOwpAZW5kCgpAcHJv
dG9jb2wgS2V5ZWRDb2xsZWN0aW9uIDxDb2xsZWN0aW9uLCBGb3JFYWNoS2V5PgojIDc1MCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9J
X1VzaW5nOwotIGNyZWF0ZUluZGV4OiAoaWQgPFpvbmU+KWFab25lIGZyb21NZW1iZXI6IGFuT2Jq
ZWN0OwoKCgoKCgotIGF0OiBhS2V5OwoKCgoKCgotIHJlbW92ZUtleTogYUtleTsKCgoKLSAoQk9P
TCljb250YWluc0tleTogYUtleTsKQGVuZAoKQHByb3RvY29sIEtleWVkQ29sbGVjdGlvbkluZGV4
IDxJbmRleD4KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVy
Lm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3OAoKCiMgNzgzICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKQGVuZAoKCkBwcm90b2NvbCBNZW1iZXJTbG90CiMgODE0
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKdHlwZWRlZiBzdHJ1Y3Qg
bWVtYmVyRGF0YSB7IHZvaWQgKm1lbWJlckRhdGFbMl07IH0gbWVtYmVyX3Q7CgoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCB7IHZvaWQgKm1lbWJlckRhdGFbMl07IGlkIG93bmVyOyB9IGR1cG1lbWJlcl90
OwpAZW5kCgpAcHJvdG9jb2wgX1NldAoKCi0gX0lfVXNpbmc7CgotIChCT09MKWFkZDogYW5PYmpl
Y3Q7CiMgODM5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKQGVuZAoK
QHByb3RvY29sIFNldCA8X1NldCwgS2V5ZWRDb2xsZWN0aW9uLCBDUkVBVEFCTEU+CiMgODU3ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCgoKCgot
IHJlcGxhY2U6IGFuT2JqZWN0OwpAZW5kCgpAcHJvdG9jb2wgT3JkZXJlZFNldCA8X1NldCwgTGlz
dCwgQ1JFQVRBQkxFPgojIDg4NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCkBlbmQKCkBwcm90b2NvbCBNYXBJbmRleCA8S2V5ZWRDb2xsZWN0aW9uSW5kZXgsIFJFVFVS
TkFCTEU+CgoKCgotIF9JX1VzaW5nOwoKCgoKLSBzZXRLZXk6IGFLZXk7CgoKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgIDc5CgoKLSBnZXRLZXk7CgoKCgoKCi0gKHVuc2lnbmVkIGxvbmcpZ2V0S2V5VmFs
dWU7CgoKLSBuZXh0OiAoaWQgKilrZXk7CgoKLSBwcmV2OiAoaWQgKilrZXk7CgoKLSBnZXQ6IChp
ZCAqKWtleTsKQGVuZAoKCkBwcm90b2NvbCBNYXAgPEtleWVkQ29sbGVjdGlvbiwgQ29tcGFyZUZ1
bmN0aW9uLCBDUkVBVEFCTEU+CiMgOTM4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVj
dGlvbnMuaCIKLSBfSV9Vc2luZzsKCgoKCi0gKEJPT0wpYXQ6IGFLZXkgaW5zZXJ0OiBhbk9iamVj
dDsKCgoKCi0gYXQ6IGFLZXkgcmVwbGFjZTogYW5PYmplY3Q7CgoKLSAoaWQgPE1hcEluZGV4Pilt
YXBCZWdpbjogKGlkIDxab25lPilhWm9uZTsKQGVuZAoKCkBwcm90b2NvbCBPdXRwdXRTdHJlYW0g
PENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgojIDk2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25l
IHNldEZpbGVTdHJlYW06IChGSUxFICopZmlsZVN0cmVhbTsKLSBzZXRGaWxlU3RyZWFtOiAoRklM
RSAqKWZpbGVTdHJlYW07Ci0gc2V0RXhwckZsYWc6IChCT09MKWV4cHJGbGFnOwotIF9JX1VzaW5n
OwotIChGSUxFICopZ2V0RmlsZVN0cmVhbTsKLSBnZXRFeHByOwoKCi0gKHZvaWQpY2F0QzogKGNv
bnN0IGNoYXIgKiljc3RyaW5nOwoKCi0gKHZvaWQpY2F0Qm9vbGVhbjogKEJPT0wpYm9vbDsKCgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgIDgwCgoKLSAodm9pZCljYXRDaGFyOiAoY2hhciljaDsKCgotICh2
b2lkKWNhdEZsb2F0OiAoZmxvYXQpZmx0OwoKCi0gKHZvaWQpY2F0RG91YmxlOiAoZG91YmxlKWRi
bDsKCgotICh2b2lkKWNhdExvbmdEb3VibGU6IChsb25nIGRvdWJsZSlkYmw7CgoKLSAodm9pZClj
YXRJbnQ6IChpbnQpaTsKCgotICh2b2lkKWNhdFVuc2lnbmVkOiAodW5zaWduZWQpdW47CgotICh2
b2lkKWNhdFNob3J0OiAoc2hvcnQpc2h0OwotICh2b2lkKWNhdFVuc2lnbmVkU2hvcnQ6ICh1bnNp
Z25lZCBzaG9ydCl1c2h0OwotICh2b2lkKWNhdExvbmc6IChsb25nKWxuZzsKLSAodm9pZCljYXRV
bnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25nKXVsbmc7Ci0gKHZvaWQpY2F0TG9uZ0xvbmc6IChs
b25nIGxvbmcpbG5nbG5nOwotICh2b2lkKWNhdFVuc2lnbmVkTG9uZ0xvbmc6ICh1bnNpZ25lZCBs
b25nIGxvbmcpdWxuZ2xuZzsKLSAodm9pZCljYXRQb2ludGVyOiAoY29uc3Qgdm9pZCAqKXB0cjsK
LSAodm9pZCljYXRMaXRlcmFsOiAoY29uc3QgY2hhciAqKXN0cjsKLSAodm9pZCljYXRTdGFydEV4
cHI7Ci0gKHZvaWQpY2F0RW5kRXhwcjsKLSAodm9pZCljYXRLZXl3b3JkOiAoY29uc3QgY2hhciAq
KWtleXdvcmQ7Ci0gKHZvaWQpY2F0U3ltYm9sOiAoY29uc3QgY2hhciAqKXN5bWJvbDsKLSAodm9p
ZCljYXRTdHJpbmc6IChjb25zdCBjaGFyICopc3RyOwotICh2b2lkKWNhdFNlcGFyYXRvcjsKLSAo
dm9pZCljYXRBcnJheVJhbms6ICh1bnNpZ25lZClyYW5rOwotICh2b2lkKWNhdEVuZEFycmF5Owot
ICh2b2lkKWNhdFR5cGU6IChjb25zdCBjaGFyICopdHlwZTsKLSAodm9pZCljYXRDbGFzczogKENs
YXNzKWNsYXNzOwotICh2b2lkKWNhdFN0YXJ0RnVuY3Rpb246IChjb25zdCBjaGFyICopZnVuY3Rp
b25OYW1lOwotICh2b2lkKWNhdEVuZEZ1bmN0aW9uOwotICh2b2lkKWNhdFN0YXJ0Q29uczsKLSAo
dm9pZCljYXRFbmRDb25zOwotICh2b2lkKWNhdFN0YXJ0TGlzdDsKLSAodm9pZCljYXRFbmRMaXN0
OwotICh2b2lkKWNhdFN0YXJ0UXVvdGVkTGlzdDsKLSAodm9pZCljYXRFbmRRdW90ZWRMaXN0Owot
ICh2b2lkKWNhdFN0YXJ0UGFyc2U7Ci0gKHZvaWQpY2F0RW5kUGFyc2U7Ci0gKHZvaWQpY2F0U3Rh
cnRNYWtlSW5zdGFuY2U6IChjb25zdCBjaGFyICopdHlwZU5hbWU7Ci0gKHZvaWQpY2F0RW5kTWFr
ZUluc3RhbmNlOwotICh2b2lkKWNhdFN0YXJ0TWFrZUNsYXNzOiAoY29uc3QgY2hhciAqKWNsYXNz
TmFtZTsKLSAodm9pZCljYXRFbmRNYWtlQ2xhc3M7Ci0gKHZvaWQpY2F0VW5zaWduZWRQYWlyOiAo
dW5zaWduZWQpYSA6ICh1bnNpZ25lZCliOwotICh2b2lkKWNhdE5pbDsKQGVuZAoKQHByb3RvY29s
IElucHV0U3RyZWFtIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDgxCgoKCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRG
aWxlU3RyZWFtOiAoRklMRSAqKWZpbGU7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEV4
cHI6IGV4cHI7Ci0gc2V0RXhwcjogZXhwcjsKLSBzZXRGaWxlU3RyZWFtOiAoRklMRSAqKWZpbGVT
dHJlYW07Ci0gX0lfVXNpbmc7Ci0gKEZJTEUgKilnZXRGaWxlU3RyZWFtOwotIGdldEV4cHI7CkBl
bmQKCgpleHRlcm4gaWQgPFN5bWJvbD4gQXJjaGl2ZXJMaXRlcmFsLCBBcmNoaXZlclF1b3RlLCBB
cmNoaXZlckVPTCwgQXJjaGl2ZXJEb3Q7CgpAcHJvdG9jb2wgQXJjaGl2ZXJLZXl3b3JkIDxDcmVh
dGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRLZXl3b3JkTmFtZTog
KGNvbnN0IGNoYXIgKiluYW1lOwotIF9JX1VzaW5nOwotIChjb25zdCBjaGFyICopZ2V0S2V5d29y
ZE5hbWU7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07
Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQKCkBw
cm90b2NvbCBBcmNoaXZlckFycmF5IDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9D
cmVhdGluZzsKLSBzZXRBcnJheTogYXJyYXk7Ci0gX0lfVXNpbmc7Ci0gKHZvaWQgKilnZXREYXRh
OwotICh1bnNpZ25lZClnZXRSYW5rOwotICh1bnNpZ25lZCAqKWdldERpbXM7Ci0gKHNpemVfdCln
ZXRFbGVtZW50U2l6ZTsKLSAodW5zaWduZWQpZ2V0RWxlbWVudENvdW50OwotIChmY2FsbF90eXBl
X3QpZ2V0QXJyYXlUeXBlOwotIGNvbnZlcnRUb1R5cGU6IChjaGFyKWRlc3RUeXBlIGRlc3Q6ICh2
b2lkICopcHRyOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiAoaWQgPE91dHB1dFN0cmVhbT4pc3Ry
ZWFtOwotICh2b2lkKWxpc3BPdXREZWVwOiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2
b2lkKWRyb3A7CkBlbmQKCkBwcm90b2NvbCBBcmNoaXZlclZhbHVlIDxDcmVhdGUsIERyb3AsIFJF
VFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXREb3VibGU6IChkb3VibGUpdmFsOwotIHNl
dExvbmdEb3VibGU6IChsb25nIGRvdWJsZSl2YWw7Ci0gc2V0RmxvYXQ6IChmbG9hdCl2YWw7Ci0g
c2V0TG9uZ0xvbmc6IChsb25nIGxvbmcpdmFsOwotIHNldENoYXI6IChjaGFyKXZhbDsKLSBzZXRC
b29sZWFuOiAoQk9PTCl2YWw7Ci0gc2V0Q2xhc3M6IChDbGFzcyljbGFzczsKLSBzZXROaWw7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAgODIKCgotIF9JX1VzaW5nOwotIChmY2FsbF90eXBlX3QpZ2V0VmFs
dWVUeXBlOwotIChkb3VibGUpZ2V0RG91YmxlOwotIChsb25nIGRvdWJsZSlnZXRMb25nRG91Ymxl
OwotIChmbG9hdClnZXRGbG9hdDsKLSAobG9uZyBsb25nKWdldExvbmdMb25nOwotIChpbnQpZ2V0
SW50ZWdlcjsKLSAodW5zaWduZWQpZ2V0VW5zaWduZWQ7Ci0gKGNoYXIpZ2V0Q2hhcjsKLSAoQk9P
TClnZXRCb29sZWFuOwotIGdldE9iamVjdDsKLSAoQ2xhc3MpZ2V0Q2xhc3M7Ci0gKHZvaWQpbGlz
cE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91dERl
ZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpZHJvcDsKQGVuZAoKQHByb3Rv
Y29sIEFyY2hpdmVyUGFpciA8Q3JlYXRlLCBEcm9wLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRp
bmc7Ci0gc2V0Q2FyOiBjYXI7Ci0gc2V0Q2RyOiBjZHI7Ci0gc2V0Q29uc0Zvcm1hdEZsYWc6IChC
T09MKXRoZUNvbnNGb3JtYXRGbGFnOwotIF9JX1VzaW5nOwotIGdldENhcjsKLSBnZXRDZHI7Ci0g
KEJPT0wpZ2V0Q29uc0Zvcm1hdEZsYWc7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0
cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFt
PilzdHJlYW07CkBlbmQKCkBwcm90b2NvbCBBcmNoaXZlckxpc3QgPExpc3QsIFJFVFVSTkFCTEU+
CgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlk
IDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKLSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRT
dHJlYW0+KXN0cmVhbTsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyUXVvdGVkIDxSRVRVUk5BQkxF
PgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0UXVvdGVkT2JqZWN0OiB2YWx1ZTsKLSBfSV9Vc2luZzsK
LSBnZXRRdW90ZWRPYmplY3Q7Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFt
PilzdHJlYW07CkBlbmQKCgoKQHByb3RvY29sIFN0cmluZyA8Q3JlYXRlLCBEcm9wLCBDb3B5LCBD
UkVBVEFCTEU+CiMgMTE1NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgi
Ci0gX0lfQ3JlYXRpbmc7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
Q291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODMKCgorIGNyZWF0ZTogKGlkIDxa
b25lPilhWm9uZSBzZXRDOiAoY29uc3QgY2hhciAqKWNzdHJpbmc7CgotIF9JX1NldHRpbmc7Ci0g
KHZvaWQpc2V0QzogKGNvbnN0IGNoYXIgKiljc3RyaW5nOwoKLSBfSV9Vc2luZzsKLSAoY29uc3Qg
Y2hhciAqKWdldEM7Ci0gKHZvaWQpY2F0QzogKGNvbnN0IGNoYXIgKiljc3RyaW5nOwotICh1bnNp
Z25lZClnZXRDb3VudDsKQGVuZAoKQHByb3RvY29sIExpc3RTaHVmZmxlciA8Q3JlYXRlLCBEcm9w
LCBDUkVBVEFCTEU+CiMgMTE3NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRVbmlmb3JtUmFuZG9tOiBkaXN0OwoKCgorIGNyZWF0
ZTogKGlkIDxab25lPilhWm9uZSBzZXRVbmlmb3JtUmFuZG9tOiBkaXN0OwoKLSBfSV9Vc2luZzsK
Ci0gc2h1ZmZsZVdob2xlTGlzdDogbGlzdDsKCgoKLSBzaHVmZmxlUGFydGlhbExpc3Q6IGxpc3Qg
TnVtOiAodW5zaWduZWQpbnVtOwpAZW5kCgpAcHJvdG9jb2wgUGVybXV0YXRpb25JdGVtIDxDcmVh
dGUsIFJFVFVSTkFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0SXRlbTogaXRlbTsKLSBzZXRQ
b3NpdGlvbjogKHVuc2lnbmVkKXBvc2l0aW9uOwotIF9JX1VzaW5nOwotIGdldEl0ZW07Ci0gKHVu
c2lnbmVkKWdldFBvc2l0aW9uOwpAZW5kCgpAcHJvdG9jb2wgUGVybXV0YXRpb24gPENvbGxlY3Rp
b24sIENyZWF0ZSwgQXJyYXksIENSRUFUQUJMRT4KCgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0
Q29sbGVjdGlvbjogKGlkIDxDb2xsZWN0aW9uPiljb2xsZWN0aW9uOwotIHNldExhc3RQZXJtdXRh
dGlvbjogKGlkIDxQZXJtdXRhdGlvbj4pcGVybXV0YXRpb247Ci0gc2V0VW5pZm9ybVJhbmRvbTog
cm5kOwpAZW5kCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRl
ci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODQKCgoKIyAxICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMvdHlwZXMuaCIgMQpleHRlcm4gdm9pZCAqX2NvbGxlY3Rpb25z
X1tdOwoKZXh0ZXJuIGlkIE9mZnNldHM7CmV4dGVybiBpZCBGb3JFYWNoOwpleHRlcm4gaWQgRm9y
RWFjaEtleTsKZXh0ZXJuIGlkIEluZGV4OwpleHRlcm4gaWQgUGVybXV0ZWRJbmRleDsKZXh0ZXJu
IGlkIENvbGxlY3Rpb247CmV4dGVybiBpZCBEZWZhdWx0TWVtYmVyOwpleHRlcm4gaWQgTWVtYmVy
QmxvY2s7CmV4dGVybiBpZCBBcnJheTsKZXh0ZXJuIGlkIExpc3RJbmRleDsKZXh0ZXJuIGlkIExp
c3Q7CmV4dGVybiBpZCBDb21wYXJlRnVuY3Rpb247CmV4dGVybiBpZCBLZXllZENvbGxlY3Rpb247
CmV4dGVybiBpZCBLZXllZENvbGxlY3Rpb25JbmRleDsKZXh0ZXJuIGlkIE1lbWJlclNsb3Q7CmV4
dGVybiBpZCBfU2V0OwpleHRlcm4gaWQgU2V0OwpleHRlcm4gaWQgT3JkZXJlZFNldDsKZXh0ZXJu
IGlkIE1hcEluZGV4OwpleHRlcm4gaWQgTWFwOwpleHRlcm4gaWQgT3V0cHV0U3RyZWFtOwpleHRl
cm4gaWQgSW5wdXRTdHJlYW07CmV4dGVybiBpZCBBcmNoaXZlcktleXdvcmQ7CmV4dGVybiBpZCBB
cmNoaXZlckFycmF5OwpleHRlcm4gaWQgQXJjaGl2ZXJWYWx1ZTsKZXh0ZXJuIGlkIEFyY2hpdmVy
UGFpcjsKZXh0ZXJuIGlkIEFyY2hpdmVyTGlzdDsKZXh0ZXJuIGlkIEFyY2hpdmVyUXVvdGVkOwpl
eHRlcm4gaWQgU3RyaW5nOwpleHRlcm4gaWQgTGlzdFNodWZmbGVyOwpleHRlcm4gaWQgUGVybXV0
YXRpb25JdGVtOwpleHRlcm4gaWQgUGVybXV0YXRpb247CgoKIyAxICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMvY2xhc3Nlcy5oIiAxCmV4dGVybiBpZCBpZF9BcnJheV9jOwpl
eHRlcm4gaWQgaWRfQXJyYXlJbmRleF9jOwpleHRlcm4gaWQgaWRfQ29sbGVjdGlvbl9hbnk7CmV4
dGVybiBpZCBpZF9JbmRleF9hbnk7CmV4dGVybiBpZCBpZF9QZXJtdXRlZEluZGV4X2M7CmV4dGVy
biBpZCBpZF9JbnB1dFN0cmVhbV9jOwpleHRlcm4gaWQgaWRfQXJjaGl2ZXJLZXl3b3JkX2M7CmV4
dGVybiBpZCBpZF9BcmNoaXZlckFycmF5X2M7CmV4dGVybiBpZCBpZF9BcmNoaXZlclZhbHVlX2M7
CmV4dGVybiBpZCBpZF9BcmNoaXZlclBhaXJfYzsKZXh0ZXJuIGlkIGlkX0FyY2hpdmVyTGlzdF9j
OwpleHRlcm4gaWQgaWRfQXJjaGl2ZXJRdW90ZWRfYzsKZXh0ZXJuIGlkIGlkX0xpc3RfYW55Owpl
eHRlcm4gaWQgaWRfTGlzdEluZGV4X2FueTsKZXh0ZXJuIGlkIGlkX0xpc3RfbGlua2VkOwpleHRl
cm4gaWQgaWRfTGlzdEluZGV4X2xpbmtlZDsKZXh0ZXJuIGlkIGlkX0xpc3RfbWxpbmtzOwoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDg1CgoKZXh0ZXJuIGlkIGlkX0xpc3RJbmRleF9tbGlua3M7CmV4dGVy
biBpZCBpZF9MaXN0U2h1ZmZsZXJfYzsKZXh0ZXJuIGlkIGlkX01hcF9jOwpleHRlcm4gaWQgaWRf
TWFwSW5kZXhfYzsKZXh0ZXJuIGlkIGlkX09yZGVyZWRTZXRfYzsKZXh0ZXJuIGlkIGlkX09yZGVy
ZWRTZXRJbmRleF9jOwpleHRlcm4gaWQgaWRfT3V0cHV0U3RyZWFtX2M7CmV4dGVybiBpZCBpZF9T
ZXRfYzsKZXh0ZXJuIGlkIGlkX1NldEluZGV4X2M7CmV4dGVybiBpZCBpZF9QZXJtdXRhdGlvbkl0
ZW1fYzsKZXh0ZXJuIGlkIGlkX1Blcm11dGF0aW9uX2M7CmV4dGVybiBpZCBpZF9TdHJpbmdfYzsK
IyAzOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zL3R5cGVzLmgiIDIKIyAx
MjIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIgMgojIDI3ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIgMgoKQHByb3RvY29sIERlZmF1bHRPcmRlcgojIDc1ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKLSBfSV9TZXR0aW5nOwotIHNldERl
ZmF1bHRPcmRlcjogKGlkIDxTeW1ib2w+KWFTeW1ib2w7Ci0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1i
b2w+KWdldERlZmF1bHRPcmRlcjsKQGVuZAoKCkBwcm90b2NvbCBBY3Rpdml0eSA8RGVmaW5lZE9i
amVjdCwgRHJvcCwgUkVUVVJOQUJMRT4KIyAxMjYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9h
Y3Rpdml0eS5oIgotIF9JX1VzaW5nOwoKCgoKCi0gKGlkIDxTeW1ib2w+KXJ1bjsKCgoKLSAodm9p
ZClzdG9wOwoKCgoKCgoKLSAodm9pZCl0ZXJtaW5hdGU7CgoKCgotIChpZCA8U3ltYm9sPiluZXh0
QWN0aW9uOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRl
ci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODYKCgotIChpZCA8U3ltYm9sPilzdGVwQWN0
aW9uOwoKCgoKLSAoaWQgPFN5bWJvbD4pZ2V0U3RhdHVzOwojIDE2NyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlkIDxTeW1ib2w+KWdldEhvbGRUeXBlOwoKCi0gZ2V0
QWN0aW9uOwoKCi0gZ2V0QWN0aW9uVHlwZTsKCgotICh2b2lkKXNldE93bmVyQWN0aXZpdHk6IG93
bmVyQWN0aXZpdHk7CgoKLSBnZXRPd25lckFjdGl2aXR5OwoKCi0gZ2V0U3ViYWN0aXZpdGllczsK
CgotIGdldENvbnRyb2xsaW5nQWN0aXZpdHk7CgoKLSBnZXRUb3BMZXZlbEFjdGl2aXR5OwoKCi0g
Z2V0U3dhcm1BY3Rpdml0eTsKCgotIGdldFNjaGVkdWxlQWN0aXZpdHk7CgoKLSBzZXRTZXJpYWxN
b2RlOiAoQk9PTClzZXJpYWxNb2RlOwoKCi0gKEJPT0wpZ2V0U2VyaWFsTW9kZTsKCgotIChpZCA8
QWN0aXZpdHk+KWdldEN1cnJlbnRTdWJhY3Rpdml0eTsKQGVuZAoKCmV4dGVybiBpZCA8U3ltYm9s
PiBJbml0aWFsaXplZCwgUnVubmluZywgSG9sZGluZywgUmVsZWFzZWQsIFN0b3BwZWQsCiAgVGVy
bWluYXRlZCwgQ29tcGxldGVkOwoKQHByb3RvY29sIEFjdGlvbiA8Q3JlYXRlLCBEcm9wLCBHZXRP
d25lcj4KIyAyNDIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1Vz
aW5nOwotICh2b2lkKV9wZXJmb3JtQWN0aW9uXzogKGlkIDxBY3Rpdml0eT4pYWN0aXZpdHk7CkBl
bmQKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAg
ICAgICAgICAgICAgICAgICBQYWdlICAgODcKCgpAcHJvdG9jb2wgQWN0aW9uQXJncwoKCgoKCgoK
LSBfSV9DcmVhdGluZzsKLSAodm9pZClzZXRBcmcxOiBhcmcxOwotICh2b2lkKXNldEFyZzI6IGFy
ZzI7Ci0gKHZvaWQpc2V0QXJnMzogYXJnMzsKLSBfSV9Vc2luZzsKLSAodW5zaWduZWQpZ2V0TkFy
Z3M7Ci0gZ2V0QXJnMTsKLSBnZXRBcmcyOwotIGdldEFyZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0
aW9uIDxBY3Rpb24sIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRDYWxsOiBmY2Fs
bDsKLSBfSV9TZXR0aW5nOwotIHNldEF1dG9Ecm9wOiAoQk9PTClhdXRvRHJvcDsKLSBfSV9Vc2lu
ZzsKQGVuZAoKQHByb3RvY29sIEFjdGlvblRhcmdldAoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQp
c2V0VGFyZ2V0OiB0YXJnZXQ7Ci0gX0lfVXNpbmc7Ci0gZ2V0VGFyZ2V0OwpAZW5kCgpAcHJvdG9j
b2wgQWN0aW9uU2VsZWN0b3IKCgotIF9JX1NldHRpbmc7Ci0gKHZvaWQpc2V0TWVzc2FnZVNlbGVj
dG9yOiAoU0VMKWFTZWw7Ci0gX0lfVXNpbmc7Ci0gKFNFTClnZXRNZXNzYWdlU2VsZWN0b3I7CkBl
bmQKCkBwcm90b2NvbCBBY3Rpb25UbyA8QWN0aW9uLCBBY3Rpb25UYXJnZXQsIEFjdGlvblNlbGVj
dG9yLCBBY3Rpb25BcmdzLCBSRVRVUk5BQkxFPgoKCkBlbmQKCkBwcm90b2NvbCBBY3Rpb25Gb3JF
YWNoIDxBY3Rpb25UbywgRGVmYXVsdE9yZGVyLCBSRVRVUk5BQkxFPgoKCkBlbmQKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgICA4OAoKCgpAcHJvdG9jb2wgQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzIDxBY3Rp
b24sIEFjdGlvblRhcmdldCwgQWN0aW9uU2VsZWN0b3IsIERlZmF1bHRPcmRlciwgUkVUVVJOQUJM
RT4KCgpAZW5kCgpAcHJvdG9jb2wgRkFjdGlvbkZvckVhY2ggPEZBY3Rpb24sIEFjdGlvblRhcmdl
dCwgRGVmYXVsdE9yZGVyPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uRm9yRWFjaEhldGVyb2dl
bmVvdXMgPEZBY3Rpb25Gb3JFYWNoLCBSRVRVUk5BQkxFPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0
aW9uRm9yRWFjaEhvbW9nZW5lb3VzIDxGQWN0aW9uRm9yRWFjaCwgUkVUVVJOQUJMRT4KCgoKCgpA
ZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2FsbCA8QWN0aW9uLCBBY3Rpb25BcmdzLCBSRVRVUk5BQkxF
PgoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0RnVuY3Rpb25Qb2ludGVyOiAoZnVuY190KWZw
dHI7Ci0gX0lfVXNpbmc7Ci0gKGZ1bmNfdClnZXRGdW5jdGlvblBvaW50ZXI7CkBlbmQKCkBwcm90
b2NvbCBBY3Rpb25DaGFuZ2VkIDxBY3Rpb24sIFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29s
IEZBY3Rpb25DcmVhdGluZwoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxGQWN0aW9uPiljcmVhdGVGQWN0
aW9uOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRpbmdDYWxs
CgoKCgoKCgotIF9JX1VzaW5nOwotIChpZCA8QWN0aW9uQ2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDog
KGZ1bmNfdClmcHRyOwotIChpZCA8QWN0aW9uQ2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNf
dClmcHRyIDogYXJnMTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBD
b3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA4OQoKCi0gKGlkIDxBY3Rpb25DYWxs
PiljcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHIgOiBhcmcxIDogYXJnMjsKLSAoaWQgPEFj
dGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0ciA6IGFyZzEgOiBhcmcyIDog
YXJnMzsKQGVuZAoKQHByb3RvY29sIEFjdGlvbkNyZWF0aW5nVG8KIyAzODQgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwotIChpZCA8QWN0aW9uVG8+KWNy
ZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uVG8+
KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMTsKLSAoaWQg
PEFjdGlvblRvPiljcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbCA6IGFy
ZzEgOiBhcmcyOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2Fn
ZTogKFNFTClhU2VsIDogYXJnMSA6IGFyZzIgOiBhcmczOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9u
Q3JlYXRpbmdGb3JFYWNoCiMgNDAyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHku
aCIKLSBfSV9Vc2luZzsKLSAoaWQgPEFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlQWN0
aW9uRm9yRWFjaEhvbW9nZW5lb3VzOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwoKLSAoaWQg
PEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VM
KWFTZWw7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPiljcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQg
bWVzc2FnZTogKFNFTClhU2VsIDogYXJnMTsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFj
dGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMjsKLSAo
aWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAo
U0VMKWFTZWwgOiBhcmcxIDogYXJnMiA6IGFyZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3Jl
YXRpbmdGb3JFYWNoSGV0ZXJvZ2VuZW91cwoKCgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxGQWN0aW9u
Rm9yRWFjaEhldGVyb2dlbmVvdXM+KWNyZWF0ZUZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91czog
dGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3Jl
YXRpbmdGb3JFYWNoSG9tb2dlbmVvdXMKCgoKCgotIF9JX1VzaW5nOwotIChpZCA8RkFjdGlvbkZv
ckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlRkFjdGlvbkZvckVhY2hIb21vZ2VuZW91czogdGFyZ2V0
IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25DcmVhdGluZyA8
RkFjdGlvbkNyZWF0aW5nLCBBY3Rpb25DcmVhdGluZ0NhbGwsIEFjdGlvbkNyZWF0aW5nVG8sIEFj
dGlvbkNyZWF0aW5nRm9yRWFjaCwgRkFjdGlvbkNyZWF0aW5nRm9yRWFjaEhldGVyb2dlbmVvdXMs
IEZBY3Rpb25DcmVhdGluZ0ZvckVhY2hIb21vZ2VuZW91cz4KIyA0NjIgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwoKCgoKLSBjcmVhdGVBY3Rpb246IGFu
QWN0aW9uVHlwZTsKCkBlbmQKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDkwCgoKZXh0ZXJuIGlkIDxT
eW1ib2w+IENvbmN1cnJlbnQsIFNlcXVlbnRpYWwsIFJhbmRvbWl6ZWQ7CiMgNDkzICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHRpbWV2
YWxfdDsKCgoKQHByb3RvY29sIEFjdGl2aXR5SW5kZXggPEluZGV4LCBSRVRVUk5BQkxFPgoKCi0g
X0lfVXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdldEhvbGRUeXBlOwotIChpZCA8QWN0aW9uPiluZXh0
QWN0aW9uOiAoaWQgKilzdGF0dXM7CkBlbmQKCgpleHRlcm4gaWQgPFN5bWJvbD4gSG9sZFN0YXJ0
LCBIb2xkRW5kOwoKQHByb3RvY29sIEFjdGlvblR5cGUKIyA1MzEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwojIDU1MSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlkIDxBY3Rpdml0eT4pYWN0aXZhdGVJbjogc3dhcm1Db250
ZXh0OwpAZW5kCgpAcHJvdG9jb2wgU3luY2hyb25pemF0aW9uVHlwZQojIDU2OSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0U3lu
Y2hyb25pemF0aW9uVHlwZTogYVNjaGVkdWxlVHlwZTsKCi0gX0lfVXNpbmc7Ci0gZ2V0U3luY2hy
b25pemF0aW9uVHlwZTsKQGVuZAoKQHByb3RvY29sIEF1dG9Ecm9wCiMgNTk2ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKLSBzZXRBdXRvRHJvcDog
KEJPT0wpYXV0b0Ryb3A7Ci0gX0lfVXNpbmc7Ci0gKEJPT0wpZ2V0QXV0b0Ryb3A7CkBlbmQKCkBw
cm90b2NvbCBDb21wb3VuZEFjdGlvbiA8QWN0aW9uVHlwZSwgQ29sbGVjdGlvbiwgQXV0b0Ryb3As
IERlZmF1bHRPcmRlcj4KIyA2MTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5o
IgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uR3JvdXAgPENvbXBvdW5kQWN0aW9uLCBBY3Rpb25DcmVh
dGluZywgRGVmYXVsdE9yZGVyLCBDUkVBVEFCTEU+CiMgNjM0ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvYWN0aXZpdHkuaCIKQGVuZAoKQHByb3RvY29sIEFjdGlvbkNvbmN1cnJlbnQgPEFjdGlv
biwgUkVUVVJOQUJMRT4KLSBfSV9Vc2luZzsKCgotIChpZCA8QWN0aW9uR3JvdXA+KWdldENvbmN1
cnJlbnRHcm91cDsKQGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5MQoKCkBwcm90b2NvbCBSZWxh
dGl2ZVRpbWUKCgoKCgoKLSBfSV9TZXR0aW5nOwotIHNldFJlbGF0aXZlVGltZTogKEJPT0wpcmVs
YXRpdmVUaW1lOwotIF9JX1VzaW5nOwotIChCT09MKWdldFJlbGF0aXZlVGltZTsKQGVuZAoKQHBy
b3RvY29sIFJlcGVhdEludGVydmFsCiMgNjcxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwotIHNldFJlcGVhdEludGVydmFsOiAodGltZXZhbF90KXJl
cGVhdEludGVydmFsOwotIF9JX1VzaW5nOwotICh0aW1ldmFsX3QpZ2V0UmVwZWF0SW50ZXJ2YWw7
CkBlbmQKCkBwcm90b2NvbCBDb25jdXJyZW50R3JvdXBUeXBlCiMgNzA2ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldENvbmN1cnJl
bnRHcm91cFR5cGU6IGdyb3VwVHlwZTsKLSBfSV9Vc2luZzsKLSBnZXRDb25jdXJyZW50R3JvdXBU
eXBlOwpAZW5kCgpAcHJvdG9jb2wgU2luZ2xldG9uR3JvdXBzCiMgNzI4ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldFNpbmdsZXRv
bkdyb3VwczogKEJPT0wpc2luZ2xldG9uR3JvdXBzOwotIF9JX1VzaW5nOwotIChCT09MKWdldFNp
bmdsZXRvbkdyb3VwczsKQGVuZAoKQHByb3RvY29sIFNjaGVkdWxlIDxNYXAsIENvbXBvdW5kQWN0
aW9uLCBBY3Rpb25DcmVhdGluZywgUmVsYXRpdmVUaW1lLCBSZXBlYXRJbnRlcnZhbCwgQ29uY3Vy
cmVudEdyb3VwVHlwZSwgU2luZ2xldG9uR3JvdXBzLCBDUkVBVEFCTEU+CiMgNzYzICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlOiAo
aWQgPFpvbmU+KWFab25lIHNldFJlcGVhdEludGVydmFsOiAodGltZXZhbF90KXJwdEludGVydmFs
OwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEF1dG9Ecm9wOiAoQk9PTClhdXRvRHJv
cDsKCgoKLSBzZXRLZWVwRW1wdHlGbGFnOiAoQk9PTClrZWVwRW1wdHlGbGFnOwotIF9JX1VzaW5n
OwotIGF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uOiBhbkFjdGlvblR5cGU7CgotIChp
ZCA8RkFjdGlvbj4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uOiAoaWQgPEZDYWxs
PiljYWxsOwotIChpZCA8QWN0aW9uQ2FsbD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rp
b25DYWxsOiAoZnVuY190KWZwdHI7Ci0gKGlkIDxBY3Rpb25DYWxsPilhdDogKHRpbWV2YWxfdCl0
VmFsIGNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0cjphcmcxOwotIChpZCA8QWN0aW9uQ2Fs
bD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHI6YXJn
MTphcmcyOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENvdW50ZXIu
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDkyCgoKLSAoaWQgPEFjdGlvbkNhbGw+KWF0OiAo
dGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOmFyZzE6YXJnMjph
cmczOwoKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRv
OiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uVG8+KWF0OiAodGltZXZh
bF90KXRWYWwgY3JlYXRlQWN0aW9uVG86IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw6YXJnMTsK
LSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJn
ZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjsKLSAoaWQgPEFjdGlvblRvPilhdDogKHRp
bWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFy
ZzE6YXJnMjphcmczOwoKLSAoaWQgPEFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1l
dmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoSG9tb2dlbmVvdXM6IHRhcmdldCBtZXNzYWdl
OiAoU0VMKWFTZWw7CgotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBj
cmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0
aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJn
ZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPilhdDogKHRp
bWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFT
ZWw6YXJnMTphcmcyOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBj
cmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjph
cmczOwoKLSAoaWQgPEZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3Qp
dFZhbCBjcmVhdGVGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM6IHRhcmdldCBjYWxsOiAoaWQg
PEZDYWxsPiljYWxsOwotIChpZCA8RkFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1l
dmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOiB0YXJnZXQgY2FsbDog
KGlkIDxGQ2FsbD4pY2FsbDsKCgoKLSByZW1vdmU6IGFuQWN0aW9uOwoKCi0gKGlkIDxBY3Rpb25H
cm91cD4paW5zZXJ0R3JvdXA6ICh0aW1ldmFsX3QpdFZhbDsKQGVuZAoKQHByb3RvY29sIFNjaGVk
dWxlQWN0aXZpdHkgPEFjdGl2aXR5LCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lf
VXNpbmc7CgotICh0aW1ldmFsX3QpZ2V0Q3VycmVudFRpbWU7CgoKLSBzdGVwVW50aWw6ICh0aW1l
dmFsX3QpdFZhbDsKQGVuZAoKQHByb3RvY29sIFN3YXJtQWN0aXZpdHkgPFNjaGVkdWxlQWN0aXZp
dHksIFJFVFVSTkFCTEU+CgoKCi0gX0lfVXNpbmc7CgotIGdldFN3YXJtOwoKLSAoaWQgPFNjaGVk
dWxlPilnZXRTeW5jaHJvbml6YXRpb25TY2hlZHVsZTsKQGVuZAoKQHByb3RvY29sIEZvckVhY2hB
Y3Rpdml0eSA8QWN0aXZpdHksIFJFVFVSTkFCTEU+CgoKCi0gX0lfVXNpbmc7Ci0gZ2V0Q3VycmVu
dE1lbWJlcjsKQGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBD
b3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5MwoKCkBwcm90b2NvbCBTd2FybVBy
b2Nlc3MgPEFjdGlvblR5cGUsIFpvbmUsIFN5bmNocm9uaXphdGlvblR5cGU+CiMgODUwICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCi0g
c2V0SW50ZXJuYWxab25lVHlwZTogYVpvbmVUeXBlOwoKLSBfSV9Vc2luZzsKCgoKCgotIGdldElu
dGVybmFsWm9uZTsKCgoKCgotIChpZCA8U3dhcm1BY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQK
IyA5MjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpAcHJvdG9jb2wgR2V0
U3ViYWN0aXZpdHlBY3Rpb24KCgoKLSBfSV9Vc2luZzsKLSBfZ2V0U3ViYWN0aXZpdHlBY3Rpb25f
OwpAZW5kCgoKCgoKZXh0ZXJuIGlkIF9hY3Rpdml0eV9jdXJyZW50OwoKCgpleHRlcm4gaWQgX2Fj
dGl2aXR5X2NvbnRleHRfZXJyb3IgKGNvbnN0IGNoYXIgKm1hY3JvTmFtZSk7CgoKQHByb3RvY29s
IENvbmN1cnJlbnRHcm91cCA8QWN0aW9uR3JvdXAsIFJFVFVSTkFCTEU+CgoKLSBfSV9Vc2luZzsK
LSAodm9pZClfc2V0QWN0aW9uQ29uY3VycmVudF86IGFjdGlvbjsKLSBfZ2V0RW1wdHlBY3Rpb25D
b25jdXJyZW50XzsKQGVuZAoKQHByb3RvY29sIENvbmN1cnJlbnRTY2hlZHVsZSA8Q29uY3VycmVu
dEdyb3VwLCBTY2hlZHVsZSwgQ1JFQVRBQkxFPgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5NAoKCgpA
ZW5kCgpAcHJvdG9jb2wgQWN0aXZhdGlvbk9yZGVyIDxBY3Rpb25Hcm91cCwgUkVUVVJOQUJMRT4K
CgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRMYXN0OiBtZXJnZUFjdGlvbjsKCgoKLSByZW1vdmU6
IG1lcmdlQWN0aW9uOwoKQGVuZAoKCmV4dGVybiBpZCA8RXJyb3I+IEludmFsaWRTd2FybVpvbmU7
CgoKCmV4dGVybiBpZCBfYWN0aXZpdHlfem9uZTsKIyA5ODUgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9hY3Rpdml0eS5oIgpleHRlcm4gQk9PTCAoKl9hY3Rpdml0eV90cmFjZSkgKGlkKTsKIyA5
OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9hY3Rpdml0eS90eXBlcy5oIiAxCmV4dGVybiB2b2lkICpfYWN0aXZpdHlf
W107CgpleHRlcm4gaWQgRGVmYXVsdE9yZGVyOwpleHRlcm4gaWQgQWN0aXZpdHk7CmV4dGVybiBp
ZCBBY3Rpb247CmV4dGVybiBpZCBBY3Rpb25BcmdzOwpleHRlcm4gaWQgRkFjdGlvbjsKZXh0ZXJu
IGlkIEFjdGlvblRhcmdldDsKZXh0ZXJuIGlkIEFjdGlvblNlbGVjdG9yOwpleHRlcm4gaWQgQWN0
aW9uVG87CmV4dGVybiBpZCBBY3Rpb25Gb3JFYWNoOwpleHRlcm4gaWQgQWN0aW9uRm9yRWFjaEhv
bW9nZW5lb3VzOwpleHRlcm4gaWQgRkFjdGlvbkZvckVhY2g7CmV4dGVybiBpZCBGQWN0aW9uRm9y
RWFjaEhldGVyb2dlbmVvdXM7CmV4dGVybiBpZCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwpl
eHRlcm4gaWQgQWN0aW9uQ2FsbDsKZXh0ZXJuIGlkIEFjdGlvbkNoYW5nZWQ7CmV4dGVybiBpZCBG
QWN0aW9uQ3JlYXRpbmc7CmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZ0NhbGw7CmV4dGVybiBpZCBB
Y3Rpb25DcmVhdGluZ1RvOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRpbmdGb3JFYWNoOwpleHRlcm4g
aWQgRkFjdGlvbkNyZWF0aW5nRm9yRWFjaEhldGVyb2dlbmVvdXM7CmV4dGVybiBpZCBGQWN0aW9u
Q3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXM7CmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZzsKZXh0
ZXJuIGlkIEFjdGl2aXR5SW5kZXg7CmV4dGVybiBpZCBBY3Rpb25UeXBlOwpleHRlcm4gaWQgU3lu
Y2hyb25pemF0aW9uVHlwZTsKZXh0ZXJuIGlkIEF1dG9Ecm9wOwpleHRlcm4gaWQgQ29tcG91bmRB
Y3Rpb247CmV4dGVybiBpZCBBY3Rpb25Hcm91cDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5NQoKCmV4
dGVybiBpZCBBY3Rpb25Db25jdXJyZW50OwpleHRlcm4gaWQgUmVsYXRpdmVUaW1lOwpleHRlcm4g
aWQgUmVwZWF0SW50ZXJ2YWw7CmV4dGVybiBpZCBDb25jdXJyZW50R3JvdXBUeXBlOwpleHRlcm4g
aWQgU2luZ2xldG9uR3JvdXBzOwpleHRlcm4gaWQgU2NoZWR1bGU7CmV4dGVybiBpZCBTY2hlZHVs
ZUFjdGl2aXR5OwpleHRlcm4gaWQgU3dhcm1BY3Rpdml0eTsKZXh0ZXJuIGlkIEZvckVhY2hBY3Rp
dml0eTsKZXh0ZXJuIGlkIFN3YXJtUHJvY2VzczsKZXh0ZXJuIGlkIEdldFN1YmFjdGl2aXR5QWN0
aW9uOwpleHRlcm4gaWQgQ29uY3VycmVudEdyb3VwOwpleHRlcm4gaWQgQ29uY3VycmVudFNjaGVk
dWxlOwpleHRlcm4gaWQgQWN0aXZhdGlvbk9yZGVyOwoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2FjdGl2aXR5L2NsYXNzZXMuaCIgMQpleHRlcm4gaWQgaWRfQ0FjdGlvbjsKZXh0ZXJu
IGlkIGlkX1BBY3Rpb247CmV4dGVybiBpZCBpZF9QRkFjdGlvbjsKZXh0ZXJuIGlkIGlkX0ZBY3Rp
b25fYzsKZXh0ZXJuIGlkIGlkX0FjdGlvbkNhbGxfYzsKZXh0ZXJuIGlkIGlkX0FjdGlvblRvX2M7
CmV4dGVybiBpZCBpZF9BY3Rpb25Gb3JFYWNoX2M7CmV4dGVybiBpZCBpZF9BY3Rpb25Gb3JFYWNo
SG9tb2dlbmVvdXNfYzsKZXh0ZXJuIGlkIGlkX0ZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91c19j
OwpleHRlcm4gaWQgaWRfRkFjdGlvbkZvckVhY2hIb21vZ2VuZW91c19jOwpleHRlcm4gaWQgaWRf
QWN0aW9uR3JvdXBfYzsKZXh0ZXJuIGlkIGlkX0NvbmN1cnJlbnRHcm91cF9jOwpleHRlcm4gaWQg
aWRfR3JvdXBBY3Rpdml0eV9jOwpleHRlcm4gaWQgaWRfR3JvdXBJbmRleF9jOwpleHRlcm4gaWQg
aWRfR3JvdXBQZXJtdXRlZEluZGV4X2M7CmV4dGVybiBpZCBpZF9Gb3JFYWNoQWN0aXZpdHlfYzsK
ZXh0ZXJuIGlkIGlkX0ZvckVhY2hJbmRleF9jOwpleHRlcm4gaWQgaWRfQWN0aW9uVHlwZV9jOwpl
eHRlcm4gaWQgaWRfQ29tcG91bmRBY3Rpb25fYzsKZXh0ZXJuIGlkIGlkX1NjaGVkdWxlX2M7CmV4
dGVybiBpZCBpZF9BY3Rpb25Db25jdXJyZW50X2M7CmV4dGVybiBpZCBpZF9Db25jdXJyZW50U2No
ZWR1bGVfYzsKZXh0ZXJuIGlkIGlkX0FjdGl2YXRpb25PcmRlcl9jOwpleHRlcm4gaWQgaWRfU2No
ZWR1bGVBY3Rpdml0eV9jOwpleHRlcm4gaWQgaWRfU2NoZWR1bGVJbmRleF9jOwpleHRlcm4gaWQg
aWRfQWN0aW9uQ2hhbmdlZF9jOwpleHRlcm4gaWQgaWRfQ1N3YXJtUHJvY2VzczsKZXh0ZXJuIGlk
IGlkX1N3YXJtQWN0aXZpdHlfYzsKZXh0ZXJuIGlkIGlkX0FjdGlvbk1lcmdlX2M7CmV4dGVybiBp
ZCBpZF9BY3Rpdml0eV9jOwojIDQ4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkv
dHlwZXMuaCIgMgojIDk5OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIK
IyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMgojIDEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDIzICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAyCgpAcHJvdG9jb2wgU3dhcm1PYmplY3QgPENyZWF0ZSwg
RHJvcCwgQ1JFQVRBQkxFPgojIDM5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgotIF9JX1VzaW5nOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
IENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDk2CgoKCgoKLSBnZXRQcm9iZU1h
cDsKCgoKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwoKCgotIGdldFByb2JlRm9yVmFyaWFibGU6IChj
b25zdCBjaGFyICopYVZhcmlhYmxlOwoKCgotIGdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNo
YXIgKilhTWVzc2FnZTsKQGVuZAoKQHByb3RvY29sIFByb2JlQ29uZmlnCgoKCgoKLSBfSV9Vc2lu
ZzsKLSBzZXRPYmplY3RUb05vdGlmeTogYW5PYmplY3Q7Ci0gZ2V0T2JqZWN0VG9Ob3RpZnk7CkBl
bmQKCkBwcm90b2NvbCBQcm9iZSA8U3dhcm1PYmplY3QsIFByb2JlQ29uZmlnPgojIDgxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0
UHJvYmVkQ2xhc3M6IChDbGFzcyljbGFzczsKCi0gc2V0UHJvYmVkT2JqZWN0OiBvYmplY3Q7Ci0g
X0lfU2V0dGluZzsKCgoKLSBzZXRTYWZldHk7CgoKCgotIHVuc2V0U2FmZXR5OwoKLSBfSV9Vc2lu
ZzsKCgoKCgotIGNsb25lOiAoaWQgPFpvbmU+KWFab25lOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5
NwoKCgoKLSAoQ2xhc3MpZ2V0UHJvYmVkQ2xhc3M7CgoKCgotIChjb25zdCBjaGFyICopZ2V0UHJv
YmVkVHlwZTsKQGVuZAoKQHByb3RvY29sIFZhclByb2JlIDxQcm9iZSwgQ1JFQVRBQkxFPgoKCgoK
CgotIF9JX0NyZWF0aW5nOwoKCgoKLSBzZXRQcm9iZWRWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilh
VmFyaWFibGU7CgotIF9JX1NldHRpbmc7CgoKCgoKCgotIHNldE5vbkludGVyYWN0aXZlOwoKCgoK
CgotIHNldFN0cmluZ1JldHVyblR5cGU6IHJldHVyblR5cGU7CgoKCi0gc2V0RmxvYXRGb3JtYXQ6
IChjb25zdCBjaGFyICopZm9ybWF0OwoKLSBfSV9Vc2luZzsKCgotIChjb25zdCBjaGFyICopZ2V0
UHJvYmVkVmFyaWFibGU7CgoKCi0gKEJPT0wpZ2V0SW50ZXJhY3RpdmVGbGFnOwoKCi0gKHZvaWQg
Kilwcm9iZVJhdzogYW5PYmplY3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgOTgKCgoKCgotICh2b2lk
ICopcHJvYmVBc1BvaW50ZXI6IGFuT2JqZWN0OwoKCi0gcHJvYmVPYmplY3Q6IGFuT2JqZWN0OwoK
CgotIChpbnQpcHJvYmVBc0ludDogYW5PYmplY3Q7CgoKCi0gKGRvdWJsZSlwcm9iZUFzRG91Ymxl
OiBhbk9iamVjdDsKCgoKLSAoY29uc3QgY2hhciAqKXByb2JlQXNTdHJpbmc6IGFuT2JqZWN0IEJ1
ZmZlcjogKGNoYXIgKilidWZmZXI7CgoKCi0gKGlkIDxTdHJpbmc+KXByb2JlQXNTdHJpbmc6IGFu
T2JqZWN0OwoKCgoKCgotIChjb25zdCBjaGFyICopcHJvYmVBc1N0cmluZzogYW5PYmplY3QKICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXI6IChjaGFyICopYnVmCiAgICAgICAgICAgIHdpdGhG
dWxsUHJlY2lzaW9uOiAoQk9PTClwcmVjaXNpb247CgoKLSAodW5zaWduZWQpZ2V0UmFuazsKCgot
IChjb25zdCBjaGFyICopZ2V0QmFzZVR5cGU7CgoKCi0gKHVuc2lnbmVkICopZ2V0RGltczsKCgoK
LSBpdGVyYXRlQXNEb3VibGU6IGFuT2JqZWN0IHVzaW5nOiAodm9pZCAoKikgKHVuc2lnbmVkIHJh
bmssIHVuc2lnbmVkICp2ZWMsIGRvdWJsZSB2YWwpKWZ1bmM7CgoKCi0gaXRlcmF0ZUFzSW50ZWdl
cjogYW5PYmplY3QgdXNpbmc6ICh2b2lkICgqKSAodW5zaWduZWQgcmFuaywgdW5zaWduZWQgKnZl
YywgaW50IHZhbCkpZnVuYzsKCgoKLSAodm9pZClzZXREYXRhOiBhbk9iamVjdCBUbzogKHZvaWQg
KiluZXdWYWx1ZTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgIENv
dW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDk5CgoKCgoKCgotIChCT09MKXNldERh
dGE6IGFuT2JqZWN0IFRvU3RyaW5nOiAoY29uc3QgY2hhciAqKXM7CgoKCi0gKHZvaWQpc2V0RGF0
YTogYW5PYmplY3QgVG9Eb3VibGU6IChkb3VibGUpdmFsOwoKZXh0ZXJuIGlkIDxTeW1ib2w+IERl
ZmF1bHRTdHJpbmcsIENoYXJTdHJpbmcsIEludFN0cmluZzsKQGVuZAoKQHByb3RvY29sIE1lc3Nh
Z2VQcm9iZSA8UHJvYmUsIENSRUFUQUJMRT4KCgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRQ
cm9iZWRTZWxlY3RvcjogKFNFTClhU2VsOwoKCgoKCi0gc2V0UHJvYmVkTWV0aG9kTmFtZTogKGNv
bnN0IGNoYXIgKiltZXRob2ROYW1lOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFBy
b2JlZFNlbGVjdG9yOiAoU0VMKWFTZWw7CgotIF9JX1NldHRpbmc7CgoKCgotIHNldEhpZGVSZXN1
bHQ6IChCT09MKXZhbDsKCi0gX0lfVXNpbmc7CgoKLSAoQk9PTClpc1Jlc3VsdElkOwoKCgotIChC
T09MKWlzQXJndW1lbnRJZDogKHVuc2lnbmVkKXdoaWNoOwoKCgotIChjb25zdCBjaGFyICopZ2V0
UHJvYmVkTWVzc2FnZTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
Q291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMDAKCgotICh1bnNpZ25lZClnZXRB
cmdDb3VudDsKCgotICh2YWxfdClnZXRBcmc6ICh1bnNpZ25lZCl3aGljaDsKCgoKLSAoY29uc3Qg
Y2hhciAqKWdldEFyZ05hbWU6ICh1bnNpZ25lZCl3aGljaDsKCgotIChCT09MKWdldEhpZGVSZXN1
bHQ7CgoKCi0gc2V0QXJnOiAodW5zaWduZWQpd2hpY2ggVG9TdHJpbmc6IChjb25zdCBjaGFyICop
d2hhdDsKCgoKCgotIHNldEFyZzogKHVuc2lnbmVkKXdoaWNoIFRvVW5zaWduZWQ6ICh1bnNpZ25l
ZCl4OwoKCgotICh2YWxfdClkeW5hbWljQ2FsbE9uOiB0YXJnZXQ7CgoKCgotIChkb3VibGUpZG91
YmxlRHluYW1pY0NhbGxPbjogdGFyZ2V0OwoKCgoKLSAobG9uZylsb25nRHluYW1pY0NhbGxPbjog
dGFyZ2V0OwoKCgoKLSAoY29uc3QgY2hhciAqKXN0cmluZ0R5bmFtaWNDYWxsT246IHRhcmdldDsK
CgoKCi0gb2JqZWN0RHluYW1pY0NhbGxPbjogdGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVN
YXAgPFN3YXJtT2JqZWN0LCBQcm9iZUNvbmZpZywgQ1JFQVRBQkxFPgojIDMzMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIKLSBfSV9DcmVhdGluZzsKCgoKLSBzZXRQcm9i
ZWRDbGFzczogKENsYXNzKWNsYXNzOwoKLSBzZXRQcm9iZWRPYmplY3Q6IG9iamVjdDsKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAg
ICAgICAgIFBhZ2UgIDEwMQoKCi0gX0lfVXNpbmc7CgotICh1bnNpZ25lZClnZXRDb3VudDsKCgoK
LSAoQ2xhc3MpZ2V0UHJvYmVkQ2xhc3M7CgoKCgotIGFkZFByb2JlOiAoaWQgPFByb2JlPilhUHJv
YmU7CgoKCgotIGFkZFByb2JlTWFwOiBhUHJvYmVNYXA7CgoKCgoKLSBkcm9wUHJvYmVGb3JWYXJp
YWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoKCgotIGRyb3BQcm9iZUZvck1lc3NhZ2U6
IChjb25zdCBjaGFyICopYU1lc3NhZ2U7CgoKCgoKLSBkcm9wUHJvYmVNYXA6IGFQcm9iZU1hcDsK
CgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlkIDxab25lPilhWm9uZTsKCgoKCgoKLSBjbG9uZTog
KGlkIDxab25lPilhWm9uZTsKCkBlbmQKCkBwcm90b2NvbCBTd2FybSA8U3dhcm1Qcm9jZXNzLCBD
UkVBVEFCTEU+CgoKCgoKLSBfSV9Vc2luZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMDIKCgoKLSBi
dWlsZE9iamVjdHM7CgoKLSBidWlsZEFjdGlvbnM7CiMgNDA4ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqZWN0YmFzZS5oIgotIChpZCA8QWN0aXZpdHk+KWFjdGl2YXRlSW46IHN3YXJtQ29u
dGV4dDsKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcDsKCgotIChpZCA8UHJvYmVNYXA+
KWdldENvbXBsZXRlUHJvYmVNYXA7CgoKLSAoaWQgPFZhclByb2JlPilnZXRQcm9iZUZvclZhcmlh
YmxlOiAoY29uc3QgY2hhciAqKWFWYXJpYWJsZTsKQGVuZAoKQHByb3RvY29sIERlZmF1bHRQcm9i
ZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4KCgoKCgoKCkBlbmQKCkBwcm90b2NvbCBDdXN0b21Q
cm9iZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4KIyA0NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgoKCgoKKyBjcmVhdGU6IChpZCA8Wm9u
ZT4pYVpvbmUgZm9yQ2xhc3M6IChDbGFzcylhQ2xhc3Mgd2l0aElkZW50aWZpZXJzOiAoY29uc3Qg
Y2hhciAqKXZhcnMsIC4uLjsKLSBfSV9TZXR0aW5nOwoKCi0gYWRkUHJvYmVzRm9yQ2xhc3M6IChD
bGFzcykgYUNsYXNzCiAgICB3aXRoSWRlbnRpZmllcnM6IChjb25zdCBjaGFyICopdmFycywgLi4u
OwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgRW1wdHlQcm9iZU1hcCA8Q3VzdG9tUHJvYmVN
YXAsIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZTogKGlkIDxab25lPilh
Wm9uZSBmb3JDbGFzczogKENsYXNzKWFDbGFzczsKQGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEw
MwoKCkBwcm90b2NvbCBDb21wbGV0ZVByb2JlTWFwIDxQcm9iZU1hcCwgQ1JFQVRBQkxFPgoKCgoK
CgoKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlVmFyTWFwIDxQcm9iZU1hcCwgQ1JFQVRBQkxFPgoK
CgoKCkBlbmQKCkBwcm90b2NvbCBQcm9iZUxpYnJhcnkgPENyZWF0ZSwgRHJvcCwgUHJvYmVDb25m
aWcsIENSRUFUQUJMRT4KIyA0OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNl
LmgiCi0gX0lfVXNpbmc7CiMgNTA3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgotIHNldERpc3BsYXlQcmVjaXNpb246ICh1bnNpZ25lZCluU2lnRGlzcGxheTsKCgoKLSAo
dW5zaWduZWQpZ2V0RGlzcGxheVByZWNpc2lvbjsKCgoKCgoKCi0gc2V0U2F2ZWRQcmVjaXNpb246
ICh1bnNpZ25lZCluU2lnU2F2ZWQ7CgoKCi0gKHVuc2lnbmVkKWdldFNhdmVkUHJlY2lzaW9uOwoK
CgotIChCT09MKWlzUHJvYmVNYXBEZWZpbmVkRm9yOiAoQ2xhc3MpYUNsYXNzOwotIChCT09MKWlz
UHJvYmVNYXBEZWZpbmVkRm9yT2JqZWN0OiBhbk9iamVjdDsKCgoKCgoKLSAoaWQgPFByb2JlTWFw
PilnZXRQcm9iZU1hcEZvcjogKENsYXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9i
ZU1hcEZvck9iamVjdDogYW5PYmplY3Q7CgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgIENvdW50ZXIubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTA0CgoKCi0g
KGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVQcm9iZU1hcEZvcjogKENsYXNzKWFDbGFzczsKLSAo
aWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVByb2JlTWFwRm9yT2JqZWN0OiBhbk9iamVjdDsKCgoK
Ci0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVWYXJNYXBGb3I6IChDbGFzcylhQ2xhc3M7Ci0g
KGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVWYXJNYXBGb3JPYmplY3Q6IGFuT2JqZWN0OwoKCgoK
CgotIChpZCA8VmFyUHJvYmU+KWdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZh
ciBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwotIChpZCA8VmFyUHJvYmU+KWdldFByb2JlRm9yVmFy
aWFibGU6IChjb25zdCBjaGFyICopYVZhciBpbk9iamVjdDogYW5PYmplY3Q7CgoKCgoKCi0gKGlk
IDxNZXNzYWdlUHJvYmU+KWdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2Fn
ZSBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwotIChpZCA8TWVzc2FnZVByb2JlPilnZXRQcm9iZUZv
ck1lc3NhZ2U6IChjb25zdCBjaGFyICopYU1lc3NhZ2UgaW5PYmplY3Q6IGFuT2JqZWN0OwoKCgoK
LSBzZXRQcm9iZU1hcDogKGlkIDxQcm9iZU1hcD4pYU1hcCBGb3I6IChDbGFzcylhQ2xhc3M7Ci0g
c2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+KWFNYXAgRm9yT2JqZWN0OiBhbk9iamVjdDsKCkBl
bmQKCgpleHRlcm4gaWQgPFByb2JlTGlicmFyeT4gcHJvYmVMaWJyYXJ5OwoKQHByb3RvY29sIEFj
dGl2aXR5Q29udHJvbCA8U3dhcm1PYmplY3QsIENSRUFUQUJMRT4KIyA1OTIgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwoK
CgoKCi0gKHZvaWQpYXR0YWNoVG9BY3Rpdml0eTogKGlkIDxTY2hlZHVsZUFjdGl2aXR5PilhbkFj
dGl2aXR5OwoKCgoKCgoKLSAoaWQgPFN5bWJvbD4pcnVuQWN0aXZpdHk7CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgQ291bnRlci5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAxMDUKCgoKCgoKCgotIChpZCA8U3ltYm9sPilzdG9wQWN0aXZpdHk7CgoKCgoKCgotIChp
ZCA8U3ltYm9sPiluZXh0QWN0aW9uOwoKCgotIChpZCA8U3ltYm9sPilzdGVwQWN0aW9uOwoKCgoK
Ci0gKGlkIDxTeW1ib2w+KXN0ZXBVbnRpbDogKHRpbWV2YWxfdClzdG9wVGltZTsKCgoKCgotICh2
b2lkKXVwZGF0ZVN0YXRlVmFyOwoKCi0gKGlkIDxTeW1ib2w+KWdldFN0YXR1czsKCgotICh2b2lk
KXRlcm1pbmF0ZTsKCgotIChpZCA8U2NoZWR1bGVBY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQK
CkBjbGFzcyBQcm9iZTsKQGNsYXNzIFZhclByb2JlOwpAY2xhc3MgTWVzc2FnZVByb2JlOwpAY2xh
c3MgUHJvYmVNYXA7CkBjbGFzcyBEZWZhdWx0UHJvYmVNYXA7CkBjbGFzcyBDdXN0b21Qcm9iZU1h
cDsKQGNsYXNzIEVtcHR5UHJvYmVNYXA7CkBjbGFzcyBDb21wbGV0ZVByb2JlTWFwOwpAY2xhc3Mg
Q29tcGxldGVWYXJNYXA7CkBjbGFzcyBQcm9iZUxpYnJhcnk7CkBjbGFzcyBBY3Rpdml0eUNvbnRy
b2w7CkBjbGFzcyBTd2FybTsKQGNsYXNzIFN3YXJtT2JqZWN0OwoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICBDb3VudGVyLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
IDEwNgoKCgpleHRlcm4gY29uc3QgY2hhciAqc3dhcm1fdmVyc2lvbjsKIyAxMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm1PYmplY3QuaCIgMgoKQGludGVyZmFjZSBT
d2FybU9iamVjdDogQ3JlYXRlRHJvcCA8U3dhcm1PYmplY3Q+CnsKfQoKLSBnZXRQcm9iZU1hcDsK
LSBnZXRDb21wbGV0ZVByb2JlTWFwOwotIGdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFy
ICopYVZhcmlhYmxlOwotIGdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2Fn
ZTsKLSAodm9pZClldmVudE9jY3VycmVkT246IGFuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAg
dmlhOiBhUHJvYmUKICAgICAgICAgIHdpdGhQcm9iZVR5cGU6IChjb25zdCBjaGFyICopYVByb2Jl
VHlwZQogICAgICAgICAgICAgICAgICAgICBvbjogKGNvbnN0IGNoYXIgKilwcm9iZWRFbGVtZW50
CiAgICAgICAgICAgICAgICAgb2ZUeXBlOiAoY2hhcilkYXRhVHlwZQogICAgICAgICAgICAgICB3
aXRoRGF0YTogKHZvaWQgKilkYXRhOwpAZW5kCiMgNyAiQ291bnRlci5oIiAyCgoKCkBpbnRlcmZh
Y2UgQ291bnRlcjogU3dhcm1PYmplY3QKewogIGludCB2YWx1ZTsKICBpbnQgaW5jcjsKfQoKLSBz
dGVwOwotIHNldEluY3I6IChpbnQpIG47Ci0gcHJpbnQ7CgpAZW5kCiMgNyAiQ291bnRlci5tIiAy
CgoKCkBpbXBsZW1lbnRhdGlvbiBDb3VudGVyCgotc3RlcCB7CiAgdmFsdWUgKz0gaW5jcjsKICBy
ZXR1cm4gc2VsZjsKfQoKLXNldEluY3I6IChpbnQpIG4gewogIGluY3IgPSBuOwogIHJldHVybiBz
ZWxmOwp9CgotcHJpbnQgewogIGZwcmludGYgKHN0ZG91dCwgIiVkXG4iLCB2YWx1ZSk7CiAgcmV0
dXJuIHNlbGY7Cn0KCkBlbmQKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgMQoKCiMgMTAgIm1haW4ubSIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHMuaCIgMQojIDExICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHMuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvc3dhcm0uaCIgMQojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMQoj
IDE4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCnR5cGVkZWYgZW51bSB7ZmNh
bGxfdHlwZV92b2lkID0gMCwKICAgICAgICAgICAgICBmY2FsbF90eXBlX2Jvb2xlYW4sCiAgICAg
ICAgICAgICAgZmNhbGxfdHlwZV91Y2hhciwgZmNhbGxfdHlwZV9zY2hhciwKICAgICAgICAgICAg
ICBmY2FsbF90eXBlX3VzaG9ydCwgZmNhbGxfdHlwZV9zc2hvcnQsCiAgICAgICAgICAgICAgZmNh
bGxfdHlwZV91aW50LCBmY2FsbF90eXBlX3NpbnQsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91
bG9uZywgZmNhbGxfdHlwZV9zbG9uZywKICAgICAgICAgICAgICBmY2FsbF90eXBlX3Vsb25nbG9u
ZywgZmNhbGxfdHlwZV9zbG9uZ2xvbmcsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV9mbG9hdCwg
ZmNhbGxfdHlwZV9kb3VibGUsIGZjYWxsX3R5cGVfbG9uZ19kb3VibGUsCiAgICAgICAgICAgICAg
ZmNhbGxfdHlwZV9vYmplY3QsIGZjYWxsX3R5cGVfY2xhc3MsCiAgICAgICAgICAgICAgZmNhbGxf
dHlwZV9zdHJpbmcsIGZjYWxsX3R5cGVfc2VsZWN0b3IsCiAgICAgICAgICAgICAgZmNhbGxfdHlw
ZV9qb2JqZWN0LCBmY2FsbF90eXBlX2pzdHJpbmcsIGZjYWxsX3R5cGVfanNlbGVjdG9yLAogICAg
ICAgICAgICAgIGZjYWxsX3R5cGVfaWlkCiAgICAgICAgICAgICAgfSBmY2FsbF90eXBlX3Q7Cgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDM0ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0
NyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDE5OSAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVm
LmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI4NyAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK
dHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy9vYmpjLmgiIDIKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBCT09MOwojIDUxICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiCnR5cGVkZWYgY29uc3Qgc3RydWN0
IG9iamNfc2VsZWN0b3IKewogIHZvaWQgKnNlbF9pZDsKICBjb25zdCBjaGFyICpzZWxfdHlwZXM7
Cn0gKlNFTDsKCmlubGluZSBzdGF0aWMgQk9PTApzZWxfZXEgKFNFTCBzMSwgU0VMIHMyKQp7CiAg
aWYgKHMxID09IDAgfHwgczIgPT0gMCkKICAgIHJldHVybiBzMSA9PSBzMjsKICBlbHNlCiAgICBy
ZXR1cm4gczEtPnNlbF9pZCA9PSBzMi0+c2VsX2lkOwp9CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAg
IDIKCgoKCnR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0IHsKICBzdHJ1Y3Qgb2JqY19jbGFzcyog
Y2xhc3NfcG9pbnRlcjsKfSAqaWQ7CgoKCgoKdHlwZWRlZiBpZCAoKklNUCkoaWQsIFNFTCwgLi4u
KTsKCgoKCgoKdHlwZWRlZiBjaGFyICpTVFI7CiMgOTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL29iamMuaCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19jbGFzcyAqTWV0YUNsYXNzOwp0eXBl
ZGVmIHN0cnVjdCBvYmpjX2NsYXNzICpDbGFzczsKc3RydWN0IG9iamNfY2xhc3MgewogIE1ldGFD
bGFzcyBjbGFzc19wb2ludGVyOwoKICBzdHJ1Y3Qgb2JqY19jbGFzcyogc3VwZXJfY2xhc3M7CgoK
ICBjb25zdCBjaGFyKiBuYW1lOwogIGxvbmcgdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIGluZm87
CgogIGxvbmcgaW5zdGFuY2Vfc2l6ZTsKCgoKICBzdHJ1Y3Qgb2JqY19pdmFyX2xpc3QqIGl2YXJz
OwoKCgoKCgogIHN0cnVjdCBvYmpjX21ldGhvZF9saXN0KiBtZXRob2RzOwoKCiAgc3RydWN0IHNh
cnJheSAqIGR0YWJsZTsKCiAgc3RydWN0IG9iamNfY2xhc3MqIHN1YmNsYXNzX2xpc3Q7CiAgc3Ry
dWN0IG9iamNfY2xhc3MqIHNpYmxpbmdfY2xhc3M7CgogIHN0cnVjdCBvYmpjX3Byb3RvY29sX2xp
c3QgKnByb3RvY29sczsKICB2b2lkKiBnY19vYmplY3RfdHlwZTsKfTsKIyAxNDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIKQGNsYXNzIFByb3RvY29sOwoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAg
ICAgIFBhZ2UgICAgMwoKCgp0eXBlZGVmIHZvaWQqIHJldHZhbF90Owp0eXBlZGVmIHZvaWQoKmFw
cGx5X3QpKHZvaWQpOwp0eXBlZGVmIHVuaW9uIHsKICBjaGFyICphcmdfcHRyOwogIGNoYXIgYXJn
X3JlZ3Nbc2l6ZW9mIChjaGFyKildOwp9ICphcmdsaXN0X3Q7CgoKSU1QIG9iamNfbXNnX2xvb2t1
cCAoaWQgcmVjZWl2ZXIsIFNFTCBvcCk7CiMgMzMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9k
ZWZvYmouaCIgMgoKdHlwZWRlZiB1bmlvbiB7CiAgaWQgb2JqZWN0OwogIFNFTCBzZWxlY3RvcjsK
ICBDbGFzcyBfY2xhc3M7CiAgY29uc3QgY2hhciAqc3RyaW5nOwogIEJPT0wgYm9vbGVhbjsKICBj
aGFyIHNjaGFyOwogIHVuc2lnbmVkIGNoYXIgdWNoYXI7CiAgc2hvcnQgc3Nob3J0OwogIHVuc2ln
bmVkIHNob3J0IHVzaG9ydDsKICBpbnQgc2ludDsKICB1bnNpZ25lZCBpbnQgdWludDsKICBsb25n
IHNsb25nOwogIHVuc2lnbmVkIGxvbmcgdWxvbmc7CiAgbG9uZyBsb25nIHNsb25nbG9uZzsKICB1
bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdsb25nOwogIGZsb2F0IF9mbG9hdDsKICBkb3VibGUgX2Rv
dWJsZTsKICBsb25nIGRvdWJsZSBfbG9uZ19kb3VibGU7CiAgdm9pZCAqaWlkOwp9IHR5cGVzX3Q7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgZmNhbGxfdHlwZV90IHR5cGU7CiAgdHlwZXNfdCB2YWw7Cn0g
dmFsX3Q7CgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBl
LmgiIDEKIyAyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiCiMg
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiIDEKIyAzMCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvb2JqYy5oIiAxCiMgMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpj
L09iamVjdC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJl
YW0uaCIgMQojIDMwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5o
IgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDMxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIiAyCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAxCiMgMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL2hhc2guaCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgNAoKCiMgMSAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDMyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDIKIyAx
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzMyAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamMvZXh0ZXJudmFyLmgiIDEKIyAzNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amMvaGFzaC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIyAyNiAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI4
MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZz
LmgiIDEgMwojIDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDMxMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEgMwoj
IDMxMiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI3ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1lbWNweSAodm9pZCAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny
Yywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9f
Y29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4g
dm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAgICAgIGludCBfX2MsIHNpemVfdCBfX24p
CiAgICAgICAgICAgIDsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZvaWQgKl9fcywgaW50IF9f
Yywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEs
IF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19z
LCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1
cmVfXykpOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWlu
Lm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgIDUKCgoKCmV4dGVybiB2b2lkICpyYXdtZW1j
aHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNp
emVfdCBfX24pCiAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
KQogICAgICAgICAgICA7CgpleHRlcm4gY2hhciAqc3RybmNhdCAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRl
cm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoK
CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS94
bG9jYWxlLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IGxv
Y2FsZV9kYXRhICpfX2xvY2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpf
X2N0eXBlX2I7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0
eXBlX3RvdXBwZXI7Cn0gKl9fbG9jYWxlX3Q7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDIgMwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkg
ICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgNgoKCgpleHRlcm4gaW50IF9fc3RyY29sbF9sIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBzaXplX3QgX19z
dHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6ZV90IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2wpIDsKCgoKCmV4dGVybiBj
aGFyICpzdHJkdXAgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf
XykpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywg
c2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMg
MTU1ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25z
dCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGNoYXIgKnN0cnJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjaHJudWwgKF9fY29uc3QgY2hhciAq
X19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXpl
X3Qgc3RyY3NwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gc2l6ZV90IHN0
cnNwbiAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgICAg
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChf
X2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICAgICAgICAgIF9f
YXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnN0ciAoX19jb25zdCBj
aGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2Nv
bnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAg
ICAgICAgICA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1h
aW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgNwoKCgpleHRlcm4gY2hhciAqX19zdHJ0
b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCgoKCgoK
ZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19o
YXlzdGFja2xlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX25lZWRsZSwg
c2l6ZV90IF9fbmVlZGxlbGVuKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgoKCmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNp
emVfdCBfX24pIDsKZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0
LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBz
aXplX3QgX19uKSA7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25zdCBjaGFyICpfX3Mp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChf
X2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9f
ZXJybnVtKSA7CgoKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIg
Kl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQg
Kl9fcywgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpf
X3NyYywgdm9pZCAqX19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZv
aWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAgOAoKCgpleHRlcm4g
aW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3Qg
X19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNo
YXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50IGZmcyAoaW50IF9f
aSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCgpleHRlcm4gaW50IGZmc2wgKGxvbmcgaW50
IF9fbCkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBpbnQg
ZmZzbGwgKGxvbmcgbG9uZyBpbnQgX19sbCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChj
b25zdCkpOwoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKCgoKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxl
X3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBfX3N0cm5j
YXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJz
ZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2Nt
cCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgIDkKCgoKZXh0
ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSA7CgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
KQogICAgICAgICAgICA7CmV4dGVybiBjaGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKCgoKZXh0
ZXJuIGNoYXIgKl9fc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
OwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgOwoKCmV4dGVybiB2b2lk
ICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmJh
c2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsKIyAzNTYgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAxIDMKIyAzNTcgIi91
c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDEgMwojIDUyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIv
dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIg
MiAzCiMgMzcgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2VuZGlhbi5oIiAxIDMKIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKIyA1MyAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAz
CgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDIgMwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAg
ICBQYWdlICAgMTAKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2ln
bmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQg
X19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25f
XyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFk
X3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90Owp0eXBlZGVmIF9fdV9p
bnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CnR5cGVkZWYgX191X2xvbmcgX19p
bm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBlZGVmIF9fdV9pbnQgX19ubGlua190
Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CnR5
cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3NpemVfdDsKdHlwZWRlZiBfX3VfbG9u
ZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxpbTY0X3Q7CnR5cGVkZWYgX191X2lu
dCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNp
ZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3di
bGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tp
ZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDEx
CgoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19p
cGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBlZGVmIGxv
bmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKCnR5cGVk
ZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0
X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBf
X2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKCnR5cGVkZWYg
X19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX190X3NjYWxhcl90Owp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7CgoKdHlwZWRlZiBpbnQgX19pbnRw
dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9w
dGhyZWFkdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY4
ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewog
ICAgaW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDIgMwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAg
ICBQYWdlICAgMTIKCgogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsK
CgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsK
CgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0
ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFy
YW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJk
c2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVf
dCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2Fp
dGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15
Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tl
eV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21f
Y291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1
Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgIDEzCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsK
fSBwdGhyZWFkX211dGV4YXR0cl90OwoKCgp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoK
CnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3bG9ja190CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19yd19sb2NrOwogIGludCBfX3J3X3JlYWRlcnM7CiAgX3B0aHJlYWRfZGVzY3IgX19y
d193cml0ZXI7CiAgX3B0aHJlYWRfZGVzY3IgX19yd19yZWFkX3dhaXRpbmc7CiAgX3B0aHJlYWRf
ZGVzY3IgX19yd193cml0ZV93YWl0aW5nOwogIGludCBfX3J3X2tpbmQ7CiAgaW50IF9fcndfcHNo
YXJlZDsKfSBwdGhyZWFkX3J3bG9ja190OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbG9j
a2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCnR5cGVk
ZWYgdm9sYXRpbGUgaW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
c3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fYmFfbG9jazsKICBpbnQgX19iYV9yZXF1aXJlZDsK
ICBpbnQgX19iYV9wcmVzZW50OwogIF9wdGhyZWFkX2Rlc2NyIF9fYmFfd2FpdGluZzsKfSBwdGhy
ZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhy
ZWFkX2JhcnJpZXJhdHRyX3Q7CgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAxNAoKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyBpbnQgcHRocmVhZF90OwojIDE0NCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMiAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCiMgMjE3ICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHZvaWQgKl9fbWVt
cGNweV9zbWFsbCAodm9pZCAqLCBjaGFyLCBjaGFyLCBjaGFyLCBjaGFyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQxNl90LCBfX3VpbnQxNl90LCBfX3VpbnQz
Ml90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBz
aXplX3QpOwpleHRlcm4gX19pbmxpbmUgdm9pZCAqCl9fbWVtcGNweV9zbWFsbCAodm9pZCAqX19k
ZXN0MSwKICAgICAgICAgICAgICAgICBjaGFyIF9fc3JjMF8xLCBjaGFyIF9fc3JjMl8xLCBjaGFy
IF9fc3JjNF8xLCBjaGFyIF9fc3JjNl8xLAogICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19z
cmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICAgX191aW50MzJfdCBf
X3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgICBzaXplX3QgX19z
cmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAgICBfX3VpbnQxNl90IF9f
dXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgdW5zaWduZWQgY2hhciBfX2M7CiAgfSAq
X191ID0gX19kZXN0MTsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewog
ICAgY2FzZSAxOgogICAgICBfX3UtPl9fYyA9IF9fc3JjMF8xOwogICAgICBfX3UgPSBfX2V4dGVu
c2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAg
IF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgMik7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwog
ICAgICBfX3UtPl9fYyA9IF9fc3JjMl8xOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6CiAgICAgIF9fdS0+X191aSA9
IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsK
ICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX2Mg
PSBfX3NyYzRfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7
CiAgICAgIGJyZWFrOwogICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191
c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
Mik7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsK
ICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+
X191c2kgPSBfX3NyYzRfMjsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAxNQoKCiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fYyA9IF9fc3JjNl8x
OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0
XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBi
cmVhazsKICAgIH0KICByZXR1cm4gKHZvaWQgKikgX191Owp9CiMgMzcxICIvdXNyL2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpf
X3MsIGludCBfX2MpOwojIDM5NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVy
biBfX2lubGluZSBjaGFyICpfX3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3Vp
bnQxNl90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDMyX3Qs
IF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJjcHlfc21h
bGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAgICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9f
dWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAgICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBf
X3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAg
dW5pb24gewogICAgX191aW50MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVu
c2lnbmVkIGNoYXIgX191YzsKICB9ICpfX3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgo
dW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3Vj
ID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3Ny
YzBfMjsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBf
MjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9f
dS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9f
c3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2Ug
NzoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICAxNgoKCiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80Owog
ICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5f
X3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDg6CiAg
ICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0XzQ7CiAgICAgIGJyZWFrOwog
ICAgfQogIHJldHVybiBfX2Rlc3Q7Cn0KIyA1NTQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHBjcHlfc21hbGwgKGNoYXIgKiwgX191aW50
MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RwY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9f
c3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBf
X3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3Ny
Y2xlbikKewogIHVuaW9uIHsKICAgIHVuc2lnbmVkIGludCBfX3VpOwogICAgdW5zaWduZWQgc2hv
cnQgaW50IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogICAgY2hhciBfX2M7CiAgfSAq
X191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4p
CiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBj
YXNlIDQ6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9f
dS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAg
ICAgUGFnZSAgIDE3CgoKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsg
MSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsK
ICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+
X191c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191
ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA4Ogog
ICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAzKTsKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0
dXJuICZfX3UtPl9fYzsKfQojIDg3MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hh
ciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9
IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9f
cmVqZWN0KQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lu
bGluZSBzaXplX3QgX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVj
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Mik7
CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVz
dWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QxCiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQogICAg
KytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3Qg
X19zdHJjc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVj
dDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAgICBjaGFyIF9f
cmVqZWN0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAm
JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0
MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTI4ICIvdXNyL2luY2x1
ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMSAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAg
ICAgICAgICAgICAgICBQYWdlICAgMTgKCgpfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpfX3Ms
IGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGls
ZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MyIChfX2NvbnN0IGNo
YXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMiAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MikKewogIHJl
Z2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MikKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MzIChf
X2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0Myk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9f
cmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQyCiAgICAgICAgIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2Nl
cHQzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5ODMgIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2My
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9f
c3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIpCnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19z
ICE9IF9fYWNjZXB0MikKICAgICsrX19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQg
KikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9f
c3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyLAogICAgICAgICAgICAgIGludCBfX2FjY2VwdDMp
CnsKCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9
IF9fYWNjZXB0MgogICAgICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19zOwogIHJl
dHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgICAxOQoKCn0KIyAxMDI2ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdApzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9f
c3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCnsKICBfX2NvbnN0IGNoYXIgKl9fZW5kID0gKF9fY29u
c3QgY2hhciAqKSBtZW1jaHIgKF9fc3RyaW5nLCAnXDAnLCBfX21heGxlbik7CiAgcmV0dXJuIF9f
ZW5kID8gKHNpemVfdCkgKF9fZW5kIC0gX19zdHJpbmcpIDogX19tYXhsZW47Cn0KIyAxMDQ1ICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ry
dG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9fbmV4dHApOwpleHRlcm4g
X19pbmxpbmUgY2hhciAqCl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hh
ciAqKl9fbmV4dHApCnsKICBjaGFyICpfX3Jlc3VsdDsKICBpZiAoX19zID09ICgodm9pZCAqKTAp
KQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19fczsK
ICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBlbHNlCiAg
ICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpf
X3MgIT0gX19zZXApCiAgICAgICAgKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCiAgICAg
ICAgKl9fbmV4dHAgPSBfX3M7CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAqX19zID0g
J1wwJzsKICAgICAgICAgICpfX25leHRwID0gX19zICsgMTsKICAgICAgICB9CiAgICB9CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CiMgMTA5NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVj
dCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0
dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAo
Kl9fcmV0dmFsID09IF9fcmVqZWN0KQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBp
ZiAoKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0
KSAmJiAoX19yZWplY3QpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws
IF9fcmVqZWN0KSA6IHN0cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikw
KSkKICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAq
KTApOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2Vw
XzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4g
X19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwg
Y2hhciBfX3JlamVjdDIpCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
ICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgMjAKCgp7CiAgcmVnaXN0ZXIgY2hh
ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJl
dHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwg
Kl9fcmV0dmFsID09IF9fcmVqZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAg
ewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19j
cCAhPSAnXDAnICYmICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCiAg
ICAgICAgKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAg
ICAqX19zID0gX19jcDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAg
ICBlbHNlCiAgICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZh
bDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhciBfX3JlamVjdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzNj
IChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWpl
Y3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9
PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3Jl
dHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MgogICAgICB8fCAqX19y
ZXR2YWwgPT0gX19yZWplY3QzKQogICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICB7CiAg
ICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAgd2hpbGUgKCpfX2NwICE9
ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2NwICE9IF9fcmVqZWN0MgogICAgICAg
ICAgICAgJiYgKl9fY3AgIT0gX19yZWplY3QzKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpf
X2NwICE9ICdcMCcpCiAgICAgICAgewogICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAq
KCpfX3MpKysgPSAnXDAnOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZv
aWQgKikwKTsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFy
ICpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJu
IF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9f
cmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZh
bCA9PSAoKHZvaWQgKikwKSkKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyMQoKCiAgICByZXR1cm4gKCh2
b2lkICopMCk7CiAgaWYgKCgqX19zID0gX19leHRlbnNpb25fXyAoeyBjaGFyIF9fYTAsIF9fYTEs
IF9fYTI7IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19yZWplY3QpICYmICgoc2l6ZV90KShjb25z
dCB2b2lkICopKChfX3JlamVjdCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoX19yZWpl
Y3QpID09IDEpID8gKChfX2EwID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMF0sIF9f
YTAgPT0gJ1wwJykgPyAoKHZvaWQpIChfX3JldHZhbCksICgodm9pZCAqKTApKSA6ICgoX19hMSA9
ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzFdLCBfX2ExID09ICdcMCcpID8gKF9fZXh0
ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX2EwKSAmJiAoX19hMCkgPT0gJ1wwJyA/
IChjaGFyICopIF9fcmF3bWVtY2hyIChfX3JldHZhbCwgX19hMCkgOiBzdHJjaHIgKF9fcmV0dmFs
LCBfX2EwKSkpIDogKChfX2EyID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMl0sIF9f
YTIgPT0gJ1wwJykgPyBfX3N0cnBicmtfYzIgKF9fcmV0dmFsLCBfX2EwLCBfX2ExKSA6ICgoKF9f
Y29uc3QgY2hhciAqKSAoX19yZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJwYnJrX2MzIChfX3Jl
dHZhbCwgX19hMCwgX19hMSwgX19hMikgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3QpKSkp
KSA6IHN0cnBicmsgKF9fcmV0dmFsLCBfX3JlamVjdCkpOyB9KSkgIT0gKCh2b2lkICopMCkpCiAg
ICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQojIDExODggIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiMg
MjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKCiMgMSAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDUyOCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9f
YXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3Qg
X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21h
bGxvY19fKSk7CiMgMTE4OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKCmV4
dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVf
XyAoKF9fbWFsbG9jX18pKTsKIyAxMjEyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
ZXh0ZXJuIGNoYXIgKl9fc3RybmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMzYwICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwojIDM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2Jq
Yy9oYXNoLmgiIDIKIyA0MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgp0
eXBlZGVmIHN0cnVjdCBjYWNoZV9ub2RlCnsKICBzdHJ1Y3QgY2FjaGVfbm9kZSAqbmV4dDsKCiAg
Y29uc3Qgdm9pZCAqa2V5OwoKCgogIHZvaWQgKnZhbHVlOwp9ICpub2RlX3B0cjsKIyA2NCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgp0eXBlZGVmIHVuc2lnbmVkIGludCAo
Kmhhc2hfZnVuY190eXBlKSh2b2lkICosIGNvbnN0IHZvaWQgKik7CiMgNzMgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKdHlwZWRlZiBpbnQgKCpjb21wYXJlX2Z1bmNfdHlw
ZSkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwojIDgyICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy9oYXNoLmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgbm9kZV9wdHIgKm5vZGVfdGFi
bGU7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDIyCgoKCiAgdW5zaWduZWQgaW50IHNpemU7CgoKICB1
bnNpZ25lZCBpbnQgdXNlZDsKICB1bnNpZ25lZCBpbnQgbWFzazsKCgoKICB1bnNpZ25lZCBpbnQg
bGFzdF9idWNrZXQ7CgoKCiAgaGFzaF9mdW5jX3R5cGUgaGFzaF9mdW5jOwoKICBjb21wYXJlX2Z1
bmNfdHlwZSBjb21wYXJlX2Z1bmM7Cn0gY2FjaGVfdDsKCnR5cGVkZWYgY2FjaGVfdCAqY2FjaGVf
cHRyOwoKCgpleHRlcm4gY2FjaGVfcHRyIG1vZHVsZV9oYXNoX3RhYmxlLCBjbGFzc19oYXNoX3Rh
YmxlOwoKCgpjYWNoZV9wdHIgaGFzaF9uZXcgKHVuc2lnbmVkIGludCBzaXplLAogICAgICAgICAg
ICAgICAgICAgIGhhc2hfZnVuY190eXBlIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgICAgICBj
b21wYXJlX2Z1bmNfdHlwZSBjb21wYXJlX2Z1bmMpOwoKCgp2b2lkIGhhc2hfZGVsZXRlIChjYWNo
ZV9wdHIgY2FjaGUpOwoKCgoKCgp2b2lkIGhhc2hfYWRkIChjYWNoZV9wdHIgKmNhY2hlcCwgY29u
c3Qgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7CgoKCgp2b2lkIGhhc2hfcmVtb3ZlIChjYWNoZV9w
dHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtleSk7CiMgMTQyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqYy9oYXNoLmgiCm5vZGVfcHRyIGhhc2hfbmV4dCAoY2FjaGVfcHRyIGNhY2hlLCBub2Rl
X3B0ciBub2RlKTsKCgoKdm9pZCAqaGFzaF92YWx1ZV9mb3Jfa2V5IChjYWNoZV9wdHIgY2FjaGUs
IGNvbnN0IHZvaWQgKmtleSk7CgoKCkJPT0wgaGFzaF9pc19rZXlfaW5faGFzaCAoY2FjaGVfcHRy
IGNhY2hlLCBjb25zdCB2b2lkICprZXkpOwojIDE2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvaGFzaC5oIgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAg
bWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDIzCgoKc3RhdGljIGlubGluZSB1bnNp
Z25lZCBpbnQKaGFzaF9wdHIgKGNhY2hlX3B0ciBjYWNoZSwgY29uc3Qgdm9pZCAqa2V5KQp7CiAg
cmV0dXJuICgoc2l6ZV90KWtleSAvIHNpemVvZiAodm9pZCAqKSkgJiBjYWNoZS0+bWFzazsKfQoK
CgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cmhhc2hfc3RyaW5nIChjYWNoZV9wdHIgY2Fj
aGUsIGNvbnN0IHZvaWQgKmtleSkKewogIHVuc2lnbmVkIGludCByZXQgPSAwOwogIHVuc2lnbmVk
IGludCBjdHIgPSAwOwoKCiAgd2hpbGUgKCooY2hhciopa2V5KSB7CiAgICByZXQgXj0gKihjaGFy
KilrZXkrKyA8PCBjdHI7CiAgICBjdHIgPSAoY3RyICsgMSkgJSBzaXplb2YgKHZvaWQgKik7CiAg
fQoKICByZXR1cm4gcmV0ICYgY2FjaGUtPm1hc2s7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQKY29t
cGFyZV9wdHJzIChjb25zdCB2b2lkICprMSwgY29uc3Qgdm9pZCAqazIpCnsKICByZXR1cm4gIShr
MSAtIGsyKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludApjb21wYXJlX3N0cmluZ3MgKGNvbnN0IHZv
aWQgKmsxLCBjb25zdCB2b2lkICprMikKewogIGlmIChrMSA9PSBrMikKICAgIHJldHVybiAxOwog
IGVsc2UgaWYgKGsxID09IDAgfHwgazIgPT0gMCkKICAgIHJldHVybiAwOwogIGVsc2UKICAgIHJl
dHVybiAhX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19zMV9sZW4sIF9fczJfbGVuOyAoX19idWls
dGluX2NvbnN0YW50X3AgKGsxKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoazIpICYmIChfX3Mx
X2xlbiA9IHN0cmxlbiAoazEpLCBfX3MyX2xlbiA9IHN0cmxlbiAoazIpLCAoISgoc2l6ZV90KShj
b25zdCB2b2lkICopKChrMSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoazEpID09IDEp
IHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsyKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8g
bWVtY21wICgoX19jb25zdCBjaGFyICopIChrMSksIChfX2NvbnN0IGNoYXIgKikgKGsyKSwgKF9f
czFfbGVuIDwgX19zMl9sZW4gPyBfX3MxX2xlbiA6IF9fczJfbGVuKSArIDEpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wIChrMSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsxKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMSkgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChr
MSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGsyKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoazIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsyKSA9
PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShrMikpWzBdKTsgaWYgKF9fczFfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGsxKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMikpWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChr
MSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChrMik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+
IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+
IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+
IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KikgKF9fY29uc3QgY2hhciAqKSAoazEpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p
KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKGsyKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq
KSgoazIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsyKSA9PSAxKSAmJiAoX19zMl9s
ZW4gPSBzdHJsZW4gKGsyKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
azEpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoazEpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlb
MF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKGsyKSlbMF0p
OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsxXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMV0pOyBpZiAoX19zMl9s
ZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVk
IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9f
cmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGsxKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25fXyAo
eyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFyICop
IChfX2NvbnN0IGNoYXIgKikgKGsxKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gX19zMVswXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMF07IGlm
IChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVsxXSk7IGlm
IChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVsyXSk7IGlm
IChfX3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgo
X19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbM10pOyB9IH0g
X19yZXN1bHQ7IH0pKSkgOiBzdHJjbXAgKGsxLCBrMikpKSk7IH0pOwp9CiMgMzIgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiIDIKIyAxICIvdXNyL2xvY2FsL2dj
YzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAx
IDMKIyAzNiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAzNyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAg
ICAgICBQYWdlICAgMjQKCgojIDQzICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiMgNDUgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDUzICIvdXNyL2xvY2Fs
L2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5o
IiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CiMgNjMgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlw
ZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwojIDczICIvdXNyL2xvY2FsL2djYzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDEgMwojIDMwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL19HX2NvbmZp
Zy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3IvaW5j
bHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTIgIi91
c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHdpbnRfdDsKIyAxNSAiL3Vzci9pbmNs
dWRlL19HX2NvbmZpZy5oIiAyIDMKIyAyNCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIg
MwojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
MS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDIgMwojIDY3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwp0eXBlZGVmIHN0cnVjdAp7
CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9f
d2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9f
R19jb25maWcuaCIgMiAzCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21i
c3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRf
dCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMg
MjYgIi91c3IvaW5jbHVkZS9nY29udi5oIiAzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgMjUKCgojIDEg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL2djb252Lmgi
IDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3IvaW5jbHVkZS93
Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIu
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2lu
Y2x1ZGUvd2NoYXIuaCIgMiAzCiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAi
L3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDMxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgoKCgoKZW51
bQp7CiAgX19HQ09OVl9PSyA9IDAsCiAgX19HQ09OVl9OT0NPTlYsCiAgX19HQ09OVl9OT0RCLAog
IF9fR0NPTlZfTk9NRU0sCgogIF9fR0NPTlZfRU1QVFlfSU5QVVQsCiAgX19HQ09OVl9GVUxMX09V
VFBVVCwKICBfX0dDT05WX0lMTEVHQUxfSU5QVVQsCiAgX19HQ09OVl9JTkNPTVBMRVRFX0lOUFVU
LAoKICBfX0dDT05WX0lMTEVHQUxfREVTQ1JJUFRPUiwKICBfX0dDT05WX0lOVEVSTkFMX0VSUk9S
Cn07CgoKCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lHTk9S
RV9FUlJPUlMgPSAweDAwMDIKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcDsKc3RydWN0IF9fZ2Nv
bnZfc3RlcF9kYXRhOwpzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqLCBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3Qg
KiwgaW50LCBpbnQpOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
IG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyNgoKCgp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfaW5pdF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpf
X2djb252X2VuZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFy
ICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBj
aGFyICosIHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAo
dm9pZCAqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hh
ciAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBj
aGFyICosIF9fY29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0
KSAodm9pZCAqKiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19l
bmRfZmN0KSAodm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252
X3RyYW5zX2ZjdCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJh
bnNfY29udGV4dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsK
ICB2b2lkICpfX2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoK
CgpzdHJ1Y3QgX19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpf
X3NobGliX2hhbmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRl
cjsKCiAgY2hhciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2Zj
dCBfX2ZjdDsKICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0
IF9fZW5kX2ZjdDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRl
ZF9mcm9tOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5t
aSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDI3CgoKICBpbnQgX19taW5fbmVlZGVkX3RvOwog
IGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19zdGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRh
Owp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEKewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0
YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5kOwoKCgogIGludCBfX2ZsYWdzOwoKCgog
IGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9f
bWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwoKCgogIHN0cnVjdCBf
X2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoKCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZf
aW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7
CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFtdOwp9ICpf
X2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCnR5cGVkZWYgdW5p
b24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3Qg
X19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhOwog
IH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyOAoK
CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKIyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDIgMwojIDUxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyA0MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFf
bGlzdDsKIyA1MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwojIDE1OCAiL3Vzci9pbmNsdWRl
L2xpYmlvLmgiIDMKc3RydWN0IF9JT19qdW1wX3Q7IHN0cnVjdCBfSU9fRklMRTsKIyAxNjggIi91
c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCnN0cnVj
dCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19G
SUxFICpfc2J1ZjsKCgoKICBpbnQgX3BvczsKIyAxOTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
Cn07CgoKZW51bSBfX2NvZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0
X3BhcnRpYWwsCiAgX19jb2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKIyAyNTkg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsK
CgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFyKiBf
SU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9w
dHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciog
X0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9i
YXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgMjkKCgogIHN0
cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpfY2hhaW47Cgog
IGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90IF9vbGRfb2Zmc2V0OwoKCgog
IHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0
OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwMyAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9f
cGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAq
IHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVj
dCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1
Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFf
c3RkZXJyXzsKIyAzNDIgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnR5cGVkZWYgX19zc2l6ZV90
IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29r
aWUsIF9fY29uc3QgY2hhciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBfX24pOwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDMwCgoKCgoKCnR5cGVkZWYgaW50
IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cp
OwoKCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVk
ZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0
ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2ll
X3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5j
dGlvbl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193
cml0ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNs
b3NlOwp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19m
dW5jdGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxl
OwoKCmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAq
X19jZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgoKCgpl
eHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAo
X0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpl
eHRlcm4gd2ludF90IF9fd3VuZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9f
d3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxF
ICosIHdpbnRfdCkgOwojIDQyNCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKZXh0ZXJuIGludCBf
SU9fZ2V0YyAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywg
X0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsK
ZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9f
cGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAz
MQoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiB2b2lk
IF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2Zp
bGUgKF9JT19GSUxFICopIDsKIyA0NTQgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCmV4dGVybiBp
bnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVz
dHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVz
dHJpY3QpIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICpfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QpIDsKZXh0ZXJuIF9fc3NpemVfdCBfSU9fcGFkbiAoX0lPX0ZJTEUgKiwgaW50LCBfX3Nz
aXplX3QpIDsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxFICosIHZvaWQgKiwgc2l6
ZV90KSA7CgpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0
X3QsIGludCwgaW50KSA7CmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtwb3MgKF9JT19GSUxFICos
IF9fb2ZmNjRfdCwgaW50KSA7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lP
X0ZJTEUgKikgOwojIDc0ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xp
c3QgX19ub3RfdmFfbGlzdF9fOwojIDg4ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBvc190
IGZwb3NfdDsKCgoKCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CiMgMTM3ICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRp
by5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDEzOCAiL3Vz
ci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsK
ZXh0ZXJuIEZJTEUgKnN0ZGVycjsKIyAxNTIgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCByZW1v
dmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwoKZXh0ZXJuIGludCByZW5hbWUgKF9fY29u
c3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpIDsKCgoKCmV4dGVybiBGSUxFICp0
bXBmaWxlICh2b2lkKSA7CiMgMTY4ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICp0bXBmaWxl
NjQgKHZvaWQpIDsKCgpleHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAg
ICAgICAgICBQYWdlICAgMzIKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykgOwoj
IDE4OCAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gY2hhciAqdGVtcG5hbSAoX19jb25zdCBjaGFyICpf
X2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X21hbGxvY19fKSk7CgoKCgpleHRlcm4gaW50IGZjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCmV4
dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZmbHVzaF91
bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmNsb3NlYWxsICh2b2lk
KSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
aWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcykgOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
KSA7CiMgMjMyICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX21vZGVzKSA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbiAoaW50
IF9fZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbmNv
b2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRl
cm4gRklMRSAqZm1lbW9wZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIg
Kl9fbW9kZXMpIDsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
IG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAzMwoKCgpleHRlcm4gRklMRSAqb3Bl
bl9tZW1zdHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVsb2MpIDsKCgoKCgpleHRlcm4g
dm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBfX21vZGVz
LCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
CiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9s
aXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgIDsKCmV4dGVybiBp
bnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSA7
CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19t
YXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBf
X3MsIHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgIDM0CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fcHRyLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mLAogICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJuIGludCBfX2FzcHJpbnRmIChj
aGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFy
ICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHZkcHJpbnRmIChpbnQgX19m
ZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAogICAgICAgICAgICAgICAgICAgICBf
X2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h
dF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGludCBm
c2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzY2FuZiAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3Nj
YW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgoKZXh0ZXJuIGludCB2ZnNj
YW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgpleHRl
cm4gaW50IHZzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNf
dmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDEsIDApKSk7CgoKZXh0ZXJuIGludCB2c3NjYW5mIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0
YyAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoK
CmV4dGVybiBpbnQgZ2V0Y2hhciAodm9pZCkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgMzUKCgoK
CgoKCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGlu
dCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGZnZXRjX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0YyAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoK
CmV4dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191
bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3Vu
bG9ja2VkIChpbnQgX19jKSA7CgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkg
OwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVy
biBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9j
a2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAg
IDM2CgoKCgoKZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQzNiAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gX19zc2l6ZV90IF9fZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGlu
ZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBf
X24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAq
Kl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKZXh0ZXJuIF9fc3NpemVfdCBn
ZXRsaW5lIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHV0cyAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAg
ICAgICAgICAgOwoKCgpleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgcHV0cyAoX19jb25zdCBjaGFyICpfX3MpIDsKCgoK
ZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBz
aXplX3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CmV4dGVybiBzaXplX3QgZndyaXRlIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jl
c3RyaWN0IF9fcykgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jl
c3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3Qg
ZndyaXRlX3VubG9ja2VkIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVh
bSwgbG9uZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICAz
NwoKCmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiB2b2lk
IHJld2luZCAoRklMRSAqX19zdHJlYW0pIDsKIyA0OTkgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGlu
dCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsK
CmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBm
Z2V0cG9zIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19w
b3MpCiAgICAgICAgICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9f
Y29uc3QgZnBvc190ICpfX3BvcykgOwojIDUzMyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZz
ZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIDsK
ZXh0ZXJuIF9fb2ZmNjRfdCBmdGVsbG82NCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBm
Z2V0cG9zNjQgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3M2NF90ICpfX3Jlc3RyaWN0
IF9fcG9zKQogICAgICAgICAgICA7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVh
bSwgX19jb25zdCBmcG9zNjRfdCAqX19wb3MpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJ
TEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRl
cm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJf
dW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRl
cm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0
W107CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qg
X3N5c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAg
ICAgICAgICAgICAgICAgUGFnZSAgIDM4CgoKCgoKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFy
ICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgOwoKCmV4dGVybiBpbnQgcGNsb3Nl
IChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3Mp
IDsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSA7CgoKCgpzdHJ1Y3Qgb2Jz
dGFjazsKCgpleHRlcm4gaW50IG9ic3RhY2tfcHJpbnRmIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0
cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChz
dHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZ3MpIDsKCgoKCgoKCmV4dGVybiB2b2lk
IGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3Ry
ZWFtKSA7CiMgNjQwICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8u
aCIgMSAzCiMgMzkgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBh
Z2UgICAzOQoKCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50ZiAo
c3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyICh2
b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAoKF9fZnApLT5fSU9fcmVh
ZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lubGluZSBp
bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0ZGluKS0+X0lPX3JlYWRf
cHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0ZGluKSA6ICoodW5zaWdu
ZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQp
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVk
IGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9w
dHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQg
KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dy
aXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3Ry
ZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFt
KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQwCgoK
CgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1
cm4gKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2VuZCkg
PyBfX292ZXJmbG93IChzdGRvdXQsICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQg
Y2hhcikgKCooc3Rkb3V0KS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCmV4dGVy
biBfX2lubGluZSBfX3NzaXplX3QKZ2V0bGluZSAoY2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpf
X24sIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuIF9fZ2V0ZGVsaW0gKF9fbGluZXB0ciwgX19u
LCAnXG4nLCBfX3N0cmVhbSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZlb2ZfdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgx
MCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDIwKSAhPSAwKTsK
fQojIDY0MSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMzMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL3R5cGVkc3RyZWFtLmgiIDIKCnR5cGVkZWYgaW50ICgqb2JqY190eXBlZF9yZWFkX2Z1bmMp
KHZvaWQqLCBjaGFyKiwgaW50KTsKdHlwZWRlZiBpbnQgKCpvYmpjX3R5cGVkX3dyaXRlX2Z1bmMp
KHZvaWQqLCBjb25zdCBjaGFyKiwgaW50KTsKdHlwZWRlZiBpbnQgKCpvYmpjX3R5cGVkX2ZsdXNo
X2Z1bmMpKHZvaWQqKTsKdHlwZWRlZiBpbnQgKCpvYmpjX3R5cGVkX2VvZl9mdW5jKSh2b2lkKik7
CiMgNDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiCnR5cGVk
ZWYgc3RydWN0IG9iamNfdHlwZWRfc3RyZWFtIHsKICB2b2lkKiBwaHlzaWNhbDsKICBjYWNoZV9w
dHIgb2JqZWN0X3RhYmxlOwogIGNhY2hlX3B0ciBzdHJlYW1fdGFibGU7CiAgY2FjaGVfcHRyIGNs
YXNzX3RhYmxlOwogIGNhY2hlX3B0ciBvYmplY3RfcmVmczsKICBpbnQgbW9kZTsKICBpbnQgdHlw
ZTsKICBpbnQgdmVyc2lvbjsKICBpbnQgd3JpdGluZ19yb290X3A7CiAgb2JqY190eXBlZF9yZWFk
X2Z1bmMgcmVhZDsKICBvYmpjX3R5cGVkX3dyaXRlX2Z1bmMgd3JpdGU7CiAgb2JqY190eXBlZF9l
b2ZfZnVuYyBlb2Y7CiAgb2JqY190eXBlZF9mbHVzaF9mdW5jIGZsdXNoOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAg
UGFnZSAgIDQxCgoKfSBUeXBlZFN0cmVhbTsKIyA5MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvdHlwZWRzdHJlYW0uaCIKaW50IG9iamNfd3JpdGVfdHlwZSAoVHlwZWRTdHJlYW0qIHN0
cmVhbSwgY29uc3QgY2hhciogdHlwZSwgY29uc3Qgdm9pZCogZGF0YSk7CmludCBvYmpjX3JlYWRf
dHlwZSAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogdHlwZSwgdm9pZCogZGF0YSk7
CgppbnQgb2JqY193cml0ZV90eXBlcyAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciog
dHlwZSwgLi4uKTsKaW50IG9iamNfcmVhZF90eXBlcyAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgY29u
c3QgY2hhciogdHlwZSwgLi4uKTsKCmludCBvYmpjX3dyaXRlX29iamVjdF9yZWZlcmVuY2UgKFR5
cGVkU3RyZWFtKiBzdHJlYW0sIGlkIG9iamVjdCk7CmludCBvYmpjX3dyaXRlX3Jvb3Rfb2JqZWN0
IChUeXBlZFN0cmVhbSogc3RyZWFtLCBpZCBvYmplY3QpOwoKbG9uZyBvYmpjX2dldF9zdHJlYW1f
Y2xhc3NfdmVyc2lvbiAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgQ2xhc3MgY2xhc3MpOwoKCgoKCgpp
bnQgb2JqY193cml0ZV9hcnJheSAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgY29uc3Qgdm9pZCogZGF0YSk7Cmlu
dCBvYmpjX3JlYWRfYXJyYXkgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgdm9pZCogZGF0YSk7CgppbnQgb2JqY193
cml0ZV9vYmplY3QgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGlkIG9iamVjdCk7CmludCBvYmpjX3Jl
YWRfb2JqZWN0IChUeXBlZFN0cmVhbSogc3RyZWFtLCBpZCogb2JqZWN0KTsKIyAxMjQgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiClR5cGVkU3RyZWFtKiBvYmpj
X29wZW5fdHlwZWRfc3RyZWFtIChGSUxFKiBwaHlzaWNhbCwgaW50IG1vZGUpOwpUeXBlZFN0cmVh
bSogb2JqY19vcGVuX3R5cGVkX3N0cmVhbV9mb3JfZmlsZSAoY29uc3QgY2hhciogZmlsZV9uYW1l
LCBpbnQgbW9kZSk7Cgp2b2lkIG9iamNfY2xvc2VfdHlwZWRfc3RyZWFtIChUeXBlZFN0cmVhbSog
c3RyZWFtKTsKCkJPT0wgb2JqY19lbmRfb2ZfdHlwZWRfc3RyZWFtIChUeXBlZFN0cmVhbSogc3Ry
ZWFtKTsKdm9pZCBvYmpjX2ZsdXNoX3R5cGVkX3N0cmVhbSAoVHlwZWRTdHJlYW0qIHN0cmVhbSk7
CiMgMzIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09iamVjdC5oIiAyCgoKCgoKQGlu
dGVyZmFjZSBPYmplY3QKewogICAgQ2xhc3MgaXNhOwp9CgoKKyBpbml0aWFsaXplOwotIGluaXQ7
CgoKKyBuZXc7CisgYWxsb2M7Ci0gZnJlZTsKLSBjb3B5OwotIHNoYWxsb3dDb3B5OwotIGRlZXBl
bjsKLSBkZWVwQ29weTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
IG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA0MgoKCgoKLSAoQ2xhc3MpY2xhc3M7
Ci0gKENsYXNzKXN1cGVyQ2xhc3M7Ci0gKE1ldGFDbGFzcyltZXRhQ2xhc3M7Ci0gKGNvbnN0IGNo
YXIgKiluYW1lOwoKCi0gc2VsZjsKLSAodW5zaWduZWQgaW50KWhhc2g7Ci0gKEJPT0wpaXNFcXVh
bDphbk9iamVjdDsKLSAoaW50KWNvbXBhcmU6YW5vdGhlck9iamVjdDsKCgotIChCT09MKWlzTWV0
YUNsYXNzOwotIChCT09MKWlzQ2xhc3M7Ci0gKEJPT0wpaXNJbnN0YW5jZTsKCgotIChCT09MKWlz
S2luZE9mOihDbGFzcylhQ2xhc3NPYmplY3Q7Ci0gKEJPT0wpaXNNZW1iZXJPZjooQ2xhc3MpYUNs
YXNzT2JqZWN0OwotIChCT09MKWlzS2luZE9mQ2xhc3NOYW1lZDooY29uc3QgY2hhciAqKWFDbGFz
c05hbWU7Ci0gKEJPT0wpaXNNZW1iZXJPZkNsYXNzTmFtZWQ6KGNvbnN0IGNoYXIgKilhQ2xhc3NO
YW1lOwoKCisgKEJPT0wpaW5zdGFuY2VzUmVzcG9uZFRvOihTRUwpYVNlbDsKLSAoQk9PTClyZXNw
b25kc1RvOihTRUwpYVNlbDsKCgotIChCT09MKWNvbmZvcm1zVG86KFByb3RvY29sKilhUHJvdG9j
b2w7CgoKKyAoSU1QKWluc3RhbmNlTWV0aG9kRm9yOihTRUwpYVNlbDsKLSAoSU1QKW1ldGhvZEZv
cjooU0VMKWFTZWw7CisgKHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiAqKWRlc2NyaXB0
aW9uRm9ySW5zdGFuY2VNZXRob2Q6KFNFTClhU2VsOwotIChzdHJ1Y3Qgb2JqY19tZXRob2RfZGVz
Y3JpcHRpb24gKilkZXNjcmlwdGlvbkZvck1ldGhvZDooU0VMKWFTZWw7CgoKLSBwZXJmb3JtOihT
RUwpYVNlbDsKLSBwZXJmb3JtOihTRUwpYVNlbCB3aXRoOmFuT2JqZWN0OwotIHBlcmZvcm06KFNF
TClhU2VsIHdpdGg6YW5PYmplY3QxIHdpdGg6YW5PYmplY3QyOwoKCi0gKHJldHZhbF90KWZvcndh
cmQ6KFNFTClhU2VsIDooYXJnbGlzdF90KWFyZ0ZyYW1lOwotIChyZXR2YWxfdClwZXJmb3Jtdjoo
U0VMKWFTZWwgOihhcmdsaXN0X3QpYXJnRnJhbWU7CgoKKyBwb3NlQXM6KENsYXNzKWFDbGFzc09i
amVjdDsKLSAoQ2xhc3MpdHJhbnNtdXRlQ2xhc3NUbzooQ2xhc3MpYUNsYXNzT2JqZWN0OwoKCi0g
c3ViY2xhc3NSZXNwb25zaWJpbGl0eTooU0VMKWFTZWw7Ci0gbm90SW1wbGVtZW50ZWQ6KFNFTClh
U2VsOwotIHNob3VsZE5vdEltcGxlbWVudDooU0VMKWFTZWw7CgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0MwoKCi0gZG9lc05vdFJlY29nbml6ZTooU0VMKWFTZWw7Ci0gZXJyb3I6KGNvbnN0IGNoYXIg
KilhU3RyaW5nLCAuLi47CgoKKyAoaW50KXZlcnNpb247Cisgc2V0VmVyc2lvbjooaW50KWFWZXJz
aW9uOworIChpbnQpc3RyZWFtVmVyc2lvbjogKFR5cGVkU3RyZWFtKilhU3RyZWFtOwoKLSByZWFk
OiAoVHlwZWRTdHJlYW0qKWFTdHJlYW07Ci0gd3JpdGU6IChUeXBlZFN0cmVhbSopYVN0cmVhbTsK
LSBhd2FrZTsKCkBlbmQKIyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0
eXBlLmgiIDIKCgoKCgoKQHByb3RvY29sIENSRUFUQUJMRQpAZW5kCgoKQHByb3RvY29sIFJFVFVS
TkFCTEUKQGVuZAojIDQ2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL2RlZnR5cGUu
aCIKdHlwZWRlZiB2b2lkICgqbm90aWZ5X3QpKCBpZCBvYmplY3QsIGlkIHJlYWxsb2NBZGRyZXNz
LCB2b2lkICphcmcgKTsKCgoKCgoKdHlwZWRlZiB2b2lkICpyZWZfdDsKCgoKCnR5cGVkZWYgdm9p
ZCAoKmZ1bmNfdCkoIHZvaWQgKTsKCgoKCnR5cGVkZWYgaWQgKCpmaXh1cFJvdXRpbmVfdCkoIHZv
aWQgKmZpeHVwQ29udGV4dCwgaWQgZml4dXBPYmplY3QgKTsKdHlwZWRlZiB2b2lkICgqZml4dXBf
dCkoIGZpeHVwUm91dGluZV90IGZpeHVwUm91dGluZSwgdm9pZCAqZml4dXBDb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkIGZpeHVwQXJndW1lbnQgKTsKIyA2NyAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2V4dGVybnZhci5oIiAxCiMgNjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIg
MgojIDc3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCkBwcm90b2NvbCBHZXRO
YW1lCiMgODkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9Vc2luZzsK
LSAoY29uc3QgY2hhciAqKWdldE5hbWU7CkBlbmQKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA0NAoKCgpA
cHJvdG9jb2wgRGVmaW5lZE9iamVjdCA8R2V0TmFtZT4KIyAxMDggIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmouaCIKLSBfSV9Vc2luZzsKIyAxMTcgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9kZWZvYmouaCIKLSAoQk9PTClyZXNwb25kc1RvOiAoU0VMKWFTZWw7CgorIChCT09MKWNv
bmZvcm1zVG86IChQcm90b2NvbCAqKXByb3RvY29sOwotIChCT09MKWNvbmZvcm1zVG86IChQcm90
b2NvbCAqKXByb3RvY29sOwoKCgotIGdldENsYXNzOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRUeXBl
TmFtZTsKCgoKLSAocmVmX3QpYWRkUmVmOiAobm90aWZ5X3Qpbm90aWZ5RnVuY3Rpb24gd2l0aEFy
Z3VtZW50OiAodm9pZCAqKWFyZzsKCgotICh2b2lkKXJlbW92ZVJlZjogKHJlZl90KXJlZlZhbDsK
CgotIChpbnQpY29tcGFyZTogYW5PYmplY3Q7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWw7CgoKLSBw
ZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxOwoKCi0gcGVyZm9ybTogKFNFTClhU2Vs
IHdpdGg6IGFuT2JqZWN0MSB3aXRoOiBhbk9iajI7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0
aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqMiB3aXRoOiBhbk9iajM7CgoKCi0gKHZvaWQpc2V0RGlz
cGxheU5hbWU6IChjb25zdCBjaGFyICopZGlzcGxheU5hbWU7CgoKCgotIChjb25zdCBjaGFyICop
Z2V0RGlzcGxheU5hbWU7CiMgMTY4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgi
Ci0gKHZvaWQpZGVzY3JpYmU6IG91dHB1dENoYXJTdHJlYW07CgoKCi0gKHZvaWQpZGVzY3JpYmVJ
RDogb3V0cHV0Q2hhclN0cmVhbTsKCgotICh2b2lkKXhwcmludDsKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0NQoKCgoKLSAodm9pZCl4cHJpbnRpZDsKCgotICh2b2lkKXhmcHJpbnQ7CgoKLSAodm9pZCl4
ZnByaW50aWQ7CgoKLSBnZXRab25lOwpAZW5kCgpAcHJvdG9jb2wgQ3VzdG9taXplCiMgMjIzICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMgMjM5ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCisgY3VzdG9taXplQmVnaW46IGFab25l
OwoKCi0gY3VzdG9taXplRW5kOwojIDI2NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9i
ai5oIgotIGN1c3RvbWl6ZUNvcHk6IGFab25lOwpAZW5kCgpAcHJvdG9jb2wgQ3JlYXRlIDxEZWZp
bmVkT2JqZWN0LCBDdXN0b21pemU+CiMgMzE5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVm
b2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMgMzM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVm
b2JqLmgiCisgY3JlYXRlOiBhWm9uZTsKCgoKCgoKCisgY3JlYXRlQmVnaW46IGFab25lOwojIDM3
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIGNyZWF0ZUVuZDsKQGVuZAoK
QHByb3RvY29sIERyb3AKIyA0MDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIK
LSBfSV9Vc2luZzsKLSAodm9pZClkcm9wOwpAZW5kCgpAcHJvdG9jb2wgWm9uZSA8Q3JlYXRlLCBE
cm9wLCBDUkVBVEFCTEU+CiMgNDU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgi
Ci0gX0lfQ3JlYXRpbmc7CgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQ2CgoKCgoKLSAodm9pZClz
ZXRQYWdlU2l6ZTogKHNpemVfdClwYWdlU2l6ZTsKCi0gX0lfVXNpbmc7Ci0gKHNpemVfdClnZXRQ
YWdlU2l6ZTsKCgoKCgoKLSBhbGxvY0lWYXJzOiAoQ2xhc3MpYUNsYXNzOwoKCgoKCgotIGNvcHlJ
VmFyczogYW5PYmplY3Q7CgoKCgoKCgotICh2b2lkKWZyZWVJVmFyczogYW5PYmplY3Q7CiMgNDk5
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gYWxsb2NJVmFyc0NvbXBvbmVu
dDogKENsYXNzKWFDbGFzczsKCgoKLSBjb3B5SVZhcnNDb21wb25lbnQ6IGFuT2JqZWN0OwoKCi0g
KHZvaWQpZnJlZUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKCgoKCgoKLSBnZXRDb21wb25lbnRa
b25lOwoKCgoKCi0gKHZvaWQgKilhbGxvYzogKHNpemVfdClzaXplOwoKCgoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAg
ICBQYWdlICAgNDcKCgoKLSAodm9pZClmcmVlOiAodm9pZCAqKWFCbG9jazsKCgoKCi0gKHZvaWQg
KilhbGxvY0Jsb2NrOiAoc2l6ZV90KXNpemU7CgoKCi0gKHZvaWQpZnJlZUJsb2NrOiAodm9pZCAq
KWFCbG9jayBibG9ja1NpemU6IChzaXplX3Qpc2l6ZTsKIyA1NDUgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmouaCIKLSBnZXRQb3B1bGF0aW9uOwoKCi0gKHZvaWQpZGVzY3JpYmVGb3JF
YWNoOiBvdXRwdXRDaGFyU3RyZWFtOwoKCi0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoSUQ6IG91dHB1
dENoYXJTdHJlYW07CkBlbmQKCkBwcm90b2NvbCBEZWZpbmVkQ2xhc3MgPERlZmluZWRPYmplY3Q+
CgoKCi0gX0lfVXNpbmc7CisgZ2V0U3VwZXJjbGFzczsKKyAoQk9PTClpc1N1YmNsYXNzOiBhQ2xh
c3M7CgorICh2b2lkKXNldFR5cGVJbXBsZW1lbnRlZDogYVR5cGU7CisgZ2V0VHlwZUltcGxlbWVu
dGVkOwoKKyAoSU1QKWdldE1ldGhvZEZvcjogKFNFTClhU2VsOwpAZW5kCgpAcHJvdG9jb2wgQ3Jl
YXRlZENsYXNzIDxDcmVhdGUsIERlZmluZWRDbGFzcz4KCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0
TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIHNldENsYXNzOiBhQ2xhc3M7Ci0gc2V0U3VwZXJj
bGFzczogYUNsYXNzOwotIHNldERlZmluaW5nQ2xhc3M6IGFDbGFzczsKLSBhdDogKFNFTClhU2Vs
IGFkZE1ldGhvZDogKElNUClhTWV0aG9kOwotIGxpc3BJbkNyZWF0ZTogZXhwcjsKLSBoZGY1SW5D
cmVhdGU6IGhkZjVPYmo7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IHN0cmVhbTsKLSAodm9pZClo
ZGY1T3V0U2hhbGxvdzogaGRmNU9iajsKLSAodm9pZCl1cGRhdGVBcmNoaXZlcjogYXJjaGl2ZXI7
Ci0gX0lfVXNpbmc7Ci0gZ2V0RGVmaW5pbmdDbGFzczsKQGVuZAoKQHByb3RvY29sIEJlaGF2aW9y
UGhhc2UgPENyZWF0ZWRDbGFzcz4KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA0OAoKCgoKCgotIF9JX0Ny
ZWF0aW5nOwotICh2b2lkKXNldE5leHRQaGFzZTogYUNsYXNzOwoKLSBfSV9Vc2luZzsKLSBnZXRO
ZXh0UGhhc2U7CkBlbmQKCkBwcm90b2NvbCBDb3B5CiMgNjIwICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7Ci0gY29weTogKGlkIDxab25lPilhWm9uZTsKQGVu
ZAoKCgoKCkBwcm90b2NvbCBHZXRPd25lcgojIDY0NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai5oIgotIF9JX1VzaW5nOwotIGdldE93bmVyOwpAZW5kCgpAcHJvdG9jb2wgU2V0SW5p
dGlhbFZhbHVlCiMgNjcyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lf
Q3JlYXRpbmc7CgoKCgoKCgotICh2b2lkKXNldEluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlOwpA
ZW5kCgpAcHJvdG9jb2wgU3ltYm9sIDxDcmVhdGUsIEdldE5hbWUsIENSRUFUQUJMRT4KIyA3MDYg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsKCgoKKyBj
cmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwoKCgpA
ZW5kCgpAcHJvdG9jb2wgRXZlbnRUeXBlIDxTeW1ib2w+CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAg
NDkKCgoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpcmFpc2VFdmVudDsKCgoKLSAodm9pZClyYWlzZUV2
ZW50OiAoY29uc3Qgdm9pZCAqKWV2ZW50RGF0YSwgLi4uOwoKCgoKCkBlbmQKCgpAcHJvdG9jb2wg
V2FybmluZyA8RXZlbnRUeXBlLCBDUkVBVEFCTEU+CgoKCgotIF9JX1VzaW5nOwoKLSAodm9pZClz
ZXRNZXNzYWdlU3RyaW5nOiAoY29uc3QgY2hhciAqKW1lc3NhZ2VTdHJpbmc7CgoKLSAoY29uc3Qg
Y2hhciAqKWdldE1lc3NhZ2VTdHJpbmc7CgpleHRlcm4gaWQgPFdhcm5pbmc+CiAgV2FybmluZ01l
c3NhZ2UsCiAgUmVzb3VyY2VBdmFpbGFiaWxpdHksCiAgTGlicmFyeVVzYWdlLAogIERlZmF1bHRB
c3N1bWVkLAogIE9ic29sZXRlRmVhdHVyZSwKICBPYnNvbGV0ZU1lc3NhZ2UsCiAgU2F2ZVdhcm5p
bmc7CgoKCgoKQGVuZAoKQHByb3RvY29sIEVycm9yIDxXYXJuaW5nLCBDUkVBVEFCTEU+CgoKCgpl
eHRlcm4gaWQgPEVycm9yPgogIFNvdXJjZU1lc3NhZ2UsCiAgTm90SW1wbGVtZW50ZWQsCiAgU3Vi
Y2xhc3NNdXN0SW1wbGVtZW50LAogIEludmFsaWRDb21iaW5hdGlvbiwKICBJbnZhbGlkT3BlcmF0
aW9uLAogIEludmFsaWRBcmd1bWVudCwKICBDcmVhdGVTdWJjbGFzc2luZywKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgICA1MAoKCiAgQ3JlYXRlVXNhZ2UsCiAgT3V0T2ZNZW1vcnksCiAgSW52YWxpZEFsbG9j
U2l6ZSwKICBJbnRlcm5hbEVycm9yLAogIEJsb2NrZWRPYmplY3RBbGxvYywKICBCbG9ja2VkT2Jq
ZWN0VXNhZ2UsCiAgUHJvdG9jb2xWaW9sYXRpb24sCiAgTG9hZEVycm9yLAogIFNhdmVFcnJvcjsK
CgoKCgpAZW5kCgpAcHJvdG9jb2wgQXJndW1lbnRzIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4K
IyA4NzYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsK
LSBzZXRBcmdjOiAodW5zaWduZWQpY291bnQgQXJndjogKGNvbnN0IGNoYXIgKiopdGhlQXJndjsK
LSBzZXRBcHBOYW1lOiAoY29uc3QgY2hhciAqKWFwcE5hbWU7Ci0gc2V0QXBwTW9kZVN0cmluZzog
KGNvbnN0IGNoYXIgKilhcHBNb2RlU3RyaW5nOwotIHNldE9wdGlvbkZ1bmM6IChpbnQgKCopIChp
bnQsIGNvbnN0IGNoYXIgKikpb3B0aW9uRnVuYzsKLSBzZXRCdWdBZGRyZXNzOiAoY29uc3QgY2hh
ciAqKWJ1Z0FkZHJlc3M7Ci0gc2V0VmVyc2lvbjogKGNvbnN0IGNoYXIgKil2ZXJzaW9uOwotIGFk
ZE9wdGlvbnM6IChzdHJ1Y3QgYXJncF9vcHRpb24gKilvcHRpb25zOwojIDkwMyAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotICh2b2lkKWFkZE9wdGlvbjogKGNvbnN0IGNoYXIg
KiluYW1lIGtleTogKGludClrZXkgYXJnOiAoY29uc3QgY2hhciAqKWFyZyBmbGFnczogKGludClm
bGFncyBkb2M6IChjb25zdCBjaGFyICopZG9jIGdyb3VwOiAoaW50KWdyb3VwOwoKKyBjcmVhdGVB
cmdjOiAoaW50KWFyZ2MgQXJndjogKGNvbnN0IGNoYXIgKiopYXJndiBhcHBOYW1lOiAoY29uc3Qg
Y2hhciAqKWFwcE5hbWUgdmVyc2lvbjogKGNvbnN0IGNoYXIgKil2ZXJzaW9uIGJ1Z0FkZHJlc3M6
IChjb25zdCBjaGFyICopYnVnQWRkcmVzcyBvcHRpb25zOiAoc3RydWN0IGFyZ3Bfb3B0aW9uICop
b3B0aW9ucyBvcHRpb25GdW5jOiAoaW50ICgqKSAoaW50LCBjb25zdCBjaGFyICopKW9wdGlvbkZ1
bmMgaW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOiAoQk9PTClpbmhpYml0RXhlY3V0YWJsZVNl
YXJjaEZsYWc7CgoKLSAoaW50KXBhcnNlS2V5OiAoaW50KWtleSBhcmc6IChjb25zdCBjaGFyICop
YXJnOwotIF9JX1NldHRpbmc7Ci0gc2V0SW5oaWJpdEFyY2hpdmVyTG9hZEZsYWc6IChCT09MKWlu
aGliaXRBcmNoaXZlckxvYWRGbGFnOwotIHNldEluaGliaXRFeGVjdXRhYmxlU2VhcmNoRmxhZzog
KEJPT0wpdGhlSW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOwotIHNldEJhdGNoTW9kZUZsYWc6
IChCT09MKWJhdGNoTW9kZUZsYWc7Ci0gc2V0VmFyeVNlZWRGbGFnOiAoQk9PTCl2YXJ5U2VlZEZs
YWc7Ci0gc2V0VmVyYm9zZUZsYWc6IChCT09MKXZlcmJvc2VGbGFnOwoKCgotIHNldERlZmF1bHRB
cHBDb25maWdQYXRoOiAoY29uc3QgY2hhciAqKXBhdGg7CgoKLSBzZXREZWZhdWx0QXBwRGF0YVBh
dGg6IChjb25zdCBjaGFyICopcGF0aDsKLSBzZXRGaXhlZFNlZWQ6ICh1bnNpZ25lZClzZWVkOwoK
Ci0gX0lfVXNpbmc7Ci0gKEJPT0wpZ2V0QmF0Y2hNb2RlRmxhZzsKLSAoQk9PTClnZXRWYXJ5U2Vl
ZEZsYWc7Ci0gKEJPT0wpZ2V0Rml4ZWRTZWVkRmxhZzsKLSAodW5zaWduZWQpZ2V0Rml4ZWRTZWVk
OwotIChCT09MKWdldFZlcmJvc2VGbGFnOwotIChjb25zdCBjaGFyICopZ2V0QXBwTmFtZTsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICA1MQoKCi0gKGNvbnN0IGNoYXIgKilnZXRBcHBNb2RlU3RyaW5nOwot
IChpbnQpZ2V0QXJnYzsKLSAoaW50KWdldExhc3RBcmdJbmRleDsKLSAoY29uc3QgY2hhciAqKiln
ZXRBcmd2OwotIChjb25zdCBjaGFyICopZ2V0RXhlY3V0YWJsZVBhdGg7Ci0gKGNvbnN0IGNoYXIg
KilnZXRTd2FybUhvbWU7Ci0gKGNvbnN0IGNoYXIgKilnZXRDb25maWdQYXRoOwotIChjb25zdCBj
aGFyICopZ2V0RGF0YVBhdGg7CgotIChjb25zdCBjaGFyICopZ2V0QXBwRGF0YVBhdGg7CgoKLSAo
Y29uc3QgY2hhciAqKWdldEFwcENvbmZpZ1BhdGg7Ci0gKEJPT0wpZ2V0U2hvd0N1cnJlbnRUaW1l
RmxhZzsKLSAoQk9PTClnZXRJbmhpYml0QXJjaGl2ZXJMb2FkRmxhZzsKCkBlbmQKCkBwcm90b2Nv
bCBBcmNoaXZlciA8Q3JlYXRlLCBEcm9wLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7CgoK
LSBzZXRJbmhpYml0TG9hZEZsYWc6IChCT09MKWluaGliaXRMb2FkRmxhZzsKCgotIHNldFBhdGg6
IChjb25zdCBjaGFyICopcGF0aDsKCgoKLSBzZXRTeXN0ZW1BcmNoaXZlckZsYWc6IChCT09MKXN5
c3RlbUFyY2hpdmVyRmxhZzsKCgotIHNldERlZmF1bHRQYXRoOwoKCi0gc2V0RGVmYXVsdEFwcFBh
dGg7Ci0gX0lfVXNpbmc7Ci0gKHZvaWQpcmVnaXN0ZXJDbGllbnQ6IGNsaWVudDsKLSAodm9pZCl1
bnJlZ2lzdGVyQ2xpZW50OiBjbGllbnQ7CgoKCi0gKHZvaWQpcHV0RGVlcDogKGNvbnN0IGNoYXIg
KilrZXkgb2JqZWN0OiBvYmplY3Q7CgoKLSAodm9pZClwdXRTaGFsbG93OiAoY29uc3QgY2hhciAq
KWtleSBvYmplY3Q6IG9iamVjdDsKCgotIGdldE9iamVjdDogKGNvbnN0IGNoYXIgKilrZXk7CgoK
LSBnZXRXaXRoWm9uZTogKGlkIDxab25lPilhWm9uZSBrZXk6IChjb25zdCBjaGFyICopa2V5OwoK
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAg
ICAgICAgICAgICAgICBQYWdlICAgNTIKCgoKLSAodm9pZClzeW5jOwpAZW5kCgpAcHJvdG9jb2wg
TGlzcEFyY2hpdmVyIDxBcmNoaXZlciwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoK
KyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0UGF0aDogKGNvbnN0IGNoYXIgKilwYXRoOwoK
LSBfSV9TZXR0aW5nOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgSERGNUFyY2hpdmVyIDxB
cmNoaXZlciwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGU6IChpZCA8
Wm9uZT4pYVpvbmUgc2V0UGF0aDogKGNvbnN0IGNoYXIgKilwYXRoOwoKLSBfSV9TZXR0aW5nOwot
IF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgSERGNSA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+
CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRXcml0ZUZsYWc6IChCT09MKXdyaXRlRmxhZzsKLSBzZXRE
YXRhc2V0RmxhZzogKEJPT0wpZGF0YXNldEZsYWc7Ci0gc2V0RXh0ZW5zaWJsZVZlY3RvclR5cGU6
IChmY2FsbF90eXBlX3QpdHlwZTsKLSBzZXRFeHRlbnNpYmxlRG91YmxlVmVjdG9yOwotIHNldFBh
cmVudDogcGFyZW50OwotIHNldENvbXBvdW5kVHlwZTogY29tcG91bmRUeXBlOwotIHNldENvdW50
OiAodW5zaWduZWQpY291bnQ7Ci0gX0lfU2V0dGluZzsKCgoKLSBzZXROYW1lOiAoY29uc3QgY2hh
ciAqKW5hbWU7Ci0gc2V0QmFzZVR5cGVPYmplY3Q6IGJhc2VUeXBlT2JqZWN0OwotIF9JX1VzaW5n
OwotICh2b2lkKWl0ZXJhdGU6IChpbnQgKCopIChpZCA8SERGNT5oZGY1T2JqKSlpdGVyYXRlRnVu
YzsKLSAodm9pZClpdGVyYXRlOiAoaW50ICgqKSAoaWQgPEhERjU+aGRmNU9iaikpaXRlcmF0ZUZ1
bmMgZHJvcDogKEJPT0wpZHJvcEZsYWc7Ci0gKEJPT0wpZ2V0RGF0YXNldEZsYWc7Ci0gKEJPT0wp
Z2V0V3JpdGVGbGFnOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAg
bWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDUzCgoKLSAoc2l6ZV90KWdldERhdGFz
ZXRSYW5rOwotIChzaXplX3QpZ2V0RGF0YXNldERpbWVuc2lvbjogKHVuc2lnbmVkKWRpbU51bWJl
cjsKLSAodW5zaWduZWQpZ2V0Q291bnQ7Ci0gZ2V0Q29tcG91bmRUeXBlOwotIGdldENsYXNzOwot
ICh2b2lkKWFzc2lnbkl2YXI6IG9iajsKCi0gKEJPT0wpY2hlY2tOYW1lOiAoY29uc3QgY2hhciAq
KW5hbWU7Ci0gKEJPT0wpY2hlY2tEYXRhc2V0TmFtZTogKGNvbnN0IGNoYXIgKilkYXRhc2V0TmFt
ZTsKCi0gKHZvaWQpbG9hZERhdGFzZXQ6ICh2b2lkICopcHRyOwotICh2b2lkKXN0b3JlQXNEYXRh
c2V0OiAoY29uc3QgY2hhciAqKW5hbWUgdHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlwZU5hbWUg
dHlwZTogKGZjYWxsX3R5cGVfdCl0eXBlIHJhbms6ICh1bnNpZ25lZClyYW5rIGRpbXM6ICh1bnNp
Z25lZCAqKWRpbXMgcHRyOiAodm9pZCAqKXB0cjsKCi0gKHZvaWQpYWRkRG91YmxlVG9WZWN0b3I6
IChkb3VibGUpdmFsOwoKLSAodm9pZClzdG9yZVR5cGVOYW1lOiAoY29uc3QgY2hhciAqKXR5cGVO
YW1lOwotICh2b2lkKXN0b3JlQ29tcG9uZW50VHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlwZU5h
bWU7Ci0gKHZvaWQpc2hhbGxvd0xvYWRPYmplY3Q6IG9iajsKLSAodm9pZClzaGFsbG93U3RvcmVP
YmplY3Q6IG9iajsKLSAodm9pZCluYW1lUmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVtYmVyIG5h
bWU6IChjb25zdCBjaGFyICopcmVjb3JkTmFtZTsKLSAodm9pZCludW1iZXJSZWNvcmQ6ICh1bnNp
Z25lZClyZWNvcmROdW1iZXI7Ci0gKHZvaWQpc2VsZWN0UmVjb3JkOiAodW5zaWduZWQpcmVjb3Jk
TnVtYmVyOwoKLSAoY29uc3QgY2hhciAqKilyZWFkUm93TmFtZXM7Ci0gKHZvaWQpd3JpdGVSb3dO
YW1lczsKLSAodm9pZCl3cml0ZUxldmVsczsKCi0gKHZvaWQpc3RvcmVBdHRyaWJ1dGU6IChjb25z
dCBjaGFyICopYXR0cmlidXRlTmFtZSB2YWx1ZTogKGNvbnN0IGNoYXIgKil2YWx1ZVN0cmluZzsK
LSAodm9pZClpdGVyYXRlQXR0cmlidXRlczogKGludCAoKikgKGNvbnN0IGNoYXIgKmtleSwgY29u
c3QgY2hhciAqdmFsdWUpKWl0ZXJhdGVGdW5jOwotIChjb25zdCBjaGFyICopZ2V0QXR0cmlidXRl
OiAoY29uc3QgY2hhciAqKWF0dHJpYnV0ZU5hbWU7Ci0gKHZvaWQpZmx1c2g7CkBlbmQKCkBwcm90
b2NvbCBIREY1Q29tcG91bmRUeXBlIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgotIF9JX0Ny
ZWF0aW5nOwotIHNldFByb3RvdHlwZTogcHJvdG90eXBlOwotIF9JX1VzaW5nOwotIGdldFByb3Rv
dHlwZTsKQGVuZAoKdHlwZWRlZiB2b2lkICpKT0JKRUNUOwp0eXBlZGVmIGNvbnN0IHZvaWQgKkNP
TU9CSkVDVDsKCkBwcm90b2NvbCBGQXJndW1lbnRzIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4K
CgotIF9JX0NyZWF0aW5nOwotIHNldExhbmd1YWdlOiAoaWQgPFN5bWJvbD4pbGFuZ3VhZ2VUeXBl
OwoKCi0gc2V0U2VsZWN0b3I6IChTRUwpYVNlbDsKLSBzZXRKYXZhU2lnbmF0dXJlOiAoY29uc3Qg
Y2hhciAqKWphdmFTaWduYXR1cmU7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFNlbGVj
dG9yOiAoU0VMKWFTZWw7Ci0gYWRkQXJndW1lbnQ6ICh0eXBlc190ICopdmFsdWUgb2ZUeXBlOiAo
ZmNhbGxfdHlwZV90KXR5cGU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgNTQKCgotIGFkZEFyZ3VtZW50
OiAodm9pZCAqKXZhbHVlIG9mT2JqQ1R5cGU6IChjaGFyKXR5cGU7Ci0gYWRkQ2hhcjogKGNoYXIp
dmFsdWU7Ci0gYWRkQm9vbGVhbjogKEJPT0wpdmFsdWU7Ci0gYWRkVW5zaWduZWRDaGFyOiAodW5z
aWduZWQgY2hhcil2YWx1ZTsKLSBhZGRTaG9ydDogKHNob3J0KXZhbHVlOwotIGFkZFVuc2lnbmVk
U2hvcnQ6ICh1bnNpZ25lZCBzaG9ydCl2YWx1ZTsKLSBhZGRJbnQ6IChpbnQpdmFsdWU7Ci0gYWRk
VW5zaWduZWQ6ICh1bnNpZ25lZCl2YWx1ZTsKLSBhZGRMb25nOiAobG9uZyl2YWx1ZTsKLSBhZGRV
bnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25nKXZhbHVlOwotIGFkZExvbmdMb25nOiAobG9uZyBs
b25nKXZhbHVlOwotIGFkZFVuc2lnbmVkTG9uZ0xvbmc6ICh1bnNpZ25lZCBsb25nIGxvbmcpdmFs
dWU7Ci0gYWRkRmxvYXQ6IChmbG9hdCl2YWx1ZTsKLSBhZGREb3VibGU6IChkb3VibGUpdmFsdWU7
Ci0gYWRkTG9uZ0RvdWJsZTogKGxvbmcgZG91YmxlKXZhbHVlOwotIGFkZFN0cmluZzogKGNvbnN0
IGNoYXIgKil2YWx1ZTsKLSBhZGRPYmplY3Q6IG9iajsKLSBhZGRTZWxlY3RvcjogKFNFTClhU2Vs
OwotIGFkZEphdmFPYmplY3Q6IChKT0JKRUNUKW9iajsKLSBzZXRPYmpDUmV0dXJuVHlwZTogKGNo
YXIpdHlwZTsKLSBzZXRSZXR1cm5UeXBlOiAoZmNhbGxfdHlwZV90KXJldFR5cGU7Ci0gc2V0Qm9v
bGVhblJldHVyblR5cGU7Ci0gX0lfVXNpbmc7Ci0gKHZhbF90KWdldFJldFZhbDsKLSAoaWQgPFN5
bWJvbD4pZ2V0TGFuZ3VhZ2U7Ci0gKHZvaWQgKilnZXRSZXN1bHQ7CkBlbmQKCnR5cGVkZWYgZW51
bSBjYWxsVHlwZXMgeyBjY2FsbCwgQ09NY2FsbCwgSlNjYWxsLCBqYXZhY2FsbCwgamF2YXN0YXRp
Y2NhbGwsIG9iamNjYWxsIH0gY2FsbF90OwoKQHByb3RvY29sIEZDYWxsIDxDcmVhdGUsIERyb3As
IENSRUFUQUJMRT4KCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSB0
YXJnZXQ6IG9iagogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3I6IChTRUwpc2VsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogKGlkIDxGQXJndW1lbnRzPilmYTsKKyBj
cmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgdGFyZ2V0OiBvYmoKICAgICAgICAgICAgICAgICAgICAg
ICBtZXRob2ROYW1lOiAoY29uc3QgY2hhciAqKW1ldGhvZE5hbWUKICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzOiAoaWQgPEZBcmd1bWVudHM+KWZhOwotIHNldEFyZ3VtZW50czogYXJn
czsKLSBzZXRGdW5jdGlvblBvaW50ZXI6IChmdW5jX3QpZm47Ci0gc2V0TWV0aG9kRnJvbVNlbGVj
dG9yOiAoU0VMKW1ldGhvZCBpbk9iamVjdDogb2JqZWN0OwotIHNldE1ldGhvZEZyb21OYW1lOiAo
Y29uc3QgY2hhciAqKW1ldGhvZE5hbWUgaW5PYmplY3Q6IG9iamVjdDsKLSBzZXRKYXZhTWV0aG9k
RnJvbU5hbWU6IChjb25zdCBjaGFyICopbWV0aG9kTmFtZSBpbk9iamVjdDogKEpPQkpFQ1Qpak9i
ajsKLSBzZXRKYXZhTWV0aG9kRnJvbU5hbWU6IChjb25zdCBjaGFyICopbWV0aG9kTmFtZSBpbkNs
YXNzOiAoY29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSBfSV9Vc2luZzsKLSAoY2FsbF90KWdldENh
bGxUeXBlOwotIGdldEFyZ3VtZW50czsKLSAodm9pZClwZXJmb3JtQ2FsbDsKLSAodm9pZCAqKWdl
dFJlc3VsdDsKLSAocmV0dmFsX3QpZ2V0UmV0VmFsOiAocmV0dmFsX3QpcmV0VmFsIGJ1ZjogKHR5
cGVzX3QgKilidWY7Ci0gKGZ1bmNfdClnZXRGdW5jdGlvblBvaW50ZXI7CmV4dGVybiB2b2lkIGRl
Zm9ial9pbml0X2phdmFfY2FsbF90YWJsZXMgKHZvaWQgKmpuaUVudik7CmV4dGVybiB2b2lkIHVw
ZGF0ZVRhcmdldCAoaWQgY2FsbCwgaWQgdGFyZ2V0KTsKQGVuZAoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAg
IDU1CgoKCkBwcm90b2NvbCBTZXJpYWxpemF0aW9uCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBsaXNw
SW5DcmVhdGU6IGV4cHI7CgoKLSBoZGY1SW5DcmVhdGU6IChpZCA8SERGNT4paGRmNU9iajsKCgoK
ZXh0ZXJuIGlkIGxpc3BJbiAoaWQgPFpvbmU+IGFab25lLCBpZCBleHByKTsKCgpleHRlcm4gaWQg
aGRmNUluIChpZCA8Wm9uZT4gYVpvbmUsIGlkIDxIREY1PiBoZGY1T2JqKTsKCi0gX0lfU2V0dGlu
ZzsKCgotIGxpc3BJbjogZXhwcjsKCgotIGhkZjVJbjogKGlkIDxIREY1PiloZGY1T2JqOwoKLSBf
SV9Vc2luZzsKCi0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IHN0cmVhbTsKCgotICh2b2lkKWxpc3BP
dXREZWVwOiBzdHJlYW07CgoKCi0gKHZvaWQpbGlzcE91dFZhcnM6IHN0cmVhbSBkZWVwOiAoQk9P
TClkZWVwRmxhZzsKCgotICh2b2lkKWhkZjVPdXRTaGFsbG93OiAoaWQgPEhERjU+KWhkZjVvYmo7
CgoKLSAodm9pZCloZGY1T3V0RGVlcDogKGlkIDxIREY1PiloZGY1b2JqOwoKLSAodm9pZCl1cGRh
dGVBcmNoaXZlcjogYXJjaGl2ZXI7CgoKZXh0ZXJuIEJPT0wgbGlzcEluQm9vbGVhbiAoaWQgaW5k
ZXgpOwoKCmV4dGVybiBpbnQgbGlzcEluSW50ZWdlciAoaWQgaW5kZXgpOwoKCmV4dGVybiBjb25z
dCBjaGFyICpsaXNwSW5TdHJpbmcgKGlkIGluZGV4KTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgNTYK
CgoKZXh0ZXJuIGlkIGxpc3BJbktleXdvcmQgKGlkIGluZGV4KTsKCkBlbmQKCgpleHRlcm4gaWQg
PEFyZ3VtZW50cz4gYXJndW1lbnRzOwoKCmV4dGVybiBpZCA8SERGNUFyY2hpdmVyPiBoZGY1QXJj
aGl2ZXI7CgoKZXh0ZXJuIGlkIDxMaXNwQXJjaGl2ZXI+IGxpc3BBcmNoaXZlcjsKCgpleHRlcm4g
aWQgPEhERjVBcmNoaXZlcj4gaGRmNUFwcEFyY2hpdmVyOwoKCmV4dGVybiBpZCA8TGlzcEFyY2hp
dmVyPiBsaXNwQXBwQXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxTeW1ib2w+IHRfQnl0ZUFycmF5LCB0
X0xlYWZPYmplY3QsIHRfUG9wdWxhdGlvbk9iamVjdDsKCgpleHRlcm4gaWQgPFN5bWJvbD4gTGFu
Z3VhZ2VDT00sIExhbmd1YWdlSlMsIExhbmd1YWdlSmF2YSwgTGFuZ3VhZ2VPYmpjOwoKCgoKCgpl
eHRlcm4gdm9pZCBfb2JqX2Zvcm1hdElEU3RyaW5nIChjaGFyICpidWZmZXIsIGlkIGFuT2JqZWN0
KTsKCgoKZXh0ZXJuIENsYXNzIG9iamNfZ2V0X2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsKCgpl
eHRlcm4gaWQgZGVmb2JqX2xvb2t1cF90eXBlIChjb25zdCBjaGFyICpuYW1lKTsKCgoKCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai90eXBlcy5oIiAxCmV4dGVybiB2b2lkICpf
ZGVmb2JqX1tdOwoKZXh0ZXJuIGlkIEdldE5hbWU7CmV4dGVybiBpZCBEZWZpbmVkT2JqZWN0Owpl
eHRlcm4gaWQgQ3VzdG9taXplOwpleHRlcm4gaWQgQ3JlYXRlOwpleHRlcm4gaWQgRHJvcDsKZXh0
ZXJuIGlkIFpvbmU7CmV4dGVybiBpZCBEZWZpbmVkQ2xhc3M7CmV4dGVybiBpZCBDcmVhdGVkQ2xh
c3M7CmV4dGVybiBpZCBCZWhhdmlvclBoYXNlOwpleHRlcm4gaWQgQ29weTsKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgICA1NwoKCmV4dGVybiBpZCBHZXRPd25lcjsKZXh0ZXJuIGlkIFNldEluaXRpYWxWYWx1
ZTsKZXh0ZXJuIGlkIFN5bWJvbDsKZXh0ZXJuIGlkIEV2ZW50VHlwZTsKZXh0ZXJuIGlkIFdhcm5p
bmc7CmV4dGVybiBpZCBFcnJvcjsKZXh0ZXJuIGlkIEFyZ3VtZW50czsKZXh0ZXJuIGlkIEFyY2hp
dmVyOwpleHRlcm4gaWQgTGlzcEFyY2hpdmVyOwpleHRlcm4gaWQgSERGNUFyY2hpdmVyOwpleHRl
cm4gaWQgSERGNTsKZXh0ZXJuIGlkIEhERjVDb21wb3VuZFR5cGU7CmV4dGVybiBpZCBGQXJndW1l
bnRzOwpleHRlcm4gaWQgRkNhbGw7CmV4dGVybiBpZCBTZXJpYWxpemF0aW9uOwojIDEyNTYgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMgoKZXh0ZXJuIHZvaWQgaW5pdERlZm9i
aiAoaWQgPEFyZ3VtZW50cz4gYXJndW1lbnRzKTsKCgpleHRlcm4gdm9pZCBfb2JqX2luaXRNb2R1
bGUgKHZvaWQgKm1vZHVsZSk7CgoKCgoKZXh0ZXJuIGlkIF9vYmpfZ2xvYmFsWm9uZTsKCgpleHRl
cm4gaWQgX29ial9zY3JhdGNoWm9uZTsKIyAxMjc5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCmV4dGVybiBCT09MIF9vYmpfZGVidWc7CgoKCmV4dGVybiBGSUxFICpfb2JqX3hl
cnJvcjsKCmV4dGVybiBGSUxFICpfb2JqX3hkZWJ1ZzsKCgpleHRlcm4gdm9pZCB4c2V0bmFtZSAo
aWQgYW5PYmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpOwoKCmV4dGVybiB2b2lkIHhwcmludCAoaWQg
YW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhwcmludGlkIChpZCBhbk9iamVjdCk7CgoKZXh0ZXJu
IHZvaWQgeGZwcmludCAoaWQgYW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhmcHJpbnRpZCAoaWQg
YW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhleGVjIChpZCBhbk9iamVjdCwgY29uc3QgY2hhciAq
bmFtZSk7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1p
ICAgICAgICAgICAgICAgICAgICBQYWdlICAgNTgKCgoKCmV4dGVybiB2b2lkIHhmZXhlYyAoaWQg
YW5PYmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpOwoKCmV4dGVybiBpZCBuYW1lVG9PYmplY3QgKGNv
bnN0IGNoYXIgKm5hbWUpOwojIDEzMjUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmou
aCIKZXh0ZXJuIGNoYXIgKnpzdHJkdXAgKGlkIDxab25lPiBhWm9uZSwgY29uc3QgY2hhciAqc3Ry
KTsKIyAyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc3dhcm0uaCIgMgojIDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIgMQojIDI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvcmFuZG9tLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIg
MQojIDIwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgojIDEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMQojIDIxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqZWN0YmFzZS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2
aXR5LmgiIDEKIyAyNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiIDEKIyAxMiAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2RlZm9iai5oIiAxCiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9u
cy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2V4dGVybnZhci5oIiAxCiMgMTQg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIiAyCiMgMjQgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAcHJvdG9jb2wgT2Zmc2V0cwojIDQyICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gYXRP
ZmZzZXQ6ICh1bnNpZ25lZClvZmZzZXQ7CgoKCi0gYXRPZmZzZXQ6ICh1bnNpZ25lZClvZmZzZXQg
cHV0OiBhbk9iamVjdDsKCgotIGdldEZpcnN0OwoKCi0gZ2V0TGFzdDsKQGVuZAoKQHByb3RvY29s
IEZvckVhY2gKIyA3OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0g
X0lfVXNpbmc7Ci0gKHZvaWQpZm9yRWFjaDogKFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpZm9yRWFj
aDogKFNFTClhU2VsZWN0b3IgOiBhcmcxOwotICh2b2lkKWZvckVhY2g6IChTRUwpYVNlbGVjdG9y
IDogYXJnMSA6IGFyZzI7Ci0gKHZvaWQpZm9yRWFjaDogKFNFTClhU2VsZWN0b3IgOiBhcmcxIDog
YXJnMiA6IGFyZzM7CgotICh2b2lkKWRlc2NyaWJlRm9yRWFjaDogb3V0cHV0Q2hhclN0cmVhbTsK
LSAodm9pZClkZXNjcmliZUZvckVhY2hJRDogb3V0cHV0Q2hhclN0cmVhbTsKCkBlbmQKCkBwcm90
b2NvbCBGb3JFYWNoS2V5CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDU5CgoKCgoKCi0gX0lfVXNpbmc7
Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpZm9yRWFjaEtleTog
KFNFTClhU2VsZWN0b3IgOiBhcmcxOwotICh2b2lkKWZvckVhY2hLZXk6IChTRUwpYVNlbGVjdG9y
IDogYXJnMSA6IGFyZzI7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3IgOiBhcmcx
IDogYXJnMiA6IGFyZzM7CkBlbmQKCkBwcm90b2NvbCBJbmRleCA8RGVmaW5lZE9iamVjdCwgRHJv
cCwgUkVUVVJOQUJMRT4KIyAxNTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9u
cy5oIgotIF9JX1VzaW5nOwoKCi0gZ2V0Q29sbGVjdGlvbjsKCgoKCgoKLSBuZXh0OwoKCgoKLSBw
cmV2OwoKCgoKLSBmaW5kTmV4dDogYW5PYmplY3Q7CgoKCgotIGZpbmRQcmV2OiBhbk9iamVjdDsK
IyAxOTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIGdldDsKCgoK
Ci0gcHV0OiBhbk9iamVjdDsKIyAyMDkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0
aW9ucy5oIgotIHJlbW92ZTsKIyAyNTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0
aW9ucy5oIgotIChpZCA8U3ltYm9sPilnZXRMb2M7CiMgMjY3ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAodm9pZClzZXRMb2M6IChpZCA8U3ltYm9sPilsb2NTeW1i
b2w7CiMgMjg4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAoaW50
KWdldE9mZnNldDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAg
bWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDYwCgoKCgoKCgotIHNldE9mZnNldDog
KHVuc2lnbmVkKW9mZnNldDsKIyAzMDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0
aW9ucy5oIgotIChpbnQpY29tcGFyZTogYW5JbmRleDsKIyAzMjEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpleHRlcm4gaWQgPFN5bWJvbD4gU3RhcnQsIEVuZCwgQmV0
d2VlbiwgUmVtb3ZlZCwgTWVtYmVyOwoKCgoKCgoKZXh0ZXJuIGlkIDxFcnJvcj4gT2Zmc2V0T3V0
T2ZSYW5nZSwgTm9NZW1iZXJzLAogIEFscmVhZHlBdEVuZCwgQWxyZWFkeUF0U3RhcnQsIEludmFs
aWRJbmRleExvYywgSW52YWxpZExvY1N5bWJvbDsKCkBlbmQKCkBwcm90b2NvbCBQZXJtdXRlZElu
ZGV4IDxJbmRleCwgUkVUVVJOQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwotIHNldENvbGxlY3Rp
b246IGFDb2xsZWN0aW9uOwotIHNldFVuaWZvcm1SYW5kb206IHJuZDsKLSBfSV9Vc2luZzsKLSBy
ZXNodWZmbGU7CkBlbmQ7CgpAcHJvdG9jb2wgQ29sbGVjdGlvbiA8Q3JlYXRlLCBTZXRJbml0aWFs
VmFsdWUsIENvcHksIERyb3AsIE9mZnNldHMsIEZvckVhY2g+CiMgNDA3ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCi0gKHZvaWQp
c2V0UmVwbGFjZU9ubHk6IChCT09MKXJlcGxhY2VPbmx5OwoKLSAodm9pZClzZXRJbmRleEZyb21N
ZW1iZXJMb2M6IChpbnQpYnl0ZU9mZnNldDsKCi0gX0lfVXNpbmc7CgoKLSBjb3B5OiAoaWQgPFpv
bmU+KWFab25lOwoKCi0gKEJPT0wpZ2V0UmVwbGFjZU9ubHk7CgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAg
NjEKCgoKCgoKCi0gKHVuc2lnbmVkKWdldENvdW50OwojIDQ0MCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKEJPT0wpY29udGFpbnM6IGFNZW1iZXI7CgoKCgoKCi0g
cmVtb3ZlOiBhTWVtYmVyOwojIDQ1NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rp
b25zLmgiCi0gKHZvaWQpcmVtb3ZlQWxsOwoKCi0gKHZvaWQpZGVsZXRlQWxsOwoKCi0gKEJPT0wp
YWxsU2FtZUNsYXNzOwoKCgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlkIDxab25lPilhWm9uZTsK
Ci0gKGlkIDxQZXJtdXRlZEluZGV4PiliZWdpblBlcm11dGVkOiAoaWQgPFpvbmU+KWFab25lOwpA
ZW5kCgoKCkBwcm90b2NvbCBEZWZhdWx0TWVtYmVyCiMgNDg4ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldERlZmF1bHRNZW1i
ZXI6IG1lbWJlclZhbHVlOwoKLSBfSV9Vc2luZzsKLSBnZXREZWZhdWx0TWVtYmVyOwpAZW5kCgpA
cHJvdG9jb2wgTWVtYmVyQmxvY2sKIyA1MzcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xs
ZWN0aW9ucy5oIgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRN
ZW1iZXJCbG9jazogKGlkICopbWVtYmVycyBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwoKLSBf
SV9TZXR0aW5nOwotICh2b2lkKXNldE1lbWJlckJsb2NrOiAoaWQgKiltZW1iZXJzIHNldENvdW50
OiAodW5zaWduZWQpY291bnQ7CgotIF9JX1VzaW5nOwotICh2b2lkICopZ2V0TWVtYmVyQmxvY2s7
CkBlbmQKCkBwcm90b2NvbCBBcnJheSA8Q29sbGVjdGlvbiwgRGVmYXVsdE1lbWJlciwgTWVtYmVy
QmxvY2ssIENSRUFUQUJMRT4KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2MgoKCiMgNTk4ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6
IChpZCA8Wm9uZT4pYVpvbmUgc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKCi0gX0lfU2V0dGlu
ZzsKCgoKCgoKCi0gc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKQGVuZAoKQHByb3RvY29sIExp
c3RJbmRleCA8SW5kZXgsIFJFVFVSTkFCTEU+CiMgNjQwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkQWZ0ZXI6IGFuT2JqZWN0
OwoKCi0gKHZvaWQpYWRkQmVmb3JlOiBhbk9iamVjdDsKQGVuZAoKCkBwcm90b2NvbCBMaXN0IDxD
b2xsZWN0aW9uLCBDUkVBVEFCTEU+CiMgNjY5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29s
bGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkRmlyc3Q6IGFuT2JqZWN0OwoKCi0g
KHZvaWQpYWRkTGFzdDogYW5PYmplY3Q7CgoKLSByZW1vdmVGaXJzdDsKCgotIHJlbW92ZUxhc3Q7
CgoKLSAoaWQgPExpc3RJbmRleD4pbGlzdEJlZ2luOiAoaWQgPFpvbmU+KWFab25lOwpAZW5kCgoK
CmV4dGVybiBpbnQgY29tcGFyZUlEcyAoaWQsIGlkKTsKCgpleHRlcm4gaW50IGNvbXBhcmVJbnRl
Z2VycyAoaWQsIGlkKTsKCgpleHRlcm4gaW50IGNvbXBhcmVVbnNpZ25lZEludGVnZXJzIChpZCwg
aWQpOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1p
ICAgICAgICAgICAgICAgICAgICBQYWdlICAgNjMKCgpleHRlcm4gaW50IGNvbXBhcmVDU3RyaW5n
cyAoaWQsIGlkKTsKCkBwcm90b2NvbCBDb21wYXJlRnVuY3Rpb24KIyA3MjEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgp0eXBlZGVmIGludCAoKmNvbXBhcmVfdCkgKGlk
LCBpZCk7CgotIF9JX0NyZWF0aW5nOwotIHNldENvbXBhcmVGdW5jdGlvbjogKGNvbXBhcmVfdClh
RnVuY3Rpb247Ci0gc2V0Q29tcGFyZUNTdHJpbmdzOwotIHNldENvbXBhcmVJRHM7Ci0gc2V0Q29t
cGFyZUludGVnZXJzOwotIHNldENvbXBhcmVVbnNpZ25lZEludGVnZXJzOwotIF9JX1VzaW5nOwot
IChjb21wYXJlX3QpZ2V0Q29tcGFyZUZ1bmN0aW9uOwpAZW5kCgpAcHJvdG9jb2wgS2V5ZWRDb2xs
ZWN0aW9uIDxDb2xsZWN0aW9uLCBGb3JFYWNoS2V5PgojIDc1MCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwotIGNyZWF0
ZUluZGV4OiAoaWQgPFpvbmU+KWFab25lIGZyb21NZW1iZXI6IGFuT2JqZWN0OwoKCgoKCgotIGF0
OiBhS2V5OwoKCgoKCgotIHJlbW92ZUtleTogYUtleTsKCgoKLSAoQk9PTCljb250YWluc0tleTog
YUtleTsKQGVuZAoKQHByb3RvY29sIEtleWVkQ29sbGVjdGlvbkluZGV4IDxJbmRleD4KIyA3ODMg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAZW5kCgoKQHByb3RvY29s
IE1lbWJlclNsb3QKIyA4MTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5o
Igp0eXBlZGVmIHN0cnVjdCBtZW1iZXJEYXRhIHsgdm9pZCAqbWVtYmVyRGF0YVsyXTsgfSBtZW1i
ZXJfdDsKCgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1h
aW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2NAoKCgp0eXBlZGVmIHN0cnVjdCB7IHZv
aWQgKm1lbWJlckRhdGFbMl07IGlkIG93bmVyOyB9IGR1cG1lbWJlcl90OwpAZW5kCgpAcHJvdG9j
b2wgX1NldAoKCi0gX0lfVXNpbmc7CgotIChCT09MKWFkZDogYW5PYmplY3Q7CiMgODM5ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKQGVuZAoKQHByb3RvY29sIFNldCA8
X1NldCwgS2V5ZWRDb2xsZWN0aW9uLCBDUkVBVEFCTEU+CiMgODU3ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCgoKCgotIHJlcGxhY2U6IGFuT2Jq
ZWN0OwpAZW5kCgpAcHJvdG9jb2wgT3JkZXJlZFNldCA8X1NldCwgTGlzdCwgQ1JFQVRBQkxFPgoj
IDg4NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBlbmQKCkBwcm90
b2NvbCBNYXBJbmRleCA8S2V5ZWRDb2xsZWN0aW9uSW5kZXgsIFJFVFVSTkFCTEU+CgoKCgotIF9J
X1VzaW5nOwoKCgoKLSBzZXRLZXk6IGFLZXk7CgoKCgotIGdldEtleTsKCgoKCgoKLSAodW5zaWdu
ZWQgbG9uZylnZXRLZXlWYWx1ZTsKCgotIG5leHQ6IChpZCAqKWtleTsKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAg
UGFnZSAgIDY1CgoKLSBwcmV2OiAoaWQgKilrZXk7CgoKLSBnZXQ6IChpZCAqKWtleTsKQGVuZAoK
CkBwcm90b2NvbCBNYXAgPEtleWVkQ29sbGVjdGlvbiwgQ29tcGFyZUZ1bmN0aW9uLCBDUkVBVEFC
TEU+CiMgOTM4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9V
c2luZzsKCgoKCi0gKEJPT0wpYXQ6IGFLZXkgaW5zZXJ0OiBhbk9iamVjdDsKCgoKCi0gYXQ6IGFL
ZXkgcmVwbGFjZTogYW5PYmplY3Q7CgoKLSAoaWQgPE1hcEluZGV4PiltYXBCZWdpbjogKGlkIDxa
b25lPilhWm9uZTsKQGVuZAoKCkBwcm90b2NvbCBPdXRwdXRTdHJlYW0gPENyZWF0ZSwgRHJvcCwg
Q1JFQVRBQkxFPgojIDk2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgi
Ci0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEZpbGVTdHJlYW06
IChGSUxFICopZmlsZVN0cmVhbTsKLSBzZXRGaWxlU3RyZWFtOiAoRklMRSAqKWZpbGVTdHJlYW07
Ci0gc2V0RXhwckZsYWc6IChCT09MKWV4cHJGbGFnOwotIF9JX1VzaW5nOwotIChGSUxFICopZ2V0
RmlsZVN0cmVhbTsKLSBnZXRFeHByOwoKCi0gKHZvaWQpY2F0QzogKGNvbnN0IGNoYXIgKiljc3Ry
aW5nOwoKCi0gKHZvaWQpY2F0Qm9vbGVhbjogKEJPT0wpYm9vbDsKCgotICh2b2lkKWNhdENoYXI6
IChjaGFyKWNoOwoKCi0gKHZvaWQpY2F0RmxvYXQ6IChmbG9hdClmbHQ7CgoKLSAodm9pZCljYXRE
b3VibGU6IChkb3VibGUpZGJsOwoKCi0gKHZvaWQpY2F0TG9uZ0RvdWJsZTogKGxvbmcgZG91Ymxl
KWRibDsKCgotICh2b2lkKWNhdEludDogKGludClpOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDY2CgoK
CgotICh2b2lkKWNhdFVuc2lnbmVkOiAodW5zaWduZWQpdW47CgotICh2b2lkKWNhdFNob3J0OiAo
c2hvcnQpc2h0OwotICh2b2lkKWNhdFVuc2lnbmVkU2hvcnQ6ICh1bnNpZ25lZCBzaG9ydCl1c2h0
OwotICh2b2lkKWNhdExvbmc6IChsb25nKWxuZzsKLSAodm9pZCljYXRVbnNpZ25lZExvbmc6ICh1
bnNpZ25lZCBsb25nKXVsbmc7Ci0gKHZvaWQpY2F0TG9uZ0xvbmc6IChsb25nIGxvbmcpbG5nbG5n
OwotICh2b2lkKWNhdFVuc2lnbmVkTG9uZ0xvbmc6ICh1bnNpZ25lZCBsb25nIGxvbmcpdWxuZ2xu
ZzsKLSAodm9pZCljYXRQb2ludGVyOiAoY29uc3Qgdm9pZCAqKXB0cjsKLSAodm9pZCljYXRMaXRl
cmFsOiAoY29uc3QgY2hhciAqKXN0cjsKLSAodm9pZCljYXRTdGFydEV4cHI7Ci0gKHZvaWQpY2F0
RW5kRXhwcjsKLSAodm9pZCljYXRLZXl3b3JkOiAoY29uc3QgY2hhciAqKWtleXdvcmQ7Ci0gKHZv
aWQpY2F0U3ltYm9sOiAoY29uc3QgY2hhciAqKXN5bWJvbDsKLSAodm9pZCljYXRTdHJpbmc6IChj
b25zdCBjaGFyICopc3RyOwotICh2b2lkKWNhdFNlcGFyYXRvcjsKLSAodm9pZCljYXRBcnJheVJh
bms6ICh1bnNpZ25lZClyYW5rOwotICh2b2lkKWNhdEVuZEFycmF5OwotICh2b2lkKWNhdFR5cGU6
IChjb25zdCBjaGFyICopdHlwZTsKLSAodm9pZCljYXRDbGFzczogKENsYXNzKWNsYXNzOwotICh2
b2lkKWNhdFN0YXJ0RnVuY3Rpb246IChjb25zdCBjaGFyICopZnVuY3Rpb25OYW1lOwotICh2b2lk
KWNhdEVuZEZ1bmN0aW9uOwotICh2b2lkKWNhdFN0YXJ0Q29uczsKLSAodm9pZCljYXRFbmRDb25z
OwotICh2b2lkKWNhdFN0YXJ0TGlzdDsKLSAodm9pZCljYXRFbmRMaXN0OwotICh2b2lkKWNhdFN0
YXJ0UXVvdGVkTGlzdDsKLSAodm9pZCljYXRFbmRRdW90ZWRMaXN0OwotICh2b2lkKWNhdFN0YXJ0
UGFyc2U7Ci0gKHZvaWQpY2F0RW5kUGFyc2U7Ci0gKHZvaWQpY2F0U3RhcnRNYWtlSW5zdGFuY2U6
IChjb25zdCBjaGFyICopdHlwZU5hbWU7Ci0gKHZvaWQpY2F0RW5kTWFrZUluc3RhbmNlOwotICh2
b2lkKWNhdFN0YXJ0TWFrZUNsYXNzOiAoY29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSAodm9pZClj
YXRFbmRNYWtlQ2xhc3M7Ci0gKHZvaWQpY2F0VW5zaWduZWRQYWlyOiAodW5zaWduZWQpYSA6ICh1
bnNpZ25lZCliOwotICh2b2lkKWNhdE5pbDsKQGVuZAoKQHByb3RvY29sIElucHV0U3RyZWFtIDxD
cmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQg
PFpvbmU+KWFab25lIHNldEZpbGVTdHJlYW06IChGSUxFICopZmlsZTsKKyBjcmVhdGU6IChpZCA8
Wm9uZT4pYVpvbmUgc2V0RXhwcjogZXhwcjsKLSBzZXRFeHByOiBleHByOwotIHNldEZpbGVTdHJl
YW06IChGSUxFICopZmlsZVN0cmVhbTsKLSBfSV9Vc2luZzsKLSAoRklMRSAqKWdldEZpbGVTdHJl
YW07Ci0gZ2V0RXhwcjsKQGVuZAoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgNjcKCgpleHRlcm4gaWQg
PFN5bWJvbD4gQXJjaGl2ZXJMaXRlcmFsLCBBcmNoaXZlclF1b3RlLCBBcmNoaXZlckVPTCwgQXJj
aGl2ZXJEb3Q7CgpAcHJvdG9jb2wgQXJjaGl2ZXJLZXl3b3JkIDxDcmVhdGUsIERyb3AsIFJFVFVS
TkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRLZXl3b3JkTmFtZTogKGNvbnN0IGNoYXIgKilu
YW1lOwotIF9JX1VzaW5nOwotIChjb25zdCBjaGFyICopZ2V0S2V5d29yZE5hbWU7Ci0gKHZvaWQp
bGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91
dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQKCkBwcm90b2NvbCBBcmNoaXZl
ckFycmF5IDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRB
cnJheTogYXJyYXk7Ci0gX0lfVXNpbmc7Ci0gKHZvaWQgKilnZXREYXRhOwotICh1bnNpZ25lZCln
ZXRSYW5rOwotICh1bnNpZ25lZCAqKWdldERpbXM7Ci0gKHNpemVfdClnZXRFbGVtZW50U2l6ZTsK
LSAodW5zaWduZWQpZ2V0RWxlbWVudENvdW50OwotIChmY2FsbF90eXBlX3QpZ2V0QXJyYXlUeXBl
OwotIGNvbnZlcnRUb1R5cGU6IChjaGFyKWRlc3RUeXBlIGRlc3Q6ICh2b2lkICopcHRyOwotICh2
b2lkKWxpc3BPdXRTaGFsbG93OiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2b2lkKWxp
c3BPdXREZWVwOiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2b2lkKWRyb3A7CkBlbmQK
CkBwcm90b2NvbCBBcmNoaXZlclZhbHVlIDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBf
SV9DcmVhdGluZzsKLSBzZXREb3VibGU6IChkb3VibGUpdmFsOwotIHNldExvbmdEb3VibGU6IChs
b25nIGRvdWJsZSl2YWw7Ci0gc2V0RmxvYXQ6IChmbG9hdCl2YWw7Ci0gc2V0TG9uZ0xvbmc6IChs
b25nIGxvbmcpdmFsOwotIHNldENoYXI6IChjaGFyKXZhbDsKLSBzZXRCb29sZWFuOiAoQk9PTCl2
YWw7Ci0gc2V0Q2xhc3M6IChDbGFzcyljbGFzczsKLSBzZXROaWw7Ci0gX0lfVXNpbmc7Ci0gKGZj
YWxsX3R5cGVfdClnZXRWYWx1ZVR5cGU7Ci0gKGRvdWJsZSlnZXREb3VibGU7Ci0gKGxvbmcgZG91
YmxlKWdldExvbmdEb3VibGU7Ci0gKGZsb2F0KWdldEZsb2F0OwotIChsb25nIGxvbmcpZ2V0TG9u
Z0xvbmc7Ci0gKGludClnZXRJbnRlZ2VyOwotICh1bnNpZ25lZClnZXRVbnNpZ25lZDsKLSAoY2hh
cilnZXRDaGFyOwotIChCT09MKWdldEJvb2xlYW47Ci0gZ2V0T2JqZWN0OwotIChDbGFzcylnZXRD
bGFzczsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgICA2OAoKCi0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0
U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpZHJvcDsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyUGFp
ciA8Q3JlYXRlLCBEcm9wLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q2FyOiBj
YXI7Ci0gc2V0Q2RyOiBjZHI7Ci0gc2V0Q29uc0Zvcm1hdEZsYWc6IChCT09MKXRoZUNvbnNGb3Jt
YXRGbGFnOwotIF9JX1VzaW5nOwotIGdldENhcjsKLSBnZXRDZHI7Ci0gKEJPT0wpZ2V0Q29uc0Zv
cm1hdEZsYWc7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJl
YW07Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQK
CkBwcm90b2NvbCBBcmNoaXZlckxpc3QgPExpc3QsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGlu
ZzsKLSBfSV9Vc2luZzsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+
KXN0cmVhbTsKLSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsK
QGVuZAoKQHByb3RvY29sIEFyY2hpdmVyUXVvdGVkIDxSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRp
bmc7Ci0gc2V0UXVvdGVkT2JqZWN0OiB2YWx1ZTsKLSBfSV9Vc2luZzsKLSBnZXRRdW90ZWRPYmpl
Y3Q7Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQK
CgoKQHByb3RvY29sIFN0cmluZyA8Q3JlYXRlLCBEcm9wLCBDb3B5LCBDUkVBVEFCTEU+CiMgMTE1
NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7
CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEM6IChjb25zdCBjaGFyICopY3N0cmluZzsK
Ci0gX0lfU2V0dGluZzsKLSAodm9pZClzZXRDOiAoY29uc3QgY2hhciAqKWNzdHJpbmc7CgotIF9J
X1VzaW5nOwotIChjb25zdCBjaGFyICopZ2V0QzsKLSAodm9pZCljYXRDOiAoY29uc3QgY2hhciAq
KWNzdHJpbmc7Ci0gKHVuc2lnbmVkKWdldENvdW50OwpAZW5kCgpAcHJvdG9jb2wgTGlzdFNodWZm
bGVyIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KIyAxMTc2ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2OQoKCi0gX0lfQ3JlYXRp
bmc7CgoKLSBzZXRVbmlmb3JtUmFuZG9tOiBkaXN0OwoKCgorIGNyZWF0ZTogKGlkIDxab25lPilh
Wm9uZSBzZXRVbmlmb3JtUmFuZG9tOiBkaXN0OwoKLSBfSV9Vc2luZzsKCi0gc2h1ZmZsZVdob2xl
TGlzdDogbGlzdDsKCgoKLSBzaHVmZmxlUGFydGlhbExpc3Q6IGxpc3QgTnVtOiAodW5zaWduZWQp
bnVtOwpAZW5kCgpAcHJvdG9jb2wgUGVybXV0YXRpb25JdGVtIDxDcmVhdGUsIFJFVFVSTkFCTEU+
CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0SXRlbTogaXRlbTsKLSBzZXRQb3NpdGlvbjogKHVuc2ln
bmVkKXBvc2l0aW9uOwotIF9JX1VzaW5nOwotIGdldEl0ZW07Ci0gKHVuc2lnbmVkKWdldFBvc2l0
aW9uOwpAZW5kCgpAcHJvdG9jb2wgUGVybXV0YXRpb24gPENvbGxlY3Rpb24sIENyZWF0ZSwgQXJy
YXksIENSRUFUQUJMRT4KCgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q29sbGVjdGlvbjogKGlk
IDxDb2xsZWN0aW9uPiljb2xsZWN0aW9uOwotIHNldExhc3RQZXJtdXRhdGlvbjogKGlkIDxQZXJt
dXRhdGlvbj4pcGVybXV0YXRpb247Ci0gc2V0VW5pZm9ybVJhbmRvbTogcm5kOwpAZW5kCgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy90eXBlcy5oIiAxCmV4dGVybiB2
b2lkICpfY29sbGVjdGlvbnNfW107CgpleHRlcm4gaWQgT2Zmc2V0czsKZXh0ZXJuIGlkIEZvckVh
Y2g7CmV4dGVybiBpZCBGb3JFYWNoS2V5OwpleHRlcm4gaWQgSW5kZXg7CmV4dGVybiBpZCBQZXJt
dXRlZEluZGV4OwpleHRlcm4gaWQgQ29sbGVjdGlvbjsKZXh0ZXJuIGlkIERlZmF1bHRNZW1iZXI7
CmV4dGVybiBpZCBNZW1iZXJCbG9jazsKZXh0ZXJuIGlkIEFycmF5OwoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDcwCgoKZXh0ZXJuIGlkIExpc3RJbmRleDsKZXh0ZXJuIGlkIExpc3Q7CmV4dGVybiBpZCBD
b21wYXJlRnVuY3Rpb247CmV4dGVybiBpZCBLZXllZENvbGxlY3Rpb247CmV4dGVybiBpZCBLZXll
ZENvbGxlY3Rpb25JbmRleDsKZXh0ZXJuIGlkIE1lbWJlclNsb3Q7CmV4dGVybiBpZCBfU2V0Owpl
eHRlcm4gaWQgU2V0OwpleHRlcm4gaWQgT3JkZXJlZFNldDsKZXh0ZXJuIGlkIE1hcEluZGV4Owpl
eHRlcm4gaWQgTWFwOwpleHRlcm4gaWQgT3V0cHV0U3RyZWFtOwpleHRlcm4gaWQgSW5wdXRTdHJl
YW07CmV4dGVybiBpZCBBcmNoaXZlcktleXdvcmQ7CmV4dGVybiBpZCBBcmNoaXZlckFycmF5Owpl
eHRlcm4gaWQgQXJjaGl2ZXJWYWx1ZTsKZXh0ZXJuIGlkIEFyY2hpdmVyUGFpcjsKZXh0ZXJuIGlk
IEFyY2hpdmVyTGlzdDsKZXh0ZXJuIGlkIEFyY2hpdmVyUXVvdGVkOwpleHRlcm4gaWQgU3RyaW5n
OwpleHRlcm4gaWQgTGlzdFNodWZmbGVyOwpleHRlcm4gaWQgUGVybXV0YXRpb25JdGVtOwpleHRl
cm4gaWQgUGVybXV0YXRpb247CiMgMTIyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxl
Y3Rpb25zLmgiIDIKIyAyNyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZXh0ZXJudmFyLmgiIDEKIyAyOCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIKCkBwcm90b2NvbCBEZWZhdWx0T3JkZXIK
IyA3NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfQ3JlYXRpbmc7
Ci0gX0lfU2V0dGluZzsKLSBzZXREZWZhdWx0T3JkZXI6IChpZCA8U3ltYm9sPilhU3ltYm9sOwot
IF9JX1VzaW5nOwotIChpZCA8U3ltYm9sPilnZXREZWZhdWx0T3JkZXI7CkBlbmQKCgpAcHJvdG9j
b2wgQWN0aXZpdHkgPERlZmluZWRPYmplY3QsIERyb3AsIFJFVFVSTkFCTEU+CiMgMTI2ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKCgoKCgotIChpZCA8
U3ltYm9sPilydW47CgoKCi0gKHZvaWQpc3RvcDsKCgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDcx
CgoKCgotICh2b2lkKXRlcm1pbmF0ZTsKCgoKCi0gKGlkIDxTeW1ib2w+KW5leHRBY3Rpb247CgoK
LSAoaWQgPFN5bWJvbD4pc3RlcEFjdGlvbjsKCgoKCi0gKGlkIDxTeW1ib2w+KWdldFN0YXR1czsK
IyAxNjcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIChpZCA8U3ltYm9s
PilnZXRIb2xkVHlwZTsKCgotIGdldEFjdGlvbjsKCgotIGdldEFjdGlvblR5cGU7CgoKLSAodm9p
ZClzZXRPd25lckFjdGl2aXR5OiBvd25lckFjdGl2aXR5OwoKCi0gZ2V0T3duZXJBY3Rpdml0eTsK
CgotIGdldFN1YmFjdGl2aXRpZXM7CgoKLSBnZXRDb250cm9sbGluZ0FjdGl2aXR5OwoKCi0gZ2V0
VG9wTGV2ZWxBY3Rpdml0eTsKCgotIGdldFN3YXJtQWN0aXZpdHk7CgoKLSBnZXRTY2hlZHVsZUFj
dGl2aXR5OwoKCi0gc2V0U2VyaWFsTW9kZTogKEJPT0wpc2VyaWFsTW9kZTsKCgotIChCT09MKWdl
dFNlcmlhbE1vZGU7CgoKLSAoaWQgPEFjdGl2aXR5PilnZXRDdXJyZW50U3ViYWN0aXZpdHk7CkBl
bmQKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAg
ICAgICAgICAgICAgICAgICBQYWdlICAgNzIKCgoKZXh0ZXJuIGlkIDxTeW1ib2w+IEluaXRpYWxp
emVkLCBSdW5uaW5nLCBIb2xkaW5nLCBSZWxlYXNlZCwgU3RvcHBlZCwKICBUZXJtaW5hdGVkLCBD
b21wbGV0ZWQ7CgpAcHJvdG9jb2wgQWN0aW9uIDxDcmVhdGUsIERyb3AsIEdldE93bmVyPgojIDI0
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfVXNpbmc7Ci0gKHZv
aWQpX3BlcmZvcm1BY3Rpb25fOiAoaWQgPEFjdGl2aXR5PilhY3Rpdml0eTsKQGVuZAoKQHByb3Rv
Y29sIEFjdGlvbkFyZ3MKCgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0QXJnMTogYXJn
MTsKLSAodm9pZClzZXRBcmcyOiBhcmcyOwotICh2b2lkKXNldEFyZzM6IGFyZzM7Ci0gX0lfVXNp
bmc7Ci0gKHVuc2lnbmVkKWdldE5BcmdzOwotIGdldEFyZzE7Ci0gZ2V0QXJnMjsKLSBnZXRBcmcz
OwpAZW5kCgpAcHJvdG9jb2wgRkFjdGlvbiA8QWN0aW9uLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3Jl
YXRpbmc7Ci0gc2V0Q2FsbDogZmNhbGw7Ci0gX0lfU2V0dGluZzsKLSBzZXRBdXRvRHJvcDogKEJP
T0wpYXV0b0Ryb3A7Ci0gX0lfVXNpbmc7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25UYXJnZXQKCgot
IF9JX0NyZWF0aW5nOwotICh2b2lkKXNldFRhcmdldDogdGFyZ2V0OwotIF9JX1VzaW5nOwotIGdl
dFRhcmdldDsKQGVuZAoKQHByb3RvY29sIEFjdGlvblNlbGVjdG9yCgoKLSBfSV9TZXR0aW5nOwot
ICh2b2lkKXNldE1lc3NhZ2VTZWxlY3RvcjogKFNFTClhU2VsOwotIF9JX1VzaW5nOwotIChTRUwp
Z2V0TWVzc2FnZVNlbGVjdG9yOwpAZW5kCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgNzMKCgoKQHByb3Rv
Y29sIEFjdGlvblRvIDxBY3Rpb24sIEFjdGlvblRhcmdldCwgQWN0aW9uU2VsZWN0b3IsIEFjdGlv
bkFyZ3MsIFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEFjdGlvbkZvckVhY2ggPEFjdGlv
blRvLCBEZWZhdWx0T3JkZXIsIFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEFjdGlvbkZv
ckVhY2hIb21vZ2VuZW91cyA8QWN0aW9uLCBBY3Rpb25UYXJnZXQsIEFjdGlvblNlbGVjdG9yLCBE
ZWZhdWx0T3JkZXIsIFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEZBY3Rpb25Gb3JFYWNo
IDxGQWN0aW9uLCBBY3Rpb25UYXJnZXQsIERlZmF1bHRPcmRlcj4KCgpAZW5kCgpAcHJvdG9jb2wg
RkFjdGlvbkZvckVhY2hIZXRlcm9nZW5lb3VzIDxGQWN0aW9uRm9yRWFjaCwgUkVUVVJOQUJMRT4K
CgpAZW5kCgpAcHJvdG9jb2wgRkFjdGlvbkZvckVhY2hIb21vZ2VuZW91cyA8RkFjdGlvbkZvckVh
Y2gsIFJFVFVSTkFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29sIEFjdGlvbkNhbGwgPEFjdGlvbiwg
QWN0aW9uQXJncywgUkVUVVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwotICh2b2lkKXNldEZ1bmN0
aW9uUG9pbnRlcjogKGZ1bmNfdClmcHRyOwotIF9JX1VzaW5nOwotIChmdW5jX3QpZ2V0RnVuY3Rp
b25Qb2ludGVyOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2hhbmdlZCA8QWN0aW9uLCBSRVRVUk5B
QkxFPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3JlYXRpbmcKCgotIF9JX1VzaW5nOwotIChp
ZCA8RkFjdGlvbj4pY3JlYXRlRkFjdGlvbjogKGlkIDxGQ2FsbD4pY2FsbDsKQGVuZAoKQHByb3Rv
Y29sIEFjdGlvbkNyZWF0aW5nQ2FsbAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDc0CgoKCgoKCgoKCi0g
X0lfVXNpbmc7Ci0gKGlkIDxBY3Rpb25DYWxsPiljcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZw
dHI7Ci0gKGlkIDxBY3Rpb25DYWxsPiljcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHIgOiBh
cmcxOwotIChpZCA8QWN0aW9uQ2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyIDog
YXJnMSA6IGFyZzI7Ci0gKGlkIDxBY3Rpb25DYWxsPiljcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190
KWZwdHIgOiBhcmcxIDogYXJnMiA6IGFyZzM7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25DcmVhdGlu
Z1RvCiMgMzg0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2lu
ZzsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwp
YVNlbDsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChT
RUwpYVNlbCA6IGFyZzE7Ci0gKGlkIDxBY3Rpb25Ubz4pY3JlYXRlQWN0aW9uVG86IHRhcmdldCBt
ZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMjsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVB
Y3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbCA6IGFyZzEgOiBhcmcyIDogYXJnMzsK
QGVuZAoKQHByb3RvY29sIEFjdGlvbkNyZWF0aW5nRm9yRWFjaAojIDQwMiAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfVXNpbmc7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNo
SG9tb2dlbmVvdXM+KWNyZWF0ZUFjdGlvbkZvckVhY2hIb21vZ2VuZW91czogdGFyZ2V0IG1lc3Nh
Z2U6IChTRUwpYVNlbDsKCi0gKGlkIDxBY3Rpb25Gb3JFYWNoPiljcmVhdGVBY3Rpb25Gb3JFYWNo
OiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pY3JlYXRl
QWN0aW9uRm9yRWFjaDogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbCA6IGFyZzE7Ci0gKGlkIDxB
Y3Rpb25Gb3JFYWNoPiljcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClh
U2VsIDogYXJnMSA6IGFyZzI7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPiljcmVhdGVBY3Rpb25Gb3JF
YWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMSA6IGFyZzIgOiBhcmczOwpAZW5k
CgpAcHJvdG9jb2wgRkFjdGlvbkNyZWF0aW5nRm9yRWFjaEhldGVyb2dlbmVvdXMKCgoKCgotIF9J
X1VzaW5nOwotIChpZCA8RkFjdGlvbkZvckVhY2hIZXRlcm9nZW5lb3VzPiljcmVhdGVGQWN0aW9u
Rm9yRWFjaEhldGVyb2dlbmVvdXM6IHRhcmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5k
CgpAcHJvdG9jb2wgRkFjdGlvbkNyZWF0aW5nRm9yRWFjaEhvbW9nZW5lb3VzCgoKCgoKLSBfSV9V
c2luZzsKLSAoaWQgPEZBY3Rpb25Gb3JFYWNoSG9tb2dlbmVvdXM+KWNyZWF0ZUZBY3Rpb25Gb3JF
YWNoSG9tb2dlbmVvdXM6IHRhcmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5kCgpAcHJv
dG9jb2wgQWN0aW9uQ3JlYXRpbmcgPEZBY3Rpb25DcmVhdGluZywgQWN0aW9uQ3JlYXRpbmdDYWxs
LCBBY3Rpb25DcmVhdGluZ1RvLCBBY3Rpb25DcmVhdGluZ0ZvckVhY2gsIEZBY3Rpb25DcmVhdGlu
Z0ZvckVhY2hIZXRlcm9nZW5lb3VzLCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXM+
CiMgNDYyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgICA3NQoKCi0gX0lfVXNpbmc7CgoKCgotIGNyZWF0ZUFjdGlvbjogYW5BY3Rpb25UeXBl
OwoKQGVuZAoKCmV4dGVybiBpZCA8U3ltYm9sPiBDb25jdXJyZW50LCBTZXF1ZW50aWFsLCBSYW5k
b21pemVkOwojIDQ5MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCnR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB0aW1ldmFsX3Q7CgoKCkBwcm90b2NvbCBBY3Rpdml0eUluZGV4IDxJ
bmRleCwgUkVUVVJOQUJMRT4KCgotIF9JX1VzaW5nOwotIChpZCA8U3ltYm9sPilnZXRIb2xkVHlw
ZTsKLSAoaWQgPEFjdGlvbj4pbmV4dEFjdGlvbjogKGlkICopc3RhdHVzOwpAZW5kCgoKZXh0ZXJu
IGlkIDxTeW1ib2w+IEhvbGRTdGFydCwgSG9sZEVuZDsKCkBwcm90b2NvbCBBY3Rpb25UeXBlCiMg
NTMxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKIyA1
NTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIChpZCA8QWN0aXZpdHk+
KWFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKQGVuZAoKQHByb3RvY29sIFN5bmNocm9uaXphdGlv
blR5cGUKIyA1NjkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX0Ny
ZWF0aW5nOwotICh2b2lkKXNldFN5bmNocm9uaXphdGlvblR5cGU6IGFTY2hlZHVsZVR5cGU7Cgot
IF9JX1VzaW5nOwotIGdldFN5bmNocm9uaXphdGlvblR5cGU7CkBlbmQKCkBwcm90b2NvbCBBdXRv
RHJvcAojIDU5NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfQ3Jl
YXRpbmc7Ci0gc2V0QXV0b0Ryb3A6IChCT09MKWF1dG9Ecm9wOwotIF9JX1VzaW5nOwotIChCT09M
KWdldEF1dG9Ecm9wOwpAZW5kCgpAcHJvdG9jb2wgQ29tcG91bmRBY3Rpb24gPEFjdGlvblR5cGUs
IENvbGxlY3Rpb24sIEF1dG9Ecm9wLCBEZWZhdWx0T3JkZXI+CiMgNjEzICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKQGVuZAoKQHByb3RvY29sIEFjdGlvbkdyb3VwIDxDb21w
b3VuZEFjdGlvbiwgQWN0aW9uQ3JlYXRpbmcsIERlZmF1bHRPcmRlciwgQ1JFQVRBQkxFPgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDc2CgoKIyA2MzQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rp
dml0eS5oIgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ29uY3VycmVudCA8QWN0aW9uLCBSRVRVUk5B
QkxFPgotIF9JX1VzaW5nOwoKCi0gKGlkIDxBY3Rpb25Hcm91cD4pZ2V0Q29uY3VycmVudEdyb3Vw
OwpAZW5kCgpAcHJvdG9jb2wgUmVsYXRpdmVUaW1lCgoKCgoKCi0gX0lfU2V0dGluZzsKLSBzZXRS
ZWxhdGl2ZVRpbWU6IChCT09MKXJlbGF0aXZlVGltZTsKLSBfSV9Vc2luZzsKLSAoQk9PTClnZXRS
ZWxhdGl2ZVRpbWU7CkBlbmQKCkBwcm90b2NvbCBSZXBlYXRJbnRlcnZhbAojIDY3MSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfU2V0dGluZzsKLSBzZXRSZXBlYXRJ
bnRlcnZhbDogKHRpbWV2YWxfdClyZXBlYXRJbnRlcnZhbDsKLSBfSV9Vc2luZzsKLSAodGltZXZh
bF90KWdldFJlcGVhdEludGVydmFsOwpAZW5kCgpAcHJvdG9jb2wgQ29uY3VycmVudEdyb3VwVHlw
ZQojIDcwNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfU2V0dGlu
ZzsKLSAodm9pZClzZXRDb25jdXJyZW50R3JvdXBUeXBlOiBncm91cFR5cGU7Ci0gX0lfVXNpbmc7
Ci0gZ2V0Q29uY3VycmVudEdyb3VwVHlwZTsKQGVuZAoKQHByb3RvY29sIFNpbmdsZXRvbkdyb3Vw
cwojIDcyOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfU2V0dGlu
ZzsKLSAodm9pZClzZXRTaW5nbGV0b25Hcm91cHM6IChCT09MKXNpbmdsZXRvbkdyb3VwczsKLSBf
SV9Vc2luZzsKLSAoQk9PTClnZXRTaW5nbGV0b25Hcm91cHM7CkBlbmQKCkBwcm90b2NvbCBTY2hl
ZHVsZSA8TWFwLCBDb21wb3VuZEFjdGlvbiwgQWN0aW9uQ3JlYXRpbmcsIFJlbGF0aXZlVGltZSwg
UmVwZWF0SW50ZXJ2YWwsIENvbmN1cnJlbnRHcm91cFR5cGUsIFNpbmdsZXRvbkdyb3VwcywgQ1JF
QVRBQkxFPgojIDc2MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lf
Q3JlYXRpbmc7CgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRSZXBlYXRJbnRlcnZhbDog
KHRpbWV2YWxfdClycHRJbnRlcnZhbDsKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRB
dXRvRHJvcDogKEJPT0wpYXV0b0Ryb3A7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDc3CgoKCgotIHNl
dEtlZXBFbXB0eUZsYWc6IChCT09MKWtlZXBFbXB0eUZsYWc7Ci0gX0lfVXNpbmc7Ci0gYXQ6ICh0
aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb246IGFuQWN0aW9uVHlwZTsKCi0gKGlkIDxGQWN0aW9u
PilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUZBY3Rpb246IChpZCA8RkNhbGw+KWNhbGw7Ci0g
KGlkIDxBY3Rpb25DYWxsPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkNhbGw6IChm
dW5jX3QpZnB0cjsKLSAoaWQgPEFjdGlvbkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRl
QWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOmFyZzE7Ci0gKGlkIDxBY3Rpb25DYWxsPilhdDogKHRp
bWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0cjphcmcxOmFyZzI7Ci0g
KGlkIDxBY3Rpb25DYWxsPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkNhbGw6IChm
dW5jX3QpZnB0cjphcmcxOmFyZzI6YXJnMzsKCi0gKGlkIDxBY3Rpb25Ubz4pYXQ6ICh0aW1ldmFs
X3QpdFZhbCBjcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbDsKLSAoaWQg
PEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVz
c2FnZTogKFNFTClhU2VsOmFyZzE7Ci0gKGlkIDxBY3Rpb25Ubz4pYXQ6ICh0aW1ldmFsX3QpdFZh
bCBjcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbDphcmcxOmFyZzI7Ci0g
KGlkIDxBY3Rpb25Ubz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25UbzogdGFyZ2V0
IG1lc3NhZ2U6IChTRUwpYVNlbDphcmcxOmFyZzI6YXJnMzsKCi0gKGlkIDxBY3Rpb25Gb3JFYWNo
SG9tb2dlbmVvdXM+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uRm9yRWFjaEhvbW9n
ZW5lb3VzOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwoKLSAoaWQgPEFjdGlvbkZvckVhY2g+
KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uRm9yRWFjaDogdGFyZ2V0IG1lc3NhZ2U6
IChTRUwpYVNlbDsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWF0OiAodGltZXZhbF90KXRWYWwgY3Jl
YXRlQWN0aW9uRm9yRWFjaDogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbDphcmcxOwotIChpZCA8
QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0
YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjsKLSAoaWQgPEFjdGlvbkZvckVhY2g+
KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uRm9yRWFjaDogdGFyZ2V0IG1lc3NhZ2U6
IChTRUwpYVNlbDphcmcxOmFyZzI6YXJnMzsKCi0gKGlkIDxGQWN0aW9uRm9yRWFjaEhldGVyb2dl
bmVvdXM+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlRkFjdGlvbkZvckVhY2hIZXRlcm9nZW5l
b3VzOiB0YXJnZXQgY2FsbDogKGlkIDxGQ2FsbD4pY2FsbDsKLSAoaWQgPEZBY3Rpb25Gb3JFYWNo
SG9tb2dlbmVvdXM+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlRkFjdGlvbkZvckVhY2hIb21v
Z2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CgoKCi0gcmVtb3ZlOiBhbkFj
dGlvbjsKCgotIChpZCA8QWN0aW9uR3JvdXA+KWluc2VydEdyb3VwOiAodGltZXZhbF90KXRWYWw7
CkBlbmQKCkBwcm90b2NvbCBTY2hlZHVsZUFjdGl2aXR5IDxBY3Rpdml0eSwgUkVUVVJOQUJMRT4K
CgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoKLSAodGltZXZhbF90KWdldEN1cnJlbnRUaW1l
OwoKCi0gc3RlcFVudGlsOiAodGltZXZhbF90KXRWYWw7CkBlbmQKCkBwcm90b2NvbCBTd2FybUFj
dGl2aXR5IDxTY2hlZHVsZUFjdGl2aXR5LCBSRVRVUk5BQkxFPgoKCgotIF9JX1VzaW5nOwoKLSBn
ZXRTd2FybTsKCi0gKGlkIDxTY2hlZHVsZT4pZ2V0U3luY2hyb25pemF0aW9uU2NoZWR1bGU7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAg
ICAgICAgICAgICBQYWdlICAgNzgKCgpAZW5kCgpAcHJvdG9jb2wgRm9yRWFjaEFjdGl2aXR5IDxB
Y3Rpdml0eSwgUkVUVVJOQUJMRT4KCgoKLSBfSV9Vc2luZzsKLSBnZXRDdXJyZW50TWVtYmVyOwpA
ZW5kCgpAcHJvdG9jb2wgU3dhcm1Qcm9jZXNzIDxBY3Rpb25UeXBlLCBab25lLCBTeW5jaHJvbml6
YXRpb25UeXBlPgojIDg1MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0g
X0lfQ3JlYXRpbmc7CgoKCgoKCgotIHNldEludGVybmFsWm9uZVR5cGU6IGFab25lVHlwZTsKCi0g
X0lfVXNpbmc7CgoKCgoKLSBnZXRJbnRlcm5hbFpvbmU7CgoKCgoKLSAoaWQgPFN3YXJtQWN0aXZp
dHk+KWdldEFjdGl2aXR5OwpAZW5kCiMgOTI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIKQHByb3RvY29sIEdldFN1YmFjdGl2aXR5QWN0aW9uCgoKCi0gX0lfVXNpbmc7Ci0g
X2dldFN1YmFjdGl2aXR5QWN0aW9uXzsKQGVuZAoKCgoKCmV4dGVybiBpZCBfYWN0aXZpdHlfY3Vy
cmVudDsKCgoKZXh0ZXJuIGlkIF9hY3Rpdml0eV9jb250ZXh0X2Vycm9yIChjb25zdCBjaGFyICpt
YWNyb05hbWUpOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBt
YWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgNzkKCgpAcHJvdG9jb2wgQ29uY3VycmVu
dEdyb3VwIDxBY3Rpb25Hcm91cCwgUkVUVVJOQUJMRT4KCgotIF9JX1VzaW5nOwotICh2b2lkKV9z
ZXRBY3Rpb25Db25jdXJyZW50XzogYWN0aW9uOwotIF9nZXRFbXB0eUFjdGlvbkNvbmN1cnJlbnRf
OwpAZW5kCgpAcHJvdG9jb2wgQ29uY3VycmVudFNjaGVkdWxlIDxDb25jdXJyZW50R3JvdXAsIFNj
aGVkdWxlLCBDUkVBVEFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEFjdGl2YXRpb25PcmRlciA8QWN0
aW9uR3JvdXAsIFJFVFVSTkFCTEU+CgoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkTGFzdDogbWVy
Z2VBY3Rpb247CgoKCi0gcmVtb3ZlOiBtZXJnZUFjdGlvbjsKCkBlbmQKCgpleHRlcm4gaWQgPEVy
cm9yPiBJbnZhbGlkU3dhcm1ab25lOwoKCgpleHRlcm4gaWQgX2FjdGl2aXR5X3pvbmU7CiMgOTg1
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKZXh0ZXJuIEJPT0wgKCpfYWN0
aXZpdHlfdHJhY2UpIChpZCk7CiMgOTk4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZp
dHkuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvdHlwZXMuaCIgMQpl
eHRlcm4gdm9pZCAqX2FjdGl2aXR5X1tdOwoKZXh0ZXJuIGlkIERlZmF1bHRPcmRlcjsKZXh0ZXJu
IGlkIEFjdGl2aXR5OwpleHRlcm4gaWQgQWN0aW9uOwpleHRlcm4gaWQgQWN0aW9uQXJnczsKZXh0
ZXJuIGlkIEZBY3Rpb247CmV4dGVybiBpZCBBY3Rpb25UYXJnZXQ7CmV4dGVybiBpZCBBY3Rpb25T
ZWxlY3RvcjsKZXh0ZXJuIGlkIEFjdGlvblRvOwpleHRlcm4gaWQgQWN0aW9uRm9yRWFjaDsKZXh0
ZXJuIGlkIEFjdGlvbkZvckVhY2hIb21vZ2VuZW91czsKZXh0ZXJuIGlkIEZBY3Rpb25Gb3JFYWNo
OwpleHRlcm4gaWQgRkFjdGlvbkZvckVhY2hIZXRlcm9nZW5lb3VzOwpleHRlcm4gaWQgRkFjdGlv
bkZvckVhY2hIb21vZ2VuZW91czsKZXh0ZXJuIGlkIEFjdGlvbkNhbGw7CmV4dGVybiBpZCBBY3Rp
b25DaGFuZ2VkOwpleHRlcm4gaWQgRkFjdGlvbkNyZWF0aW5nOwpleHRlcm4gaWQgQWN0aW9uQ3Jl
YXRpbmdDYWxsOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRpbmdUbzsKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA4MAoKCmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZ0ZvckVhY2g7CmV4dGVybiBpZCBGQWN0aW9u
Q3JlYXRpbmdGb3JFYWNoSGV0ZXJvZ2VuZW91czsKZXh0ZXJuIGlkIEZBY3Rpb25DcmVhdGluZ0Zv
ckVhY2hIb21vZ2VuZW91czsKZXh0ZXJuIGlkIEFjdGlvbkNyZWF0aW5nOwpleHRlcm4gaWQgQWN0
aXZpdHlJbmRleDsKZXh0ZXJuIGlkIEFjdGlvblR5cGU7CmV4dGVybiBpZCBTeW5jaHJvbml6YXRp
b25UeXBlOwpleHRlcm4gaWQgQXV0b0Ryb3A7CmV4dGVybiBpZCBDb21wb3VuZEFjdGlvbjsKZXh0
ZXJuIGlkIEFjdGlvbkdyb3VwOwpleHRlcm4gaWQgQWN0aW9uQ29uY3VycmVudDsKZXh0ZXJuIGlk
IFJlbGF0aXZlVGltZTsKZXh0ZXJuIGlkIFJlcGVhdEludGVydmFsOwpleHRlcm4gaWQgQ29uY3Vy
cmVudEdyb3VwVHlwZTsKZXh0ZXJuIGlkIFNpbmdsZXRvbkdyb3VwczsKZXh0ZXJuIGlkIFNjaGVk
dWxlOwpleHRlcm4gaWQgU2NoZWR1bGVBY3Rpdml0eTsKZXh0ZXJuIGlkIFN3YXJtQWN0aXZpdHk7
CmV4dGVybiBpZCBGb3JFYWNoQWN0aXZpdHk7CmV4dGVybiBpZCBTd2FybVByb2Nlc3M7CmV4dGVy
biBpZCBHZXRTdWJhY3Rpdml0eUFjdGlvbjsKZXh0ZXJuIGlkIENvbmN1cnJlbnRHcm91cDsKZXh0
ZXJuIGlkIENvbmN1cnJlbnRTY2hlZHVsZTsKZXh0ZXJuIGlkIEFjdGl2YXRpb25PcmRlcjsKIyA5
OTkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIiAyCiMgMjIgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZXh0ZXJudmFyLmgiIDEKIyAyMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVj
dGJhc2UuaCIgMgoKQHByb3RvY29sIFN3YXJtT2JqZWN0IDxDcmVhdGUsIERyb3AsIENSRUFUQUJM
RT4KIyAzOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIKLSBfSV9Vc2lu
ZzsKCgoKLSBnZXRQcm9iZU1hcDsKCgoKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwoKCgotIGdldFBy
b2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwoKCgotIGdldFByb2JlRm9y
TWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZTsKQGVuZAoKQHByb3RvY29sIFByb2JlQ29u
ZmlnCgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4u
bWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA4MQoKCi0gX0lfVXNpbmc7Ci0gc2V0T2JqZWN0
VG9Ob3RpZnk6IGFuT2JqZWN0OwotIGdldE9iamVjdFRvTm90aWZ5OwpAZW5kCgpAcHJvdG9jb2wg
UHJvYmUgPFN3YXJtT2JqZWN0LCBQcm9iZUNvbmZpZz4KIyA4MSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamVjdGJhc2UuaCIKLSBfSV9DcmVhdGluZzsKCgotIHNldFByb2JlZENsYXNzOiAo
Q2xhc3MpY2xhc3M7CgotIHNldFByb2JlZE9iamVjdDogb2JqZWN0OwotIF9JX1NldHRpbmc7CgoK
Ci0gc2V0U2FmZXR5OwoKCgoKLSB1bnNldFNhZmV0eTsKCi0gX0lfVXNpbmc7CgoKCgoKLSBjbG9u
ZTogKGlkIDxab25lPilhWm9uZTsKCgoKLSAoQ2xhc3MpZ2V0UHJvYmVkQ2xhc3M7CgoKCgotIChj
b25zdCBjaGFyICopZ2V0UHJvYmVkVHlwZTsKQGVuZAoKQHByb3RvY29sIFZhclByb2JlIDxQcm9i
ZSwgQ1JFQVRBQkxFPgoKCgoKCgotIF9JX0NyZWF0aW5nOwoKCgoKLSBzZXRQcm9iZWRWYXJpYWJs
ZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDgyCgoKLSBf
SV9TZXR0aW5nOwoKCgoKCgoKLSBzZXROb25JbnRlcmFjdGl2ZTsKCgoKCgoKLSBzZXRTdHJpbmdS
ZXR1cm5UeXBlOiByZXR1cm5UeXBlOwoKCgotIHNldEZsb2F0Rm9ybWF0OiAoY29uc3QgY2hhciAq
KWZvcm1hdDsKCi0gX0lfVXNpbmc7CgoKLSAoY29uc3QgY2hhciAqKWdldFByb2JlZFZhcmlhYmxl
OwoKCgotIChCT09MKWdldEludGVyYWN0aXZlRmxhZzsKCgotICh2b2lkICopcHJvYmVSYXc6IGFu
T2JqZWN0OwoKCgotICh2b2lkICopcHJvYmVBc1BvaW50ZXI6IGFuT2JqZWN0OwoKCi0gcHJvYmVP
YmplY3Q6IGFuT2JqZWN0OwoKCgotIChpbnQpcHJvYmVBc0ludDogYW5PYmplY3Q7CgoKCi0gKGRv
dWJsZSlwcm9iZUFzRG91YmxlOiBhbk9iamVjdDsKCgoKLSAoY29uc3QgY2hhciAqKXByb2JlQXNT
dHJpbmc6IGFuT2JqZWN0IEJ1ZmZlcjogKGNoYXIgKilidWZmZXI7CgoKCi0gKGlkIDxTdHJpbmc+
KXByb2JlQXNTdHJpbmc6IGFuT2JqZWN0OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgICA4MwoKCgoKCgoK
LSAoY29uc3QgY2hhciAqKXByb2JlQXNTdHJpbmc6IGFuT2JqZWN0CiAgICAgICAgICAgICAgICAg
ICAgICAgQnVmZmVyOiAoY2hhciAqKWJ1ZgogICAgICAgICAgICB3aXRoRnVsbFByZWNpc2lvbjog
KEJPT0wpcHJlY2lzaW9uOwoKCi0gKHVuc2lnbmVkKWdldFJhbms7CgoKLSAoY29uc3QgY2hhciAq
KWdldEJhc2VUeXBlOwoKCgotICh1bnNpZ25lZCAqKWdldERpbXM7CgoKCi0gaXRlcmF0ZUFzRG91
YmxlOiBhbk9iamVjdCB1c2luZzogKHZvaWQgKCopICh1bnNpZ25lZCByYW5rLCB1bnNpZ25lZCAq
dmVjLCBkb3VibGUgdmFsKSlmdW5jOwoKCgotIGl0ZXJhdGVBc0ludGVnZXI6IGFuT2JqZWN0IHVz
aW5nOiAodm9pZCAoKikgKHVuc2lnbmVkIHJhbmssIHVuc2lnbmVkICp2ZWMsIGludCB2YWwpKWZ1
bmM7CgoKCi0gKHZvaWQpc2V0RGF0YTogYW5PYmplY3QgVG86ICh2b2lkICopbmV3VmFsdWU7CgoK
CgoKCgotIChCT09MKXNldERhdGE6IGFuT2JqZWN0IFRvU3RyaW5nOiAoY29uc3QgY2hhciAqKXM7
CgoKCi0gKHZvaWQpc2V0RGF0YTogYW5PYmplY3QgVG9Eb3VibGU6IChkb3VibGUpdmFsOwoKZXh0
ZXJuIGlkIDxTeW1ib2w+IERlZmF1bHRTdHJpbmcsIENoYXJTdHJpbmcsIEludFN0cmluZzsKQGVu
ZAoKQHByb3RvY29sIE1lc3NhZ2VQcm9iZSA8UHJvYmUsIENSRUFUQUJMRT4KCgoKCgoKCi0gX0lf
Q3JlYXRpbmc7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDg0CgoKCi0gc2V0UHJvYmVkU2VsZWN0b3I6
IChTRUwpYVNlbDsKCgoKCgotIHNldFByb2JlZE1ldGhvZE5hbWU6IChjb25zdCBjaGFyICopbWV0
aG9kTmFtZTsKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRQcm9iZWRTZWxlY3Rvcjog
KFNFTClhU2VsOwoKLSBfSV9TZXR0aW5nOwoKCgoKLSBzZXRIaWRlUmVzdWx0OiAoQk9PTCl2YWw7
CgotIF9JX1VzaW5nOwoKCi0gKEJPT0wpaXNSZXN1bHRJZDsKCgoKLSAoQk9PTClpc0FyZ3VtZW50
SWQ6ICh1bnNpZ25lZCl3aGljaDsKCgoKLSAoY29uc3QgY2hhciAqKWdldFByb2JlZE1lc3NhZ2U7
CgotICh1bnNpZ25lZClnZXRBcmdDb3VudDsKCgotICh2YWxfdClnZXRBcmc6ICh1bnNpZ25lZCl3
aGljaDsKCgoKLSAoY29uc3QgY2hhciAqKWdldEFyZ05hbWU6ICh1bnNpZ25lZCl3aGljaDsKCgot
IChCT09MKWdldEhpZGVSZXN1bHQ7CgoKCi0gc2V0QXJnOiAodW5zaWduZWQpd2hpY2ggVG9TdHJp
bmc6IChjb25zdCBjaGFyICopd2hhdDsKCgoKCgotIHNldEFyZzogKHVuc2lnbmVkKXdoaWNoIFRv
VW5zaWduZWQ6ICh1bnNpZ25lZCl4OwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDg1CgoKLSAodmFs
X3QpZHluYW1pY0NhbGxPbjogdGFyZ2V0OwoKCgoKLSAoZG91YmxlKWRvdWJsZUR5bmFtaWNDYWxs
T246IHRhcmdldDsKCgoKCi0gKGxvbmcpbG9uZ0R5bmFtaWNDYWxsT246IHRhcmdldDsKCgoKCi0g
KGNvbnN0IGNoYXIgKilzdHJpbmdEeW5hbWljQ2FsbE9uOiB0YXJnZXQ7CgoKCgotIG9iamVjdER5
bmFtaWNDYWxsT246IHRhcmdldDsKQGVuZAoKQHByb3RvY29sIFByb2JlTWFwIDxTd2FybU9iamVj
dCwgUHJvYmVDb25maWcsIENSRUFUQUJMRT4KIyAzMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgoKCi0gc2V0UHJvYmVkQ2xhc3M6IChDbGFz
cyljbGFzczsKCi0gc2V0UHJvYmVkT2JqZWN0OiBvYmplY3Q7Ci0gX0lfVXNpbmc7CgotICh1bnNp
Z25lZClnZXRDb3VudDsKCgoKLSAoQ2xhc3MpZ2V0UHJvYmVkQ2xhc3M7CgoKCgotIGFkZFByb2Jl
OiAoaWQgPFByb2JlPilhUHJvYmU7CgoKCgotIGFkZFByb2JlTWFwOiBhUHJvYmVNYXA7CgoKCgoK
LSBkcm9wUHJvYmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgIDg2CgoKCgoKLSBkcm9wUHJvYmVGb3JNZXNzYWdlOiAoY29uc3QgY2hhciAq
KWFNZXNzYWdlOwoKCgoKCi0gZHJvcFByb2JlTWFwOiBhUHJvYmVNYXA7CgoKCi0gKGlkIDxJbmRl
eD4pYmVnaW46IChpZCA8Wm9uZT4pYVpvbmU7CgoKCgoKCi0gY2xvbmU6IChpZCA8Wm9uZT4pYVpv
bmU7CgpAZW5kCgpAcHJvdG9jb2wgU3dhcm0gPFN3YXJtUHJvY2VzcywgQ1JFQVRBQkxFPgoKCgoK
Ci0gX0lfVXNpbmc7CgoKLSBidWlsZE9iamVjdHM7CgoKLSBidWlsZEFjdGlvbnM7CiMgNDA4ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIChpZCA8QWN0aXZpdHk+KWFj
dGl2YXRlSW46IHN3YXJtQ29udGV4dDsKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcDsK
CgotIChpZCA8UHJvYmVNYXA+KWdldENvbXBsZXRlUHJvYmVNYXA7CgoKLSAoaWQgPFZhclByb2Jl
PilnZXRQcm9iZUZvclZhcmlhYmxlOiAoY29uc3QgY2hhciAqKWFWYXJpYWJsZTsKQGVuZAoKQHBy
b3RvY29sIERlZmF1bHRQcm9iZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4KCgoKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAg
ICAgICBQYWdlICAgODcKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQ3VzdG9tUHJvYmVNYXAgPFByb2Jl
TWFwLCBDUkVBVEFCTEU+CiMgNDQzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgotIF9JX0NyZWF0aW5nOwoKCgoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIGZvckNs
YXNzOiAoQ2xhc3MpYUNsYXNzIHdpdGhJZGVudGlmaWVyczogKGNvbnN0IGNoYXIgKil2YXJzLCAu
Li47Ci0gX0lfU2V0dGluZzsKCgotIGFkZFByb2Jlc0ZvckNsYXNzOiAoQ2xhc3MpIGFDbGFzcwog
ICAgd2l0aElkZW50aWZpZXJzOiAoY29uc3QgY2hhciAqKXZhcnMsIC4uLjsKLSBfSV9Vc2luZzsK
QGVuZAoKQHByb3RvY29sIEVtcHR5UHJvYmVNYXAgPEN1c3RvbVByb2JlTWFwLCBDUkVBVEFCTEU+
CgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgZm9yQ2xhc3M6
IChDbGFzcylhQ2xhc3M7CkBlbmQKCkBwcm90b2NvbCBDb21wbGV0ZVByb2JlTWFwIDxQcm9iZU1h
cCwgQ1JFQVRBQkxFPgoKCgoKCgoKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlVmFyTWFwIDxQcm9i
ZU1hcCwgQ1JFQVRBQkxFPgoKCgoKCkBlbmQKCkBwcm90b2NvbCBQcm9iZUxpYnJhcnkgPENyZWF0
ZSwgRHJvcCwgUHJvYmVDb25maWcsIENSRUFUQUJMRT4KIyA0OTggIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfVXNpbmc7CiMgNTA3ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIHNldERpc3BsYXlQcmVjaXNpb246ICh1bnNpZ25lZClu
U2lnRGlzcGxheTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBt
YWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgODgKCgoKCi0gKHVuc2lnbmVkKWdldERp
c3BsYXlQcmVjaXNpb247CgoKCgoKCgotIHNldFNhdmVkUHJlY2lzaW9uOiAodW5zaWduZWQpblNp
Z1NhdmVkOwoKCgotICh1bnNpZ25lZClnZXRTYXZlZFByZWNpc2lvbjsKCgoKLSAoQk9PTClpc1By
b2JlTWFwRGVmaW5lZEZvcjogKENsYXNzKWFDbGFzczsKLSAoQk9PTClpc1Byb2JlTWFwRGVmaW5l
ZEZvck9iamVjdDogYW5PYmplY3Q7CgoKCgoKCi0gKGlkIDxQcm9iZU1hcD4pZ2V0UHJvYmVNYXBG
b3I6IChDbGFzcylhQ2xhc3M7Ci0gKGlkIDxQcm9iZU1hcD4pZ2V0UHJvYmVNYXBGb3JPYmplY3Q6
IGFuT2JqZWN0OwoKCgoKCi0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVQcm9iZU1hcEZvcjog
KENsYXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVByb2JlTWFwRm9yT2Jq
ZWN0OiBhbk9iamVjdDsKCgoKCi0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVWYXJNYXBGb3I6
IChDbGFzcylhQ2xhc3M7Ci0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVWYXJNYXBGb3JPYmpl
Y3Q6IGFuT2JqZWN0OwoKCgoKCgotIChpZCA8VmFyUHJvYmU+KWdldFByb2JlRm9yVmFyaWFibGU6
IChjb25zdCBjaGFyICopYVZhciBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwotIChpZCA8VmFyUHJv
YmU+KWdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhciBpbk9iamVjdDogYW5P
YmplY3Q7CgoKCgoKCi0gKGlkIDxNZXNzYWdlUHJvYmU+KWdldFByb2JlRm9yTWVzc2FnZTogKGNv
bnN0IGNoYXIgKilhTWVzc2FnZSBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAg
UGFnZSAgIDg5CgoKLSAoaWQgPE1lc3NhZ2VQcm9iZT4pZ2V0UHJvYmVGb3JNZXNzYWdlOiAoY29u
c3QgY2hhciAqKWFNZXNzYWdlIGluT2JqZWN0OiBhbk9iamVjdDsKCgoKCi0gc2V0UHJvYmVNYXA6
IChpZCA8UHJvYmVNYXA+KWFNYXAgRm9yOiAoQ2xhc3MpYUNsYXNzOwotIHNldFByb2JlTWFwOiAo
aWQgPFByb2JlTWFwPilhTWFwIEZvck9iamVjdDogYW5PYmplY3Q7CgpAZW5kCgoKZXh0ZXJuIGlk
IDxQcm9iZUxpYnJhcnk+IHByb2JlTGlicmFyeTsKCkBwcm90b2NvbCBBY3Rpdml0eUNvbnRyb2wg
PFN3YXJtT2JqZWN0LCBDUkVBVEFCTEU+CiMgNTkyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqZWN0YmFzZS5oIgotIF9JX0NyZWF0aW5nOwoKLSBfSV9Vc2luZzsKCgoKCgotICh2b2lkKWF0
dGFjaFRvQWN0aXZpdHk6IChpZCA8U2NoZWR1bGVBY3Rpdml0eT4pYW5BY3Rpdml0eTsKCgoKCgoK
Ci0gKGlkIDxTeW1ib2w+KXJ1bkFjdGl2aXR5OwoKCgoKCgotIChpZCA8U3ltYm9sPilzdG9wQWN0
aXZpdHk7CgoKCgoKCgotIChpZCA8U3ltYm9sPiluZXh0QWN0aW9uOwoKCgotIChpZCA8U3ltYm9s
PilzdGVwQWN0aW9uOwoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgOTAKCgotIChpZCA8U3ltYm9s
PilzdGVwVW50aWw6ICh0aW1ldmFsX3Qpc3RvcFRpbWU7CgoKCgoKLSAodm9pZCl1cGRhdGVTdGF0
ZVZhcjsKCgotIChpZCA8U3ltYm9sPilnZXRTdGF0dXM7CgoKLSAodm9pZCl0ZXJtaW5hdGU7CgoK
LSAoaWQgPFNjaGVkdWxlQWN0aXZpdHk+KWdldEFjdGl2aXR5OwpAZW5kCgpAY2xhc3MgUHJvYmU7
CkBjbGFzcyBWYXJQcm9iZTsKQGNsYXNzIE1lc3NhZ2VQcm9iZTsKQGNsYXNzIFByb2JlTWFwOwpA
Y2xhc3MgRGVmYXVsdFByb2JlTWFwOwpAY2xhc3MgQ3VzdG9tUHJvYmVNYXA7CkBjbGFzcyBFbXB0
eVByb2JlTWFwOwpAY2xhc3MgQ29tcGxldGVQcm9iZU1hcDsKQGNsYXNzIENvbXBsZXRlVmFyTWFw
OwpAY2xhc3MgUHJvYmVMaWJyYXJ5OwpAY2xhc3MgQWN0aXZpdHlDb250cm9sOwpAY2xhc3MgU3dh
cm07CkBjbGFzcyBTd2FybU9iamVjdDsKCgpleHRlcm4gY29uc3QgY2hhciAqc3dhcm1fdmVyc2lv
bjsKIyAyNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS5oIiAyCgoKQHByb3RvY29s
IEludGVybmFsU3RhdGUKIyA0MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS5oIgot
IF9JX1VzaW5nOwoKLSAodW5zaWduZWQpZ2V0U3RhdGVTaXplOwotICh2b2lkKXB1dFN0YXRlSW50
bzogKHZvaWQgKilidWZmZXI7Ci0gKHZvaWQpc2V0U3RhdGVGcm9tOiAodm9pZCAqKWJ1ZmZlcjsK
LSAodW5zaWduZWQpZ2V0TWFnaWM7CkBlbmQKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L3JhbmRvbS9nZW5lcmF0b3JzLmgiIDEKIyAyOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3Jh
bmRvbS9nZW5lcmF0b3JzLmgiCkBwcm90b2NvbCBDb21tb25HZW5lcmF0b3IKCi0gX0lfQ3JlYXRp
bmc7CisgY3JlYXRlV2l0aERlZmF1bHRzOiAoaWQgPFpvbmU+KWFab25lOwoKLSBfSV9TZXR0aW5n
OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICA5MQoKCgotIHNldFN0YXRlRnJvbVNlZWQ6ICh1bnNpZ25l
ZClzZWVkOwoKCgotIHNldFN0YXRlRnJvbVNlZWRzOiAodW5zaWduZWQgKilzZWVkczsKCgoKLSBz
ZXRBbnRpdGhldGljOiAoQk9PTCkgYW50aVQ7CgotIF9JX1VzaW5nOwoKLSAoQk9PTClnZXRBbnRp
dGhldGljOwoKCgotICh1bnNpZ25lZClnZXRNYXhTZWVkVmFsdWU7CgoKCi0gKHVuc2lnbmVkICop
Z2V0TWF4U2VlZFZhbHVlczsKCgoKLSAodW5zaWduZWQpZ2V0SW5pdGlhbFNlZWQ7CgoKCi0gKHVu
c2lnbmVkICopZ2V0SW5pdGlhbFNlZWRzOwoKCgotICh1bnNpZ25lZClsZW5ndGhPZlNlZWRWZWN0
b3I7CgoKCi0gcmVzZXQ7CgoKCi0gKHVuc2lnbmVkKWdldFVuc2lnbmVkTWF4OwpAZW5kCgpAcHJv
dG9jb2wgU2ltcGxlR2VuZXJhdG9yCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25l
PilhWm9uZSBzZXRTdGF0ZUZyb21TZWVkOiAodW5zaWduZWQpc2VlZDsKCisgY3JlYXRlOiAoaWQg
PFpvbmU+KWFab25lIHNldFN0YXRlRnJvbVNlZWRzOiAodW5zaWduZWQgKilzZWVkczsKCi0gX0lf
VXNpbmc7CgoKLSAodW5zaWduZWQpZ2V0VW5zaWduZWRTYW1wbGU7CgoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDkyCgoKCgoKLSAoZmxvYXQpZ2V0RmxvYXRTYW1wbGU7CgoKCgotIChkb3VibGUpZ2V0VGhp
bkRvdWJsZVNhbXBsZTsKCgoKCi0gKGRvdWJsZSlnZXREb3VibGVTYW1wbGU7CgoKCgoKLSAobG9u
ZyBkb3VibGUpZ2V0TG9uZ0RvdWJsZVNhbXBsZTsKCgotICh1bnNpZ25lZCBsb25nIGxvbmcgaW50
KWdldEN1cnJlbnRDb3VudDsKQGVuZAoKQHByb3RvY29sIFNwbGl0R2VuZXJhdG9yCgotIF9JX0Ny
ZWF0aW5nOworIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgICAgICBzZXRBOiAo
dW5zaWduZWQpQQogICAgICAgICAgICAgIHNldFY6ICh1bnNpZ25lZCl2CiAgICAgICAgICAgICAg
c2V0VzogKHVuc2lnbmVkKXcKICBzZXRTdGF0ZUZyb21TZWVkOiAodW5zaWduZWQpc2VlZDsKCisg
Y3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgICAgICAgIHNldEE6ICh1bnNpZ25lZClB
CiAgICAgICAgICAgICAgc2V0VjogKHVuc2lnbmVkKXYKICAgICAgICAgICAgICBzZXRXOiAodW5z
aWduZWQpdwogc2V0U3RhdGVGcm9tU2VlZHM6ICh1bnNpZ25lZCAqKXNlZWRzOwoKLSBfSV9TZXR0
aW5nOwoKCi0gaW5pdEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW47CgoKCi0gaW5pdEFsbDsKCi0g
X0lfVXNpbmc7CgoKCgotICh1bnNpZ25lZClnZXROdW1HZW5lcmF0b3JzOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgICA5MwoKCgoKLSAodW5zaWduZWQpZ2V0TnVtU2VnbWVudHM7CgoKCi0gKHVuc2lnbmVk
KWdldFNlZ21lbnRMZW5ndGg7CgoKCi0gcmVzdGFydEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW47
CgoKCi0gYWR2YW5jZUdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW47CgoKCi0ganVtcEdlbmVyYXRv
cjogKHVuc2lnbmVkKXZHZW4gdG9TZWdtZW50OiAodW5zaWduZWQgbG9uZyBsb25nIGludClzZWc7
CgoKCi0gcmVzdGFydEFsbDsKCgoKLSBhZHZhbmNlQWxsOwoKCgotIGp1bXBBbGxUb1NlZ21lbnQ6
ICh1bnNpZ25lZCBsb25nIGxvbmcgaW50KXNlZzsKCgoKCi0gKHVuc2lnbmVkKWdldFVuc2lnbmVk
U2FtcGxlOiAodW5zaWduZWQpdkdlbjsKCgoKCgotIChmbG9hdClnZXRGbG9hdFNhbXBsZTogKHVu
c2lnbmVkKXZHZW47CgoKCgoKLSAoZG91YmxlKWdldFRoaW5Eb3VibGVTYW1wbGU6ICh1bnNpZ25l
ZCl2R2VuOwoKCgoKCi0gKGRvdWJsZSlnZXREb3VibGVTYW1wbGU6ICh1bnNpZ25lZCl2R2VuOwoK
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAg
ICAgICAgICAgICAgICBQYWdlICAgOTQKCgoKCgoKLSAobG9uZyBkb3VibGUpZ2V0TG9uZ0RvdWJs
ZVNhbXBsZTogKHVuc2lnbmVkKXZHZW47CgoKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpZ2V0
Q3VycmVudFNlZ21lbnQ6ICh1bnNpZ25lZCl2R2VuOwoKCgotICh1bnNpZ25lZCBsb25nIGxvbmcg
aW50KWdldEN1cnJlbnRDb3VudDogKHVuc2lnbmVkKXZHZW47CkBlbmQKIyAyMjggIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vZ2VuZXJhdG9ycy5oIgpAcHJvdG9jb2wgQmFzaWNSYW5k
b21HZW5lcmF0b3IgPFN3YXJtT2JqZWN0LCBJbnRlcm5hbFN0YXRlLCBDb21tb25HZW5lcmF0b3I+
CgoKCkBlbmQKCkBwcm90b2NvbCBTaW1wbGVSYW5kb21HZW5lcmF0b3IgPEJhc2ljUmFuZG9tR2Vu
ZXJhdG9yLCBTaW1wbGVHZW5lcmF0b3I+CgoKCgpAZW5kCgpAcHJvdG9jb2wgU3BsaXRSYW5kb21H
ZW5lcmF0b3IgPEJhc2ljUmFuZG9tR2VuZXJhdG9yLCBTcGxpdEdlbmVyYXRvcj4KCgoKCgoKQGVu
ZAojIDI1OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBw
cm90b2NvbCBMQ0dnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4KIyAyNjkgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9yYW5kb20vZ2VuZXJhdG9ycy5oIgpAZW5kCgpAcHJvdG9jb2wgTENHMWdl
biA8TENHZ2VuLCBDUkVBVEFCTEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgTENHMmdlbiA8TENHZ2Vu
LCBDUkVBVEFCTEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgTENHM2dlbiA8TENHZ2VuLCBDUkVBVEFC
TEU+CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAg
ICAgICAgICAgICAgICAgICBQYWdlICAgOTUKCgoKCgoKQGVuZAojIDMwMyAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBwcm90b2NvbCBQTU1MQ0dnZW4gPFNp
bXBsZVJhbmRvbUdlbmVyYXRvcj4KCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzFnZW4gPFBNTUxD
R2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzJnZW4gPFBNTUxDR2dl
biwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzNnZW4gPFBNTUxDR2dlbiwg
Q1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzRnZW4gPFBNTUxDR2dlbiwgQ1JF
QVRBQkxFPgoKCgoKCkBlbmQKCkBwcm90b2NvbCBQTU1MQ0c1Z2VuIDxQTU1MQ0dnZW4sIENSRUFU
QUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHNmdlbiA8UE1NTENHZ2VuLCBDUkVBVEFC
TEU+CgoKCgoKQGVuZAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAg
bWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgIDk2CgoKCkBwcm90b2NvbCBQTU1MQ0c3
Z2VuIDxQTU1MQ0dnZW4sIENSRUFUQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHOGdl
biA8UE1NTENHZ2VuLCBDUkVBVEFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzlnZW4g
PFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoKCgoKCkBlbmQKCgoKQHByb3RvY29sIEFDR2dlbiA8U2lt
cGxlUmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CiMgMzkxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGVuZAoKQHByb3RvY29sIFNDR2dlbiA8U2ltcGxl
UmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CiMgNDA0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGVuZAoKCgpAcHJvdG9jb2wgU1dCZ2VuIDxTaW1wbGVS
YW5kb21HZW5lcmF0b3I+CgoKCgoKCgpAZW5kCgpAcHJvdG9jb2wgU1dCMWdlbiA8U1dCZ2VuLCBD
UkVBVEFCTEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgU1dCMmdlbiA8U1dCZ2VuLCBDUkVBVEFCTEU+
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAg
ICAgICAgICAgICAgICAgUGFnZSAgIDk3CgoKCgoKQGVuZAoKQHByb3RvY29sIFNXQjNnZW4gPFNX
QmdlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKCkBwcm90b2NvbCBQU1dCZ2VuIDxTaW1wbGVSYW5k
b21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKCkBlbmQKCgoKQHByb3RvY29sIE1XQ0FnZW4gPFNp
bXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIE1XQ0Jn
ZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgoKCgoKCkBlbmQKCgpAcHJvdG9j
b2wgUldDMmdlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCkBlbmQKCgpA
cHJvdG9jb2wgUldDOGdlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgpA
ZW5kCgoKQHByb3RvY29sIFRHRlNSZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+CgoKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAg
ICAgICAgIFBhZ2UgICA5OAoKCgoKQGVuZAoKQHByb3RvY29sIFRUNDAzZ2VuIDxUR0ZTUmdlbiwg
Q1JFQVRBQkxFPgoKCgpAZW5kCgpAcHJvdG9jb2wgVFQ3NzVnZW4gPFRHRlNSZ2VuLCBDUkVBVEFC
TEU+CgoKCkBlbmQKCkBwcm90b2NvbCBUVDgwMGdlbiA8VEdGU1JnZW4sIENSRUFUQUJMRT4KCgoK
QGVuZAoKCkBwcm90b2NvbCBNVDE5OTM3Z2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFU
QUJMRT4KCgoKQGVuZAoKCkBwcm90b2NvbCBNUkdnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4K
CgoKCgoKCkBlbmQKCkBwcm90b2NvbCBNUkc1Z2VuIDxNUkdnZW4sIENSRUFUQUJMRT4KCgoKCkBl
bmQKCkBwcm90b2NvbCBNUkc2Z2VuIDxNUkdnZW4sIENSRUFUQUJMRT4KCgoKCkBlbmQKCkBwcm90
b2NvbCBNUkc3Z2VuIDxNUkdnZW4sIENSRUFUQUJMRT4KCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAgOTkK
CgoKCgpAZW5kCgoKQHByb3RvY29sIEMyVEFVU2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPgoK
CgoKQGVuZAoKQHByb3RvY29sIEMyVEFVUzFnZW4gPEMyVEFVU2dlbiwgQ1JFQVRBQkxFPgoKCgoK
CgpAZW5kCgpAcHJvdG9jb2wgQzJUQVVTMmdlbiA8QzJUQVVTZ2VuLCBDUkVBVEFCTEU+CgoKCgoK
CkBlbmQKCkBwcm90b2NvbCBDMlRBVVMzZ2VuIDxDMlRBVVNnZW4sIENSRUFUQUJMRT4KCgoKCgoK
QGVuZAoKCkBwcm90b2NvbCBDMk1SRzNnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRB
QkxFPgoKCgoKCgoKQGVuZAoKCkBwcm90b2NvbCBDM01XQ2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJh
dG9yLCBDUkVBVEFCTEU+CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMDAKCgoKQGVuZAojIDYxNCAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBwcm90b2NvbCBD
MkxDR1hnZW4gPFNwbGl0UmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CiMgNjI0ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGVuZAoKCkBwcm90b2NvbCBD
NExDR1hnZW4gPFNwbGl0UmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgoKQGVuZAojIDY1
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBjbGFzcyBM
Q0cxZ2VuOwpAY2xhc3MgTENHMmdlbjsKQGNsYXNzIExDRzNnZW47CkBjbGFzcyBQTU1MQ0cxZ2Vu
OwpAY2xhc3MgUE1NTENHMmdlbjsKQGNsYXNzIFBNTUxDRzNnZW47CkBjbGFzcyBQTU1MQ0c0Z2Vu
OwpAY2xhc3MgUE1NTENHNWdlbjsKQGNsYXNzIFBNTUxDRzZnZW47CkBjbGFzcyBQTU1MQ0c3Z2Vu
OwpAY2xhc3MgUE1NTENHOGdlbjsKQGNsYXNzIFBNTUxDRzlnZW47CgoKCkBjbGFzcyBBQ0dnZW47
CkBjbGFzcyBTQ0dnZW47CkBjbGFzcyBTV0IxZ2VuOwpAY2xhc3MgU1dCMmdlbjsKQGNsYXNzIFNX
QjNnZW47CkBjbGFzcyBQU1dCZ2VuOwpAY2xhc3MgVFQ0MDNnZW47CkBjbGFzcyBUVDc3NWdlbjsK
QGNsYXNzIFRUODAwZ2VuOwpAY2xhc3MgTVQxOTkzN2dlbjsKQGNsYXNzIE1SRzVnZW47CkBjbGFz
cyBNUkc2Z2VuOwpAY2xhc3MgTVJHN2dlbjsKQGNsYXNzIE1XQ0FnZW47CkBjbGFzcyBNV0NCZ2Vu
OwpAY2xhc3MgUldDMmdlbjsKQGNsYXNzIFJXQzhnZW47CgoKCkBjbGFzcyBDMlRBVVMxZ2VuOwpA
Y2xhc3MgQzJUQVVTMmdlbjsKQGNsYXNzIEMyVEFVUzNnZW47CgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2Ug
IDEwMQoKCgpAY2xhc3MgQzJNUkczZ2VuOwpAY2xhc3MgQzNNV0NnZW47CiMgNzA4ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGNsYXNzIEMyTENHWGdlbjsK
QGNsYXNzIEM0TENHWGdlbjsKIyA0OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS5o
IiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9kaXN0cmlidXRpb25zLmgi
IDEKIyAyNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9kaXN0cmlidXRpb25zLmgi
CkBwcm90b2NvbCBQcm9iYWJpbGl0eURpc3RyaWJ1dGlvbiA8U3dhcm1PYmplY3QsIEludGVybmFs
U3RhdGU+CgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGVXaXRoRGVmYXVsdHM6IChpZCA8
Wm9uZT4pYVpvbmU7CgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgc2V0R2VuZXJhdG9y
OiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yOwoKCisgY3JlYXRl
IDogKGlkIDxab25lPilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5k
b21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2ln
bmVkKSB2R2VuOwoKLSBfSV9TZXR0aW5nOwoKLSBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFu
ZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3I7CgoKLSBzZXRHZW5lcmF0b3IgOiAoaWQgPFNw
bGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6
ICh1bnNpZ25lZCl2R2VuOwoKCi0gcmVzZXQ7CgotIF9JX1VzaW5nOwoKLSAoaWQgPEJhc2ljUmFu
ZG9tR2VuZXJhdG9yPikgZ2V0R2VuZXJhdG9yOwoKCi0gKHVuc2lnbmVkKWdldFZpcnR1YWxHZW5l
cmF0b3I7CgoKLSAoQk9PTClnZXRPcHRpb25zSW5pdGlhbGl6ZWQ7CgoKLSAodW5zaWduZWQgbG9u
ZyBsb25nIGludClnZXRDdXJyZW50Q291bnQ7CkBlbmQKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTAy
CgoKCgoKQHByb3RvY29sIEJvb2xlYW5EaXN0cmlidXRpb24gPFByb2JhYmlsaXR5RGlzdHJpYnV0
aW9uPgoKCgoKLSBfSV9Vc2luZzsKCi0gKEJPT0wpZ2V0Qm9vbGVhblNhbXBsZTsKLSAoaW50KWdl
dEludGVnZXJTYW1wbGU7CkBlbmQKCkBwcm90b2NvbCBJbnRlZ2VyRGlzdHJpYnV0aW9uIDxQcm9i
YWJpbGl0eURpc3RyaWJ1dGlvbj4KCgoKCi0gX0lfVXNpbmc7CgotIChpbnQpZ2V0SW50ZWdlclNh
bXBsZTsKQGVuZAoKQHByb3RvY29sIFVuc2lnbmVkRGlzdHJpYnV0aW9uIDxQcm9iYWJpbGl0eURp
c3RyaWJ1dGlvbj4KCgoKCgotIF9JX1VzaW5nOwoKLSAodW5zaWduZWQpZ2V0VW5zaWduZWRTYW1w
bGU7CkBlbmQKCkBwcm90b2NvbCBEb3VibGVEaXN0cmlidXRpb24gPFByb2JhYmlsaXR5RGlzdHJp
YnV0aW9uPgoKCgoKCi0gX0lfVXNpbmc7CgoKLSAoZG91YmxlKWdldERvdWJsZVNhbXBsZTsKQGVu
ZAoKCgoKCgpAcHJvdG9jb2wgUmFuZG9tQml0RGlzdCA8Qm9vbGVhbkRpc3RyaWJ1dGlvbiwgQ1JF
QVRBQkxFPgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTAzCgoKCgotIF9JX1VzaW5nOwoKLSAoQk9P
TClnZXRDb2luVG9zczsKQGVuZAoKQHByb3RvY29sIEJlcm5vdWxsaURpc3QgPEJvb2xlYW5EaXN0
cmlidXRpb24sIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxa
b25lPilhWm9uZQogICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4p
c2ltcGxlR2VuZXJhdG9yCiAgc2V0UHJvYmFiaWxpdHk6IChkb3VibGUpcDsKCgorIGNyZWF0ZSA6
IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9t
R2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25l
ZCl2R2VuCiAgICAgICBzZXRQcm9iYWJpbGl0eTogKGRvdWJsZSlwOwoKLSBfSV9TZXR0aW5nOwoK
LSBzZXRQcm9iYWJpbGl0eTogKGRvdWJsZSlwOwoKLSBfSV9Vc2luZzsKCi0gKGRvdWJsZSlnZXRQ
cm9iYWJpbGl0eTsKCgotIChCT09MKWdldFNhbXBsZVdpdGhQcm9iYWJpbGl0eTogKGRvdWJsZSlw
OwpAZW5kCgoKQHByb3RvY29sIFVuaWZvcm1JbnRlZ2VyRGlzdCA8SW50ZWdlckRpc3RyaWJ1dGlv
biwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4p
YVpvbmUKICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVH
ZW5lcmF0b3IKIHNldEludGVnZXJNaW46IChpbnQpbWluVmFsdWUKICAgICAgICBzZXRNYXg6IChp
bnQpbWF4VmFsdWU7CgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICBzZXRHZW5l
cmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCnNldFZpcnR1
YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCkgdkdlbgogICAgICBzZXRJbnRlZ2VyTWluOiAoaW50KW1p
blZhbHVlCiAgICAgICAgICAgICBzZXRNYXg6IChpbnQpbWF4VmFsdWU7CgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAg
UGFnZSAgMTA0CgoKLSBfSV9TZXR0aW5nOwoKCi0gc2V0SW50ZWdlck1pbjogKGludCltaW5WYWx1
ZSBzZXRNYXg6IChpbnQpbWF4VmFsdWU7CgotIF9JX1VzaW5nOwoKLSAoaW50KWdldEludGVnZXJN
aW47CgoKLSAoaW50KWdldEludGVnZXJNYXg7CgoKCi0gKGludClnZXRJbnRlZ2VyV2l0aE1pbjog
KGludCltaW5WYWx1ZSB3aXRoTWF4OiAoaW50KW1heFZhbHVlOwpAZW5kCgpAcHJvdG9jb2wgVW5p
Zm9ybVVuc2lnbmVkRGlzdCA8VW5zaWduZWREaXN0cmlidXRpb24sIENSRUFUQUJMRT4KCgoKCgot
IF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICBzZXRHZW5lcmF0
b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3IKICBzZXRVbnNp
Z25lZE1pbjogKHVuc2lnbmVkKW1pblZhbHVlCiAgICAgICAgICBzZXRNYXg6ICh1bnNpZ25lZClt
YXhWYWx1ZTsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJh
dG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1
YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuCiAgICAgICBzZXRVbnNpZ25lZE1pbjogKHVuc2ln
bmVkKW1pblZhbHVlCiAgICAgICAgICAgICAgIHNldE1heDogKHVuc2lnbmVkKW1heFZhbHVlOwoK
LSBfSV9TZXR0aW5nOwoKCi0gc2V0VW5zaWduZWRNaW46ICh1bnNpZ25lZCltaW5WYWx1ZQogICAg
ICAgICAgc2V0TWF4OiAodW5zaWduZWQpbWF4VmFsdWU7CgotIF9JX1VzaW5nOwoKLSAodW5zaWdu
ZWQpZ2V0VW5zaWduZWRNaW47CgoKLSAodW5zaWduZWQpZ2V0VW5zaWduZWRNYXg7CgoKCi0gKHVu
c2lnbmVkKWdldFVuc2lnbmVkV2l0aE1pbjogKHVuc2lnbmVkKW1pblZhbAogICAgICAgICAgICAg
ICAgICAgICAgIHdpdGhNYXg6ICh1bnNpZ25lZCltYXhWYWw7CkBlbmQKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQ
YWdlICAxMDUKCgpAcHJvdG9jb2wgVW5pZm9ybURvdWJsZURpc3QgPERvdWJsZURpc3RyaWJ1dGlv
biwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxab25l
PilhWm9uZQogICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2lt
cGxlR2VuZXJhdG9yCiAgICBzZXREb3VibGVNaW46IChkb3VibGUpbWluVmFsdWUKICAgICAgICAg
IHNldE1heDogKGRvdWJsZSltYXhWYWx1ZTsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUK
ICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdl
bmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuCiAgICAgICAgIHNl
dERvdWJsZU1pbjogKGRvdWJsZSltaW5WYWx1ZQogICAgICAgICAgICAgICBzZXRNYXg6IChkb3Vi
bGUpbWF4VmFsdWU7CgotIF9JX1NldHRpbmc7CgoKLSBzZXREb3VibGVNaW46IChkb3VibGUpbWlu
VmFsdWUgc2V0TWF4OiAoZG91YmxlKW1heFZhbHVlOwoKLSBfSV9Vc2luZzsKCgotIChkb3VibGUp
Z2V0RG91YmxlTWluOwoKCgotIChkb3VibGUpZ2V0RG91YmxlTWF4OwoKCgotIChkb3VibGUpZ2V0
RG91YmxlV2l0aE1pbjogKGRvdWJsZSltaW5WYWx1ZSB3aXRoTWF4OiAoZG91YmxlKW1heFZhbHVl
OwpAZW5kCgpAcHJvdG9jb2wgTm9ybWFsIDxEb3VibGVEaXN0cmlidXRpb24+CgotIF9JX0NyZWF0
aW5nOwoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgc2V0R2VuZXJhdG9yOiAoaWQg
PFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAgICAgICAgIHNldE1lYW46
IChkb3VibGUpbWVhbgogICAgIHNldFZhcmlhbmNlOiAoZG91YmxlKXZhcmlhbmNlOwoKCgorIGNy
ZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgIHNldEdlbmVyYXRvcjogKGlkIDxTaW1wbGVSYW5k
b21HZW5lcmF0b3I+KXNpbXBsZUdlbmVyYXRvcgogICAgICAgICBzZXRNZWFuOiAoZG91YmxlKW1l
YW4KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDEwNgoKCiAgICAgICBzZXRTdGREZXY6IChkb3VibGUpc2Rl
djsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjog
KGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2Vu
ZXJhdG9yOiAodW5zaWduZWQpdkdlbgogICAgICAgICAgICAgIHNldE1lYW46IChkb3VibGUpbWVh
bgogICAgICAgICAgc2V0VmFyaWFuY2U6IChkb3VibGUpdmFyaWFuY2U7CgoKCisgY3JlYXRlIDog
KGlkIDxab25lPilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21H
ZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVk
KXZHZW4KICAgICAgICAgICAgICBzZXRNZWFuOiAoZG91YmxlKW1lYW4KICAgICAgICAgICAgc2V0
U3RkRGV2OiAoZG91YmxlKXNkZXY7CgotIF9JX1NldHRpbmc7CgoKLSBzZXRNZWFuOiAoZG91Ymxl
KW1lYW4gc2V0VmFyaWFuY2U6IChkb3VibGUpdmFyaWFuY2U7CgoKCi0gc2V0TWVhbjogKGRvdWJs
ZSltZWFuIHNldFN0ZERldjogKGRvdWJsZSlzZGV2OwoKLSBfSV9Vc2luZzsKCi0gKGRvdWJsZSln
ZXRNZWFuOwoKCi0gKGRvdWJsZSlnZXRWYXJpYW5jZTsKCgotIChkb3VibGUpZ2V0U3RkRGV2OwoK
CgotIChkb3VibGUpZ2V0U2FtcGxlV2l0aE1lYW46IChkb3VibGUpbWVhbgogICAgICAgICAgICAg
ICB3aXRoVmFyaWFuY2U6IChkb3VibGUpdmFyaWFuY2U7CgoKCi0gKGRvdWJsZSlnZXRTYW1wbGVX
aXRoTWVhbjogKGRvdWJsZSltZWFuCiAgICAgICAgICAgICAgICAgd2l0aFN0ZERldjogKGRvdWJs
ZSlzZGV2OwpAZW5kCgpAcHJvdG9jb2wgTm9ybWFsRGlzdCA8Tm9ybWFsLCBDUkVBVEFCTEU+CgoK
CkBlbmQKCkBwcm90b2NvbCBMb2dOb3JtYWxEaXN0IDxOb3JtYWwsIENSRUFUQUJMRT4KCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAg
ICAgICAgICBQYWdlICAxMDcKCgoKCkBlbmQKCkBwcm90b2NvbCBFeHBvbmVudGlhbERpc3QgPERv
dWJsZURpc3RyaWJ1dGlvbiwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUg
OiAoaWQgPFpvbmU+KWFab25lCiAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVy
YXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAgICAgICBzZXRNZWFuOiAoZG91YmxlKW1lYW47CgoKKyBj
cmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxp
dFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAo
dW5zaWduZWQpdkdlbgogICAgICAgICAgICAgIHNldE1lYW46IChkb3VibGUpbWVhbjsKCgotIF9J
X1NldHRpbmc7CgotIHNldE1lYW46IChkb3VibGUpbWVhbjsKCi0gX0lfVXNpbmc7CgotIChkb3Vi
bGUpZ2V0TWVhbjsKCgoKLSAoZG91YmxlKWdldFNhbXBsZVdpdGhNZWFuOiAoZG91YmxlKW1lYW47
CkBlbmQKCkBwcm90b2NvbCBHYW1tYURpc3QgPERvdWJsZURpc3RyaWJ1dGlvbiwgQ1JFQVRBQkxF
PgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiBzZXRHZW5l
cmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3IKICAgICBz
ZXRBbHBoYTogKGRvdWJsZSlhbHBoYQogICAgICBzZXRCZXRhOiAoZG91YmxlKWJldGE7CgoKKyBj
cmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxp
dFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAo
dW5zaWduZWQpdkdlbgogICAgICAgICAgICAgc2V0QWxwaGE6IChkb3VibGUpYWxwaGEKICAgICAg
ICAgICAgICBzZXRCZXRhOiAoZG91YmxlKWJldGE7CgotIF9JX1NldHRpbmc7CgoKLSBzZXRBbHBo
YTogKGRvdWJsZSlhbHBoYSBzZXRCZXRhOiAoZG91YmxlKWJldGE7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdl
ICAxMDgKCgoKLSBfSV9Vc2luZzsKCi0gKGRvdWJsZSlnZXRBbHBoYTsKCgotIChkb3VibGUpZ2V0
QmV0YTsKCgoKLSAoZG91YmxlKWdldFNhbXBsZVdpdGhBbHBoYTogKGRvdWJsZSlhbHBoYQogICAg
ICAgICAgICAgICAgICAgIHdpdGhCZXRhOiAoZG91YmxlKWJldGE7CkBlbmQKCkBwcm90b2NvbCBQ
b2lzc29uRGlzdCA8VW5zaWduZWREaXN0cmlidXRpb24sIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3Jl
YXRpbmc7CgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKIHNldEdlbmVyYXRvcjogKGlkIDxT
aW1wbGVSYW5kb21HZW5lcmF0b3I+KWdlbmVyYXRvcjsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+
KWFab25lCiBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilnZW5lcmF0
b3IKIHNldE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1clJhdGUKICBzZXRJbnRlcnZhbDogKGRv
dWJsZSkgYW5JbnRlcnZhbDsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICAg
IHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pZ2VuZXJhdG9yCiAgc2V0
VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW47CgoKCisgY3JlYXRlIDogKGlkIDxab25l
PilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+
KWdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuCiAgICAgICAg
IHNldE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1clJhdGUKICAgICAgICAgIHNldEludGVydmFs
OiAoZG91YmxlKSBhbkludGVydmFsOwoKLSBfSV9TZXR0aW5nOwoKCgotIHNldEludGVydmFsOiAo
ZG91YmxlKSBhbkludGVydmFsOwoKCgotIHNldE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1clJh
dGU7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkg
ICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEwOQoKCgotIHNldE9jY3VyUmF0ZTogKGRvdWJsZSkg
YW5PY2N1clJhdGUKICAgc2V0SW50ZXJ2YWw6IChkb3VibGUpIGFuSW50ZXJ2YWw7CgotIF9JX1Vz
aW5nOwoKCi0gKGRvdWJsZSkgZ2V0T2NjdXJSYXRlOwoKCi0gKGRvdWJsZSkgZ2V0SW50ZXJ2YWw7
CgoKCgotICh1bnNpZ25lZCkgZ2V0VW5zaWduZWRTYW1wbGU7CgoKCgotICh1bnNpZ25lZCkgZ2V0
VW5zaWduZWRTYW1wbGVXaXRoSW50ZXJ2YWw6IChkb3VibGUpIGFuSW50ZXJ2YWw7CgoKCgoKLSAo
dW5zaWduZWQpIGdldFVuc2lnbmVkU2FtcGxlV2l0aE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1
clJhdGUKICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhJbnRlcnZhbDogKGRvdWJsZSkgYW5J
bnRlcnZhbDsKCkBlbmQKCgoKCgpAY2xhc3MgUmFuZG9tQml0RGlzdDsKQGNsYXNzIEJlcm5vdWxs
aURpc3Q7CgoKQGNsYXNzIFVuaWZvcm1JbnRlZ2VyRGlzdDsKCgpAY2xhc3MgVW5pZm9ybVVuc2ln
bmVkRGlzdDsKCgpAY2xhc3MgVW5pZm9ybURvdWJsZURpc3Q7CkBjbGFzcyBOb3JtYWxEaXN0OwpA
Y2xhc3MgTG9nTm9ybWFsRGlzdDsKQGNsYXNzIEV4cG9uZW50aWFsRGlzdDsKQGNsYXNzIEdhbW1h
RGlzdDsKQGNsYXNzIFBvaXNzb25EaXN0OwojIDUwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
cmFuZG9tLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL3JhbmRvbXZh
cnMuaCIgMQojIDIyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL3JhbmRvbXZhcnMu
aCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZXh0ZXJudmFyLmgiIDEKIyAyMyAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9yYW5kb212YXJzLmgiIDIKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDExMAoKCgoKCmV4dGVybiBpZCA8TVQxOTkzN2dlbj4gcmFuZG9tR2VuZXJhdG9yOwoK
CmV4dGVybiBpZCA8VW5pZm9ybUludGVnZXJEaXN0PiB1bmlmb3JtSW50UmFuZDsKZXh0ZXJuIGlk
IDxVbmlmb3JtVW5zaWduZWREaXN0PiB1bmlmb3JtVW5zUmFuZDsKZXh0ZXJuIGlkIDxVbmlmb3Jt
RG91YmxlRGlzdD4gdW5pZm9ybURibFJhbmQ7CgoKCgpleHRlcm4gQk9PTCBfdXNlRml4ZWRTZWVk
OwpleHRlcm4gdW5zaWduZWQgaW50IF9maXJzdFNlZWQ7CgoKCgoKCgpleHRlcm4gdm9pZCBpbml0
UmFuZG9tIChpZCBhcmd1bWVudHMpOwpleHRlcm4gdW5zaWduZWQgaW50IHRlbXB1c0Z1Z2l0ICh2
b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGludCBuZXh0U2VlZCAodm9pZCk7CiMgNTEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9yYW5kb20vcmFuZG9tZGVmcy5oIiAxCiMgMjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9y
YW5kb20vcmFuZG9tZGVmcy5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgi
IDEKIyA5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9zd2FybWNvbmZpZy5oIiAxCiMgMTAgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9taXNjLmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDEyICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvbWlzYy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMTYgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgMTEw
ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5j
bHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgMTcgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDEgMwojIDE4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCgojIDEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAyIDMKIyAxNzUgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMKIyAxNzYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAz
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDExMQoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmly
b25tZW50cy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRl
L2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy
IDMKIyAxOTAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDE5MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgp0eXBlZGVm
IF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0
eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29mZl90IG9mZl90OwoKCgoKCgp0
eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29u
ZHNfdDsKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEx
MgoKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2ts
ZW5fdCBzb2NrbGVuX3Q7CiMgMjYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGlu
dCBhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CgoKCgpleHRlcm4g
aW50IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CiMgMjkw
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2Zk
LCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIDsKIyAzMDIgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3Qg
X19vZmZzZXQsIGludCBfX3doZW5jZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCkg
OwoKCgpleHRlcm4gc3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBf
X25ieXRlcykgOwoKCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lk
ICpfX2J1Ziwgc2l6ZV90IF9fbikgOwoKCgpleHRlcm4gc3NpemVfdCBwcmVhZCAoaW50IF9fZmQs
IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmX3QgX19vZmZzZXQpCiAgICAgICAg
ICAgIDsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1
Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICBfX29mZl90IF9fb2Zmc2V0KSA7
CiMgMzQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3QgcHJlYWQ2NCAo
aW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZTY0IChp
bnQgX19mZCwgX19jb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fb2ZmNjRfdCBfX29mZnNldCkgOwoKCgoKCgoKZXh0ZXJuIGludCBwaXBlIChp
bnQgX19waXBlZGVzWzJdKSA7CiMgMzYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAg
ICAgICAgIFBhZ2UgIDExMwoKCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGlu
dCBfX3NlY29uZHMpIDsKIyAzNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5z
aWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CgoKCgoKCmV4dGVybiBf
X3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190IF9f
aW50ZXJ2YWwpCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNf
dCBfX3VzZWNvbmRzKSA7CgoKCgoKZXh0ZXJuIGludCBwYXVzZSAodm9pZCkgOwoKCgpleHRlcm4g
aW50IGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90
IF9fZ3JvdXApCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBf
X3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24g
KF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkK
ICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgp
IDsKCgoKZXh0ZXJuIGludCBmY2hkaXIgKGludCBfX2ZkKSA7CiMgNDIzICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGNoYXIgKmdldGN3ZCAoY2hhciAqX19idWYsIHNpemVfdCBfX3Np
emUpIDsKCgoKCgpleHRlcm4gY2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUgKHZvaWQpIDsKCgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDExNAoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19i
dWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAo
aW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKZXh0ZXJu
IGNoYXIgKiplbnZpcm9uOwoKCgoKCmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f
Y29uc3QgX19lbnZwW10pIDsKCgoKCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIg
Kl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10pCiAgICAgICAgICAgIDsK
CgoKCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0
IF9fYXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhlY2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
X19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBl
eGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoK
CgpleHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAq
X19hcmcsIC4uLikgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDExNQoKCmV4dGVybiBpbnQgbmlj
ZSAoaW50IF9faW5jKSA7CgoKCgpleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0
dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9j
b25mbmFtZS5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVt
CiAgewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9J
TlBVVCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBF
X0JVRiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAg
X1BDX1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBf
UENfUFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywK
CiAgICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwK
CiAgICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOCgogIH07
CgoKZW51bQogIHsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1h
aW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDExNgoKCiAgICBfU0NfQVJHX01BWCwKCiAg
ICBfU0NfQ0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwK
CiAgICBfU0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9N
QVgsCgogICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JF
QUxUSU1FX1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJ
TUVSUywKCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywK
CiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVE
X0ZJTEVTLAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9T
Q19NRU1PUllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19T
RU1BUEhPUkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19M
SVNUSU9fTUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgs
CgogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAg
ICAgICBQYWdlICAxMTcKCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoK
ICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1T
X01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAg
IF9TQ19USU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1f
TUFYLAoKICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAg
X1NDX0NPTExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCiAgICBfU0Nf
RVhQUl9ORVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1NDX1JFX0RVUF9NQVgsCgog
ICAgX1NDX0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVSU0lPTiwKCiAgICBfU0Nf
Ml9DX0JJTkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9SVF9ERVYsCgogICAgX1ND
XzJfRk9SVF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18yX0xPQ0FMRURFRiwKCgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAg
ICAgICAgICAgICAgUGFnZSAgMTE4CgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgog
ICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09T
SSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoK
ICAgIF9TQ19JT1ZfTUFYID0gX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX1BJSV9JTlRFUk5FVF9T
VFJFQU0sCgogICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKCiAgICBfU0NfUElJX09TSV9DT1RT
LAoKICAgIF9TQ19QSUlfT1NJX0NMVFMsCgogICAgX1NDX1BJSV9PU0lfTSwKCiAgICBfU0NfVF9J
T1ZfTUFYLAoKCgogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9O
UywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0NfR0VUUFdfUl9TSVpFX01BWCwK
CiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9OQU1FX01BWCwKCiAgICBfU0Nf
VEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0NfVEhSRUFEX0tFWVNfTUFYLAoK
ICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJFQURfVEhSRUFEU19NQVgsCgog
ICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tT
SVpFLAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkg
ICAgICAgICAgICAgICAgICAgIFBhZ2UgIDExOQoKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1ND
SEVEVUxJTkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9Q
UklPX1BST1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05Q
Uk9DRVNTT1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNf
UEFHRVMsCgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBf
U0NfUEFTU19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1Vf
VkVSU0lPTiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAg
X1NDX1hPUEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJf
VEVSTSwKCiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9Q
RU5fWFBHMiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAg
X1NDX0NIQVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAg
X1NDX0lOVF9NQVgsCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBt
YWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMjAKCgoKICAgIF9TQ19JTlRfTUlOLAoK
ICAgIF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgs
CgogICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwK
CiAgICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4s
CgogICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01B
WCwKCiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9M
QU5HTUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAgX1NDX05MX05NQVgsCgogICAgX1NDX05M
X1NFVE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIs
CgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgog
ICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9T
Q19YT1BFTl9SRUFMVElNRSwKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMjEKCgogICAgX1NDX1hPUEVO
X1JFQUxUSU1FX1RIUkVBRFMsCgoKICAgIF9TQ19BRFZJU09SWV9JTkZPLAoKICAgIF9TQ19CQVJS
SUVSUywKCiAgICBfU0NfQkFTRSwKCiAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCgogICAgX1NDX0Nf
TEFOR19TVVBQT1JUX1IsCgogICAgX1NDX0NMT0NLX1NFTEVDVElPTiwKCiAgICBfU0NfQ1BVVElN
RSwKCiAgICBfU0NfVEhSRUFEX0NQVVRJTUUsCgogICAgX1NDX0RFVklDRV9JTywKCiAgICBfU0Nf
REVWSUNFX1NQRUNJRklDLAoKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiwKCiAgICBfU0NfRkRf
TUdNVCwKCiAgICBfU0NfRklGTywKCiAgICBfU0NfUElQRSwKCiAgICBfU0NfRklMRV9BVFRSSUJV
VEVTLAoKICAgIF9TQ19GSUxFX0xPQ0tJTkcsCgogICAgX1NDX0ZJTEVfU1lTVEVNLAoKICAgIF9T
Q19NT05PVE9OSUNfQ0xPQ0ssCgogICAgX1NDX01VTFRJUExFX1BST0NFU1MsCgogICAgX1NDX1NJ
TkdMRV9QUk9DRVNTLAoKICAgIF9TQ19ORVRXT1JLSU5HLAoKICAgIF9TQ19SRUFERVJfV1JJVEVS
X0xPQ0tTLAoKICAgIF9TQ19TUElOX0xPQ0tTLAoKICAgIF9TQ19SRUdFWFAsCgogICAgX1NDX1JF
R0VYX1ZFUlNJT04sCgogICAgX1NDX1NIRUxMLAoKICAgIF9TQ19TSUdOQUxTLAoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAg
ICAgUGFnZSAgMTIyCgoKCiAgICBfU0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwK
CiAgICBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNF
LAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1ND
X1RZUEVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNF
Ul9HUk9VUFNfUiwKCiAgICBfU0NfMl9QQlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCgog
ICAgX1NDXzJfUEJTX0xPQ0FURSwKCiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAgICBfU0NfMl9Q
QlNfVFJBQ0ssCgogICAgX1NDX1NZTUxPT1AsCgogICAgX1NDX1NUUkVBTVMsCgogICAgX1NDXzJf
UEJTX0NIRUNLUE9JTlQKCiAgfTsKCgoKCgplbnVtCiAgewogICAgX0NTX1BBVEgKCgoKCiAgICAs
CiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCgogICAgX0NTX0xGU19MREZMQUdTLAoKICAgIF9D
U19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJTlRGTEFHUywKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEy
MwoKCgogICAgX0NTX0xGUzY0X0NGTEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBf
Q1NfTEZTNjRfTElCUywKCiAgICBfQ1NfTEZTNjRfTElOVEZMQUdTCgoKCgogICAgLAogICAgX0NT
X1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYz
Ml9MREZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVf
SUxQMzJfT0ZGMzJfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1Ms
CgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGQklHX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBf
Q1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xERkxB
R1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZG
NjRfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsCgogICAgX0NT
X1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJ
QlMsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUwoKCiAgfTsKIyA1MDEgIi91
c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBmcGF0aGNv
bmYgKGludCBfX2ZkLCBpbnQgX19uYW1lKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEyNAoKCmV4
dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYs
IHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAo
dm9pZCkgOwojIDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9f
Z2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRf
dCBfX3BpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlk
X3QgX19wZ2lkKSA7CiMgNTYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBz
ZXRwZ3JwICh2b2lkKSA7CiMgNTgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9f
cGlkX3Qgc2V0c2lkICh2b2lkKSA7CgoKCmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBf
X3BpZCkgOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIDsKCgpleHRlcm4gX191aWRf
dCBnZXRldWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSA7CgoKZXh0
ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBnZXRncm91cHMgKGlu
dCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pIDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMjUKCgoK
CmV4dGVybiBpbnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBp
bnQgc2V0dWlkIChfX3VpZF90IF9fdWlkKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3Vp
ZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZXVpZCAoX191
aWRfdCBfX3VpZCkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dpZCkgOwoK
CgoKZXh0ZXJuIGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSA7
CgoKCgpleHRlcm4gaW50IHNldGVnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIF9f
cGlkX3QgZm9yayAodm9pZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgOwoK
CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAg
ICAgICAgICAgICAgICAgICBQYWdlICAxMjYKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9f
ZmQpIDsKCgoKZXh0ZXJuIGludCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6
ZV90IF9fYnVmbGVuKSA7CgoKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgOwoKCgoKCmV4
dGVybiBpbnQgdHR5c2xvdCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNo
YXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAo
X19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGlu
dCByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVy
biBpbnQgdW5saW5rIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCmV4dGVybiBpbnQgcm1kaXIg
KF9fY29uc3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50
IF9fZmQpIDsKCgpleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3Jw
X2lkKSA7CgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbiAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBn
ZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVfbGVuKSA7CgoKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAg
ICAgICBQYWdlICAxMjcKCgoKZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBjaGFyICpfX25h
bWUpIDsKIyA3MjYgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
ZXRvcHQuaCIgMSAzCiMgNDcgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gY2hhciAq
b3B0YXJnOwojIDYxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBvcHRpbmQ7
CgoKCgpleHRlcm4gaW50IG9wdGVycjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTQ1ICIvdXNy
L2luY2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX2FyZ2MsIGNoYXIg
KmNvbnN0ICpfX2FyZ3YsIGNvbnN0IGNoYXIgKl9fc2hvcnRvcHRzKTsKIyA3MjcgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMiAzCgoKCgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlk
IChsb25nIGludCBfX2lkKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3Qg
Y2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZv
aWQpIDsKCgpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAg
ICAgICAgICBQYWdlICAxMjgKCgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hv
cnQgaW50ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19vZmZzZXQsIHVuc2lnbmVkIGludCBfX3NjYWxlKSA7CgoKCgoKZXh0ZXJuIGlu
dCBhY2N0IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0dXNlcnNo
ZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9p
ZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9j
aGRpciwgaW50IF9fbm9jbG9zZSkgOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoX19jb25zdCBj
aGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgKF9fY29uc3QgY2hhciAqX19w
cm9tcHQpIDsKCgoKCgpleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgOwoKCgoKCgpleHRlcm4g
bG9uZyBpbnQgZ2V0aG9zdGlkICh2b2lkKSA7CgoKZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgOwoK
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAg
ICAgICAgICAgICAgICAgUGFnZSAgMTI5CgoKCmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9f
Y29uc3QgY2hhciAqX19maWxlLCBfX29mZl90IF9fbGVuZ3RoKSA7CiMgODM2ICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmls
ZSwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9f
ZmQsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSA7CiMgODY2ICIvdXNyL2luY2x1ZGUv
dW5pc3RkLmgiIDMKZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2
b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSA7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgOwoj
IDkwNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2Zk
LCBpbnQgX19jbWQsIF9fb2ZmX3QgX19sZW4pIDsKIyA5MTcgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGxvY2tmNjQgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmNjRfdCBf
X2xlbikgOwojIDkzOCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZmRhdGFz
eW5jIChpbnQgX19maWxkZXMpIDsKCgoKCgoKCmV4dGVybiBjaGFyICpjcnlwdCAoX19jb25zdCBj
aGFyICpfX2tleSwgX19jb25zdCBjaGFyICpfX3NhbHQpIDsKCgoKZXh0ZXJuIHZvaWQgZW5jcnlw
dCAoY2hhciAqX19ibG9jaywgaW50IF9fZWRmbGFnKSA7CgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdl
ICAxMzAKCgpleHRlcm4gdm9pZCBzd2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9t
LCB2b2lkICpfX3Jlc3RyaWN0IF9fdG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7
CgoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJl
cGFyZSkgKHZvaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQp
ICh2b2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lk
KSkgOwojIDIwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoj
IDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi
IDEgMwojIDQzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKIyA1NiAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDU3ICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwoKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMiAzCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMgNzkgIi91c3IvaW5jbHVkZS90aW1l
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA4MCAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgOTEgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMK
IyA5MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEzMQoK
CnR5cGVkZWYgX190aW1lcl90IHRpbWVyX3Q7CiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2
X25zZWM7CiAgfTsKCgoKCgoKCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQgdG1fbWlu
OwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50IHRtX3ll
YXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0OwoKCiAgbG9u
ZyBpbnQgdG1fZ210b2ZmOwogIF9fY29uc3QgY2hhciAqdG1fem9uZTsKCgoKCn07CgoKCgpzdHJ1
Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0
cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsKIyAxNjMgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIDsKCgpleHRl
cm4gdGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgOwoKCmV4dGVybiBkb3VibGUgZGlmZnRp
bWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMzIKCgoKZXh0ZXJuIHRp
bWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRp
bWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4
dGVybiBjaGFyICpzdHJwdGltZSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0cnVjdCB0
bSAqX190cCkKICAgICAgICAgICAgOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19j
b25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChf
X2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3Ig
KF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgpleHRlcm4gc3RydWN0IHRt
ICpsb2NhbHRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoK
CgpleHRlcm4gY2hhciAqYXNjdGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRl
cm4gY2hhciAqY3RpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgoKCmV4dGVybiBj
aGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAg
ICAgUGFnZSAgMTMzCgoKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jl
c3RyaWN0IF9fdGltZXIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmKSA7CgoKCgpleHRlcm4gY2hhciAqX190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdo
dDsKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJd
OwoKCgpleHRlcm4gdm9pZCB0enNldCAodm9pZCkgOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0Owpl
eHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCgoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0
aW1lX3QgKl9fd2hlbikgOwojIDI3MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gdGlt
ZV90IHRpbWVnbSAoc3RydWN0IHRtICpfX3RwKSA7CgoKZXh0ZXJuIHRpbWVfdCB0aW1lbG9jYWwg
KHN0cnVjdCB0bSAqX190cCkgOwoKCmV4dGVybiBpbnQgZHlzaXplIChpbnQgX195ZWFyKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJuIGludCBuYW5vc2xlZXAgKF9fY29u
c3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAogICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbWFpbmluZykgOwoKCgpleHRlcm4gaW50IGNsb2NrX2dl
dHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19yZXMpIDsKCgpl
eHRlcm4gaW50IGNsb2NrX2dldHRpbWUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGlt
ZXNwZWMgKl9fdHApIDsKCgpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUgKGNsb2NraWRfdCBfX2Ns
b2NrX2lkLCBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICAgICAgICAgOwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAg
ICAgICAgICAgIFBhZ2UgIDEzNAoKCgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2Nr
aWRfdCBfX2Nsb2NrX2lkLCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNs
b2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVybiBp
bnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVyX3QgKl9fcmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0
aW1lcl9kZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0
aW1lICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3Zh
bHVlKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3Ry
dWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IHRpbWVy
X2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSA7CiMgMzQyICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0
ZGF0ZSAoX19jb25zdCBjaGFyICpfX3N0cmluZykgOwojIDM1NyAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwpleHRlcm4gaW50IGdldGRhdGVfciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Ry
aW5nLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fcmVzYnVm
cCkgOwojIDIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy90
aW1lLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMK
IyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy90aW1lLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEzNQoKCiMgNjQg
Ii91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMiAzCgoKCnN0cnVjdCB0aW1ldmFsCiAgewogICAg
X190aW1lX3QgdHZfc2VjOwogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgMjkgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMSAzCiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwoj
IDMyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ3NldC5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlw
ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2ln
bmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50
KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg
MwoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDEgMwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMiAzCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdl
ICAxMzYKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRz
WzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9zZXQ7CgoKCgoK
CnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CiMgOTYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDMKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBf
X3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZk
cywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgOwoK
CgoKCmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9f
cmVhZGZkcywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZk
cywKICAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsCiAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGlt
ZW91dCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9f
c2lnbWFzaykgOwojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKdHlwZWRlZiBf
X3N1c2Vjb25kc190IHN1c2Vjb25kc190OwojIDU2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MwpzdHJ1Y3QgdGltZXpvbmUKICB7CiAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICBpbnQgdHpf
ZHN0dGltZTsKICB9OwoKdHlwZWRlZiBzdHJ1Y3QgdGltZXpvbmUgKl9fcmVzdHJpY3QgX190aW1l
em9uZV9wdHJfdDsKIyA3MiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKZXh0ZXJuIGludCBn
ZXR0aW1lb2ZkYXkgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdHYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX3RpbWV6b25lX3B0cl90IF9fdHopIDsKCgoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFn
ZSAgMTM3CgoKCgpleHRlcm4gaW50IHNldHRpbWVvZmRheSAoX19jb25zdCBzdHJ1Y3QgdGltZXZh
bCAqX190diwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWV6b25l
ICpfX3R6KSA7CgoKCgoKZXh0ZXJuIGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFs
ICpfX2RlbHRhLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRlbHRh
KSA7CgoKCgplbnVtIF9faXRpbWVyX3doaWNoCiAgewoKICAgIElUSU1FUl9SRUFMID0gMCwKCgog
ICAgSVRJTUVSX1ZJUlRVQUwgPSAxLAoKCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgoKCnN0
cnVjdCBpdGltZXJ2YWwKICB7CgogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CgogICAg
c3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7CiAgfTsKCgp0eXBlZGVmIGVudW0gX19pdGltZXJfd2hp
Y2ggX19pdGltZXJfd2hpY2hfdDsKCgoKCgoKZXh0ZXJuIGludCBnZXRpdGltZXIgKF9faXRpbWVy
X3doaWNoX3QgX193aGljaCwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2YWwg
Kl9fdmFsdWUpIDsKCgoKCmV4dGVybiBpbnQgc2V0aXRpbWVyIChfX2l0aW1lcl93aGljaF90IF9f
d2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9f
cmVzdHJpY3QgX19uZXcsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVydmFsICpf
X3Jlc3RyaWN0IF9fb2xkKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxMzgKCgoKCgpleHRlcm4gaW50
IHV0aW1lcyAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgX190
dnBbMl0pCiAgICAgICAgICAgIDsKIyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2Mu
aCIgMgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vy
cm5vLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5j
bHVkZS9lcnJuby5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAx
IDMKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9s
aW51eC9lcnJuby5oIiAxIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwoj
IDUgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2Jp
dHMvZXJybm8uaCIgMiAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJu
IGludCBlcnJubzsKCgpleHRlcm4gaW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKIyA1
NSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlv
bl9uYW1lLCAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWU7CiMgNjkgIi91c3IvaW5jbHVk
ZS9lcnJuby5oIiAzCnR5cGVkZWYgaW50IGVycm9yX3Q7CiMgMjMgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj
IDI3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKIyA0MCAiL3Vzci9pbmNs
dWRlL2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDQxICIvdXNy
L2luY2x1ZGUvY3R5cGUuaCIgMiAzCgoKCgoKCmVudW0KewogIF9JU3VwcGVyID0gKCgwKSA8IDgg
PyAoKDEgPDwgKDApKSA8PCA4KSA6ICgoMSA8PCAoMCkpID4+IDgpKSwKICBfSVNsb3dlciA9ICgo
MSkgPCA4ID8gKCgxIDw8ICgxKSkgPDwgOCkgOiAoKDEgPDwgKDEpKSA+PiA4KSksCiAgX0lTYWxw
aGEgPSAoKDIpIDwgOCA/ICgoMSA8PCAoMikpIDw8IDgpIDogKCgxIDw8ICgyKSkgPj4gOCkpLAoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAg
ICAgICAgICAgICAgUGFnZSAgMTM5CgoKICBfSVNkaWdpdCA9ICgoMykgPCA4ID8gKCgxIDw8ICgz
KSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAgX0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAo
KDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkpID4+IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkg
PCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksCiAgX0lTcHJpbnQg
PSAoKDYpIDwgOCA/ICgoMSA8PCAoNikpIDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkpLAogIF9J
U2dyYXBoID0gKCg3KSA8IDggPyAoKDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgp
KSwKICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgp
KSA+PiA4KSksCiAgX0lTY250cmwgPSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgx
IDw8ICg5KSkgPj4gOCkpLAogIF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8
IDgpIDogKCgxIDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8
PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkKfTsKIyA3NSAiL3Vzci9pbmNsdWRl
L2N0eXBlLmgiIDMKZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7
CmV4dGVybiBfX2NvbnN0IF9faW50MzJfdCAqX19jdHlwZV90b2xvd2VyOwpleHRlcm4gX19jb25z
dCBfX2ludDMyX3QgKl9fY3R5cGVfdG91cHBlcjsKIyA5MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgi
IDMKZXh0ZXJuIGludCBpc2FsbnVtIChpbnQpIDsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIDsK
ZXh0ZXJuIGludCBpc2NudHJsIChpbnQpIDsKZXh0ZXJuIGludCBpc2RpZ2l0IChpbnQpIDsKZXh0
ZXJuIGludCBpc2xvd2VyIChpbnQpIDsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIDsKZXh0ZXJu
IGludCBpc3ByaW50IChpbnQpIDsKZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIDsKZXh0ZXJuIGlu
dCBpc3NwYWNlIChpbnQpIDsKZXh0ZXJuIGludCBpc3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBp
c3hkaWdpdCAoaW50KSA7CgoKZXh0ZXJuIGludCBpc2JsYW5rIChpbnQpIDsKCgoKCmV4dGVybiBp
bnQgdG9sb3dlciAoaW50IF9fYykgOwoKCmV4dGVybiBpbnQgdG91cHBlciAoaW50IF9fYykgOwoK
CgoKCgpleHRlcm4gaW50IGlzYXNjaWkgKGludCBfX2MpIDsKCgoKZXh0ZXJuIGludCB0b2FzY2lp
IChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgX3RvdXBwZXIgKGludCkgOwpleHRlcm4gaW50IF90
b2xvd2VyIChpbnQpIDsKIyAxNjggIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBfX2lu
bGluZSBpbnQKdG9sb3dlciAoaW50IF9fYykKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE0MAoKCnsKICBy
ZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBf
X2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykKewogIHJldHVybiBf
X2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyBfX2N0eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQoj
IDIxMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5o
IiAxIDMKIyAyMTIgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKIyAyMjQgIi91c3IvaW5jbHVk
ZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgX19pc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgOwpl
eHRlcm4gaW50IF9faXNhbHBoYV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lz
Y250cmxfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc2RpZ2l0X2wgKGludCwg
X19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNsb3dlcl9sIChpbnQsIF9fbG9jYWxlX3QpIDsK
ZXh0ZXJuIGludCBfX2lzZ3JhcGhfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19p
c3ByaW50X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNwdW5jdF9sIChpbnQs
IF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSA7
CmV4dGVybiBpbnQgX19pc3VwcGVyX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9f
aXN4ZGlnaXRfbCAoaW50LCBfX2xvY2FsZV90KSA7CgpleHRlcm4gaW50IF9faXNibGFua19sIChp
bnQsIF9fbG9jYWxlX3QpIDsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19s
b2NhbGVfdCBfX2wpIDsKCgpleHRlcm4gaW50IF9fdG91cHBlcl9sIChpbnQgX19jLCBfX2xvY2Fs
ZV90IF9fbCkgOwojIDI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEg
MwojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYgX191X2NoYXIg
dV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7
CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRl
ZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVm
IF9fbG9mZl90IGxvZmZfdDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxNDEKCgoKCnR5cGVkZWYgX19p
bm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYg
X19kZXZfdCBkZXZfdDsKIyA2OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYg
X19tb2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKIyAxMDEgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9faWRfdCBpZF90OwojIDExMSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVk
ZWYgX19jYWRkcl90IGNhZGRyX3Q7CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKIyAxMjYgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwoj
IDEyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKIyAxNDAgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDEgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsK
IyAxODQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCBpbnQ4X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5z
aWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo
X19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxNDIKCgojIDIw
NiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAxIDMKIyAyMDcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAyMTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAyMTMgIi91c3Iv
aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgp0eXBlZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVf
dDsKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNibGtj
bnRfdCBmc2Jsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OwojIDI1
MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2Nu
dDY0X3Q7CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNm
aWxjbnQ2NF90IGZzZmlsY250NjRfdDsKIyAyNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21p
c2MuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcg
Ii91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw
ZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgoKIyAxICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAxIDMKIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwoj
IDk4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
YXQuaCIgMSAzCiMgMzYgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMwpzdHJ1Y3Qgc3RhdAog
IHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fcGFkMTsKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAg
ICAgICAgICAgICBQYWdlICAxNDMKCgogICAgX19pbm9fdCBzdF9pbm87CgoKCiAgICBfX21vZGVf
dCBzdF9tb2RlOwogICAgX19ubGlua190IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAg
ICBfX2dpZF90IHN0X2dpZDsKICAgIF9fZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIHNob3J0
IGludCBfX3BhZDI7CgogICAgX19vZmZfdCBzdF9zaXplOwoKCgogICAgX19ibGtzaXplX3Qgc3Rf
Ymxrc2l6ZTsKCgogICAgX19ibGtjbnRfdCBzdF9ibG9ja3M7CgoKCiAgICBfX3RpbWVfdCBzdF9h
dGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210
aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3Rp
bWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDM7CgogICAgdW5zaWduZWQgbG9uZyBp
bnQgX191bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwoKCgogIH07CgoK
c3RydWN0IHN0YXQ2NAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2OwogICAgdW5zaWduZWQgaW50IF9f
cGFkMTsKCiAgICBfX2lub190IF9fc3RfaW5vOwogICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgIF9f
bmxpbmtfdCBzdF9ubGluazsKICAgIF9fdWlkX3Qgc3RfdWlkOwogICAgX19naWRfdCBzdF9naWQ7
CiAgICBfX2Rldl90IHN0X3JkZXY7CiAgICB1bnNpZ25lZCBpbnQgX19wYWQyOwogICAgX19vZmY2
NF90IHN0X3NpemU7CiAgICBfX2Jsa3NpemVfdCBzdF9ibGtzaXplOwoKICAgIF9fYmxrY250NjRf
dCBzdF9ibG9ja3M7CiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50
IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTQ0
CgoKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1l
OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsK
ICB9OwojIDk5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYp
IDsKCgoKZXh0ZXJuIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgOwoj
IDIxOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0NjQgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh
dDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CmV4dGVybiBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0
cnVjdCBzdGF0NjQgKl9fYnVmKSA7CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jl
c3RyaWN0IF9fYnVmKSA7CiMgMjQxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4g
aW50IGxzdGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgpleHRlcm4g
aW50IGNobW9kIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSA7CgoKCmV4
dGVybiBpbnQgZmNobW9kIChpbnQgX19mZCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKZXh0ZXJu
IF9fbW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21hc2spIDsKCgoKCmV4dGVybiBfX21vZGVfdCBn
ZXR1bWFzayAodm9pZCkgOwoKCgpleHRlcm4gaW50IG1rZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCwgX19tb2RlX3QgX19tb2RlKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE0NQoKCgoKCmV4dGVy
biBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsIF9fZGV2
X3QgX19kZXYpCiAgICAgICAgICAgIDsKCgoKCmV4dGVybiBpbnQgbWtmaWZvIChfX2NvbnN0IGNo
YXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKSA7CiMgMzA2ICIvdXNyL2luY2x1ZGUvc3lzL3N0
YXQuaCIgMwpleHRlcm4gaW50IF9fZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3Ry
dWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKZXh0ZXJuIGludCBfX3hzdGF0IChpbnQgX192ZXIsIF9f
Y29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAq
X19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hh
ciAqX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9i
dWYpIDsKIyAzMzAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgX19meHN0
YXQ2NCAoaW50IF9fdmVyLCBpbnQgX19maWxkZXMsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYp
CiAgICAgICAgICAgIDsKZXh0ZXJuIGludCBfX3hzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19z
dGF0X2J1ZikgOwpleHRlcm4gaW50IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFy
ICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3Rh
dF9idWYpIDsKCmV4dGVybiBpbnQgX194bWtub2QgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAgX19kZXZfdCAqX19k
ZXYpIDsKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsK
ICByZXR1cm4gX194c3RhdCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5s
aW5lX18gaW50IGxzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fbHhzdGF0ICgz
LCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGlu
dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKQp7CiAgcmV0dXJuIF9fZnhzdGF0ICgzLCBf
X2ZkLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IG1rbm9kIChfX2NvbnN0
IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fZGV2X3QgX19kZXYpCnsKICByZXR1cm4gX194bWtub2QgKDEsIF9fcGF0aCwgX19tb2Rl
LCAmX19kZXYpOwp9CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAg
bWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTQ2CgoKCgoKCmV4dGVybiBfX2lubGlu
ZV9fIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdDY0
ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQ2
NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19seHN0YXQ2NCAoMywgX19wYXRo
LCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGZzdGF0NjQgKGludCBfX2Zk
LCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19meHN0YXQ2NCAoMywgX19m
ZCwgX19zdGF0YnVmKTsKfQojIDI2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAy
CiMgMSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiMg
MjUgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDIgMwojIDM0
ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9uYW4u
aCIgMSAzCiMgMzggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvbWF0aGRlZi5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAz
CnR5cGVkZWYgbG9uZyBkb3VibGUgZmxvYXRfdDsKCnR5cGVkZWYgbG9uZyBkb3VibGUgZG91Ymxl
X3Q7CiMgNDEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDYzICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Fjb3MgKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUg
YXNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXNpbiAoZG91YmxlIF9feCkgOwoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAg
ICAgICAgICAgICAgUGFnZSAgMTQ3CgoKCmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fYXRhbiAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFu
MiAoZG91YmxlIF9feSwgZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJs
ZSBfX3ksIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91
YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91
YmxlIHRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fdGFuIChkb3VibGUgX194KSA7
CgoKCmV4dGVybiB2b2lkIHNpbmNvcyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJs
ZSAqX19jb3N4KSA7IGV4dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9f
c2lueCwgZG91YmxlICpfX2Nvc3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjb3NoIChkb3VibGUg
X194KSA7IGV4dGVybiBkb3VibGUgX19jb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91Ymxl
IHNpbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpbmggKGRvdWJsZSBfX3gpIDsK
CmV4dGVybiBkb3VibGUgdGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fdGFuaCAo
ZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUgX194KSA7IGV4dGVy
biBkb3VibGUgX19hY29zaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luaCAoZG91
YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBk
b3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW5oIChkb3VibGUg
X194KSA7CgoKCgoKZXh0ZXJuIGRvdWJsZSBleHAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2V4cCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19leHAxMCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBw
b3cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcG93MTAgKGRvdWJsZSBfX3gpIDsK
CgoKZXh0ZXJuIGRvdWJsZSBmcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7IGV4
dGVybiBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoKZXh0
ZXJuIGRvdWJsZSBsZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGRv
dWJsZSBfX2xkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOwoKCmV4dGVybiBkb3Vi
bGUgbG9nIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJsZSBfX3gpIDsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDE0OAoKCgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMTAgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBkb3VibGUgX19tb2Rm
IChkb3VibGUgX194LCBkb3VibGUgKl9faXB0cikgOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgOwoKCmV4dGVy
biBkb3VibGUgbG9nMXAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3Vi
bGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBkb3Vi
bGUgX19sb2diIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cDIgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IGxvZzIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIDsK
CgoKCgoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJu
IGRvdWJsZSBfX3BvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUg
c3FydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgOwoK
CgpleHRlcm4gZG91YmxlIGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBk
b3VibGUgX19oeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGRvdWJs
ZSBjYnJ0IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jYnJ0IChkb3VibGUgX194KSA7
CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
Y2VpbCAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAoZG91YmxlIF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmxvb3IgKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSA7CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAg
ICAgICBQYWdlICAxNDkKCgoKCmV4dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91Ymxl
IF9feSkgOyBleHRlcm4gZG91YmxlIF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoK
CgoKZXh0ZXJuIGludCBfX2lzaW5mIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5mIChkb3VibGUgX192YWx1
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlIChkb3Vi
bGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGRv
dWJsZSBpbmZuYW4gKGludCBfX2Vycm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4
dGVybiBkb3VibGUgX19pbmZuYW4gKGludCBfX2Vycm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4
dGVybiBkb3VibGUgX19kcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBk
b3VibGUgc2lnbmlmaWNhbmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NpZ25pZmlj
YW5kIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIGNvcHlzaWduIChkb3VibGUgX194
LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUg
X19jb3B5c2lnbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSBuYW4gKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uYW4gKF9fY29uc3QgY2hh
ciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9f
aXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4
dGVybiBpbnQgaXNuYW4gKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMCAoZG91
YmxlKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1p
ICAgICAgICAgICAgICAgICAgICBQYWdlICAxNTAKCgpleHRlcm4gZG91YmxlIGoxIChkb3VibGUp
IDsgZXh0ZXJuIGRvdWJsZSBfX2oxIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBk
b3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2puIChpbnQsIGRvdWJsZSkgOwpleHRlcm4gZG91Ymxl
IHkwIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3kwIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJs
ZSB5MSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSA7CmV4dGVybiBkb3Vi
bGUgeW4gKGludCwgZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpIDsK
CgoKCgpleHRlcm4gZG91YmxlIGVyZiAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19lcmYgKGRv
dWJsZSkgOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJm
YyAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgbGdhbW1hIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2xnYW1tYSAoZG91YmxlKSA7CgoKCmV4dGVybiBkb3VibGUgdGdhbW1hIChkb3VibGUpIDsg
ZXh0ZXJuIGRvdWJsZSBfX3RnYW1tYSAoZG91YmxlKSA7CgoKCgpleHRlcm4gZG91YmxlIGdhbW1h
IChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2dhbW1hIChkb3VibGUpIDsKCgoKCgoKZXh0ZXJu
IGRvdWJsZSBsZ2FtbWFfciAoZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGRvdWJs
ZSBfX2xnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gZG91
YmxlIHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3JpbnQgKGRvdWJsZSBfX3gp
IDsKCgpleHRlcm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dGFmdGVyIChkb3Vi
bGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4g
ZG91YmxlIG5leHR0b3dhcmQgKGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmV4dHRvd2FyZCAoZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVy
biBkb3VibGUgcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3Vi
bGUgX19yZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJs
ZSBzY2FsYiAoZG91YmxlIF9feCwgZG91YmxlIF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGIg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIDsKCgoKCmV4dGVybiBkb3VibGUgc2NhbGJuIChkb3Vi
bGUgX194LCBpbnQgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYm4gKGRvdWJsZSBfX3gsIGlu
dCBfX24pIDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTUxCgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2diIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4g
ZG91YmxlIHNjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikgOyBleHRlcm4gZG91Ymxl
IF9fc2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSA7CgoKCmV4dGVybiBkb3VibGUg
bmVhcmJ5aW50IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19uZWFyYnlpbnQgKGRvdWJs
ZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSByb3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fcm91bmQgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fdHJ1bmMg
KGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3Vi
bGUgcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSA7IGV4dGVybiBk
b3VibGUgX19yZW1xdW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIDsKCgoK
CgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50IChkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGludCBf
X2xyaW50IChkb3VibGUgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludCAoZG91YmxlIF9feCkgOwoKCgpl
eHRlcm4gbG9uZyBpbnQgbHJvdW5kIChkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xy
b3VuZCAoZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kIChkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZCAoZG91YmxlIF9feCkgOwoKCgpl
eHRlcm4gZG91YmxlIGZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2ZkaW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gZG91YmxlIGZtYXgg
KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2ZtYXggKGRvdWJsZSBf
X3gsIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gZG91YmxlIGZtaW4gKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2ZtaW4gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsK
CgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnkgKGRvdWJsZSBfX3ZhbHVlKQogICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdCAoZG91YmxlIF9fdmFs
dWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAg
MTUyCgoKCgoKZXh0ZXJuIGRvdWJsZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJs
ZSBfX3opIDsgZXh0ZXJuIGRvdWJsZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91
YmxlIF9feikgOwojIDY0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4MiAiL3Vzci9pbmNs
dWRlL21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1
NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGFjb3NmIChm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZs
b2F0IGFzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkg
OwoKZXh0ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYg
KGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOwoKCmV4dGVy
biBmbG9hdCBjb3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194
KSA7CgpleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpbmYg
KGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX190YW5mIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIHZvaWQgc2luY29zZiAoZmxvYXQgX194
LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSA7IGV4dGVybiB2b2lkIF9fc2luY29zZiAo
ZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSA7CgoKCgoKCmV4dGVybiBm
bG9hdCBjb3NoZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gp
IDsKCmV4dGVybiBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Npbmhm
IChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCB0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX3RhbmhmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGFjb3NoZiAoZmxvYXQg
X194KSA7IGV4dGVybiBmbG9hdCBfX2Fjb3NoZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQg
YXNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gpIDsK
CmV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuaGYg
KGZsb2F0IF9feCkgOwoKCgoKCmV4dGVybiBmbG9hdCBleHBmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fZXhwZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHAxMGYgKGZsb2F0IF9feCkgOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE1MwoKCmV4dGVybiBmbG9hdCBwb3cxMGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX19wb3cxMGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9hdCBf
X3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwg
aW50ICpfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQg
X19leHBvbmVudCkgOyBleHRlcm4gZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhw
b25lbnQpIDsKCgpleHRlcm4gZmxvYXQgbG9nZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBf
X2xvZ2YgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19sb2cxMGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAo
ZmxvYXQgX194LCBmbG9hdCAqX19pcHRyKSA7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX2lwdHIpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2V4cG0xZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzFw
ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSA7CgoKZXh0
ZXJuIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZsb2F0
IF9feCkgOwoKCgoKZXh0ZXJuIGZsb2F0IGV4cDJmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0
IF9fZXhwMmYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2xvZzJmIChmbG9hdCBfX3gpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IHBv
d2YgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3Bvd2YgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fc3FydGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgaHlwb3RmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19oeXBvdGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKCgpleHRlcm4gZmxvYXQgY2JydGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxv
YXQgX19jYnJ0ZiAoZmxvYXQgX194KSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1NAoKCgoKCgpl
eHRlcm4gZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxv
YXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgOyBl
eHRlcm4gZmxvYXQgX19mbG9vcmYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBmbW9kZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSA7CgoKCgpleHRlcm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9f
dmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZm
IChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgoKCgpleHRlcm4gZmxvYXQgaW5mbmFuZiAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9faW5mbmFuZiAoaW50IF9fZXJyb3IpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZHJlbWYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2RyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoK
CgpleHRlcm4gZmxvYXQgc2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
c2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIDsKCgoKCmV4dGVybiBmbG9hdCBjb3B5c2lnbmYgKGZs
b2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBm
bG9hdCBfX2NvcHlzaWduZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCmV4dGVybiBmbG9hdCBuYW5mIChfX2NvbnN0IGNoYXIgKl9fdGFnYikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19uYW5mIChfX2NvbnN0
IGNoYXIgKl9fdGFnYikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE1NQoKCgoKCmV4dGVybiBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFs
dWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9h
dCkgOyBleHRlcm4gZmxvYXQgX19qMGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX2oxZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBm
bG9hdCkgOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkw
ZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feTBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTFm
IChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX195MWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5bmYg
KGludCwgZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9feW5mIChpbnQsIGZsb2F0KSA7CgoKCgoKZXh0
ZXJuIGZsb2F0IGVyZmYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2VyZmYgKGZsb2F0KSA7CmV4
dGVybiBmbG9hdCBlcmZjZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KSA7
CmV4dGVybiBmbG9hdCBsZ2FtbWFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChm
bG9hdCkgOwoKCgpleHRlcm4gZmxvYXQgdGdhbW1hZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9f
dGdhbW1hZiAoZmxvYXQpIDsKCgoKCmV4dGVybiBmbG9hdCBnYW1tYWYgKGZsb2F0KSA7IGV4dGVy
biBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAo
ZmxvYXQsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmX3IgKGZsb2F0
LCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IHJpbnRmIChmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBuZXh0
YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OyBleHRlcm4gZmxvYXQgX19uZXh0YWZ0ZXJmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9hdCBf
X3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g
ZmxvYXQgX19uZXh0dG93YXJkZiAoZmxvYXQgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9f
eCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX3JlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWlu
Lm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxNTYKCgoKCgpleHRlcm4gZmxvYXQgc2NhbGJm
IChmbG9hdCBfX3gsIGZsb2F0IF9fbikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9f
eCwgZmxvYXQgX19uKSA7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQg
X19uKSA7IGV4dGVybiBmbG9hdCBfX3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOwoKCgpl
eHRlcm4gaW50IGlsb2diZiAoZmxvYXQgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0
IF9feCkgOwoKCgoKZXh0ZXJuIGZsb2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9f
bikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIDsK
CgoKZXh0ZXJuIGZsb2F0IG5lYXJieWludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19u
ZWFyYnlpbnRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194
KSA7IGV4dGVybiBmbG9hdCBfX3JvdW5kZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCB0
cnVuY2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxv
YXQgX190cnVuY2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
ZXh0ZXJuIGZsb2F0IHJlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVvKSA7
IGV4dGVybiBmbG9hdCBfX3JlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQgX195LCBpbnQgKl9fcXVv
KSA7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gbG9u
ZyBpbnQgX19scmludGYgKGZsb2F0IF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRm
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRmIChmbG9hdCBfX3gp
IDsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYgKGZsb2F0IF9feCkgOyBleHRlcm4gbG9uZyBp
bnQgX19scm91bmRmIChmbG9hdCBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGYg
KGZsb2F0IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmIChmbG9hdCBfX3gp
IDsKCgoKZXh0ZXJuIGZsb2F0IGZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4g
ZmxvYXQgX19mZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgZm1h
eGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2ZtYXhmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1NwoKCgpleHRlcm4gZmxvYXQg
Zm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2ZtaW5mIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0IF9f
dmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19z
aWduYml0ZiAoZmxvYXQgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCmV4dGVybiBmbG9hdCBmbWFmIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSA7
IGV4dGVybiBmbG9hdCBfX2ZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIDsK
IyA4MyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBk
b3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2FzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJs
ZSBhdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChs
b25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91Ymxl
IF9feSwgbG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9u
ZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29z
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91
YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19zaW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25n
IGRvdWJsZSB0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFu
bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiB2b2lkIHNpbmNvc2wgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9uZyBkb3VibGUgKl9fY29zeCkgOyBleHRlcm4g
dm9pZCBfX3NpbmNvc2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9fc2lueCwgbG9u
ZyBkb3VibGUgKl9fY29zeCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zaGwgKGxvbmcg
ZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jb3NobCAobG9uZyBkb3VibGUgX194
KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19zaW5obCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5obCAo
bG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hY29zaGwgKGxvbmcgZG91YmxlIF9feCkg
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2FzaW5obCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3Vi
bGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmhs
IChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1OAoKCgoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGV4cGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19leHBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cDEwbCAobG9uZyBkb3Vi
bGUgX194KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBv
bmVudCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50
IF9fZXhwb25lbnQpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBf
X3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gbG9uZyBkb3VibGUgbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgbW9kZmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19tb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRy
KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19leHBtMWwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBsb2cxcGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19s
b2cxcGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsb2dibCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2JsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBleHAybCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2V4cDJsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19s
b2cybCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBwb3dsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19w
b3dsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCmV4dGVybiBsb25nIGRv
dWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NxcnRs
IChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1OQoKCgoKCmV4dGVybiBs
b25nIGRvdWJsZSBoeXBvdGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2h5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2NicnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAo
bG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2Ztb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
OwoKCgoKZXh0ZXJuIGludCBfX2lzaW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25nIGRvdWJsZSBf
X3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGlzaW5m
bCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4
dGVybiBpbnQgZmluaXRlbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGluZm5hbmwgKGludCBfX2Vycm9y
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2luZm5h
bmwgKGludCBfX2Vycm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxv
bmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp
IDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX3NpZ25pZmljYW5kbCAobG9uZyBkb3VibGUgX194KSA7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAg
ICAgICAgICAgICBQYWdlICAxNjAKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxv
bmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxv
bmcgZG91YmxlIG5hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdi
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChs
b25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVy
biBpbnQgaXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fajBsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgajFsIChs
b25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91YmxlKSA7CmV4
dGVybiBsb25nIGRvdWJsZSBqbmwgKGludCwgbG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fam5sIChpbnQsIGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxv
bmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIDsKZXh0
ZXJuIGxvbmcgZG91YmxlIHkxbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
eTFsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91
YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSkgOwoKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSBlcmZsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19lcmZsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgZXJmY2wgKGxvbmcg
ZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2VyZmNsIChsb25nIGRvdWJsZSkgOwpleHRl
cm4gbG9uZyBkb3VibGUgbGdhbW1hbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRnYW1tYWwg
KGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RnYW1tYWwgKGxvbmcgZG91Ymxl
KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19nYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCgoKCmV4dGVybiBsb25nIGRv
dWJsZSBsZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoK
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDE2MQoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUg
X194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX25leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2Fy
ZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9uZyBkb3Vi
bGUgX194LCBsb25nIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHNjYWxibmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9n
YmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBs
b25nIGludCBfX24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBpbnQgX19uKSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBuZWFyYnlpbnRsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmVhcmJ5aW50bCAobG9uZyBk
b3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19yb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgdHJ1bmNsIChsb25nIGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdHJ1bmNsIChsb25nIGRvdWJsZSBf
X3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBy
ZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgaW50ICpfX3F1bykgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19yZW1xdW9sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl
IF9feSwgaW50ICpfX3F1bykgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsK
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGxvbmcgaW50IF9fbGxyaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE2MgoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9u
ZyBsb25nIGludCBsbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGxvbmcg
aW50IF9fbGxyb3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUg
ZmRpbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2ZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1heGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlsIChsb25nIGRv
dWJsZSBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4g
aW50IF9fc2lnbmJpdGwgKGxvbmcgZG91YmxlIF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgOyBleHRlcm4gbG9uZyBkb3VibGUg
X19mbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196
KSA7CiMgMTAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKZXh0ZXJuIGludCBzaWduZ2FtOwojIDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MwplbnVtCiAgewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgog
ICAgRlBfU1VCTk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwojIDI0MCAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwp0eXBlZGVmIGVudW0KewogIF9JRUVFXyA9IC0xLAogIF9TVklEXywKICBfWE9Q
RU5fLAogIF9QT1NJWF8sCiAgX0lTT0NfCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgoKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgMTYzCgoKZXh0ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsK
IyAyNjUgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBp
bnQgdHlwZTsKICAgIGNoYXIgKm5hbWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcy
OwogICAgZG91YmxlIHJldHZhbDsKICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3Qg
ZXhjZXB0aW9uICpfX2V4Yyk7CiMgMzUwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAxIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdGYgKGZsb2F0IF9f
eCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0g
eyBfX2Y6IF9feCB9OwogIHJldHVybiBfX3UuX19pIDwgMDsKfQpleHRlcm4gX19pbmxpbmUgaW50
Cl9fc2lnbmJpdCAoZG91YmxlIF9feCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUg
X19kOyBpbnQgX19pWzJdOyB9IF9fdSA9IHsgX19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsx
XSA8IDA7Cn0KZXh0ZXJuIF9faW5saW5lIGludApfX3NpZ25iaXRsIChsb25nIGRvdWJsZSBfX3gp
CnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX19sOyBpbnQgX19pWzNdOyB9
IF9fdSA9IHsgX19sOiBfX3ggfTsKICByZXR1cm4gKF9fdS5fX2lbMl0gJiAweDgwMDApICE9IDA7
Cn0KIyAyOTEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxp
bmUgZG91YmxlIF9fc2duIChkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBfX3NnbiAo
ZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChfX3ggPiAwLjAgPyAxLjAg
OiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCkgOyBleHRlcm4g
X19pbmxpbmUgZmxvYXQgX19zZ25mIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAw
LjAgOiAoX194ID4gMC4wID8gMS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlIF9fc2dubCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9f
c2dubCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+
IDAuMCA/IDEuMCA6IC0xLjApOyB9CiMgNDI2ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5l
LmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJm
cGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIp
OyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYXRhbjJmIChmbG9hdCBf
X3ksIGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3Zv
bGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195
KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3Vi
bGUgYXRhbjJsIChsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAo
X192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1
ZTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19hdGFuMmwgKGxvbmcgZG91YmxlIF9f
eSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUi
IChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CgoKZXh0ZXJuIF9faW5saW5lIGRv
dWJsZSBmbW9kIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4
XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtXG5cdCIgImZuc3RzdwklJWF4
XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVt
XG5cdCIgImZuc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1
ZSkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJheCIsICJjYyIpOyByZXR1cm4gX192YWx1ZTsg
fQojIDQ0MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgc3FydCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBkb3VibGUgX19yZXN1bHQ7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7
IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgc3FydGYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQi
IDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBzcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQi
IChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBmYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAoX194KTsg
fQpleHRlcm4gX19pbmxpbmUgZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWls
dGluX2ZhYnNmIChfX3gpOyB9CmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmYWJzbCAobG9u
ZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFic2wgKF9feCk7IH0KZXh0ZXJuIF9f
aW5saW5lIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19i
dWlsdGluX2ZhYnNsIChfX3gpOyB9CiMgNDY3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5l
LmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhdGFuIChkb3VibGUgX194KSB7IHJlZ2lzdGVy
IGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9
dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQg
X19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChfX3Jl
c3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9IGV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxv
bmcgZG91YmxlIF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsg
fQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAg
ICAgICAgICAgICAgICAgUGFnZSAgMTY0CgoKCmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBf
X3NnbjFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24x
bCAobG9uZyBkb3VibGUgX194KSB7IF9fZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBf
X3hsZDsgdW5zaWduZWQgaW50IF9feGlbM107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5f
X3hpWzJdID0gKF9fbi5fX3hpWzJdICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAw
eDgwMDAwMDAwOyBfX24uX194aVswXSA9IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA0OTMgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZs
b29yIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0
IGZsb29yZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9s
YXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
aW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykp
OyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgi
ZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQi
IDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cg
JTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxv
bmcgZG91YmxlIGZsb29ybCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAi
IDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xh
dGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3Zv
bGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1
MDQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGNlaWwgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192
b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3
KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUg
KCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGlu
dCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRj
dyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUg
ZmxvYXQgY2VpbGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9f
Y3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGls
ZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5k
aW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZs
ZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGlu
ZSBsb25nIGRvdWJsZSBjZWlsbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cg
JTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBf
X2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192
b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBf
X3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0K
IyA1MjIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUg
ZG91YmxlCmxkZXhwIChkb3VibGUgX194LCBpbnQgX195KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVlOwp9
CiMgNTQwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVl
OyBpZiAoX19mYWJzbCAoX194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgw
TCkgX192YWx1ZSA9IGxvZ2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgi
ZmxkbG4yXG5cdCIgImZ4Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAo
X194KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
bG9nMXBmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9f
ZmFic2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFs
dWUgPSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxu
XHQiICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAi
c3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxv
ZzFwbCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlm
IChfX2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBf
X3ZhbHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRs
bjJcblx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
IDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNTU0ICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFw
bCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAq
IF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhc2luaGYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxv
ZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195
KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2luaGwg
KGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChf
X3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEu
MCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUg
ZG91YmxlIGFjb3NoIChkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChf
X3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0
IGFjb3NoZiAoZmxvYXQgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAx
LjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91Ymxl
IGFjb3NobCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChf
X3ggLSAxLjApICogX19zcXJ0bCAoX194ICsgMS4wKSk7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91
YmxlIGF0YW5oIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFi
c2wgKF9feCk7IHJldHVybiAtMC41ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195
KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4g
LTAuNSAqIGxvZzFwbCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194
KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUg
KiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0K
CgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGh5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fc3FydGwg
KF9feCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGh5
cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwg
KF9feCAqIF9feCArIF9feSAqIF9feSk7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nYiAo
ZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIg
KF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGZsb2F0IGxvZ2JmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBs
b2dibCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxu
XHQiIDogIj10IiAoX19qdW5rKSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4g
X192YWx1ZTsgfQojIDU4NCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVy
biBfX2lubGluZSBmbG9hdApsZGV4cGYgKGZsb2F0IF9feCwgaW50IF9feSkKewogIHJlZ2lzdGVy
IGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQi
IChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiICgobG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4g
X192YWx1ZTsKfQoKZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlCmxkZXhwbCAobG9uZyBkb3Vi
bGUgX194LCBpbnQgX195KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20g
X192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KChsb25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVlOwp9CiMgNjA4ICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50ZiAo
ZmxvYXQgX194KQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18g
KCJmaXN0cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0
dXJuIF9fbHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50IChkb3VibGUg
X194KQp7CiAgbG9uZyBpbnQgX19scmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0
cGwgJTAiIDogIj1tIiAoX19scmludHJlcykgOiAidCIgKF9feCkgOiAic3QiKTsgcmV0dXJuIF9f
bHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmxyaW50bCAobG9uZyBkb3VibGUg
X194KQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAg
ICAgICAgICAgICAgICAgICAgUGFnZSAgMTY1CgoKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9f
YXNtX18gX192b2xhdGlsZV9fICgiZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQi
IChfX3gpIDogInN0Iik7IHJldHVybiBfX2xyaW50cmVzOwp9CiMgNjMxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50
ZiAoZmxvYXQgX194KQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194KSA6
ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBp
bnQKbGxyaW50IChkb3VibGUgX194KQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19h
c21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0
IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxv
bmcgbG9uZyBpbnQKbGxyaW50bCAobG9uZyBkb3VibGUgX194KQp7CiAgbG9uZyBsb25nIGludCBf
X2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9f
bGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KCgoK
CgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
eyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2Fz
bSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5c
dCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChf
X3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5l
IGZsb2F0IGRyZW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglm
cHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9f
dmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1
ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJl
bTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFs
dWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsg
cmV0dXJuIF9fdmFsdWU7IH0KIyA2NjYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg
MwpleHRlcm4gX19pbmxpbmUgaW50Cl9fZmluaXRlIChkb3VibGUgX194KQp7CiAgcmV0dXJuIChf
X2V4dGVuc2lvbl9fCiAgICAgICAgICAoKCgoKHVuaW9uIHsgZG91YmxlIF9fZDsgaW50IF9faVsy
XTsgfSkge19fZDogX194fSkuX19pWzFdCiAgICAgICAgICAgICB8IDB4ODAwZmZmZmZ1KSArIDEp
ID4+IDMxKSk7Cn0KIyAzNTEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDI3ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvb2JqYy5oIiAxCiMgMjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIK
CiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDExICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9saW1pdHMuaCIgMwojIDEgIi91c3IvbG9j
YWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N5c2xp
bWl0cy5oIiAxIDMKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMTI1ICIvdXNyL2xvY2Fs
L2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9saW1pdHMu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9s
aW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKIyAxNDQgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAg
ICAgICAgICAgUGFnZSAgMTY2CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgi
IDEgMwojIDEyNiAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMSAzCiMgMzcgIi91
c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRz
L3Bvc2l4MV9saW0uaCIgMiAzCiMgMTQ1ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiMgMTQ5ICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAx
IDMKIyAzNCAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zdGRpb19saW0uaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xp
bS5oIiAyIDMKIyAxMzYgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzCiMgMTM3ICIvdXNyL2luY2x1ZGUvYml0cy94
b3Blbl9saW0uaCIgMiAzCiMgMTUzICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDEyNiAi
L3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvbGltaXRzLmgiIDIgMwojIDggIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwojIDMwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgNDQgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKCgoKIyAx
ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNDIg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFn
cy5oIiAxIDMKIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDYzICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3Rh
dHVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1
ZGUvYml0cy93YWl0c3RhdHVzLmgiIDIgMwoKdW5pb24gd2FpdAogIHsKICAgIGludCB3X3N0YXR1
czsKICAgIHN0cnVjdAogICAgICB7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTY3CgoKICAgICAgICB1
bnNpZ25lZCBpbnQgX193X3Rlcm1zaWc6NzsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X2NvcmVk
dW1wOjE7CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19yZXRjb2RlOjg7CiAgICAgICAgdW5zaWdu
ZWQgaW50OjE2OwoKCgoKCgoKICAgICAgfSBfX3dhaXRfdGVybWluYXRlZDsKICAgIHN0cnVjdAog
ICAgICB7CgogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHZhbDo4OwogICAgICAgIHVuc2ln
bmVkIGludCBfX3dfc3RvcHNpZzo4OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKICAg
ICAgfSBfX3dhaXRfc3RvcHBlZDsKICB9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MwojIDY4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiB1bmlvbgogIHsKICAgIHVu
aW9uIHdhaXQgKl9fdXB0cjsKICAgIGludCAqX19pcHRyOwogIH0gX19XQUlUX1NUQVRVUyBfX2F0
dHJpYnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7CiMgOTQgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsK
ICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBs
b25nIGludCByZW07CiAgfSBsZGl2X3Q7CgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0cnVj
dAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgbG9uZyBpbnQgcmVtOwoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAg
ICAgICAgICAgUGFnZSAgMTY4CgoKICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoK
CmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBj
aGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9f
IGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRv
ZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CgoKCmV4dGVybiBsb25nIGludCBzdHJ0b2wg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpleHRlcm4gdW5zaWdu
ZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBpbnQgX19iYXNlKQogICAgICAgICAgICA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcg
bG9uZyBpbnQgc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19i
YXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRv
dXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KQogICAgICAgICAgICA7CgoKCgoKCl9fZXh0ZW5zaW9uX18KCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE2
OQoKCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLCBpbnQgX19iYXNlKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBs
b25nIGxvbmcgaW50IHN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgICAgICAgIDsKIyAyMTEgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDIxMiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2wgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBf
X3N0cnRvdWxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90
IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9s
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVu
c2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9j
KQogICAgICAgICAgICA7CgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2wgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgIDsKCmV4dGVybiBm
bG9hdCBfX3N0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3Qg
X19sb2MpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xv
Y2FsZV90IF9fbG9jKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICAgICAg
ICAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgICAgICAgICA7CmV4dGVybiBsb25nIGRv
dWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTcwCgoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGludCBfX3N0cnRv
bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoK
CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9p
bnRlcm5hbCAoX19jb25zdCBjaGFyICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
X19iYXNlLCBpbnQgX19ncm91cCkKICAgICAgICAgICAgOwojIDI5NCAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBf
X3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5l
IGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0
cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpleHRlcm4gX19p
bmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2Up
CnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19z
dHJ0b2ZfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lubGluZSBs
b25nIGRvdWJsZQpzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikKewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTcxCgoKICByZXR1
cm4gX19zdHJ0b2xkX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoKCgpfX2V4dGVu
c2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
aW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw
dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg
bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoK
Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs
CiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25w
dHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5l
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jh
c2UpCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9kIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSk7
Cn0KZXh0ZXJuIF9faW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewogIHJl
dHVybiAoaW50KSBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
ZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAg
cmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQoKCl9f
ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3Qg
Y2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvbGwgKF9fbnB0ciwgKGNoYXIgKiopICgodm9p
ZCAqKTApLCAxMCk7Cn0KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
IG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE3MgoKCiMgMzg1ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVy
biBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDM5MiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkg
OwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRl
cm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVm
LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4g
Y2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVidWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21f
ZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJf
dCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJh
bmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAo
c3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAg
ICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgpleHRlcm4gaW50IHNyYW5kb21fciAo
dW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJu
IGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBf
X3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
KSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAg
ICAgICAgICAgICAgICAgICBQYWdlICAxNzMKCgoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFy
ICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lk
KSA7CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4g
aW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUg
ZHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu
dCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJu
IGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIGxvbmcgaW50IG1yYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9u
ZyBpbnQgX19zZWVkdmFsKSA7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAodW5z
aWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICh1bnNp
Z25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgOwoKCgoKCnN0cnVjdCBkcmFuZDQ4X2RhdGEKICB7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f
b2xkX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9faW5pdDsKICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwogIH07CgoKZXh0ZXJu
IGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0
ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDE3NAoKCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9f
cmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5k
NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25l
ZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25n
IGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1
Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3Ig
KHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4
X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAg
ICAgICAgICAgIDsKCmV4dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3Nl
ZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVm
ZmVyKSA7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1b
N10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikg
OwojIDUzNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICpyZWFsbG9jICh2
b2lkICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSA7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2
b2lkICpfX3B0cikgOwoKCgojIDEgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMSAzCiMgMjIgIi91
c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMK
IyAyMyAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyAyNiAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgoKCgoKCmV4dGVybiB2b2lkICphbGxv
Y2EgKHNpemVfdCBfX3NpemUpIDsKIyA1NDggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoK
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAg
ICAgICAgICAgICAgICBQYWdlICAxNzUKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9f
c2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhf
bWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z
aXplKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJu
IHZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0
ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBv
bl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQg
Kl9fYXJnKQogICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVz
KSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfRXhpdCAo
aW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4g
Y2hhciAqZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqX19z
ZWN1cmVfZ2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCmV4dGVybiBpbnQgcHV0
ZW52IChjaGFyICpfX3N0cmluZykgOwoKCgoKCmV4dGVybiBpbnQgc2V0ZW52IChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19yZXBsYWNlKQogICAgICAg
ICAgICA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5t
aSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTc2CgoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsK
IyA2MjQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFy
ICpfX3RlbXBsYXRlKSA7CgoKCgoKCgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxh
dGUpIDsKIyA2NDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IG1rc3RlbXA2
NCAoY2hhciAqX190ZW1wbGF0ZSkgOwojIDY1MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4
dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgpleHRlcm4gaW50IHN5
c3RlbSAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9u
aWNhbGl6ZV9maWxlX25hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNjczICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19yZXNvbHZlZCkgOwoKCgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0
IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwoKCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJp
c29uX2ZuX3Q7CgoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXks
IF9fY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbm1l
bWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE3NwoKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9f
bm1lbWIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9f
Y29tcGFyKTsKCgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFi
cyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBs
ZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rlbm9tKQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBs
bGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CiMgNzI5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNo
YXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBf
X2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwoKCgoK
ZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2ln
bikgOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91YmxlIF9fdmFs
dWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAq
cWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIDsK
CgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3Qg
X19sZW4pIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4u
bWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE3OAoKCmV4dGVybiBpbnQgZmN2dF9yIChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAg
ICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19i
dWYsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRf
ciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAg
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAg
ICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRl
cm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAg
ICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3Qg
X19sZW4pIDsKCgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVf
dCBfX24pIDsKCgpleHRlcm4gaW50IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywK
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf
X24pIDsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsK
CgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX24pIDsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAog
ICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2Nz
LCBzaXplX3QgX19uKQogICAgICAgICAgICA7CgoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKF9f
Y29uc3QgY2hhciAqX19yZXNwb25zZSkgOwojIDgwOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBpbnQgZ2V0c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICpfX2NvbnN0ICpfX3Jlc3RyaWN0IF9fdG9rZW5zLAogICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX192YWx1ZXApIDsKCgoKCgpleHRl
cm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIDsKCgoKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAg
UGFnZSAgMTc5CgoKCgpleHRlcm4gaW50IHBvc2l4X29wZW5wdCAoaW50IF9fb2ZsYWcpIDsKCgoK
CgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB1bmxvY2tw
dCAoaW50IF9fZmQpIDsKCgoKCmV4dGVybiBjaGFyICpwdHNuYW1lIChpbnQgX19mZCkgOwoKCgoK
CgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pIDsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKSA7CgoKCgoKCmV4dGVybiBpbnQgZ2V0
bG9hZGF2ZyAoZG91YmxlIF9fbG9hZGF2Z1tdLCBpbnQgX19uZWxlbSkgOwojIDQ1ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgNTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9taXNjLmgiCnZvaWQgKnhtYWxsb2MgKHNpemVfdCBzaXplKTsKdm9pZCAqeG1hbGxvY19hdG9t
aWMgKHNpemVfdCBzaXplKTsKdm9pZCAqeGNhbGxvYyAoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6
ZSk7CnZvaWQgKnhyZWFsbG9jICh2b2lkICpidWYsIHNpemVfdCBzaXplKTsKdm9pZCB4ZnJlZSAo
dm9pZCAqYnVmKTsKCgpjaGFyICpkcm9wZGlyIChjaGFyICpwYXRoKTsKCmNoYXIgKnhzdHJkdXAg
KGNvbnN0IGNoYXIgKnN0cmluZyk7CiMgMTQ0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlz
Yy5oIgpjb25zdCBjaGFyICpmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnByb2dyYW1fbmFt
ZSk7Cgp2b2lkIGRlYnVnYWJvcnQgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBsaW5l
bm8sIGNvbnN0IGNoYXIgKmZ1bmN0aW9uKSBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKTsKCnR5
cGVkZWYgaW50ICgqcXVpY2tzb3J0X2NvbXBhcl9mbl90KSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2
b2lkICopOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4u
bWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE4MAoKCmV4dGVybiB2b2lkIHF1aWNrc29ydCAo
dm9pZCAqY29uc3QgcGJhc2UsIHNpemVfdCB0b3RhbF9lbGVtcywKICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwgcXVpY2tzb3J0X2NvbXBhcl9mbl90IGNtcCk7CgoKCgoKCnN0YXRp
YyBpbmxpbmUgQk9PTAppc0RpZ2l0IChjaGFyIGNoKQp7CiAgcmV0dXJuIGNoID49ICcwJyAmJiBj
aCA8PSAnOSc7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTAppc1NwYWNlIChjaGFyIGNoKQp7CiAgcmV0
dXJuIGNoID09ICcgJyB8fCBjaCA9PSAnXHQnIHx8IGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJyB8
fCBjaCA9PSAnXGYnOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKaXNVcHBlciAoY2hhciBjaCkKewog
IHJldHVybiBjaCA+PSAnQScgJiYgY2ggPD0gJ1onOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKaXNM
b3dlciAoY2hhciBjaCkKewogIHJldHVybiBjaCA+PSAnYScgJiYgY2ggPD0gJ3onOwp9CgpzdGF0
aWMgaW5saW5lIEJPT0wKaXNBbHBoYSAoY2hhciBjaCkKewogIHJldHVybiBpc1VwcGVyIChjaCkg
fHwgaXNMb3dlciAoY2gpOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKaXNBbG51bSAoY2hhciBjaCkK
ewogIHJldHVybiBpc0FscGhhIChjaCkgfHwgaXNEaWdpdCAoY2gpOwp9CgpzdGF0aWMgaW5saW5l
IEJPT0wKaXNQdW5jdCAoY2hhciBjaCkKewogIHJldHVybiAoKChjaCA+ICcgJykgJiYgKGNoIDwg
JzAnKSkKICAgICAgICAgIHx8ICgoY2ggPiAnOScpICYmIChjaCA8ICdBJykpCiAgICAgICAgICB8
fCAoKGNoID4gJ1onKSAmJiAoY2ggPCAnYScpKQogICAgICAgICAgfHwgKChjaCA+ICd6JykgJiYg
KGNoIDw9ICd+JykpKTsKfQoKc3RhdGljIGlubGluZSBCT09MCmlzUHJpbnQgKGNoYXIgY2gpCnsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDE4MQoKCiAgcmV0dXJuIGlzUHVuY3QgKGNoKSB8fCBpc0FsbnVt
IChjaCkgfHwgY2ggPT0gJyAnOwp9CiMgMjkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5k
b20vcmFuZG9tZGVmcy5oIiAyCiMgNTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20u
aCIgMgojIDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zd2FybS5oIiAyCiMgMSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMQojIDQgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9zd2FybS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xz
Z3VpLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2Uu
aCIgMQojIDkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29sc2d1aS5oIiAyCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL3NpbXRvb2xzZ3VpLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvZ3VpLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNl
LmgiIDEKIyA3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZ3VpLmgiIDIKIyAzMCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2d1aS5oIgpAcHJvdG9jb2wgV2lkZ2V0IDxDcmVhdGUsIERyb3A+
CiMgMzkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9ndWkuaCIKLSBfSV9DcmVhdGluZzsKCgoK
CisgY3JlYXRlUGFyZW50OiBwYXJlbnQ7CgoKLSBzZXRQYXJlbnQ6IHBhcmVudDsKCgotIChjb25z
dCBjaGFyICopbWFrZVdpZGdldE5hbWVGb3I6IHdpZGdldDsKCgotIHNldFdpZGdldE5hbWVGcm9t
UGFyZW50OiAoaWQgPFdpZGdldD4pcGFyZW50OwoKCi0gc2V0V2lkZ2V0TmFtZUZyb21QYXJlbnRO
YW1lOiAoY29uc3QgY2hhciAqKXBhcmVudFdpZGdldE5hbWU7Ci0gX0lfVXNpbmc7CgoKCi0gKHZv
aWQpcGFjazsKCi0gKHZvaWQpcGFja0ZpbGw7Ci0gKHZvaWQpcGFja0JlZm9yZUFuZEZpbGxMZWZ0
OiB3aWRnZXQgZXhwYW5kOiAoQk9PTClleHBhbmRGbGFnOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTgy
CgoKLSAodm9pZClwYWNrRmlsbExlZnQ6IChCT09MKWV4cGFuZEZsYWc7Ci0gKHZvaWQpcGFja1Rv
UmlnaHQgOiB3aWRnZXQ7Ci0gKHZvaWQpcGFja0ZvcmdldEFuZEV4cGFuZDsKCgotICh2b2lkKXNl
dEFjdGl2ZUZsYWc6IChCT09MKWFjdGl2ZUZsYWc7CgoKLSBzZXRXaWR0aDogKHVuc2lnbmVkKXdp
ZHRoOwoKCi0gc2V0SGVpZ2h0OiAodW5zaWduZWQpaGVpZ2h0OwoKCi0gc2V0V2lkdGg6ICh1bnNp
Z25lZCl3aWR0aCBIZWlnaHQ6ICh1bnNpZ25lZCloZWlnaHQ7CgoKLSBzZXRYOiAoaW50KXggWTog
KGludCl5OwoKCi0gKHZvaWQpc2V0V2luZG93VGl0bGU6IChjb25zdCBjaGFyICopdGl0bGU7CgoK
LSBnZXRQYXJlbnQ7CgoKLSBnZXRUb3BMZXZlbDsKCgotIChjb25zdCBjaGFyICopZ2V0V2lkZ2V0
TmFtZTsKCgotICh1bnNpZ25lZClnZXRIZWlnaHQ7CgoKLSAodW5zaWduZWQpZ2V0V2lkdGg7CgoK
LSAoaW50KWdldFg7CgoKLSAoaW50KWdldFk7CgotIChjb25zdCBjaGFyICopZ2V0V2luZG93R2Vv
bWV0cnk7Ci0gKHZvaWQpc2V0V2luZG93R2VvbWV0cnk6IChjb25zdCBjaGFyICopczsKCgotICh2
b2lkKWVuYWJsZURlc3Ryb3lOb3RpZmljYXRpb246IG5vdGlmaWNhdGlvblRhcmdldAogICAgICAg
ICAgICAgICBub3RpZmljYXRpb25NZXRob2Q6IChTRUwpZGVzdHJveU5vdGlmaWNhdGlvbk1ldGhv
ZDsKCgotICh2b2lkKWRpc2FibGVEZXN0cm95Tm90aWZpY2F0aW9uOwoKLSAoQk9PTClnZXREZXN0
cm95ZWRGbGFnOwpAZW5kCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTgzCgoKCkBwcm90b2NvbCBXaW5k
b3dHZW9tZXRyeVJlY29yZCA8U2VyaWFsaXphdGlvbiwgQ3JlYXRlLCBEcm9wPgoKCgoKLSBfSV9V
c2luZzsKCi0gc2V0WDogKGludCl4IFk6IChpbnQpeTsKCgotIHNldFdpZHRoOiAodW5zaWduZWQp
dyBIZWlnaHQ6ICh1bnNpZ25lZCloOwoKCi0gKEJPT0wpZ2V0U2l6ZUZsYWc7CgoKLSAoQk9PTCln
ZXRQb3NpdGlvbkZsYWc7CgoKLSAodW5zaWduZWQpZ2V0V2lkdGg7CgoKLSAodW5zaWduZWQpZ2V0
SGVpZ2h0OwoKCi0gKGludClnZXRYOwoKCi0gKGludClnZXRZOwpAZW5kCgpAcHJvdG9jb2wgQXJj
aGl2ZWRHZW9tZXRyeVdpZGdldCA8V2lkZ2V0PgoKCgoKCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRl
OiAoaWQgPFpvbmU+KWFab25lIHNldFdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZTogKGNvbnN0IGNo
YXIgKiluYW1lOwoKCi0gc2V0V2luZG93R2VvbWV0cnlSZWNvcmROYW1lOiAoY29uc3QgY2hhciAq
KXJlY29yZE5hbWU7CgoKLSBzZXRTYXZlU2l6ZUZsYWc6IChCT09MKXNhdmVTaXplRmxhZzsKCi0g
bG9hZFdpbmRvd0dlb21ldHJ5UmVjb3JkOwotIHJlZ2lzdGVyQW5kTG9hZDsKLSB1cGRhdGVTaXpl
OwotIF9JX1VzaW5nOwotICh2b2lkKXVwZGF0ZUFyY2hpdmVyOiBhcmNoaXZlcjsKQGVuZAoKQHBy
b3RvY29sIEZyYW1lIDxBcmNoaXZlZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+CgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgMTg0CgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0Qm9yZGVyV2lkdGg6
IChpbnQpd2lkdGg7CgoKLSBzZXRSZWxpZWZGbGFnOiAoQk9PTClyZWxpZWZGbGFnOwotIF9JX1Vz
aW5nOwoKLSAodm9pZCl3aXRoZHJhdzsKCgotICh2b2lkKWRlaWNvbmlmeTsKQGVuZAoKQHByb3Rv
Y29sIENhbnZhcyA8QXJjaGl2ZWRHZW9tZXRyeVdpZGdldCwgQ1JFQVRBQkxFPgoKCgotIF9JX0Ny
ZWF0aW5nOwotIF9JX1VzaW5nOwoKLSBhZGRXaWRnZXQ6IHdpZGdldCBYOiAoaW50KXggWTogKGlu
dCl5IGNlbnRlckZsYWc6IChCT09MKWNlbnRlckZsYWc7CgoKLSByZW1vdmVXaWRnZXQ6IHdpZGdl
dDsKCgotIGNoZWNrR2VvbWV0cnk6IGZyYW1lOwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVDYW52YXMg
PENhbnZhcywgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0SG9yaXpvbnRhbFNj
cm9sbGJhckZsYWc6IChCT09MKWhvcml6b250YWxTY3JvbGJhckZsYWc7CkBlbmQKCkBwcm90b2Nv
bCBHcmFwaEVsZW1lbnQgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGlu
ZzsKLSBzZXRPd25lckdyYXBoOiBvd25lckdyYXBoOwoKKyBjcmVhdGVPd25lckdyYXBoOiBvd25l
ckdyYXBoOwotIF9JX1VzaW5nOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTg1CgoKCi0gKHZvaWQpc2V0
TGFiZWw6IChjb25zdCBjaGFyICopbGFiZWw7CgoKLSAodm9pZClzZXRDb2xvcjogKGNvbnN0IGNo
YXIgKiljb2xvck5hbWU7CgoKLSAodm9pZClzZXREYXNoZXM6IChpbnQpZGFzaGVzVmFsOwoKCi0g
KHZvaWQpc2V0U3ltYm9sOiAoY29uc3QgY2hhciAqKXN5bWJvbDsKCgotICh2b2lkKXNldFN5bWJv
bFNpemU6ICh1bnNpZ25lZClzaXplOwoKCi0gKHZvaWQpYWRkWDogKGRvdWJsZSl4IFk6IChkb3Vi
bGUpeTsKCgotICh2b2lkKXJlc2V0RGF0YTsKCgotIHNldFdpZHRoOiAodW5zaWduZWQpdzsKQGVu
ZAoKQHByb3RvY29sIEdyYXBoIDxBcmNoaXZlZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+CiMg
MjY3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZ3VpLmgiCi0gX0lfQ3JlYXRpbmc7Ci0gX0lf
VXNpbmc7CgotIHNldFRpdGxlOiAoY29uc3QgY2hhciAqKXRpdGxlOwoKLSBzZXRBeGlzTGFiZWxz
WDogKGNvbnN0IGNoYXIgKil4bCBZOiAoY29uc3QgY2hhciAqKXlsOwoKLSAoaWQgPEdyYXBoRWxl
bWVudD4pY3JlYXRlRWxlbWVudDsKCi0gKHZvaWQpc2V0U2NhbGVNb2RlWDogKEJPT0wpeHMgWTog
KEJPT0wpeXM7CgotICh2b2lkKXNldFJhbmdlc1hNaW46IChkb3VibGUpbWlueCBNYXg6KGRvdWJs
ZSltYXh4OwoKLSAodm9pZClzZXRSYW5nZXNZTWluOiAoZG91YmxlKW1pbnkgTWF4Oihkb3VibGUp
bWF4eTsKCi0gKHZvaWQpc2V0UmFuZ2VzWE1pbjogKGRvdWJsZSltaW54IE1heDooZG91YmxlKW1h
eHggWU1pbjogKGRvdWJsZSltaW55IE1heDogKGRvdWJsZSltYXh5OwpAZW5kCgoKQHByb3RvY29s
IEhpc3RvZ3JhbSA8QXJjaGl2ZWRHZW9tZXRyeVdpZGdldCwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBf
SV9DcmVhdGluZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBt
YWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxODYKCgotIHNldEJpbkNvdW50OiAodW5z
aWduZWQpbjsKLSBfSV9Vc2luZzsKCgotICh2b2lkKXNldENvbG9yczogKGNvbnN0IGNoYXIgKiBj
b25zdCAqKWMgY291bnQ6ICh1bnNpZ25lZCljb3VudDsKCgoKLSAodm9pZClzZXRMYWJlbHM6IChj
b25zdCBjaGFyICogY29uc3QgKilsIGNvdW50OiAodW5zaWduZWQpY291bnQ7CgoKLSBzZXRUaXRs
ZTogKGNvbnN0IGNoYXIgKil0aXRsZTsKCgotICh2b2lkKXNldEJhcldpZHRoOiAoZG91YmxlKXN0
ZXA7CgoKCi0gKHZvaWQpc2V0WGF4aXNNaW46IChkb3VibGUpbWluIG1heDogKGRvdWJsZSltYXgg
c3RlcDogKGRvdWJsZSlzdGVwOwoKCi0gKHZvaWQpc2V0WGF4aXNNaW46IChkb3VibGUpbWluIG1h
eDogKGRvdWJsZSltYXggc3RlcDogKGRvdWJsZSlzdGVwIHByZWNpc2lvbjogKHVuc2lnbmVkKXBy
ZWNpc2lvbjsKCgotIHNldEF4aXNMYWJlbHNYOiAoY29uc3QgY2hhciAqKXhsIFk6IChjb25zdCBj
aGFyICopeWw7CgoKLSAodm9pZClzZXRBY3RpdmVPdXRsaWVyVGV4dDogKHVuc2lnbmVkKW91dGxp
ZXJzIGNvdW50OiAodW5zaWduZWQpY291bnQ7CgoKLSAodm9pZCloaWRlTGVnZW5kOwoKCi0gKHZv
aWQpZHJhd0hpc3RvZ3JhbVdpdGhJbnQ6IChpbnQgKilwb2ludHM7CgoKLSAodm9pZClkcmF3SGlz
dG9ncmFtV2l0aERvdWJsZTogKGRvdWJsZSAqKXBvaW50czsKCgotICh2b2lkKWRyYXdIaXN0b2dy
YW1XaXRoSW50OiAoaW50ICopcG9pbnRzIGF0TG9jYXRpb25zOiAoZG91YmxlICopbG9jYXRpb25z
OwoKCi0gKHZvaWQpZHJhd0hpc3RvZ3JhbVdpdGhEb3VibGU6IChkb3VibGUgKilwb2ludHMgYXRM
b2NhdGlvbnM6IChkb3VibGUgKilsb2NhdGlvbnM7CgotICh2b2lkKXNldHVwWm9vbVN0YWNrOwot
ICh2b2lkKXNldHVwQWN0aXZlT3V0bGllck1hcmtlcjsKLSAodm9pZClzZXR1cEFjdGl2ZUl0ZW1J
bmZvOwpAZW5kCgpAcHJvdG9jb2wgTGFiZWwgPFdpZGdldCwgQ1JFQVRBQkxFPgoKCgotIF9JX0Ny
ZWF0aW5nOwotIF9JX1VzaW5nOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE4NwoKCi0gc2V0VGV4dDog
KGNvbnN0IGNoYXIgKil0ZXh0OwpAZW5kCgpAcHJvdG9jb2wgQ2xhc3NEaXNwbGF5TGFiZWwgPExh
YmVsLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CkBlbmQKCkBwcm90
b2NvbCBWYXJQcm9iZUxhYmVsIDxMYWJlbCwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwpA
ZW5kCgpAcHJvdG9jb2wgQ29tcGxldGVQcm9iZURpc3BsYXlMYWJlbCA8TGFiZWwsIENSRUFUQUJM
RT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKLSBzZXRUYXJnZXRXaWRnZXQ6IHRhcmdldFdpZGdldDsK
CgotIHNldFByb2JlZE9iamVjdDogcHJvYmVkT2JqZWN0OwotIF9JX1VzaW5nOwpAZW5kCgpAcHJv
dG9jb2wgQnV0dG9uIDxXaWRnZXQsIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9V
c2luZzsKCi0gc2V0VGV4dDogKGNvbnN0IGNoYXIgKil0ZXh0OwoKCi0gKHZvaWQpc2V0QnV0dG9u
VGFyZ2V0OiB0YXJnZXQgbWV0aG9kOiAoU0VMKW1ldGhvZDsKQGVuZAoKQHByb3RvY29sIENsYXNz
RGlzcGxheUhpZGVCdXR0b24gPEJ1dHRvbiwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsK
LSBzZXRTdWJXaWRnZXQ6IHN1YldpZGdldDsKLSBzZXRVc2VyOiB1c2VyOwotIHNldE93bmVyOiBv
d25lcjsKLSBfSV9Vc2luZzsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE4OAoKCkBlbmQKCkBwcm90b2Nv
bCBTaW1wbGVQcm9iZURpc3BsYXlIaWRlQnV0dG9uIDxCdXR0b24sIENSRUFUQUJMRT4KCgoKLSBf
SV9DcmVhdGluZzsKCi0gc2V0UHJvYmVEaXNwbGF5OiBwcm9iZURpc3BsYXk7CkBlbmQKCkBwcm90
b2NvbCBTdXBlckJ1dHRvbiA8QnV0dG9uLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0g
c2V0U3VwZXJXaWRnZXQ6IChpZCA8V2lkZ2V0PilzdXBlcldpZGdldDsKLSBzZXRPd25lcjogKGlk
IDxXaWRnZXQ+KW93bmVyOwotIHNldFVzZXI6IHVzZXI7Ci0gX0lfVXNpbmc7CkBlbmQKCkBwcm90
b2NvbCBJbnB1dFdpZGdldCA8V2lkZ2V0PgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsK
Ci0gKGNvbnN0IGNoYXIgKilnZXRWYWx1ZTsKCgoKLSAodm9pZClzZXRWYWx1ZTogKGNvbnN0IGNo
YXIgKil2OwoKCi0gKHZvaWQpbGlua1ZhcmlhYmxlSW50OiAoaW50ICopcDsKCgotICh2b2lkKWxp
bmtWYXJpYWJsZURvdWJsZTogKGRvdWJsZSAqKXA7CgoKLSAodm9pZClsaW5rVmFyaWFibGVCb29s
ZWFuOiAodW5zaWduZWQgKilwOwpAZW5kCgpAcHJvdG9jb2wgRW50cnkgPElucHV0V2lkZ2V0LCBD
UkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotIHNldEhlaWdodDogKHVu
c2lnbmVkKWg7CkBlbmQKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
ICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxODkKCgpAcHJvdG9jb2wgTWVzc2Fn
ZVByb2JlRW50cnkgPEVudHJ5LCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldElk
RmxhZzogKEJPT0wpaWRGbGFnOwoKCi0gc2V0QXJnOiAoaW50KWFyZzsKLSBfSV9Vc2luZzsKQGVu
ZAoKQHByb3RvY29sIFZhclByb2JlRW50cnkgPEVudHJ5LCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3Jl
YXRpbmc7CgotIHNldEludGVyYWN0aXZlRmxhZzogKEJPT0wpaW50ZXJhY3RpdmVGbGFnOwoKCi0g
c2V0T3duZXI6IG93bmVyOwoKCi0gc2V0VmFyUHJvYmU6IHZhclByb2JlOwotIF9JX1VzaW5nOwot
IGdldFZhclByb2JlOwpAZW5kCgpAcHJvdG9jb2wgQnV0dG9uUGFuZWwgPEZyYW1lLCBDUkVBVEFC
TEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotICh2b2lkKXNldEJ1dHRvblRhcmdl
dDogdGFyZ2V0OwoKCi0gKHZvaWQpYWRkQnV0dG9uTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lIHRh
cmdldDogdGFyZ2V0IG1ldGhvZDogKFNFTClzZWw7CgoKLSAodm9pZClhZGRCdXR0b25OYW1lOiAo
Y29uc3QgY2hhciAqKW5hbWUgbWV0aG9kOiAoU0VMKXNlbDsKQGVuZAoKQHByb3RvY29sIEZvcm0g
PFdpZGdldCwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoKLSAodm9p
ZClzZXRFbnRyeVdpZHRoOiAodW5zaWduZWQpZXc7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5MAoK
Ci0gKHZvaWQpYWRkTGluZU5hbWU6IChjb25zdCBjaGFyICopbiBCb29sZWFuOiAodW5zaWduZWQg
KilwOwoKCi0gKHZvaWQpYWRkTGluZU5hbWU6IChjb25zdCBjaGFyICopbiBJbnQ6IChpbnQgKilw
OwoKCi0gKHZvaWQpYWRkTGluZU5hbWU6IChjb25zdCBjaGFyICopbiBEb3VibGU6IChkb3VibGUg
KilwOwpAZW5kCgpAcHJvdG9jb2wgQ2hlY2tCdXR0b24gPElucHV0V2lkZ2V0LCBDUkVBVEFCTEU+
CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotIChCT09MKWdldEJvb2xWYWx1ZTsKCgot
IHNldEJvb2xWYWx1ZTogKEJPT0wpdjsKQGVuZAoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIENvbG9y
Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgUGl4ZWxWYWx1ZTsKCkBwcm90b2NvbCBDb2xvcm1hcCA8
Q3JlYXRlLCBDUkVBVEFCTEU+CgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKFBp
eGVsVmFsdWUgKiltYXA7CgoKLSAoUGl4ZWxWYWx1ZSlibGFjazsKCgotIChQaXhlbFZhbHVlKXdo
aXRlOwoKCgotIChCT09MKXNldENvbG9yOiAoQ29sb3IpYyBUb1JlZDogKGRvdWJsZSlyIEdyZWVu
OiAoZG91YmxlKWcgQmx1ZTogKGRvdWJsZSliOwoKCi0gKEJPT0wpc2V0Q29sb3I6IChDb2xvcilj
IFRvTmFtZTogKGNvbnN0IGNoYXIgKiljb2xvck5hbWU7CgoKLSAoQk9PTClzZXRDb2xvcjogKENv
bG9yKWMgVG9HcmV5OiAoZG91YmxlKWc7CgoKLSAodm9pZCl1bnNldENvbG9yOiAoQ29sb3IpYzsK
QGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkg
ICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5MQoKCkBjbGFzcyBSYXN0ZXI7CgpAcHJvdG9jb2wg
RHJhd2VyCgoKCgotIF9JX1VzaW5nOwotICh2b2lkKWRyYXdYOiAoaW50KXggWTogKGludCl5OwpA
ZW5kCgpAcHJvdG9jb2wgUmFzdGVyIDxBcmNoaXZlZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+
CgoKCgoKCgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoKLSBzZXRDb2xvcm1hcDogKGlkIDxD
b2xvcm1hcD4pYzsKCgotICh2b2lkKWRyYXdQb2ludFg6IChpbnQpeCBZOiAoaW50KXkgQ29sb3I6
IChDb2xvciljOwoKCi0gKHZvaWQpZHJhd1NlbGY7CgoKLSAodm9pZClzZXRCdXR0b246IChpbnQp
biBDbGllbnQ6IGMgTWVzc2FnZTogKFNFTClzZWw7CgoKLSAodm9pZClmaWxsUmVjdGFuZ2xlWDA6
IChpbnQpeDAgWTA6IChpbnQpeTAgWDE6IChpbnQpeDEgWTE6IChpbnQpeTEgQ29sb3I6IChDb2xv
ciljb2xvcjsKCgotICh2b2lkKWVsbGlwc2VYMDogKGludCl4MCBZMDogKGludCl5MCBYMTogKGlu
dCl4MSBZMTogKGludCl5MQogICAgICAgICAgICBXaWR0aDogKHVuc2lnbmVkKXBlbldpZHRoIENv
bG9yOiAoQ29sb3IpYzsKCgotICh2b2lkKWxpbmVYMDogKGludCl4MCBZMDogKGludCl5MCBYMTog
KGludCl4MSBZMTogKGludCl5MQogICAgICAgICBXaWR0aDogKHVuc2lnbmVkKXBlbldpZHRoIENv
bG9yOiAoQ29sb3IpYzsKCgotICh2b2lkKXJlY3RhbmdsZVgwOiAoaW50KXgwIFkwOiAoaW50KXkw
IFgxOiAoaW50KXgxIFkxOiAoaW50KXkxCiAgICAgICAgICAgICAgV2lkdGg6ICh1bnNpZ25lZClw
ZW5XaWR0aCBDb2xvcjogKENvbG9yKWM7CgoKLSAodm9pZClkcmF3OiAoaWQgPERyYXdlcj4pZHJh
d2VyIFg6IChpbnQpeCBZOiAoaW50KXk7CgoKLSAodm9pZCllcmFzZTsKQGVuZAoKQHByb3RvY29s
IFpvb21SYXN0ZXIgPFJhc3RlciwgQ1JFQVRBQkxFPgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTkyCgoK
CgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotICh2b2lkKWluY3JlYXNlWm9vbTsKCgot
ICh2b2lkKWRlY3JlYXNlWm9vbTsKCgotICh1bnNpZ25lZClnZXRab29tRmFjdG9yOwoKCi0gc2V0
Wm9vbUZhY3RvcjogKHVuc2lnbmVkKXo7CgoKLSAodm9pZCloYW5kbGVDb25maWd1cmVXaWR0aDog
KHVuc2lnbmVkKW5ld1dpZHRoIEhlaWdodDogKHVuc2lnbmVkKW5ld0hlaWdodDsKQGVuZAoKQHBy
b3RvY29sIFBpeG1hcCA8RHJhd2VyLCBDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgoKCi0gX0lf
Q3JlYXRpbmc7CgotIHNldEZpbGU6IChjb25zdCBjaGFyICopZmlsZW5hbWU7CgoKLSBzZXREaXJl
Y3Rvcnk6IChjb25zdCBjaGFyICopcGF0aDsKCgotIHNldFdpZGdldDogKGlkIDxXaWRnZXQ+KXdp
ZGdldDsKCgoKLSBzZXREZWNvcmF0aW9uc0ZsYWc6IChCT09MKWRlY29yYXRpb25zRmxhZzsKLSBf
SV9Vc2luZzsKCgotICh2b2lkKXNldFJhc3RlcjogKGlkIDxSYXN0ZXI+KXJhc3RlcjsKCgotICh1
bnNpZ25lZClnZXRXaWR0aDsKCgotICh1bnNpZ25lZClnZXRIZWlnaHQ7CgoKLSAodm9pZClzYXZl
OiAoY29uc3QgY2hhciAqKWZpbGVuYW1lOwpAZW5kCgpAcHJvdG9jb2wgQ2FudmFzQWJzdHJhY3RJ
dGVtIDxDcmVhdGUsIERyb3A+CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxOTMKCgoKCgotIF9JX0NyZWF0
aW5nOwoKLSAodm9pZCljcmVhdGVJdGVtOwoKCi0gKHZvaWQpY3JlYXRlQmluZGluZ3M7CgoKLSBz
ZXRDYW52YXM6IChpZCA8Q2FudmFzPiljYW52YXM7Ci0gX0lfVXNpbmc7CgotICh2b2lkKXNldFRh
cmdldElkOiB0YXJnZXQ7CgoKLSAodm9pZClzZXRDbGlja1NlbDogKFNFTClzZWw7CgoKLSAodm9p
ZClzZXRNb3ZlU2VsOiAoU0VMKXNlbDsKCgotICh2b2lkKXNldFBvc3RNb3ZlU2VsOiAoU0VMKXNl
bDsKCgotICh2b2lkKWNsaWNrZWQ7CgoKLSAodm9pZClpbml0aWF0ZU1vdmVYOiAobG9uZylkZWx0
YVggWTogKGxvbmcpZGVsdGFZOwoKCi0gKGlkIDxDYW52YXM+KWdldENhbnZhczsKQGVuZAoKQHBy
b3RvY29sIENhbnZhc0l0ZW0gPENhbnZhc0Fic3RyYWN0SXRlbSwgQ1JFQVRBQkxFPgoKCgotIF9J
X0NyZWF0aW5nOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgQ29tcG9zaXRlSXRlbSA8Q2Fu
dmFzQWJzdHJhY3RJdGVtPgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKHZvaWQp
bW92ZVg6IChsb25nKWRlbHRhWCBZOiAobG9uZylkZWx0YVk7CkBlbmQKCkBwcm90b2NvbCBOb2Rl
SXRlbSA8Q29tcG9zaXRlSXRlbSwgQ1JFQVRBQkxFPgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5NAoK
CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldFN0cmluZzogKGNvbnN0IGNoYXIgKilsYWJlbDsKCgot
IHNldEZvbnQ6IChjb25zdCBjaGFyICopZm9udDsKCgotIHNldFg6IChpbnQpeCBZOiAoaW50KXk7
Ci0gX0lfVXNpbmc7CgotICh2b2lkKXJlc2V0U3RyaW5nOiAoY29uc3QgY2hhciAqKXN0cmluZzsK
CgotIChpbnQpZ2V0WDsKCgotIChpbnQpZ2V0WTsKCgotICh2b2lkKXNldENvbG9yOiAoY29uc3Qg
Y2hhciAqKWFDb2xvcjsKCgotICh2b2lkKXNldEJvcmRlckNvbG9yOiAoY29uc3QgY2hhciAqKWFD
b2xvcjsKCgotICh2b2lkKXNldEJvcmRlcldpZHRoOiAoaW50KWFWYWw7CgoKLSAodm9pZCljcmVh
dGVUZXh0OwoKCi0gKHZvaWQpY3JlYXRlUGFkZGVkVGV4dDsKQGVuZAoKQHByb3RvY29sIExpbmtJ
dGVtIDxDb21wb3NpdGVJdGVtLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldEZy
b206IChpZCA8Tm9kZUl0ZW0+KWZyb207CgoKLSBzZXRUbzogKGlkIDxOb2RlSXRlbT4pdG87CgoK
LSBzZXREaXJlY3RlZEZsYWc6IChCT09MKWRpcmVjdGVkRmxhZzsKLSBfSV9Vc2luZzsKCi0gKHZv
aWQpc2V0Q29sb3I6IChjb25zdCBjaGFyICopYUNvbG9yOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAx
OTUKCgotICh2b2lkKXVwZGF0ZTsKQGVuZAoKQHByb3RvY29sIFNjaGVkdWxlSXRlbSA8Q29tcG9z
aXRlSXRlbSwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKLSBzZXRTY2hlZHVsZTogc2No
ZWR1bGU7CgoKLSBzZXRTdGVwOiAodW5zaWduZWQpc3RlcDsKCgotIHNldFg6IChpbnQpeCBZOiAo
aW50KXk7Ci0gX0lfVXNpbmc7CgotICh2b2lkKXVwZGF0ZTsKCgotICh2b2lkKWF0OiAodGltZXZh
bF90KXR2YWwgb3duZXI6IG93bmVyIHdpZGdldDogd2lkZ2V0IHg6IChpbnQpc291cmNlWCB5OiAo
aW50KXNvdXJjZVk7CgoKLSAodm9pZCl0cmlnZ2VyOiB3aWRnZXQgWDogKGludCl4IFk6IChpbnQp
eTsKQGVuZAoKQHByb3RvY29sIE92YWxOb2RlSXRlbSA8Tm9kZUl0ZW0sIENSRUFUQUJMRT4KCgoK
LSBfSV9DcmVhdGluZzsKQGVuZAoKQHByb3RvY29sIFJlY3RhbmdsZU5vZGVJdGVtIDxOb2RlSXRl
bSwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwpAZW5kCgpAcHJvdG9jb2wgVGV4dEl0ZW0g
PENhbnZhc0l0ZW0sIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0WDogKGludCl4
IFk6IChpbnQpeTsKCgotIHNldFRleHQ6IChjb25zdCBjaGFyICopdGV4dDsKCgotIHNldEZvbnQ6
IChjb25zdCBjaGFyICopZm9udDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMTk2CgoKLSBzZXRDZW50
ZXJGbGFnOiAoQk9PTCljZW50ZXJGbGFnOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgQ2ly
Y2xlIDxDYW52YXNJdGVtLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldFg6IChp
bnQpeCBZOiAoaW50KXk7CgoKLSBzZXRSYWRpdXM6ICh1bnNpZ25lZClyOwotIF9JX1VzaW5nOwpA
ZW5kCgpAcHJvdG9jb2wgUmVjdGFuZ2xlIDxDYW52YXNJdGVtLCBDUkVBVEFCTEU+CgoKCi0gX0lf
Q3JlYXRpbmc7CgotIHNldFRYOiAoaW50KXR4IFRZOiAoaW50KXR5IExYOiAoaW50KWx4IExZOiAo
aW50KWx5OwpAZW5kCgpAcHJvdG9jb2wgTGluZSA8Q2FudmFzSXRlbSwgQ1JFQVRBQkxFPgoKCgot
IF9JX0NyZWF0aW5nOwoKLSBzZXRUWDogKGludCl0eCBUWTogKGludCl0eSBMWDogKGludClseCBM
WTogKGludClseTsKQGVuZAojIDkxNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2d1aS5oIgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS90a29iamMvY29tbW9uLmgiIDEKCgoKCgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDcgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS90a29iamMvY29tbW9uLmgiIDIKCnZvaWQgdGtvYmpjX2RyYWdBbmREcm9w
IChpZCBzb3VyY2UsIGlkIG9iamVjdCk7CnZvaWQgdGtvYmpjX2RyYWdBbmREcm9wQXJnIChpZCBz
b3VyY2UsIGlkIG9iamVjdCwgaW50IGFyZyk7CnZvaWQgdGtvYmpjX2RyYWdBbmREcm9wVGFyZ2V0
IChpZCB0YXJnZXQsIGlkIG9iamVjdCk7CgppbnQgdGtvYmpjX2RvT25lRXZlbnRTeW5jICh2b2lk
KTsKaW50IHRrb2JqY19kb09uZUV2ZW50QXN5bmMgKHZvaWQpOwoKdm9pZCB0a29iamNfYmluZEJ1
dHRvbjNUb1NwYXduIChpZCB3aWRnZXQsIGlkIHNlbGYsIGludCBmb2N1c0ZsYWcpOwp2b2lkIHRr
b2JqY19iaW5kQnV0dG9uM1RvQXJnU3Bhd24gKGlkIHdpZGdldCwgaWQgc2VsZiwgaW50IHdoaWNo
KTsKCnZvaWQgdGtvYmpjX3JpbmdCZWxsICh2b2lkKTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxOTcK
CgppZCB0a29iamNfZHJhZ19hbmRfZHJvcF9vYmplY3QgKHZvaWQpOwoKdm9pZCB0a29iamNfY29u
ZmlndXJlU3BlY2lhbEJpdG1hcCAoaWQgd2lkZ2V0KTsKCnZvaWQgdGtvYmpjX3VwZGF0ZSAodm9p
ZCk7CnZvaWQgdGtvYmpjX3JlbGVhc2VBbmRVcGRhdGUgKHZvaWQpOwp2b2lkIHRrb2JqY191cGRh
dGVJZGxlVGFza3MgKGludCBob2xkKTsKCmNvbnN0IGNoYXIgKnRrb2JqY19keW5hbWljRXZhbCAo
Y29uc3QgY2hhciAqY21kKTsKCnZvaWQgdGtvYmpjX2ZvY3VzIChpZCB3aWRnZXQpOwoKdm9pZCB0
a29iamNfbWFrZUZyYW1lIChpZCB3aWRnZXQpOwp2b2lkIHRrb2JqY19wYWNrIChpZCB3aWRnZXQp
OwoKY29uc3QgY2hhciAqdGtvYmpjX2NyZWF0ZVRleHQgKGlkIGFab25lLCBpZCB3aWRnZXQsIGlu
dCB4LCBpbnQgeSwgY29uc3QgY2hhciAqdGV4dCwgY29uc3QgY2hhciAqZm9udCwgQk9PTCBjZW50
ZXJGbGFnKTsKIyA5MTYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9ndWkuaCIgMgpleHRlcm4g
dm9pZCBpbml0VGtPYmpjIChpZCBhcmd1bWVudHMpOwojIDkzNyAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2d1aS5oIgpAY2xhc3MgQnV0dG9uOwpAY2xhc3MgQnV0dG9uUGFuZWw7CkBjbGFzcyBD
aGVja0J1dHRvbjsKQGNsYXNzIENsYXNzRGlzcGxheUhpZGVCdXR0b247CkBjbGFzcyBDbGFzc0Rp
c3BsYXlMYWJlbDsKQGNsYXNzIENsYXNzRGlzcGxheVdpZGdldDsKQGNsYXNzIENvbXBsZXRlUHJv
YmVEaXNwbGF5TGFiZWw7CkBjbGFzcyBGb3JtOwpAY2xhc3MgRnJhbWU7CkBjbGFzcyBMYWJlbDsK
QGNsYXNzIE1lc3NhZ2VQcm9iZUVudHJ5OwpAY2xhc3MgUHJvYmVDYW52YXM7CkBjbGFzcyBTaW1w
bGVQcm9iZURpc3BsYXlIaWRlQnV0dG9uOwpAY2xhc3MgU3VwZXJCdXR0b247CkBjbGFzcyBWYXJQ
cm9iZUVudHJ5OwpAY2xhc3MgVmFyUHJvYmVMYWJlbDsKQGNsYXNzIFdpZGdldDsKCkBjbGFzcyBD
b2xvcm1hcDsKQGNsYXNzIEVudHJ5OwpAY2xhc3MgR3JhcGg7CkBjbGFzcyBDYW52YXM7CkBjbGFz
cyBDYW52YXNJdGVtOwpAY2xhc3MgSGlzdG9ncmFtOwpAY2xhc3MgTGlua0l0ZW07CkBjbGFzcyBP
dmFsTm9kZUl0ZW07CkBjbGFzcyBQaXhtYXA7CkBjbGFzcyBSZWN0YW5nbGVOb2RlSXRlbTsKQGNs
YXNzIFJhc3RlcjsKQGNsYXNzIFpvb21SYXN0ZXI7CgpAY2xhc3MgQ2lyY2xlOwpAY2xhc3MgTGlu
ZTsKQGNsYXNzIE5vZGVJdGVtOwpAY2xhc3MgUmVjdGFuZ2xlOwpAY2xhc3MgU2NoZWR1bGVJdGVt
OwpAY2xhc3MgVGV4dEl0ZW07CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxOTgKCgojIDExICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHNndWkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2lt
dG9vbHNndWkuaCIgMgoKQHByb3RvY29sIFdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZQoKCgoKCi0g
X0lfQ3JlYXRpbmc7CgoKCi0gc2V0V2luZG93R2VvbWV0cnlSZWNvcmROYW1lOiAoY29uc3QgY2hh
ciAqKXdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZTsKCi0gc2V0U2F2ZVNpemVGbGFnOiAoQk9PTClz
YXZlU2l6ZUZsYWc7CgoKCgoKQGVuZAoKQHByb3RvY29sIENvbXBvc2l0ZVdpbmRvd0dlb21ldHJ5
UmVjb3JkTmFtZSA8V2luZG93R2VvbWV0cnlSZWNvcmROYW1lPgoKCgoKLSBfSV9DcmVhdGluZzsK
Ci0gc2V0V2luZG93R2VvbWV0cnlSZWNvcmROYW1lRm9yQ29tcG9uZW50OiAoY29uc3QgY2hhciAq
KWNvbXBvbmVudE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6
IHdpZGdldDsKCgoKCgoKCkBlbmQKCgpAcHJvdG9jb2wgQ29udHJvbFBhbmVsIDxTd2FybU9iamVj
dCwgUkVUVVJOQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKLSBfSV9Vc2luZzsKCgoKLSAoaWQg
PFN5bWJvbD4pZ2V0U3RhdGU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAxOTkKCgoKLSBzZXRTdGF0ZTog
KGlkIDxTeW1ib2w+KXM7CgotIHN0YXJ0SW5BY3Rpdml0eTogKGlkIDxTd2FybUFjdGl2aXR5Pilh
Y3Rpdml0eUlEOwoKCi0gc2V0U3RhdGVSdW5uaW5nOwoKCgoKCi0gc2V0U3RhdGVTdG9wcGVkOwoK
Ci0gc2V0U3RhdGVTdGVwcGluZzsKCgotIHNldFN0YXRlUXVpdDsKCgotIHNldFN0YXRlTmV4dFRp
bWU7CgoKLSBzZXRTdGF0ZVNhdmU7CgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2FjaGUgPENvbXBv
c2l0ZVdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZSwgU3dhcm1PYmplY3QsIFJFVFVSTkFCTEU+CgoK
CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRDb250cm9sUGFuZWw6IChpZCA8Q29udHJvbFBhbmVsPilj
cDsKLSBjcmVhdGVQcm9jQ3RybDsKCi0gX0lfVXNpbmc7Ci0gc2V0U2NoZWR1bGVDb250ZXh0OiAo
aWQgPFN3YXJtPiljb250ZXh0OwotIGluc2VydEFjdGlvbjogYWN0aW9uSG9sZGVyOwotIGRlbGl2
ZXJBY3Rpb25zOwotIHNlbmRBY3Rpb25PZlR5cGU6IChpZCA8U3ltYm9sPil0eXBlIHRvRXhlY3V0
ZTogKGNvbnN0IGNoYXIgKiljbWQ7Ci0gc2VuZFN0YXJ0QWN0aW9uOwotIHNlbmRTdG9wQWN0aW9u
OwotIHNlbmRTdGVwQWN0aW9uOwotIHNlbmROZXh0QWN0aW9uOwotIHNlbmRRdWl0QWN0aW9uOwot
IHZlcmlmeUFjdGlvbnM7CgotIGdldFBhbmVsOwoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAyMDAK
CgoKLSBkb1RrRXZlbnRzOwotIHdhaXRGb3JDb250cm9sRXZlbnQ7CkBlbmQKCgpleHRlcm4gaWQg
PFN5bWJvbD4gQ29udHJvbCwgUHJvYmluZywgU3BhdGlhbDsKCgpleHRlcm4gaWQgPFN5bWJvbD4g
SW52YWxpZEFjdGlvblR5cGUsIEFjdGlvblR5cGVOb3RJbXBsZW1lbnRlZDsKCgpAcHJvdG9jb2wg
Q29tbW9uUHJvYmVEaXNwbGF5IDxTd2FybU9iamVjdCwgV2luZG93R2VvbWV0cnlSZWNvcmROYW1l
PgoKCgotIF9JX1VzaW5nOwoKCgoKCgoKLSAodm9pZCl1cGRhdGU7CgotIChCT09MKWdldE1hcmtl
ZEZvckRyb3BGbGFnOwotIGdldFRvcExldmVsOwpAZW5kCgpAcHJvdG9jb2wgU2luZ2xlUHJvYmVE
aXNwbGF5IDxDb21tb25Qcm9iZURpc3BsYXk+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldFByb2Jl
ZE9iamVjdDogYW5PYmplY3Q7CgotIF9JX1VzaW5nOwoKLSBnZXRQcm9iZWRPYmplY3Q7CkBlbmQK
CkBwcm90b2NvbCBTaW1wbGVQcm9iZURpc3BsYXkgPFNpbmdsZVByb2JlRGlzcGxheSwgUkVUVVJO
QUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+KXBy
b2JlTWFwOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVEaXNwbGF5IDxTaW5nbGVQ
cm9iZURpc3BsYXksIENSRUFUQUJMRT4KCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMjAxCgoKCgoKLSBf
SV9DcmVhdGluZzsKCgoKCgotIHNldFByb2JlTWFwOiAoaWQgPFByb2JlTWFwPilwcm9iZU1hcDsK
Ci0gX0lfVXNpbmc7CkBlbmQKCkBwcm90b2NvbCBDb21wbGV0ZVByb2JlRGlzcGxheSA8U2luZ2xl
UHJvYmVEaXNwbGF5LCBSRVRVUk5BQkxFPgoKCgoKCkBlbmQKCkBwcm90b2NvbCBNdWx0aVZhclBy
b2JlRGlzcGxheSA8Q29tbW9uUHJvYmVEaXNwbGF5LCBDUkVBVEFCTEU+CgoKCgoKLSBfSV9DcmVh
dGluZzsKCi0gc2V0T2JqZWN0TGlzdDogKGlkIDxMaXN0PilvYmplY3RMaXN0OwoKCi0gc2V0UHJv
YmVNYXA6IChpZCA8UHJvYmVNYXA+KXByb2JlTWFwOwoKCi0gc2V0T2JqZWN0TmFtZVNlbGVjdG9y
OiAoU0VMKW9iamVjdE5hbWVTZWxlY3RvcjsKCi0gX0lfVXNpbmc7CkBlbmQKCgpAcHJvdG9jb2wg
UHJvYmVEaXNwbGF5TWFuYWdlciA8U3dhcm1PYmplY3QsIENSRUFUQUJMRT4KCgoKCgotIF9JX1Vz
aW5nOwotIChCT09MKWdldERyb3BJbW1lZGlhdGVseUZsYWc7CgotIChpZCA8UHJvYmVEaXNwbGF5
PiljcmVhdGVQcm9iZURpc3BsYXlGb3I6IGFuT2JqZWN0OwoKLSAoaWQgPFByb2JlRGlzcGxheT4p
Y3JlYXRlQXJjaGl2ZWRQcm9iZURpc3BsYXlGb3I6IGFuT2JqZWN0IHZhcmlhYmxlTmFtZTogKGNv
bnN0IGNoYXIgKil2YXJpYWJsZU5hbWU7CgotIChpZCA8UHJvYmVEaXNwbGF5PiljcmVhdGVEZWZh
dWx0UHJvYmVEaXNwbGF5Rm9yOiBhbk9iamVjdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIwMgoKCgot
IChpZCA8UHJvYmVEaXNwbGF5PiljcmVhdGVBcmNoaXZlZERlZmF1bHRQcm9iZURpc3BsYXlGb3I6
IGFuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlTmFtZTogKGNvbnN0IGNoYXIgKil2YXJpYWJsZU5hbWU7CgotIChpZCA8Q29tcGxldGVQ
cm9iZURpc3BsYXk+KWNyZWF0ZUNvbXBsZXRlUHJvYmVEaXNwbGF5Rm9yOiBhbk9iamVjdDsKCi0g
KGlkIDxDb21wbGV0ZVByb2JlRGlzcGxheT4pY3JlYXRlQXJjaGl2ZWRDb21wbGV0ZVByb2JlRGlz
cGxheUZvcjogYW5PYmplY3QgdmFyaWFibGVOYW1lOiAoY29uc3QgY2hhciAqKXZhcmlhYmxlTmFt
ZTsKCgotIGFkZFByb2JlRGlzcGxheTogKGlkIDxDb21tb25Qcm9iZURpc3BsYXk+KXByb2JlRGlz
cGxheTsKCgotIHJlbW92ZVByb2JlRGlzcGxheTogKGlkIDxDb21tb25Qcm9iZURpc3BsYXk+KXBy
b2JlRGlzcGxheTsKCgotIGRyb3BQcm9iZURpc3BsYXlzRm9yOiBhbk9iamVjdDsKCgoKLSAodm9p
ZCl1cGRhdGU7CgotIHNldERyb3BJbW1lZGlhdGVseUZsYWc6IChCT09MKWRyb3BJbW1lZGlhdGVG
bGFnOwojIDI3NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzZ3VpLmgiCmV4dGVy
biBpZCA8UHJvYmVEaXNwbGF5PiBfY3JlYXRlUHJvYmVEaXNwbGF5IChpZCBvYmopOwpleHRlcm4g
aWQgPENvbXBsZXRlUHJvYmVEaXNwbGF5PiBfY3JlYXRlQ29tcGxldGVQcm9iZURpc3BsYXkgKGlk
IG9iaik7CgpleHRlcm4gaWQgPFByb2JlRGlzcGxheT4gY3JlYXRlQXJjaGl2ZWRQcm9iZURpc3Bs
YXlOYW1lZCAoaWQgb2JqLCBjb25zdCBjaGFyICpuYW1lKTsKZXh0ZXJuIGlkIDxDb21wbGV0ZVBy
b2JlRGlzcGxheT4gY3JlYXRlQXJjaGl2ZWRDb21wbGV0ZVByb2JlRGlzcGxheU5hbWVkIChpZCBv
YmosIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIGNvbnN0IGNoYXIgKmJ1aWxkV2luZG93R2Vv
bWV0cnlSZWNvcmROYW1lIChjb25zdCBjaGFyICpiYXNlTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb21wb25lbnROYW1l
KTsKQGVuZAoKQHByb3RvY29sIEdVSUNvbXBvc2l0ZSA8Q29tcG9zaXRlV2luZG93R2VvbWV0cnlS
ZWNvcmROYW1lPgoKCgotIF9JX1VzaW5nOwotICh2b2lkKWVuYWJsZURlc3Ryb3lOb3RpZmljYXRp
b246IG5vdGlmaWNhdGlvblRhcmdldAogICAgICAgICAgICAgICBub3RpZmljYXRpb25NZXRob2Q6
IChTRUwpbm90aWZpY2F0aW9uTWV0aG9kOwotICh2b2lkKWRpc2FibGVEZXN0cm95Tm90aWZpY2F0
aW9uOwpAZW5kCgpAcHJvdG9jb2wgR1VJU3dhcm0gPFN3YXJtLCBXaW5kb3dHZW9tZXRyeVJlY29y
ZE5hbWUsIENSRUFUQUJMRT4KIyAzMTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29s
c2d1aS5oIgotIF9JX1VzaW5nOwoKCgoKLSBnbzsKCi0gKGlkIDxBY3Rpb25DYWNoZT4pZ2V0QWN0
aW9uQ2FjaGU7Ci0gKGlkIDxDb250cm9sUGFuZWw+KWdldENvbnRyb2xQYW5lbDsKQGVuZAoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAg
ICAgICAgICAgIFBhZ2UgIDIwMwoKCkBwcm90b2NvbCBNZXNzYWdlUHJvYmVXaWRnZXQgPENSRUFU
QUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRQYXJlbnQ6IChpZCA8RnJhbWU+KXBhcmVudDsK
LSBzZXRPYmplY3Q6IG9iamVjdDsKLSBzZXRQcm9iZTogKGlkIDxQcm9iZT4pcHJvYmU7CgotIF9J
X1VzaW5nOwotICh2b2lkKXBhY2s7CkBlbmQKCkBwcm90b2NvbCBNdWx0aVZhclByb2JlV2lkZ2V0
IDxTd2FybU9iamVjdCwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwotIHNldFBhcmVudDog
KGlkIDxGcmFtZT4pcGFyZW50OwoKCi0gc2V0RmllbGRMYWJlbGluZ0ZsYWc6IChCT09MKWxhYmVs
aW5nRmxhZzsKCi0gc2V0T2JqZWN0TmFtZVNlbGVjdG9yOiAoU0VMKW9iamVjdE5hbWVTZWxlY3Rv
cjsKCi0gc2V0T2JqZWN0TGlzdDogKGlkIDxMaXN0PilvYmplY3RMaXN0OwoKLSBzZXRQcm9iZU1h
cDogKGlkIDxQcm9iZU1hcD4pcHJvYmVNYXA7CgotIF9JX1VzaW5nOwotICh2b2lkKXVwZGF0ZTsK
LSAodm9pZClwYWNrOwpAZW5kCgoKZXh0ZXJuIGlkIDxQcm9iZURpc3BsYXlNYW5hZ2VyPiBwcm9i
ZURpc3BsYXlNYW5hZ2VyOwoKCmV4dGVybiBpZCA8U3ltYm9sPiBDb250cm9sU3RhdGVSdW5uaW5n
LCBDb250cm9sU3RhdGVTdG9wcGVkLAogIENvbnRyb2xTdGF0ZVN0ZXBwaW5nLCBDb250cm9sU3Rh
dGVOZXh0VGltZSwgQ29udHJvbFN0YXRlUXVpdDsKCgpleHRlcm4gdm9pZCBpbml0U2ltdG9vbHNH
VUkgKHZvaWQpOwoKQGNsYXNzIENvbnRyb2xQYW5lbDsKQGNsYXNzIEFjdGlvbkNhY2hlOwpAY2xh
c3MgUHJvYmVEaXNwbGF5OwpAY2xhc3MgU2luZ2xlUHJvYmVEaXNwbGF5OwpAY2xhc3MgU2ltcGxl
UHJvYmVEaXNwbGF5OwpAY2xhc3MgQ29tcGxldGVQcm9iZURpc3BsYXk7CkBjbGFzcyBHVUlDb21w
b3NpdGU7CkBjbGFzcyBNdWx0aVZhclByb2JlRGlzcGxheTsKQGNsYXNzIFByb2JlRGlzcGxheU1h
bmFnZXI7CkBjbGFzcyBHVUlTd2FybTsKQGNsYXNzIE1lc3NhZ2VQcm9iZVdpZGdldDsKQGNsYXNz
IE11bHRpVmFyUHJvYmVXaWRnZXQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAyMDQKCgojIDUgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9zd2FybS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2V4dGVybnZhci5oIiAxCiMgNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3N3YXJtLmgi
IDIKCgoKCgpAcHJvdG9jb2wgU3dhcm1FbnZpcm9ubWVudCA8Q1JFQVRBQkxFPgoKCgotIF9JX0Ny
ZWF0aW5nOworIGNyZWF0ZUJlZ2luOwotIHNldEFyZ3VtZW50czogKGlkIDxBcmd1bWVudHM+KWFy
Z3VtZW50czsKLSBzZXRCYXRjaE1vZGU6IChCT09MKWJhdGNoTW9kZTsKLSBjcmVhdGVFbmQ7Cisg
aW5pdFN3YXJtOiAoY29uc3QgY2hhciAqKWFwcE5hbWUgdmVyc2lvbjogKGNvbnN0IGNoYXIgKil2
ZXJzaW9uIGJ1Z0FkZHJlc3M6IChjb25zdCBjaGFyICopYnVnQWRkcmVzcyBhcmdDb3VudDogKHVu
c2lnbmVkKWNvdW50IGFyZ3M6IChjb25zdCBjaGFyICoqKWFyZ3M7Ci0gX0lfVXNpbmc7Ci0gKHZv
aWQpaW5pdFN3YXJtVXNpbmc6IChjb25zdCBjaGFyICopYXBwTmFtZSB2ZXJzaW9uOiAoY29uc3Qg
Y2hhciAqKXZlcnNpb24gYnVnQWRkcmVzczogKGNvbnN0IGNoYXIgKilidWdBZGRyZXNzIGFyZ3M6
IChjb25zdCBjaGFyICoqKWFyZ3M7Ci0gKHRpbWV2YWxfdClnZXRDdXJyZW50VGltZTsKLSAoaWQg
PFN3YXJtQWN0aXZpdHk+KWdldEN1cnJlbnRTd2FybUFjdGl2aXR5OwotICh2b2lkKWNyZWF0ZVBy
b2JlRGlzcGxheTogb2JqOwotICh2b2lkKWNyZWF0ZUNvbXBsZXRlUHJvYmVEaXNwbGF5OiBvYmo7
Ci0gKHZvaWQpY3JlYXRlQXJjaGl2ZWRQcm9iZURpc3BsYXk6IG9iaiBuYW1lOiAoY29uc3QgY2hh
ciAqKW5hbWU7Ci0gKHZvaWQpY3JlYXRlQXJjaGl2ZWRDb21wbGV0ZVByb2JlRGlzcGxheTogb2Jq
IG5hbWU6IChjb25zdCBjaGFyICopbmFtZTsKLSAodm9pZClzZXRXaW5kb3dHZW9tZXRyeVJlY29y
ZE5hbWU6IG9iaiBuYW1lOiAoY29uc3QgY2hhciAqKW5hbWU7Ci0gKHZvaWQpc2V0Q29tcG9uZW50
V2luZG93R2VvbWV0cnlSZWNvcmROYW1lRm9yOiBvYmogd2lkZ2V0OiB3aWRnZXQgbmFtZTogbmFt
ZTsKLSAodm9pZClzZXRDb21wb25lbnRXaW5kb3dHZW9tZXRyeVJlY29yZE5hbWU6IHdpZGdldCBu
YW1lOiBuYW1lOwotICh2b2lkKXhwcmludDogb2JqOwotICh2b2lkKXhmcHJpbnQ6IG9iajsKLSAo
dm9pZClkdW1wRGlyZWN0b3J5OwotIChjb25zdCBjaGFyICopdHlwZU1vZHVsZTogKGNvbnN0IGNo
YXIgKil0eXBlTmFtZTsKLSAodm9pZCl2ZXJib3NlTWVzc2FnZTogKGNvbnN0IGNoYXIgKiltZXNz
YWdlOwotICh2b2lkKXVwZGF0ZURpc3BsYXk7CgotIChpZCA8QXJndW1lbnRzPilnZXRBcmd1bWVu
dHM7Ci0gKGlkIDxTeW1ib2w+KWdldFN0YXJ0OwotIChpZCA8U3ltYm9sPilnZXRNZW1iZXI7Ci0g
KGlkIDxTeW1ib2w+KWdldEVuZDsKCi0gKGlkIDxTeW1ib2w+KWdldEluaXRpYWxpemVkOwotIChp
ZCA8U3ltYm9sPilnZXRSdW5uaW5nOwotIChpZCA8U3ltYm9sPilnZXRTdG9wcGVkOwotIChpZCA8
U3ltYm9sPilnZXRIb2xkaW5nOwotIChpZCA8U3ltYm9sPilnZXRSZWxlYXNlZDsKLSAoaWQgPFN5
bWJvbD4pZ2V0VGVybWluYXRlZDsKLSAoaWQgPFN5bWJvbD4pZ2V0Q29tcGxldGVkOwoKLSAoaWQg
PFN5bWJvbD4pZ2V0UmFuZG9taXplZDsKLSAoaWQgPFN5bWJvbD4pZ2V0U2VxdWVudGlhbDsKCi0g
KGlkIDxTeW1ib2w+KWdldENvbnRyb2xTdGF0ZVJ1bm5pbmc7Ci0gKGlkIDxTeW1ib2w+KWdldENv
bnRyb2xTdGF0ZVN0b3BwZWQ7Ci0gKGlkIDxTeW1ib2w+KWdldENvbnRyb2xTdGF0ZVN0ZXBwaW5n
OwotIChpZCA8U3ltYm9sPilnZXRDb250cm9sU3RhdGVRdWl0OwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAg
MjA1CgoKLSAoaWQgPFN5bWJvbD4pZ2V0Q29udHJvbFN0YXRlTmV4dFRpbWU7CgotIChpZCA8Wm9u
ZT4pZ2V0U2NyYXRjaFpvbmU7Ci0gKGlkIDxab25lPilnZXRHbG9iYWxab25lOwoKLSAoaWQgPE1U
MTk5MzdnZW4+KWdldFJhbmRvbUdlbmVyYXRvcjsKLSAoaWQgPFVuaWZvcm1JbnRlZ2VyRGlzdD4p
Z2V0VW5pZm9ybUludFJhbmQ7Ci0gKGlkIDxVbmlmb3JtRG91YmxlRGlzdD4pZ2V0VW5pZm9ybURi
bFJhbmQ7CgotIChpZCA8UHJvYmVMaWJyYXJ5PilnZXRQcm9iZUxpYnJhcnk7Ci0gKGlkIDxQcm9i
ZURpc3BsYXlNYW5hZ2VyPilnZXRQcm9iZURpc3BsYXlNYW5hZ2VyOwoKLSAoaWQgPEFyY2hpdmVy
PilnZXRIZGY1QXJjaGl2ZXI7Ci0gKGlkIDxBcmNoaXZlcj4pZ2V0TGlzcEFyY2hpdmVyOwotIChp
ZCA8QXJjaGl2ZXI+KWdldEhkZjVBcHBBcmNoaXZlcjsKLSAoaWQgPEFyY2hpdmVyPilnZXRMaXNw
QXBwQXJjaGl2ZXI7Ci0gKEJPT0wpZ2V0R3VpRmxhZzsKCi0gKGlkIDxTeW1ib2w+KWdldExhbmd1
YWdlQ09NOwotIChpZCA8U3ltYm9sPilnZXRMYW5ndWFnZUphdmE7Ci0gKGlkIDxTeW1ib2w+KWdl
dExhbmd1YWdlT2JqYzsKQGVuZAoKCmV4dGVybiBCT09MIHN3YXJtR1VJTW9kZTsKCkBjbGFzcyBT
d2FybUVudmlyb25tZW50OwoKZXh0ZXJuIHZvaWQgX2luaXRTd2FybV8gKGludCBhcmdjLCBjb25z
dCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYXBwTmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKnZlcnNpb24sIGNvbnN0IGNoYXIgKmJ1Z0FkZHJlc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBDbGFzcyBhcmd1bWVudHNDbGFzcywKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBhcmdwX29wdGlvbiAqb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAoKm9wdGlvbkZ1bmMpIChpbnQga2V5LCBjb25zdCBjaGFyICphcmcpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgQk9PTCBmb3JjZUJhdGNoTW9kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIEJPT0wgaW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnKTsKIyAxMiAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqZWN0YmFzZS5oIiAxCiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29s
cy5oIiAyCgpAcHJvdG9jb2wgVU5hbWUgPFN3YXJtT2JqZWN0LCBDUkVBVEFCTEU+CiMgMzEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29scy5oIgotIF9JX0NyZWF0aW5nOwoKCgorIGNy
ZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRCYXNlTmFtZTogKGNvbnN0IGNoYXIgKilhU3RyaW5n
OwoKCgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0QmFzZU5hbWVPYmplY3Q6IGFTdHJp
bmdPYmplY3Q7CgoKLSBzZXRCYXNlTmFtZTogKGNvbnN0IGNoYXIgKilhU3RyaW5nOwoKCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAg
ICAgICAgICBQYWdlICAyMDYKCgoKLSBzZXRCYXNlTmFtZU9iamVjdDogYVN0cmluZ09iamVjdDsK
Ci0gX0lfVXNpbmc7CgotIChjb25zdCBjaGFyICopZ2V0TmV3TmFtZTsKCgotIGdldE5ld05hbWVP
YmplY3Q7CgoKLSByZXNldENvdW50ZXI7CkBlbmQKCkBwcm90b2NvbCBJbkZpbGUgPFN3YXJtT2Jq
ZWN0LCBDUkVBVEFCTEU+CiMgNzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29scy5o
IgotIF9JX0NyZWF0aW5nOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldE5hbWU6IChj
b25zdCBjaGFyICopdGhlTmFtZTsKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSB3aXRoTmFt
ZTogKGNvbnN0IGNoYXIgKil0aGVOYW1lOwoKLSBfSV9Vc2luZzsKCgotIChpbnQpZ2V0V29yZDog
KGNoYXIgKilhV29yZDsKCgoKLSAoaW50KWdldExpbmU6IChjaGFyICopYUxpbmU7CgoKCgotIChp
bnQpZ2V0SW50OiAoaW50ICopYW5JbnQ7CgoKCgotIChpbnQpZ2V0VW5zaWduZWQ6ICh1bnNpZ25l
ZCAqKWFuVW5zaWduZWQ7CgoKCgotIChpbnQpZ2V0TG9uZzogKGxvbmcgKilhTG9uZzsKCgoKCi0g
KGludClnZXRVbnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25nICopYW5VbnNMb25nOwoKCgoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAg
ICAgICAgICAgIFBhZ2UgIDIwNwoKCi0gKGludClnZXREb3VibGU6IChkb3VibGUgKilhRG91Ymxl
OwoKCgoKLSAoaW50KWdldEZsb2F0OiAoZmxvYXQgKilhRmxvYXQ7CgoKCgotIChpbnQpZ2V0Q2hh
cjogKGNoYXIgKilhQ2hhcjsKCgotIChpbnQpdW5HZXRDaGFyOiAoY2hhcilhQ2hhcjsKCgotIChp
bnQpc2tpcExpbmU7CgoKCi0gKHZvaWQpZHJvcDsKQGVuZAoKQHByb3RvY29sIE91dEZpbGUgPFN3
YXJtT2JqZWN0LCBDUkVBVEFCTEU+CiMgMTQ1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2lt
dG9vbHMuaCIKLSBfSV9DcmVhdGluZzsKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRO
YW1lOiAoY29uc3QgY2hhciAqKXRoZU5hbWU7CgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUg
d2l0aE5hbWU6IChjb25zdCBjaGFyICopdGhlTmFtZTsKCi0gX0lfVXNpbmc7CgoKLSBwdXRTdHJp
bmc6IChjb25zdCBjaGFyICopYVN0cmluZzsKCgoKLSBwdXRJbnQ6IChpbnQpIGFuSW50OwoKCgot
IHB1dFVuc2lnbmVkOiAodW5zaWduZWQpYW5VbnNpZ25lZDsKCgoKLSBwdXRMb25nOiAobG9uZylh
TG9uZzsKCgoKLSBwdXRVbnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25nKWFuVW5zTG9uZzsKCgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDIwOAoKCi0gcHV0RG91YmxlOiAoZG91YmxlKWFEb3VibGU7CgoK
Ci0gcHV0RmxvYXQ6IChmbG9hdClhRmxvYXQ7CgoKCi0gcHV0Q2hhcjogKGNoYXIpYUNoYXI7CgoK
LSBwdXROZXdMaW5lOwoKCi0gcHV0VGFiOwoKCgotICh2b2lkKWRyb3A7CkBlbmQKCgpAcHJvdG9j
b2wgQXBwZW5kRmlsZSA8T3V0RmlsZSwgQ1JFQVRBQkxFPgojIDIwOCAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL3NpbXRvb2xzLmgiCi0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGU6IChpZCA8Wm9u
ZT4pYVpvbmUgc2V0TmFtZTogKGNvbnN0IGNoYXIgKil0aGVOYW1lOwoKCisgY3JlYXRlOiAoaWQg
PFpvbmU+KWFab25lIHdpdGhOYW1lOiAoY29uc3QgY2hhciAqKXRoZU5hbWU7CkBlbmQKCkBwcm90
b2NvbCBPYmplY3RMb2FkZXIgPFN3YXJtT2JqZWN0LCBDUkVBVEFCTEU+CiMgMjI2ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHMuaCIKLSBfSV9DcmVhdGluZzsKCgoKCisgbG9hZDog
YW5PYmplY3QgZnJvbTogYUZpbGVPYmplY3Q7CgoKCgorIGxvYWQ6IGFuT2JqZWN0IGZyb21GaWxl
TmFtZWQ6IChjb25zdCBjaGFyICopYUZpbGVOYW1lOwoKCgoKCisgbG9hZDogYW5PYmplY3QgZnJv
bUFwcENvbmZpZ0ZpbGVOYW1lZDogKGNvbnN0IGNoYXIgKilhRmlsZU5hbWU7CgoKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAg
ICAgICAgUGFnZSAgMjA5CgoKCisgbG9hZDogYW5PYmplY3QgZnJvbUFwcERhdGFGaWxlTmFtZWQ6
IChjb25zdCBjaGFyICopYUZpbGVOYW1lOwotIF9JX1NldHRpbmc7CgoKLSBzZXRGaWxlT2JqZWN0
OiBhRmlsZU9iamVjdDsKCgoKCi0gc2V0VGVtcGxhdGVQcm9iZU1hcDogKGlkIDxQcm9iZU1hcD4p
cHJvYmVNYXA7CgotIF9JX1VzaW5nOwoKCi0gbG9hZE9iamVjdDogYW5PYmplY3Q7CgoKCi0gdXBk
YXRlQ2FjaGU6IGV4YW1wbGVUYXJnZXQ7CkBlbmQKCgoKQHByb3RvY29sIE9iamVjdFNhdmVyIDxT
d2FybU9iamVjdCwgQ1JFQVRBQkxFPgojIDI4MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3Np
bXRvb2xzLmgiCi0gX0lfQ3JlYXRpbmc7CgoKKyBzYXZlOiBhbk9iamVjdCB0bzogYUZpbGVPYmpl
Y3Q7CgoKCgorIHNhdmU6IGFuT2JqZWN0IHRvOiBhRmlsZU9iamVjdCB3aXRoVGVtcGxhdGU6IChp
ZCA8UHJvYmVNYXA+KWFQcm9iZU1hcDsKCgoKKyBzYXZlOiBhbk9iamVjdCB0b0ZpbGVOYW1lZDog
KGNvbnN0IGNoYXIgKilhRmlsZU5hbWU7CgoKCgorIHNhdmU6IGFuT2JqZWN0IHRvRmlsZU5hbWVk
OiAoY29uc3QgY2hhciAqKWFGaWxlTmFtZQogICAgICAgICAgICAgICAgd2l0aFRlbXBsYXRlOiAo
aWQgPFByb2JlTWFwPilhUHJvYmVNYXA7CgotIF9JX1NldHRpbmc7CgoKLSBzZXRGaWxlT2JqZWN0
OiBhRmlsZU9iamVjdDsKCgoKCi0gc2V0VGVtcGxhdGVQcm9iZU1hcDogKGlkIDxQcm9iZU1hcD4p
YVByb2JlTWFwOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1h
aW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIxMAoKCi0gX0lfVXNpbmc7CgoKLSBzYXZl
T2JqZWN0OiBhbk9iamVjdDsKQGVuZAoKQHByb3RvY29sIFFTb3J0IDxTd2FybU9iamVjdCwgQ1JF
QVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCgoKKyAodm9pZClzb3J0
T2JqZWN0c0luOiBhQ29sbGVjdGlvbjsKCgoKKyAodm9pZClzb3J0T2JqZWN0c0luOiBhQ29sbGVj
dGlvbiB1c2luZzogKFNFTClhU2VsZWN0b3I7CgoKCgorICh2b2lkKXNvcnROdW1iZXJzSW46IGFD
b2xsZWN0aW9uOwoKCgoKKyAodm9pZClzb3J0TnVtYmVyc0luOiBhQ29sbGVjdGlvbgogICAgICAg
ICAgICAgICAgdXNpbmc6IChpbnQgKCopIChjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopKWNvbXBf
ZnVuOwoKCgoKKyAodm9pZClyZXZlcnNlT3JkZXJPZjogYUNvbGxlY3Rpb247CkBlbmQKCkBwcm90
b2NvbCBOU2VsZWN0IDxTd2FybU9iamVjdCwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsK
LSBfSV9Vc2luZzsKCgoKKyAodm9pZClzZWxlY3Q6IChpbnQpbiBmcm9tOiBhQ29sbGVjdGlvbiBp
bnRvOiBiQ29sbGVjdGlvbjsKQGVuZAoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAyMTEKCgoKIyAxICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHMvaW5pdFN3YXJtLmgiIDEKIyAzNzAgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29scy5oIiAyCiMgNDMwICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvc2ltdG9vbHMuaCIKQGNsYXNzIENvbnRyb2xQYW5lbDsKQGNsYXNzIFVOYW1l
OwpAY2xhc3MgSW5GaWxlOwpAY2xhc3MgT3V0RmlsZTsKQGNsYXNzIEFwcGVuZEZpbGU7CkBjbGFz
cyBPYmplY3RMb2FkZXI7CkBjbGFzcyBPYmplY3RTYXZlcjsKQGNsYXNzIFFTb3J0OwpAY2xhc3Mg
TlNlbGVjdDsKIyAxMSAibWFpbi5tIiAyCiMgMSAiUHBsT2JzZXJ2ZXJTd2FybS5oIiAxCgoKCgoK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAxCiMgNyAiUHBsT2Jz
ZXJ2ZXJTd2FybS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzZ3Vp
L0dVSVN3YXJtLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29s
c2d1aS5oIiAxCiMgNyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzZ3VpL0dVSVN3
YXJtLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2FybS5o
IiAxCgoKCgoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAxCiMg
NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm0uaCIgMgojIDEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS9Td2FybVByb2Nlc3MuaCIgMQojIDEyICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvU3dhcm1Qcm9jZXNzLmgiCiMgMSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5L1hBY3Rpdml0eS5oIiAxCiMgMTIgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS9YQWN0aXZpdHkuaCIKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIiAxCiMgMTIgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmovQ3JlYXRlLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Rl
Zm9iai9DdXN0b21pemUuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2Jq
L0N1c3RvbWl6ZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmQ2xh
c3MuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgi
CiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiIDEKIyAxMyAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5oIiAyCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMQojIDM0ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL29iamMuaCIgMQojIDM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFw
aS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAxCiMgMzYg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDIxMgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiIDEK
IyA0MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAxCiMgNDIgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL3Roci5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvZXh0
ZXJudmFyLmgiIDEKIyA0MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiIDIK
CgoKCmV4dGVybiBpbnQgX19vYmpjX3RocmVhZF9leGl0X3N0YXR1czsKIyA1OSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiCnR5cGVkZWYgdm9pZCAqIG9iamNfdGhyZWFkX3Q7
CgoKc3RydWN0IG9iamNfbXV0ZXgKewogIHZvbGF0aWxlIG9iamNfdGhyZWFkX3Qgb3duZXI7CiAg
dm9sYXRpbGUgaW50IGRlcHRoOwogIHZvaWQgKiBiYWNrZW5kOwp9Owp0eXBlZGVmIHN0cnVjdCBv
YmpjX211dGV4ICpvYmpjX211dGV4X3Q7CgoKc3RydWN0IG9iamNfY29uZGl0aW9uCnsKICB2b2lk
ICogYmFja2VuZDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19jb25kaXRpb24gKm9iamNfY29uZGl0
aW9uX3Q7CgoKb2JqY19tdXRleF90IG9iamNfbXV0ZXhfYWxsb2NhdGUodm9pZCk7CmludCBvYmpj
X211dGV4X2RlYWxsb2NhdGUob2JqY19tdXRleF90IG11dGV4KTsKaW50IG9iamNfbXV0ZXhfbG9j
ayhvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2JqY19tdXRleF91bmxvY2sob2JqY19tdXRleF90
IG11dGV4KTsKaW50IG9iamNfbXV0ZXhfdHJ5bG9jayhvYmpjX211dGV4X3QgbXV0ZXgpOwoKCm9i
amNfY29uZGl0aW9uX3Qgb2JqY19jb25kaXRpb25fYWxsb2NhdGUodm9pZCk7CmludCBvYmpjX2Nv
bmRpdGlvbl9kZWFsbG9jYXRlKG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IG9iamNf
Y29uZGl0aW9uX3dhaXQob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24sIG9iamNfbXV0ZXhfdCBt
dXRleCk7CmludCBvYmpjX2NvbmRpdGlvbl9zaWduYWwob2JqY19jb25kaXRpb25fdCBjb25kaXRp
b24pOwppbnQgb2JqY19jb25kaXRpb25fYnJvYWRjYXN0KG9iamNfY29uZGl0aW9uX3QgY29uZGl0
aW9uKTsKCgpvYmpjX3RocmVhZF90IG9iamNfdGhyZWFkX2RldGFjaChTRUwgc2VsZWN0b3IsIGlk
IG9iamVjdCwgaWQgYXJndW1lbnQpOwp2b2lkIG9iamNfdGhyZWFkX3lpZWxkKHZvaWQpOwppbnQg
b2JqY190aHJlYWRfZXhpdCh2b2lkKTsKaW50IG9iamNfdGhyZWFkX3NldF9wcmlvcml0eShpbnQg
cHJpb3JpdHkpOwppbnQgb2JqY190aHJlYWRfZ2V0X3ByaW9yaXR5KHZvaWQpOwp2b2lkICogb2Jq
Y190aHJlYWRfZ2V0X2RhdGEodm9pZCk7CmludCBvYmpjX3RocmVhZF9zZXRfZGF0YSh2b2lkICp2
YWx1ZSk7Cm9iamNfdGhyZWFkX3Qgb2JqY190aHJlYWRfaWQodm9pZCk7CiMgMTEzICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90aHIuaCIKdHlwZWRlZiB2b2lkICgqb2JqY190aHJlYWRf
Y2FsbGJhY2spKCk7Cm9iamNfdGhyZWFkX2NhbGxiYWNrIG9iamNfc2V0X3RocmVhZF9jYWxsYmFj
ayhvYmpjX3RocmVhZF9jYWxsYmFjayBmdW5jKTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIxMwoKCgoK
aW50IF9fb2JqY19pbml0X3RocmVhZF9zeXN0ZW0odm9pZCk7CmludCBfX29iamNfZmluaV90aHJl
YWRfc3lzdGVtKHZvaWQpOwoKCmludCBfX29iamNfbXV0ZXhfYWxsb2NhdGUob2JqY19tdXRleF90
IG11dGV4KTsKaW50IF9fb2JqY19tdXRleF9kZWFsbG9jYXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7
CmludCBfX29iamNfbXV0ZXhfbG9jayhvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX211
dGV4X3RyeWxvY2sob2JqY19tdXRleF90IG11dGV4KTsKaW50IF9fb2JqY19tdXRleF91bmxvY2so
b2JqY19tdXRleF90IG11dGV4KTsKCgppbnQgX19vYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZShvYmpj
X2NvbmRpdGlvbl90IGNvbmRpdGlvbik7CmludCBfX29iamNfY29uZGl0aW9uX2RlYWxsb2NhdGUo
b2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgX19vYmpjX2NvbmRpdGlvbl93YWl0KG9i
amNfY29uZGl0aW9uX3QgY29uZGl0aW9uLCBvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpj
X2NvbmRpdGlvbl9icm9hZGNhc3Qob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgX19v
YmpjX2NvbmRpdGlvbl9zaWduYWwob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwoKCm9iamNf
dGhyZWFkX3QgX19vYmpjX3RocmVhZF9kZXRhY2godm9pZCAoKmZ1bmMpKHZvaWQgKmFyZyksIHZv
aWQgKmFyZyk7CmludCBfX29iamNfdGhyZWFkX3NldF9wcmlvcml0eShpbnQgcHJpb3JpdHkpOwpp
bnQgX19vYmpjX3RocmVhZF9nZXRfcHJpb3JpdHkodm9pZCk7CnZvaWQgX19vYmpjX3RocmVhZF95
aWVsZCh2b2lkKTsKaW50IF9fb2JqY190aHJlYWRfZXhpdCh2b2lkKTsKb2JqY190aHJlYWRfdCBf
X29iamNfdGhyZWFkX2lkKHZvaWQpOwppbnQgX19vYmpjX3RocmVhZF9zZXRfZGF0YSh2b2lkICp2
YWx1ZSk7CnZvaWQgKiBfX29iamNfdGhyZWFkX2dldF9kYXRhKHZvaWQpOwojIDM3ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMSAz
CiMgMzggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKIyAxICIv
dXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9zdGRhcmcuaCIgMSAzCiMgMzkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMt
YXBpLmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvZXh0ZXJudmFyLmgi
IDEKIyA0MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDUw
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpzdHJ1Y3Qgb2JqY19t
ZXRob2RfZGVzY3JpcHRpb24KewogICAgU0VMIG5hbWU7CiAgICBjaGFyICp0eXBlczsKfTsKIyAx
MDYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCmV4dGVybiB2b2lk
IG9iamNfZXJyb3IgKGlkIG9iamVjdCwgaW50IGNvZGUsIGNvbnN0IGNoYXIqIGZtdCwgLi4uKTsK
ZXh0ZXJuIHZvaWQgb2JqY192ZXJyb3IgKGlkIG9iamVjdCwgaW50IGNvZGUsIGNvbnN0IGNoYXIq
IGZtdCwgdmFfbGlzdCBhcCk7CnR5cGVkZWYgQk9PTCAoKm9iamNfZXJyb3JfaGFuZGxlcikgKGlk
LCBpbnQgY29kZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKTsKb2JqY19lcnJvcl9oYW5k
bGVyIG9iamNfc2V0X2Vycm9yX2hhbmRsZXIgKG9iamNfZXJyb3JfaGFuZGxlciBmdW5jKTsKIyAx
NDcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCnN0cnVjdCBvYmpj
X3N0YXRpY19pbnN0YW5jZXMKewogIGNoYXIgKmNsYXNzX25hbWU7CiAgaWQgaW5zdGFuY2VzWzBd
Owp9OwojIDE2MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19zeW10YWIgewogIHVuc2lnbmVkIGxvbmcgc2VsX3JlZl9jbnQ7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAg
ICAgICAgICAgICBQYWdlICAyMTQKCgogIFNFTCByZWZzOwogIHVuc2lnbmVkIHNob3J0IGNsc19k
ZWZfY250OwoKICB1bnNpZ25lZCBzaG9ydCBjYXRfZGVmX2NudDsKCgoKICB2b2lkICpkZWZzWzFd
OwoKCgoKCn0gU3ltdGFiLCAqU3ltdGFiX3Q7CiMgMTg5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqYy9vYmpjLWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX21vZHVsZSB7CiAgdW5zaWdu
ZWQgbG9uZyB2ZXJzaW9uOwogIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICBjb25zdCBjaGFyKiBuYW1l
OwoKCgogIFN5bXRhYl90IHN5bXRhYjsKCgoKCgp9IE1vZHVsZSwgKk1vZHVsZV90OwoKCgoKCgp0
eXBlZGVmIHN0cnVjdCBvYmpjX2l2YXIqIEl2YXJfdDsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19pdmFy
X2xpc3QgewogIGludCBpdmFyX2NvdW50OwoKCgoKICBzdHJ1Y3Qgb2JqY19pdmFyIHsKICAgIGNv
bnN0IGNoYXIqIGl2YXJfbmFtZTsKCgogICAgY29uc3QgY2hhciogaXZhcl90eXBlOwoKCiAgICBp
bnQgaXZhcl9vZmZzZXQ7CgoKCiAgfSBpdmFyX2xpc3RbMV07Cgp9IEl2YXJMaXN0LCAqSXZhckxp
c3RfdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkg
ICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIxNQoKCiMgMjQwICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpzdHJ1Y3Qgb2JqY19tZXRob2QgewogIFNFTCBtZXRob2Rf
bmFtZTsKCgoKCgogIGNvbnN0IGNoYXIqIG1ldGhvZF90eXBlczsKCgogIElNUCBtZXRob2RfaW1w
OwoKfTsKCnR5cGVkZWYgc3RydWN0IG9iamNfbWV0aG9kIE1ldGhvZDsKCnR5cGVkZWYgTWV0aG9k
KiBNZXRob2RfdDsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19tZXRob2RfbGlzdCB7CiAgc3RydWN0IG9i
amNfbWV0aG9kX2xpc3QqIG1ldGhvZF9uZXh0OwoKCiAgaW50IG1ldGhvZF9jb3VudDsKCiAgc3Ry
dWN0IG9iamNfbWV0aG9kIG1ldGhvZF9saXN0WzFdOwoKfSBNZXRob2RMaXN0LCAqTWV0aG9kTGlz
dF90OwoKc3RydWN0IG9iamNfcHJvdG9jb2xfbGlzdCB7CiAgc3RydWN0IG9iamNfcHJvdG9jb2xf
bGlzdCAqbmV4dDsKICBpbnQgY291bnQ7CiAgUHJvdG9jb2wgKmxpc3RbMV07Cn07CiMgMzI0ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBv
YmpjX2NhdGVnb3J5IHsKICBjb25zdCBjaGFyKiBjYXRlZ29yeV9uYW1lOwoKCiAgY29uc3QgY2hh
ciogY2xhc3NfbmFtZTsKCiAgTWV0aG9kTGlzdF90IGluc3RhbmNlX21ldGhvZHM7CgoKCiAgTWV0
aG9kTGlzdF90IGNsYXNzX21ldGhvZHM7CgoKCiAgc3RydWN0IG9iamNfcHJvdG9jb2xfbGlzdCAq
cHJvdG9jb2xzOwoKfSBDYXRlZ29yeSwgKkNhdGVnb3J5X3Q7CgoKCgoKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBh
Z2UgIDIxNgoKCgp0eXBlZGVmIHN0cnVjdCBvYmpjX3N1cGVyIHsKICBpZCBzZWxmOwoKICBDbGFz
cyBjbGFzczsKfSBTdXBlciwgKlN1cGVyX3Q7CgpJTVAgb2JqY19tc2dfbG9va3VwX3N1cGVyKFN1
cGVyX3Qgc3VwZXIsIFNFTCBzZWwpOwoKCnJldHZhbF90IG9iamNfbXNnX3NlbmR2KGlkLCBTRUws
IGFyZ2xpc3RfdCk7CiMgMzY3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFw
aS5oIgpleHRlcm4gQ2xhc3MgKCpfb2JqY19sb29rdXBfY2xhc3MpIChjb25zdCBjaGFyICpuYW1l
KTsKCgoKCgoKCmV4dGVybiB2b2lkICgqX29iamNfbG9hZF9jYWxsYmFjaykgKENsYXNzIGNsYXNz
LCBDYXRlZ29yeSogY2F0ZWdvcnkpOwoKCgoKZXh0ZXJuIGlkICgqX29iamNfb2JqZWN0X2FsbG9j
KSAoQ2xhc3MgY2xhc3MpOwpleHRlcm4gaWQgKCpfb2JqY19vYmplY3RfY29weSkgKGlkIG9iamVj
dCk7CmV4dGVybiBpZCAoKl9vYmpjX29iamVjdF9kaXNwb3NlKSAoaWQgb2JqZWN0KTsKCgoKCgoK
CnZvaWQgKm9iamNfbWFsbG9jIChzaXplX3Qgc2l6ZSk7Cgp2b2lkICpvYmpjX2F0b21pY19tYWxs
b2MgKHNpemVfdCBzaXplKTsKCnZvaWQgKm9iamNfdmFsbG9jIChzaXplX3Qgc2l6ZSk7Cgp2b2lk
ICpvYmpjX3JlYWxsb2MgKHZvaWQgKm1lbSwgc2l6ZV90IHNpemUpOwoKdm9pZCAqb2JqY19jYWxs
b2MgKHNpemVfdCBuZWxlbSwgc2l6ZV90IHNpemUpOwoKdm9pZCBvYmpjX2ZyZWUgKHZvaWQgKm1l
bSk7CiMgNDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpleHRl
cm4gdm9pZCAqKCpfb2JqY19tYWxsb2MpIChzaXplX3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY19h
dG9taWNfbWFsbG9jKSAoc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKigqX29iamNfdmFsbG9jKSAoc2l6
ZV90KTsKZXh0ZXJuIHZvaWQgKigqX29iamNfcmVhbGxvYykgKHZvaWQgKiwgc2l6ZV90KTsKZXh0
ZXJuIHZvaWQgKigqX29iamNfY2FsbG9jKSAoc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gdm9pZCAo
Kl9vYmpjX2ZyZWUpICh2b2lkICopOwoKTWV0aG9kX3QgY2xhc3NfZ2V0X2NsYXNzX21ldGhvZCAo
TWV0YUNsYXNzIGNsYXNzLCBTRUwgYVNlbCk7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgICAgbWFpbi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMjE3CgoKTWV0
aG9kX3QgY2xhc3NfZ2V0X2luc3RhbmNlX21ldGhvZCAoQ2xhc3MgY2xhc3MsIFNFTCBhU2VsKTsK
CkNsYXNzIGNsYXNzX3Bvc2VfYXMgKENsYXNzIGltcG9zdG9yLCBDbGFzcyBzdXBlcmNsYXNzKTsK
CkNsYXNzIG9iamNfZ2V0X2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsKCkNsYXNzIG9iamNfbG9v
a3VwX2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsKCkNsYXNzIG9iamNfbmV4dF9jbGFzcyAodm9p
ZCAqKmVudW1fc3RhdGUpOwoKY29uc3QgY2hhciAqc2VsX2dldF9uYW1lIChTRUwgc2VsZWN0b3Ip
OwoKY29uc3QgY2hhciAqc2VsX2dldF90eXBlIChTRUwgc2VsZWN0b3IpOwoKU0VMIHNlbF9nZXRf
dWlkIChjb25zdCBjaGFyICpuYW1lKTsKClNFTCBzZWxfZ2V0X2FueV91aWQgKGNvbnN0IGNoYXIg
Km5hbWUpOwoKU0VMIHNlbF9nZXRfYW55X3R5cGVkX3VpZCAoY29uc3QgY2hhciAqbmFtZSk7CgpT
RUwgc2VsX2dldF90eXBlZF91aWQgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIqKTsKClNF
TCBzZWxfcmVnaXN0ZXJfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7CgpTRUwgc2VsX3JlZ2lzdGVy
X3R5cGVkX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIqdHlwZSk7CgoKQk9PTCBz
ZWxfaXNfbWFwcGVkIChTRUwgYVNlbCk7CgpleHRlcm4gaWQgY2xhc3NfY3JlYXRlX2luc3RhbmNl
IChDbGFzcyBjbGFzcyk7CgpzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgpjbGFzc19nZXRfY2xh
c3NfbmFtZSAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmlu
Zm8pICYgMHgxTCkgPT0gMHgxTCkpP2NsYXNzLT5uYW1lOigoY2xhc3M9PShDbGFzcykwKT8iTmls
IjowKTsKfQoKc3RhdGljIGlubGluZSBsb25nCmNsYXNzX2dldF9pbnN0YW5jZV9zaXplIChDbGFz
cyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9
PSAweDFMKSkgPyBjbGFzcy0+aW5zdGFuY2Vfc2l6ZSA6IDA7Cn0KCnN0YXRpYyBpbmxpbmUgTWV0
YUNsYXNzCmNsYXNzX2dldF9tZXRhX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNs
YXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkgPyBjbGFzcy0+Y2xhc3Nf
cG9pbnRlciA6IChDbGFzcykwOwp9CgpzdGF0aWMgaW5saW5lIENsYXNzCmNsYXNzX2dldF9zdXBl
cl9jbGFzcyAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmlu
Zm8pICYgMHgxTCkgPT0gMHgxTCkpID8gY2xhc3MtPnN1cGVyX2NsYXNzIDogKENsYXNzKTA7Cn0K
CnN0YXRpYyBpbmxpbmUgaW50CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAyMTgKCgpjbGFzc19nZXRfdmVy
c2lvbiAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8p
ICYgMHgxTCkgPT0gMHgxTCkpID8gY2xhc3MtPnZlcnNpb24gOiAtMTsKfQoKc3RhdGljIGlubGlu
ZSBCT09MCmNsYXNzX2lzX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYm
KCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9P
TApjbGFzc19pc19tZXRhX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYm
KCgoKGNsYXNzKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSk7Cn0KCgpzdGF0aWMgaW5saW5lIHZv
aWQKY2xhc3Nfc2V0X3ZlcnNpb24gKENsYXNzIGNsYXNzLCBsb25nIHZlcnNpb24pCnsKICBpZiAo
KChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpKQogICAgY2xhc3Mt
PnZlcnNpb24gPSB2ZXJzaW9uOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKgpjbGFzc19nZXRfZ2Nf
b2JqZWN0X3R5cGUgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgoY2xhc3Mp
LT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT5nY19vYmplY3RfdHlwZSA6ICgodm9p
ZCAqKTApOwp9CgoKZXh0ZXJuIHZvaWQgY2xhc3NfaXZhcl9zZXRfZ2NpbnZpc2libGUgKENsYXNz
IGNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogaXZhcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09M
IGdjSW52aXNpYmxlKTsKCnN0YXRpYyBpbmxpbmUgSU1QCm1ldGhvZF9nZXRfaW1wIChNZXRob2Rf
dCBtZXRob2QpCnsKICByZXR1cm4gKG1ldGhvZCAhPSAoTWV0aG9kX3QpMCkgPyBtZXRob2QtPm1l
dGhvZF9pbXAgOiAoSU1QKSAwOwp9CgpJTVAgZ2V0X2ltcCAoQ2xhc3MgY2xhc3MsIFNFTCBzZWwp
OwoKCgoKCgoKaWQgb2JqZWN0X2NvcHkgKGlkIG9iamVjdCk7CgppZCBvYmplY3RfZGlzcG9zZSAo
aWQgb2JqZWN0KTsKCnN0YXRpYyBpbmxpbmUgQ2xhc3MKb2JqZWN0X2dldF9jbGFzcyAoaWQgb2Jq
ZWN0KQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAg
ICAgICAgICAgICAgICAgICAgUGFnZSAgMjE5CgoKewogIHJldHVybiAoKG9iamVjdCAhPSAoaWQp
MCkKICAgICAgICAgID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xh
c3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICA/IG9iamVj
dC0+Y2xhc3NfcG9pbnRlcgogICAgICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIp
JiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSkKICAg
ICAgICAgICAgICAgID8gKENsYXNzKSBvYmplY3QKICAgICAgICAgICAgICAgIDogKENsYXNzKTAp
KQogICAgICAgICAgOiAoQ2xhc3MpMCk7Cn0KCnN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCm9i
amVjdF9nZXRfY2xhc3NfbmFtZSAoaWQgb2JqZWN0KQp7CiAgcmV0dXJuICgob2JqZWN0IT0oaWQp
MCkgPyAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVy
KS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkKICAgICAgICAgICAgICAgICAgICAgICAgID8gb2Jq
ZWN0LT5jbGFzc19wb2ludGVyLT5uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoQ2xh
c3MpIG9iamVjdCktPm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgOiJOaWwiKTsKfQoKc3Rh
dGljIGlubGluZSBNZXRhQ2xhc3MKb2JqZWN0X2dldF9tZXRhX2NsYXNzKGlkIG9iamVjdCkKewog
IHJldHVybiAoKG9iamVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgo
KG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyLT5jbGFzc19wb2ludGVy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYm
KCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDooQ2xhc3MpMCkpCiAgICAgICAgICA6IChDbGFzcykwKTsK
fQoKc3RhdGljIGlubGluZSBDbGFzcwpvYmplY3RfZ2V0X3N1cGVyX2NsYXNzIChpZCBvYmplY3Qp
CnsKICByZXR1cm4gKChvYmplY3QhPShpZCkwKSA/ICgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikm
JigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRlci0+c3VwZXJfY2xh
c3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIp
JiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPygoQ2xhc3MpIG9iamVjdCktPnN1cGVyX2NsYXNzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKENsYXNzKTApKQogICAgICAgICAgOiAoQ2xh
c3MpMCk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfY2xhc3MgKGlkIG9iamVjdCkK
ewogIHJldHVybiAoKChDbGFzcykgb2JqZWN0KSYmKCgoKChDbGFzcykgb2JqZWN0KS0+aW5mbykg
JiAweDFMKSA9PSAweDFMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfaW5zdGFu
Y2UoaWQgb2JqZWN0KQp7CiAgcmV0dXJuIChvYmplY3QgIT0gKGlkKTApICYmICgob2JqZWN0LT5j
bGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkg
PT0gMHgxTCkpOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKb2JqZWN0X2lzX21ldGFfY2xhc3MgKGlk
IG9iamVjdCkKewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMjIwCgoKICByZXR1cm4gKCgoQ2xhc3MpIG9i
amVjdCkmJigoKCgoQ2xhc3MpIG9iamVjdCktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpOwp9Cgpz
dHJ1Y3Qgc2FycmF5KiBvYmpjX2dldF91bmluc3RhbGxlZF9kdGFibGUgKHZvaWQpOwojIDE0ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDIKCgoKCnR5cGVkZWYg
c3RydWN0IGNsYXNzRGF0YSAqY2xhc3NEYXRhX3Q7CnR5cGVkZWYgc3RydWN0IG1ldGhvZERlZnMg
Km1ldGhvZERlZnNfdDsKCgoKCkBpbnRlcmZhY2UgQ2xhc3NfczogT2JqZWN0CnsKQHB1YmxpYwog
IENsYXNzX3MgKnN1cGVyY2xhc3M7CiAgY29uc3QgY2hhciAqbmFtZTsKICBsb25nIHZlcnNpb247
CiAgdW5zaWduZWQgbG9uZyBpbmZvOwogIGxvbmcgaW5zdGFuY2VTaXplOwogIHZvaWQgKml2YXJM
aXN0OwogIHZvaWQgKm1ldGhvZExpc3Q7CiAgc3RydWN0IHNhcnJheSAqZHRhYmxlOwp9CgoKQGVu
ZAoKCgoKZXh0ZXJuIGNsYXNzRGF0YV90IF9vYmpfZ2V0Q2xhc3NEYXRhIChDbGFzc19zICpjbGFz
cyk7CgoKCgp2b2lkIF9vYmpfaW5pdE1ldGhvZEludGVyZmFjZXMgKENsYXNzX3MgKmNsYXNzKTsK
CgoKCgoKCkBpbnRlcmZhY2UgQ3JlYXRlZENsYXNzX3M6IENsYXNzX3MKewpAcHVibGljCiAgQ2xh
c3NfcyAqZGVmaW5pbmdDbGFzczsKICBpZCBtZXRhb2JqZWN0czsKfQoKKyBjcmVhdGVCZWdpbjog
YVpvbmU7Ci0gc2V0TmFtZTogKGNvbnN0IGNoYXIgKiljbGFzc05hbWU7CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAgICAgICAgICAgICBQ
YWdlICAyMjEKCgotIHNldENsYXNzOiBhQ2xhc3M7Ci0gc2V0U3VwZXJjbGFzczogYUNsYXNzOwot
IHNldERlZmluaW5nQ2xhc3M6IGFDbGFzczsKLSBhdDogKFNFTClhU2VsIGFkZE1ldGhvZDogKElN
UClhTWV0aG9kOwotIGxpc3BJbkNyZWF0ZTogZXhwcjsKLSBoZGY1SW5DcmVhdGU6IGV4cHI7Ci0g
Y3JlYXRlRW5kOwotICh2b2lkKWhkZjVPdXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpbGlzcE91
dFNoYWxsb3c6IHN0cmVhbTsKQGVuZAoKQGludGVyZmFjZSBCZWhhdmlvclBoYXNlX3M6IENyZWF0
ZWRDbGFzc19zCnsKQHB1YmxpYwogIENsYXNzX3MgKm5leHRQaGFzZTsKICBpZCBmaWxsZXI7CiAg
aWQgbW9yZWZpbGxlcjsKfQoKLSAodm9pZClzZXROZXh0UGhhc2U6IGFCZWhhdmlvclBoYXNlOwpA
ZW5kCgoKCgoKCgpzdHJ1Y3QgY2xhc3NEYXRhIHsKICBpZCAqY2xhc3NJRDsKICBpZCBvd25lcjsK
ICBpZCB0eXBlSW1wbGVtZW50ZWQ7CiAgQmVoYXZpb3JQaGFzZV9zICppbml0aWFsUGhhc2U7CiAg
aWQgbWV0YW9iamVjdHM7Cn07CgoKCgpzdHJ1Y3QgbWV0aG9kRGVmcyB7CiAgbWV0aG9kRGVmc190
IG5leHQ7CiAgaWQgaW50ZXJmYWNlSUQ7CiAgTWV0aG9kX3QgZmlyc3RFbnRyeTsKICBpbnQgY291
bnQ7Cn07CiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgi
IDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIiAxCiMg
MTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiCiMgMSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIiAxCiMgMTQgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL3N3YXJtY29uZmlnLmgiIDEKIyAxNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9i
ai9EZWZPYmplY3QuaCIgMgoKQGNsYXNzIE9iamVjdEVudHJ5OwoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2Ug
IDIyMgoKCgpAaW50ZXJmYWNlIE9iamVjdF9zOiBPYmplY3QgPERlZmluZWRDbGFzcywgU2VyaWFs
aXphdGlvbiwgR2V0TmFtZT4KewpAcHVibGljCgoKICB1bnNpZ25lZCB6Yml0czsKICBPYmplY3RF
bnRyeSAqZm9yZWlnbkVudHJ5Owp9CiMgNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovRGVmT2JqZWN0LmgiCi0gKGNvbnN0IGNoYXIgKilnZXROYW1lOworIChCT09MKXJlc3BvbmRz
VG86IChTRUwpYVNlbDsKLSAoQk9PTClyZXNwb25kc1RvOiAoU0VMKWFTZWw7CisgKEJPT0wpY29u
Zm9ybXNUbzogKFByb3RvY29sICopYVByb3RvY29sOworIGdldENsYXNzOwotIGdldENsYXNzOwot
IGdldFpvbmU7Ci0gKHZvaWQpZHJvcEFsbG9jYXRpb25zOiAoQk9PTCljb21wb25lbnRBbGxvYzsK
LSAodm9pZClkcm9wOwotIChyZWZfdClhZGRSZWY6IChub3RpZnlfdClub3RpZnlGdW5jdGlvbiB3
aXRoQXJndW1lbnQ6ICh2b2lkICopYXJnOzsKLSAodm9pZClyZW1vdmVSZWY6IChyZWZfdClyZWZW
YWw7CisgZ2V0U3VwZXJjbGFzczsKKyAoQk9PTClpc1N1YmNsYXNzOiBhQ2xhc3M7CisgKHZvaWQp
c2V0VHlwZUltcGxlbWVudGVkOiBhVHlwZTsKKyBnZXRUeXBlSW1wbGVtZW50ZWQ7CisgZ2V0T3du
ZXI7CisgKElNUClnZXRNZXRob2RGb3I6IChTRUwpYVNlbDsKKyBnZXREZWZpbmluZ0NsYXNzOwor
IGdldE5leHRQaGFzZTsKKyBzZWxmOwotIGdldFR5cGU7Ci0gKGludCljb21wYXJlOiBhbk9iamVj
dDsKLSBwZXJmb3JtOiAoU0VMKWFTZWw7Ci0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2Jq
ZWN0MTsKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqZWN0
MjsKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqZWN0MiB3
aXRoOiBhbk9iamVjdDM7Ci0gKHZvaWQpc2V0RGlzcGxheU5hbWU6IChjb25zdCBjaGFyICopYU5h
bWU7Ci0gKGNvbnN0IGNoYXIgKilnZXREaXNwbGF5TmFtZTsKLSAoY29uc3QgY2hhciAqKWdldE9i
amVjdE5hbWU7Ci0gKGNvbnN0IGNoYXIgKilnZXRUeXBlTmFtZTsKLSAodm9pZClkZXNjcmliZTog
b3V0cHV0Q2hhclN0cmVhbTsKLSAodm9pZClkZXNjcmliZUlEOiBvdXRwdXRDaGFyU3RyZWFtOwot
ICh2b2lkKXhwcmludDsKLSAodm9pZCl4cHJpbnRpZDsKLSAodm9pZCl4ZnByaW50OwotICh2b2lk
KXhmcHJpbnRpZDsKLSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gbGlzcEluOiBleHByOwotIGhkZjVJ
bkNyZWF0ZTogZXhwcjsKLSBoZGY1SW46IGV4cHI7Ci0gKHZvaWQpbGlzcE91dFZhcnM6IHN0cmVh
bSBkZWVwOiAoQk9PTClkZWVwRmxhZzsKLSAodm9pZClsaXNwT3V0RGVlcDogc3RyZWFtOwotICh2
b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpaGRmNU91dERlZXA6IGhkZjVvYmo7
Ci0gKHZvaWQpaGRmNU91dFNoYWxsb3c6IGhkZjVvYmo7Ci0gKHZvaWQpdXBkYXRlQXJjaGl2ZXI6
IGFyY2hpdmVyOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFp
bi5taSAgICAgICAgICAgICAgICAgICAgUGFnZSAgMjIzCgoKQGVuZAoKZXh0ZXJuIGlkIGxpc3BJ
biAoaWQgYVpvbmUsIGlkIGV4cHIpOwoKZXh0ZXJuIEJPT0wgbGlzcEluQm9vbGVhbiAoaWQgaW5k
ZXgpOwpleHRlcm4gaW50IGxpc3BJbkludGVnZXIgKGlkIGluZGV4KTsKZXh0ZXJuIGNvbnN0IGNo
YXIgKmxpc3BJblN0cmluZyAoaWQgaW5kZXgpOwpleHRlcm4gaWQgbGlzcEluS2V5d29yZCAoaWQg
aW5kZXgpOwojIDEyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3Qu
aCIKZXh0ZXJuIElNUCBnZXRfaW1wIChDbGFzcyBjbGFzcywgU0VMIHNlbCk7CgoKCgpleHRlcm4g
Qk9PTCByZXNwb25kc1RvIChpZCBhbk9iamVjdCwgU0VMIGFTZWwpOwoKCgoKCmV4dGVybiBJTVAg
Z2V0TWV0aG9kRm9yIChpZCBhbk9iamVjdCwgU0VMIGFTZWwpOwojIDE1NCAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgbWFwYWxsb2Mg
Km1hcGFsbG9jX3Q7CgpzdHJ1Y3QgbWFwYWxsb2MgewogIHZvaWQgKCptYXBwaW5nRnVuY3Rpb24p
IChtYXBhbGxvY190IG1hcGFsbG9jLCBCT09MIG9iamVjdEFsbG9jYXRpb24pOwogIHZvaWQgKmFs
bG9jOwogIGlkIDxTeW1ib2w+IGRlc2NyaXB0b3I7CiAgaWQgem9uZTsKICBzaXplX3Qgc2l6ZTsK
fTsKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIgMgoj
IDI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIgpleHRlcm4g
aWQgQ3JlYXRpbmcsIFNldHRpbmcsIFVzaW5nLCBDcmVhdGluZ09ubHksIFVzaW5nT25seTsKCgoK
CkBpbnRlcmZhY2UgQ3VzdG9taXplX3M6IE9iamVjdF9zCgorIGN1c3RvbWl6ZUJlZ2luOiBhWm9u
ZTsKLSBjdXN0b21pemVFbmQ7Ci0gY3VzdG9taXplQ29weTogYVpvbmU7CisgY3VzdG9taXplQmVn
aW5FbmQ6IGFab25lOwotIF9zZXRDcmVhdGVCeV86IChDbGFzcylzdWJjbGFzcyBtZXNzYWdlOiAo
U0VMKW1lc3NhZ2VTZWxlY3RvciB0bzogYW5PYmplY3Q7Ci0gKHZvaWQpX3NldENyZWF0ZUJ5Q29w
eV87Ci0gKHZvaWQpX3NldENyZWF0ZUJ5TWVzc2FnZV86IChTRUwpbWVzc2FnZVNlbGVjdG9yIHRv
OiBhbk9iamVjdDsKLSAodm9pZClfc2V0Q3JlYXRlQnlNZXNzYWdlXzogKFNFTCltZXNzYWdlU2Vs
ZWN0b3IgdG9Db3B5OiBhbk9iamVjdDsKLSAodm9pZClfc2V0UmVjdXN0b21pemVfOiBhbk9iamVj
dDsKKyAodm9pZClzZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOwpAZW5kCiMgNTYgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiCmV4dGVybiBpbmxpbmUgQk9PTApf
b2JqX2N1c3RvbWl6ZSAoaWQgYW5PYmplY3QpCnsKICByZXR1cm4gKCgqKENsYXNzICopKGFuT2Jq
ZWN0KSktPmluZm8gJiAweDIwMCkgIT0gMDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgIG1haW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIyNAoKCn0KIyA4
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIKQGludGVyZmFj
ZSBDcmVhdGVCeV9jOiBPYmplY3Rfcwp7CkBwdWJsaWMKICBpZCBpbXBsZW1lbnRlZFR5cGU7CiAg
aWQgY3JlYXRlUmVjZWl2ZXI7CiAgU0VMIGNyZWF0ZU1lc3NhZ2U7CiAgSU1QIGNyZWF0ZU1ldGhv
ZDsKICBpZCByZWN1c3RvbWl6ZTsKfQoKLSBjcmVhdGVCZWdpbjogYVpvbmU7Ci0gY3VzdG9taXpl
QmVnaW46IGFab25lOwotICh2b2lkKW1hcEFsbG9jYXRpb25zOiAobWFwYWxsb2NfdCltYXBhbGxv
YzsKQGVuZAoKQGludGVyZmFjZSBDcmVhdGVfYnljb3B5OiBDcmVhdGVCeV9jCgotIGNyZWF0ZTog
YVpvbmU7CkBlbmQKCkBpbnRlcmZhY2UgQ3JlYXRlX2J5c2VuZDogQ3JlYXRlQnlfYwoKLSBjcmVh
dGU6IGFab25lOwpAZW5kCgpAaW50ZXJmYWNlIENyZWF0ZV9ieWJvdGg6IENyZWF0ZUJ5X2MKCi0g
Y3JlYXRlOiBhWm9uZTsKQGVuZAoKCgoKZXh0ZXJuIGlubGluZSBDbGFzcwpnZXROZXh0UGhhc2Ug
KGlkIGFDbGFzcykKewogIHJldHVybiAoQ2xhc3MpICgoQmVoYXZpb3JQaGFzZV9zICopIGFDbGFz
cyktPm5leHRQaGFzZTsKfQoKCgoKZXh0ZXJuIGlubGluZSB2b2lkCnNldE5leHRQaGFzZSAoaWQg
YW5PYmplY3QpCnsKICAqKENsYXNzICopIGFuT2JqZWN0ID0gKENsYXNzKSAoKihCZWhhdmlvclBo
YXNlX3MgKiopIGFuT2JqZWN0KS0+bmV4dFBoYXNlOwp9CiMgMTMgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmovQ3JlYXRlLmgiIDIKCgoKCkBpbnRlcmZhY2UgQ3JlYXRlRHJvcF9zOiBD
dXN0b21pemVfcwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1h
aW4ubWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIyNQoKCisgY3JlYXRlOiBhWm9uZTsKKyBj
cmVhdGVCZWdpbjogYVpvbmU7Ci0gY3JlYXRlRW5kOwpAZW5kCgpAaW50ZXJmYWNlIENyZWF0ZURy
b3A6IENyZWF0ZURyb3BfcwoKLSBjcmVhdGVFbmQ7CkBlbmQKIyAxMyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2FjdGl2aXR5L1hBY3Rpdml0eS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2FjdGl2aXR5LmgiIDEKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2
aXR5L1hBY3Rpdml0eS5oIiAyCgoKCgpAaW50ZXJmYWNlIEFjdGl2aXR5X2M6IE9iamVjdF9zIDxB
Y3Rpdml0eT4KewpAcHVibGljCiAgQWN0aXZpdHlfYyAqb3duZXJBY3Rpdml0eTsKICBpZCA8QWN0
aW9uPiB0b3BMZXZlbEFjdGlvbjsKICBpZCA8U3ltYm9sPiBzdGF0dXM7CiAgbWVtYmVyX3QgYWN0
aXZpdHlSZWZzOwoKICBBY3Rpdml0eV9jICpyZWdpc3RlcmVkT3duZXJBY3Rpdml0eTsKICBpZCBh
Y3Rpdml0eVNldDsKICBtZW1iZXJfdCBhY3Rpdml0eVNldFJlZnM7CgogIGlkIDxBY3Rpdml0eUlu
ZGV4PiBjdXJyZW50SW5kZXg7CgogIEFjdGl2aXR5X2MgKmN1cnJlbnRTdWJhY3Rpdml0eTsKICBC
T09MICgqYnJlYWtGdW5jdGlvbikgKGlkKTsKICBCT09MIGtlZXBFbXB0eUZsYWc7Cn0KCi0gKGlk
IDxTeW1ib2w+KXJ1bjsKLSAoaWQgPFN5bWJvbD4pX3J1bl87Ci0gKHZvaWQpdGVybWluYXRlOwot
ICh2b2lkKXN0b3A7Ci0gKGlkIDxTeW1ib2w+KW5leHRBY3Rpb247Ci0gKGlkIDxTeW1ib2w+KXN0
ZXBBY3Rpb247Ci0gKGlkIDxTeW1ib2w+KWdldFN0YXR1czsKLSAoaWQgPFN5bWJvbD4pZ2V0SG9s
ZFR5cGU7Ci0gZ2V0QWN0aW9uVHlwZTsKLSAoaWQgPEFjdGlvbj4pZ2V0QWN0aW9uOwotIF9nZXRT
dWJhY3Rpdml0eUFjdGlvbl87Ci0gKHZvaWQpc2V0T3duZXJBY3Rpdml0eTogKGlkIDxTd2FybUFj
dGl2aXR5PilhU3dhcm1BY3Rpdml0eTsKLSAoaWQgPEFjdGl2aXR5PilnZXRPd25lckFjdGl2aXR5
OwotIChpZCA8QWN0aXZpdHk+KWdldENvbnRyb2xsaW5nQWN0aXZpdHk7Ci0gKGlkIDxBY3Rpdml0
eT4pZ2V0VG9wTGV2ZWxBY3Rpdml0eTsKLSAoaWQgPFN3YXJtQWN0aXZpdHk+KWdldFN3YXJtQWN0
aXZpdHk7Ci0gKGlkIDxTY2hlZHVsZUFjdGl2aXR5PilnZXRTY2hlZHVsZUFjdGl2aXR5OwotIGdl
dFN1YmFjdGl2aXRpZXM7Ci0gKHZvaWQpc2V0U2VyaWFsTW9kZTogKEJPT0wpc2VyaWFsTW9kZTsK
LSAoQk9PTClnZXRTZXJpYWxNb2RlOwotIHNldEtlZXBFbXB0eUZsYWc6IChCT09MKWtlZXBFbXB0
eUZsYWc7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1p
ICAgICAgICAgICAgICAgICAgICBQYWdlICAyMjYKCgotIChpZCA8QWN0aXZpdHk+KWdldEN1cnJl
bnRTdWJhY3Rpdml0eTsKLSAodm9pZCltYXBBbGxvY2F0aW9uczogKG1hcGFsbG9jX3QpbWFwYWxs
b2M7Ci0gKHZvaWQpZHJvcDsKLSAodm9pZClkZXNjcmliZTogb3V0cHV0Q2hhclN0cmVhbTsKQGVu
ZAojIDEzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvU3dhcm1Qcm9jZXNzLmgi
IDIKCkBjbGFzcyBTd2FybUFjdGl2aXR5X2MsIFNjaGVkdWxlQWN0aXZpdHlfYzsKCkBpbnRlcmZh
Y2UgQ1N3YXJtUHJvY2VzczogQ3JlYXRlRHJvcF9zIDxTd2FybVByb2Nlc3M+CnsKQHB1YmxpYwog
IGlkIGludGVybmFsWm9uZTsKICBpZCBzeW5jVHlwZTsKICBTd2FybUFjdGl2aXR5X2MgKmFjdGl2
aXR5Owp9CgotIChzaXplX3QpZ2V0UGFnZVNpemU7Ci0gYWxsb2NJVmFyczogYUNsYXNzOwotIGNv
cHlJVmFyczogYW5PYmplY3Q7Ci0gKHZvaWQpZnJlZUlWYXJzOiBhbk9iamVjdDsKLSBhbGxvY0lW
YXJzQ29tcG9uZW50OiBhQ2xhc3M7Ci0gY29weUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKLSAo
dm9pZClmcmVlSVZhcnNDb21wb25lbnQ6IGFuT2JqZWN0OwotIGdldENvbXBvbmVudFpvbmU7Ci0g
KHZvaWQgKilhbGxvYzogKHNpemVfdClzaXplOwotICh2b2lkKWZyZWU6ICh2b2lkICopIGFCbG9j
azsKLSAodm9pZCAqKWFsbG9jQmxvY2s6IChzaXplX3Qpc2l6ZTsKLSAodm9pZClmcmVlQmxvY2s6
ICh2b2lkICopYUJsb2NrIGJsb2NrU2l6ZTogKHNpemVfdClzaXplOwotIGdldFBvcHVsYXRpb247
Ci0gKHZvaWQpIGRlc2NyaWJlRm9yRWFjaElEOiAoaWQpIG91dHB1dENoYXJTdHJlYW07Ci0gKHZv
aWQpIGRlc2NyaWJlRm9yRWFjaDogKGlkKSBvdXRwdXRDaGFyU3RyZWFtOwotIChCT09MKWdldFN0
YWNrZWRTdWJ6b25lczsKLSBnZXRSZWNsYWltUG9saWN5OwoKCisgY3JlYXRlQmVnaW46IGFab25l
OwotICh2b2lkKXNldFN5bmNocm9uaXphdGlvblR5cGU6IGFTY2hlZHVsZVR5cGU7Ci0gKHZvaWQp
c2V0SW50ZXJuYWxab25lVHlwZTogaW50ZXJuYWxab25lVHlwZTsKLSAodm9pZClzZXRJbnRlcm5h
bFRpbWVNdWx0aXBsaWVyOiAodGltZXZhbF90KWludGVybmFsVGltZU11bHRpcGxpZXI7Ci0gKHZv
aWQpc2V0UGFnZVNpemU6IChzaXplX3QpcGFnZVNpemU7Ci0gY3JlYXRlRW5kOwotICh0aW1ldmFs
X3QpZ2V0SW50ZXJuYWxUaW1lTXVsdGlwbGllcjsKLSBnZXRJbnRlcm5hbFpvbmU7Ci0gKGlkIDxT
d2FybUFjdGl2aXR5PilnZXRBY3Rpdml0eTsKLSAoaWQgPFN3YXJtQWN0aXZpdHk+KWdldFN3YXJt
QWN0aXZpdHk7Ci0gZ2V0U3luY2hyb25pemF0aW9uVHlwZTsKLSBhY3RpdmF0ZTsKLSBhY3RpdmF0
ZTogYW5BY3Rpb25UeXBlOwotIGF0OiAodGltZXZhbF90KXRWYWwgYWN0aXZhdGU6IGFuQWN0aW9u
VHlwZTsKLSBhdDogKGludCl0aW1lYmFzZSA6ICh0aW1ldmFsX3QpdFZhbCBhY3RpdmF0ZTogYW5B
Y3Rpb25UeXBlOwotIChpZCA8QWN0aXZpdHk+KWFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKLSAo
dm9pZCltYXBBbGxvY2F0aW9uczogKG1hcGFsbG9jX3QpbWFwYWxsb2M7Ci0gKHZvaWQpX3BlcmZv
cm1QbGFuXzsKQGVuZAojIDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlL1N3
YXJtLmgiIDIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgIG1haW4u
bWkgICAgICAgICAgICAgICAgICAgIFBhZ2UgIDIyNwoKCgpAaW50ZXJmYWNlIFN3YXJtOiBDU3dh
cm1Qcm9jZXNzIDxTd2FybT4Kewp9CgoKLSBidWlsZE9iamVjdHM7Ci0gYnVpbGRBY3Rpb25zOwot
IGFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKCgoKLSBnZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0
ZVByb2JlTWFwOwotIGdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxl
OwoKQGVuZAojIDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29sc2d1aS9HVUlTd2Fy
bS5oIiAyCgoKCgoKCgpAaW50ZXJmYWNlIEdVSVN3YXJtOiBTd2FybSA8R1VJU3dhcm0+CnsKICBp
ZCA8Q29udHJvbFBhbmVsPiBjb250cm9sUGFuZWw7CiAgaWQgPEFjdGlvbkNhY2hlPiBhY3Rpb25D
YWNoZTsKICBjb25zdCBjaGFyICpiYXNlV2luZG93R2VvbWV0cnlSZWNvcmROYW1lOwogIEJPT0wg
c2F2ZVNpemVGbGFnOwp9CgotIHNldFdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZTogKGNvbnN0IGNo
YXIgKil3aW5kb3dHZW9tZXRyeVJlY29yZE5hbWU7Ci0gc2V0U2F2ZVNpemVGbGFnOiAoQk9PTClz
YXZlU2l6ZUZsYWc7Ci0gc2V0V2luZG93R2VvbWV0cnlSZWNvcmROYW1lRm9yQ29tcG9uZW50OiAo
Y29uc3QgY2hhciAqKWNvbXBvbmVudE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aWRnZXQ6IGFXaWRnZXQ7Ci0gKGlkIDxBY3Rpb25DYWNoZT4pZ2V0QWN0aW9uQ2FjaGU7
Ci0gKGlkIDxDb250cm9sUGFuZWw+KWdldENvbnRyb2xQYW5lbDsKLSBidWlsZE9iamVjdHM7Ci0g
Z287Ci0gKHZvaWQpZHJvcDsKQGVuZAojIDggIlBwbE9ic2VydmVyU3dhcm0uaCIgMgojIDEgIlBw
bE1vZGVsU3dhcm0uaCIgMQoKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVj
dGJhc2UvU3dhcm0uaCIgMQojIDcgIlBwbE1vZGVsU3dhcm0uaCIgMgojIDEgIkNvdW50ZXIuaCIg
MQoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICAgbWFpbi5taSAg
ICAgICAgICAgICAgICAgICAgUGFnZSAgMjI4CgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmplY3RiYXNlL1N3YXJtT2JqZWN0LmgiIDEKIyA5ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqZWN0YmFzZS9Td2FybU9iamVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9kZWZvYmovQ3JlYXRlLmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amVjdGJhc2UvU3dhcm1PYmplY3QuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmplY3RiYXNlLmgiIDEKIyAxMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2Uv
U3dhcm1PYmplY3QuaCIgMgoKQGludGVyZmFjZSBTd2FybU9iamVjdDogQ3JlYXRlRHJvcCA8U3dh
cm1PYmplY3Q+CnsKfQoKLSBnZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwotIGdl
dFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwotIGdldFByb2JlRm9y
TWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZTsKLSAodm9pZClldmVudE9jY3VycmVkT246
IGFuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgdmlhOiBhUHJvYmUKICAgICAgICAgIHdpdGhQ
cm9iZVR5cGU6IChjb25zdCBjaGFyICopYVByb2JlVHlwZQogICAgICAgICAgICAgICAgICAgICBv
bjogKGNvbnN0IGNoYXIgKilwcm9iZWRFbGVtZW50CiAgICAgICAgICAgICAgICAgb2ZUeXBlOiAo
Y2hhcilkYXRhVHlwZQogICAgICAgICAgICAgICB3aXRoRGF0YTogKHZvaWQgKilkYXRhOwpAZW5k
CiMgNyAiQ291bnRlci5oIiAyCgoKCkBpbnRlcmZhY2UgQ291bnRlcjogU3dhcm1PYmplY3QKewog
IGludCB2YWx1ZTsKICBpbnQgaW5jcjsKfQoKLSBzdGVwOwotIHNldEluY3I6IChpbnQpIG47Ci0g
cHJpbnQ7CgpAZW5kCiMgOCAiUHBsTW9kZWxTd2FybS5oIiAyCiMgMSAiUGVyc29uLmgiIDEKIyA5
ICJQZXJzb24uaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2Fy
bU9iamVjdC5oIiAxCiMgMTAgIlBlcnNvbi5oIiAyCgoKdHlwZWRlZiBlbnVtIHsKICBudWxsID0g
MCwKICBoZWxsbyA9IDEsCn0gdG9waWNfdHlwZTsKCgoKCkBpbnRlcmZhY2UgUGVyc29uOiBTd2Fy
bU9iamVjdAp7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWlu
Lm1pICAgICAgICAgICAgICAgICAgICBQYWdlICAyMjkKCgogIGlkIHdvcmxkOwogIGZsb2F0IHRv
cGljc1syXTsKICBpbnQgdmFsdWU7CiAgaWQgbmFtZTsKfQoKCi0gc3RlcDsKCgotIHNldFdvcmxk
OiBsOwoKCi0gc2V0UGVyc29uOiBuIFRvcGljX2FycmF5OiAoZmxvYXQgKil0OwoKCi0gKGNvbnN0
IGNoYXIgKilnZXROYW1lOwoKCi0gcHJpbnQ7CgoKLSBzcGVhazogKHRvcGljX3R5cGUpIHRvcGlj
IFRvUGVyc29uOiAoaWQpdGFyZ2V0OwoKCi0gbG9vazsKCkBlbmQKIyA5ICJQcGxNb2RlbFN3YXJt
LmgiIDIKCkBpbnRlcmZhY2UgUHBsTW9kZWxTd2FybTogU3dhcm0KewoKICBpbnQgaW5jcmVtZW50
OwoKCgogIGludCBudW1QcGw7CgogIGlkIHBwbExpc3Q7CgogIGlkIG1vZGVsQWN0aW9uczsKICBp
ZCBtb2RlbFNjaGVkdWxlOwoKCiAgQ291bnRlciAqY291bnRlcjsKfQoKCi0gKENvdW50ZXIgKiln
ZXRDb3VudGVyOwoKKyBjcmVhdGVCZWdpbjogYVpvbmU7Ci0gY3JlYXRlRW5kOwotIGJ1aWxkT2Jq
ZWN0czsKLSBidWlsZEFjdGlvbnM7Ci0gYWN0aXZhdGVJbjogKGlkKSBzd2FybUNvbnRleHQ7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgICBtYWluLm1pICAgICAgICAg
ICAgICAgICAgICBQYWdlICAyMzAKCgoKQGVuZAojIDkgIlBwbE9ic2VydmVyU3dhcm0uaCIgMgoK
CkBpbnRlcmZhY2UgUHBsT2JzZXJ2ZXJTd2FybTogR1VJU3dhcm0KewogIGludCBkaXNwbGF5RnJl
cXVlbmN5OwoKICBpZCBkaXNwbGF5QWN0aW9uczsKICBpZCBkaXNwbGF5U2NoZWR1bGU7CgoKICBQ
cGxNb2RlbFN3YXJtKiBwcGxNb2RlbFN3YXJtOwoKICBDb3VudGVyKiBvYnNlcnZlZENvdW50ZXI7
Cn0KCisgY3JlYXRlQmVnaW46IGFab25lOwotIGNyZWF0ZUVuZDsKLSBidWlsZE9iamVjdHM7Ci0g
YnVpbGRBY3Rpb25zOwotIGFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKCkBlbmQKIyAxMiAibWFp
bi5tIiAyCgppbnQKbWFpbiAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQp7CiAgUHBsT2Jz
ZXJ2ZXJTd2FybSAqb2JzZXJ2ZXJTd2FybTsKCiAgX2luaXRTd2FybV8gKGFyZ2MsIGFyZ3YsICJo
ZWxsby13b3JsZCIsICIyLjEiLCAiYnVnLXN3YXJtQHN3YXJtLm9yZyIsIChDbGFzcykwLCAoKHZv
aWQgKikwKSwgKCh2b2lkICopMCksIChCT09MKTAsIChCT09MKTApOwoKICBvYnNlcnZlclN3YXJt
ID0gW1BwbE9ic2VydmVyU3dhcm0gY3JlYXRlOiBfb2JqX2dsb2JhbFpvbmVdOwogIFtvYnNlcnZl
clN3YXJtIGJ1aWxkT2JqZWN0c107CiAgW29ic2VydmVyU3dhcm0gYnVpbGRBY3Rpb25zXTsKICBb
b2JzZXJ2ZXJTd2FybSBhY3RpdmF0ZUluOiAoaWQpMF07CiAgW29ic2VydmVyU3dhcm0gZ29dOwoK
ICByZXR1cm4gMDsKfQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgIDEKCgojIDkg
IlBlcnNvbi5tIgojIDEgIlBlcnNvbi5oIiAxCiMgOSAiUGVyc29uLmgiCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm1PYmplY3QuaCIgMQojIDkgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlL1N3YXJtT2JqZWN0LmgiCiMgMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai9DcmVhdGUuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9k
ZWZvYmovQ3VzdG9taXplLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9i
ai9DdXN0b21pemUuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNs
YXNzLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5o
IgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09iamVjdC5oIiAxCiMgMzAgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09iamVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDM0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy9vYmpjLmgiCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0NyAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMK
dHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDE5OSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgc2l6ZV90OwojIDI4NyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3
Y2hhcl90OwojIDM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDIKCgoK
CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBCT09MOwojIDUxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy9vYmpjLmgiCnR5cGVkZWYgY29uc3Qgc3RydWN0IG9iamNfc2VsZWN0b3IKewog
IHZvaWQgKnNlbF9pZDsKICBjb25zdCBjaGFyICpzZWxfdHlwZXM7Cn0gKlNFTDsKCmlubGluZSBz
dGF0aWMgQk9PTApzZWxfZXEgKFNFTCBzMSwgU0VMIHMyKQp7CiAgaWYgKHMxID09IDAgfHwgczIg
PT0gMCkKICAgIHJldHVybiBzMSA9PSBzMjsKICBlbHNlCiAgICByZXR1cm4gczEtPnNlbF9pZCA9
PSBzMi0+c2VsX2lkOwp9CgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgewogIHN0cnVj
dCBvYmpjX2NsYXNzKiBjbGFzc19wb2ludGVyOwp9ICppZDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAg
ICAyCgoKCgoKdHlwZWRlZiBpZCAoKklNUCkoaWQsIFNFTCwgLi4uKTsKCgoKCgoKdHlwZWRlZiBj
aGFyICpTVFI7CiMgOTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIKdHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19jbGFzcyAqTWV0YUNsYXNzOwp0eXBlZGVmIHN0cnVjdCBvYmpjX2Ns
YXNzICpDbGFzczsKc3RydWN0IG9iamNfY2xhc3MgewogIE1ldGFDbGFzcyBjbGFzc19wb2ludGVy
OwoKICBzdHJ1Y3Qgb2JqY19jbGFzcyogc3VwZXJfY2xhc3M7CgoKICBjb25zdCBjaGFyKiBuYW1l
OwogIGxvbmcgdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIGluZm87CgogIGxvbmcgaW5zdGFuY2Vf
c2l6ZTsKCgoKICBzdHJ1Y3Qgb2JqY19pdmFyX2xpc3QqIGl2YXJzOwoKCgoKCgogIHN0cnVjdCBv
YmpjX21ldGhvZF9saXN0KiBtZXRob2RzOwoKCiAgc3RydWN0IHNhcnJheSAqIGR0YWJsZTsKCiAg
c3RydWN0IG9iamNfY2xhc3MqIHN1YmNsYXNzX2xpc3Q7CiAgc3RydWN0IG9iamNfY2xhc3MqIHNp
YmxpbmdfY2xhc3M7CgogIHN0cnVjdCBvYmpjX3Byb3RvY29sX2xpc3QgKnByb3RvY29sczsKICB2
b2lkKiBnY19vYmplY3RfdHlwZTsKfTsKIyAxNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL29iamMuaCIKQGNsYXNzIFByb3RvY29sOwoKCnR5cGVkZWYgdm9pZCogcmV0dmFsX3Q7CnR5
cGVkZWYgdm9pZCgqYXBwbHlfdCkodm9pZCk7CnR5cGVkZWYgdW5pb24gewogIGNoYXIgKmFyZ19w
dHI7CiAgY2hhciBhcmdfcmVnc1tzaXplb2YgKGNoYXIqKV07Cn0gKmFyZ2xpc3RfdDsKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAg
ICAgICAgIFBhZ2UgICAgMwoKCgoKSU1QIG9iamNfbXNnX2xvb2t1cCAoaWQgcmVjZWl2ZXIsIFNF
TCBvcCk7CiMgMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09iamVjdC5oIiAyCiMg
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIgMQojIDMwICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIgojIDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDMxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvaGFzaC5oIiAxCiMgMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2gu
aCIKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL2hhc2guaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIg
MQojIDMzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDIKIyAxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9leHRlcm52YXIuaCIgMQojIDM0ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjgzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiMgMjg0ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MiAzCiMgMzExICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9n
bnUvc3R1YnMuaCIgMSAzCiMgMzEyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCiMgMjcg
Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoj
IDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2
b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lk
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUg
KHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3NyYywgc2l6ZV90IF9fbikKICAgICAgICAg
ICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAo
dm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgIDQK
CgoKCmV4dGVybiBpbnQgbWVtY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAq
X19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCmV4dGVybiB2b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXpl
X3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0
ZXJuIHZvaWQgKnJhd21lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2b2lkICptZW1yY2hyIChfX2NvbnN0IHZvaWQg
Kl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKCmV4dGVybiBjaGFyICpzdHJjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k
ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVy
biBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4
dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21wIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJuY21wIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LCBzaXplX3QgX19uKSA7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAy
OCAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1
Y3QKewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgICA1CgoKCiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xv
Y2FsZXNbMTNdOwoKCiAgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CiAgY29u
c3QgaW50ICpfX2N0eXBlX3RvbG93ZXI7CiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBwZXI7Cn0g
Kl9fbG9jYWxlX3Q7CiMgMTA5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCmV4dGVybiBp
bnQgX19zdHJjb2xsX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBf
X2xvY2FsZV90IF9fbCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
ZXh0ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9f
c3JjLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9f
bCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBjaGFyICpfX3MpIF9fYXR0cmli
dXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKCmV4dGVybiBjaGFyICpzdHJuZHVwIChfX2NvbnN0
IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKIyAxNTUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gY2hh
ciAqc3RyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBf
X2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNocm51
bCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj
aGFyICpfX3JlamVjdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoK
CmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpf
X2FjY2VwdCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGNoYXIgKnN0cnBicmsgKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAq
c3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAg
UGFnZSAgICA2CgoKCmV4dGVybiBjaGFyICpzdHJjYXNlc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5
c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBf
X3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgICAgICAgICA7CgoKCmV4
dGVybiBjaGFyICpfX3N0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgOwoKZXh0ZXJuIGNo
YXIgKnN0cnRva19yIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19z
YXZlX3B0cikgOwoKCgoKCgpleHRlcm4gdm9pZCAqbWVtbWVtIChfX2NvbnN0IHZvaWQgKl9faGF5
c3RhY2ssIHNpemVfdCBfX2hheXN0YWNrbGVuLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVkbGVsZW4pCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19y
ZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAq
X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9f
cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChf
X2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4g
c2l6ZV90IHN0cm5sZW4gKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIg
KnN0cmVycm9yIChpbnQgX19lcnJudW0pIDsKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGlu
dCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgOwoKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgICA3CgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9f
bikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAqX19k
ZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZv
aWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgpleHRlcm4gY2hhciAqaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVy
biBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBp
bnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCl9fZXh0ZW5z
aW9uX18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gaW50IF9fc3RyY2FzZWNtcF9sIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7Cgpl
eHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBfX2xvY2Fs
ZV90IF9fbG9jKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgICA4CgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0pIDsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2NtcCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcpIDsKCgpleHRl
cm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpCiAgICAgICAgICAgIDsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAg
ICAgICAgICAgOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiBjaGFyICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0
IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBjaGFyICpzdHJmcnkgKGNoYXIgKl9fc3RyaW5n
KSA7CgoKZXh0ZXJuIHZvaWQgKm1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgOwoKCgoK
CgpleHRlcm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgOwojIDM1
NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
LmgiIDEgMwojIDM1NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiMgNTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9l
bmRpYW4uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9p
bmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvZW5kaWFu
LmgiIDIgMwojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAg
ICA5CgoKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7
CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3Vf
bG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9x
dWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ5
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4
X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0
IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5
cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMy
X3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90
OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90
OwoKdHlwZWRlZiBfX3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2
X3Q7CnR5cGVkZWYgX191X2ludCBfX3VpZF90Owp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsKdHlw
ZWRlZiBfX3VfbG9uZyBfX2lub190Owp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CnR5cGVkZWYg
X191X2ludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsKdHlwZWRlZiBfX3F1
YWRfdCBfX2xvZmZfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlwZWRlZiBpbnQgX19zc2l6ZV90
Owp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19ybGltNjRf
dDsKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IF9f
dmFsWzJdOwogIH0gX19mc2lkX3Q7CgoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0eXBlZGVmIGNo
YXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVk
ZWYgbG9uZyBpbnQgX19zd2Jsa190OwoKdHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDEwCgoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYg
aW50IF9fdGltZXJfdDsKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IGludCBfX2lwY19waWRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVf
dDsKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBfX3F1YWRfdCBfX2Js
a2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191X3F1
YWRfdCBfX2ZzYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNmaWxjbnRfdDsKdHlw
ZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKCnR5cGVkZWYgX191X3F1YWRfdCBfX2lu
bzY0X3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBfX29mZjY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBf
X3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190X3VzY2FsYXJfdDsKCgp0
eXBlZGVmIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xlbl90
OwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMSAzCiMgMjMgIi91
c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
c2NoZWQuaCIgMSAzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBl
cnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTEKCgojIDY4ICIvdXNyL2luY2x1ZGUv
Yml0cy9zY2hlZC5oIiAzCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAgaW50IF9fc2NoZWRf
cHJpb3JpdHk7CiAgfTsKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIg
MwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQgX19zdGF0dXM7CiAgaW50
IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3Qg
Kl9wdGhyZWFkX2Rlc2NyOwoKCgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9hdHRyX3MKewog
IGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVk
X3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7
CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19z
dGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fY19sb2NrOwogIF9wdGhy
ZWFkX2Rlc2NyIF9fY193YWl0aW5nOwp9IHB0aHJlYWRfY29uZF90OwoKCgp0eXBlZGVmIHN0cnVj
dAp7CiAgaW50IF9fZHVtbXk7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKCnR5cGVkZWYgdW5zaWdu
ZWQgaW50IHB0aHJlYWRfa2V5X3Q7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTIKCgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJl
YWRfZGVzY3IgX19tX293bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFz
dGxvY2sgX19tX2xvY2s7Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAg
aW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0
aHJlYWRfb25jZV90OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0
cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBf
cHRocmVhZF9kZXNjciBfX3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2Fp
dGluZzsKICBfcHRocmVhZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2lu
ZDsKICBpbnQgX19yd19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19sb2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2Nr
YXR0cl90OwoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5
cGVkZWYgc3RydWN0IHsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGlu
dCBfX2JhX3JlcXVpcmVkOwogIGludCBfX2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19i
YV93YWl0aW5nOwp9IHB0aHJlYWRfYmFycmllcl90OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDEzCgoK
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX2JhcnJpZXJhdHRy
X3Q7CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNy
L2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAyIDMKIyAyMTcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19p
bmxpbmUgdm9pZCAqX19tZW1wY3B5X3NtYWxsICh2b2lkICosIGNoYXIsIGNoYXIsIGNoYXIsIGNo
YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdWludDE2X3QsIF9f
dWludDE2X3QsIF9fdWludDMyX3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBfX2lubGluZSB2b2lkICoKX19tZW1wY3B5
X3NtYWxsICh2b2lkICpfX2Rlc3QxLAogICAgICAgICAgICAgICAgIGNoYXIgX19zcmMwXzEsIGNo
YXIgX19zcmMyXzEsIGNoYXIgX19zcmM0XzEsIGNoYXIgX19zcmM2XzEsCiAgICAgICAgICAgICAg
ICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAg
ICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAg
ICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsK
ICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgICB1bnNpZ25l
ZCBjaGFyIF9fYzsKICB9ICpfX3UgPSBfX2Rlc3QxOwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkg
X19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X19jID0gX19zcmMwXzE7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsK
ICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4
dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAg
ICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X19jID0gX19zcmMyXzE7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNDoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOwogICAgICBicmVhazsKICAgIGNhc2UgNToKICAgICAgX191LT5fX3Vp
ID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fYyA9IF9fc3JjNF8xOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMTQKCgog
ICAgY2FzZSA2OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsK
ICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIGJyZWFr
OwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRf
MjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9f
dS0+X19jID0gX19zcmM2XzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMw
XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiAodm9pZCAqKSBfX3U7Cn0KIyAz
NzEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gdm9pZCAqX19yYXdtZW1j
aHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYyk7CiMgMzk1ICIvdXNyL2luY2x1ZGUvYml0cy9z
dHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RyY3B5X3NtYWxsIChjaGFyICos
IF9fdWludDE2X3QsIF9fdWludDE2X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIGNo
YXIgKgpfX3N0cmNweV9zbWFsbCAoY2hhciAqX19kZXN0LAogICAgICAgICAgICAgICAgX191aW50
MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAgICAgIF9fdWlu
dDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICBzaXpl
X3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICBfX3VpbnQzMl90IF9fdWk7CiAgICBfX3VpbnQx
Nl90IF9fdXNpOwogICAgdW5zaWduZWQgY2hhciBfX3VjOwogIH0gKl9fdSA9ICh2b2lkICopIF9f
ZGVzdDsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2FzZSAx
OgogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAg
X191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgX191
LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBf
X3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDQ6
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBicmVhazsKICAgIGNhc2UgNToKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICAxNQoKCiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0g
J1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80
OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191
LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5f
X3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSAr
IDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u
X18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVh
azsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRf
NDsKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDU1NCAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cGNweV9zbWFs
bCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fdWludDMyX3QsIF9fdWludDMyX3QsIHNpemVfdCk7CmV4dGVybiBf
X2lubGluZSBjaGFyICoKX19zdHBjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKICAgICAgICAgICAg
ICAgIF9fdWludDE2X3QgX19zcmMwXzIsIF9fdWludDE2X3QgX19zcmM0XzIsCiAgICAgICAgICAg
ICAgICBfX3VpbnQzMl90IF9fc3JjMF80LCBfX3VpbnQzMl90IF9fc3JjNF80LAogICAgICAgICAg
ICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgdW5zaWduZWQgaW50IF9fdWk7
CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAg
ICBjaGFyIF9fYzsKICB9ICpfX3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWdu
ZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1ww
JzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsK
ICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFr
OwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwog
ICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAg
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDMpOwoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDE2CgoKICAgICAgYnJlYWs7CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3Jj
MF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAg
X191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191
aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0
KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9f
ICgodm9pZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+
X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3Ug
KyA0KTsKICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJl
YWs7CiAgICBjYXNlIDg6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBf
X2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VpID0gX19zcmM0
XzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDMpOwogICAgICBi
cmVhazsKICAgIH0KICByZXR1cm4gJl9fdS0+X19jOwp9CiMgODczICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0
cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIg
c2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9f
c1tfX3Jlc3VsdF0gIT0gX19yZWplY3QpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fcmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzIgKF9f
Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdp
c3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcg
JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJu
IF9faW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9f
cmVqZWN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWpl
Y3QyLCBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2Mz
IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAg
ICAgICAgICAgIGNoYXIgX19yZWplY3QzKQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDE3CgoKewogIHJl
Z2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1ww
JyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRd
ICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MykKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTI4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcy
LmgiIDMKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MxIChf
X2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jl
c3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jl
c3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJz
cG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhciBfX2FjY2VwdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6
ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIg
X19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyKQog
ICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXpl
X3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2Nl
cHQzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBf
X2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKICAgICAgICAgfHwgX19zW19f
cmVzdWx0XSA9PSBfX2FjY2VwdDMpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQojIDk4MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBj
aGFyICpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBf
X2lubGluZSBjaGFyICoKX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj
ZXB0MSwgaW50IF9fYWNjZXB0MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0g
X19hY2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3Mg
PT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4g
X19pbmxpbmUgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNj
ZXB0MSwKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1p
ICAgICAgICAgICAgICAgICAgIFBhZ2UgICAxOAoKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5saW5l
IGNoYXIgKgpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBp
bnQgX19hY2NlcHQyLAogICAgICAgICAgICAgIGludCBfX2FjY2VwdDMpCnsKCiAgd2hpbGUgKCpf
X3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MgogICAg
ICAgICAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19zOwogIHJldHVybiAqX19zID09ICdc
MCcgPyAoKHZvaWQgKikwKSA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQojIDEwMjYgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90CnN0cm5sZW4g
KF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX21heGxlbikKewogIF9fY29uc3QgY2hh
ciAqX19lbmQgPSAoX19jb25zdCBjaGFyICopIG1lbWNociAoX19zdHJpbmcsICdcMCcsIF9fbWF4
bGVuKTsKICByZXR1cm4gX19lbmQgPyAoc2l6ZV90KSAoX19lbmQgLSBfX3N0cmluZykgOiBfX21h
eGxlbjsKfQojIDEwNDUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19p
bmxpbmUgY2hhciAqX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBjaGFyICoq
X19uZXh0cCk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19z
LCBjaGFyIF9fc2VwLCBjaGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChf
X3MgPT0gKCh2b2lkICopMCkpCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9fcyA9PSBf
X3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09ICdcMCcpCiAgICBfX3Jlc3VsdCA9ICgodm9p
ZCAqKTApOwogIGVsc2UKICAgIHsKICAgICAgX19yZXN1bHQgPSBfX3M7CiAgICAgIHdoaWxlICgq
X19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX3NlcCkKICAgICAgICArK19fczsKICAgICAgaWYgKCpf
X3MgPT0gJ1wwJykKICAgICAgICAqX19uZXh0cCA9IF9fczsKICAgICAgZWxzZQogICAgICAgIHsK
ICAgICAgICAgICpfX3MgPSAnXDAnOwogICAgICAgICAgKl9fbmV4dHAgPSBfX3MgKyAxOwogICAg
ICAgIH0KICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KIyAxMDk1ICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoq
X19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8xYyAo
Y2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g
Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgo
dm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QpCiAgICAqKCpfX3MpKysgPSAn
XDAnOwogIGVsc2UKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVy
c29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAxOQoKCiAgICBpZiAoKCpfX3MgPSAoX19l
eHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoX19yZWplY3Qp
ID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IHN0
cmNociAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSAhPSAoKHZvaWQgKikwKSkKICAgICAgKigqX19z
KSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwogIHJldHVybiBf
X3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Ryc2VwXzJjIChjaGFyICoqX19z
LCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgY2hhciAq
Cl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIp
CnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgo
dm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcmV0dmFs
ID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWplY3QyKQogICAgKigqX19zKSsrID0g
J1wwJzsKICBlbHNlCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsK
ICAgICAgd2hpbGUgKCpfX2NwICE9ICdcMCcgJiYgKl9fY3AgIT0gX19yZWplY3QxICYmICpfX2Nw
ICE9IF9fcmVqZWN0MikKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQog
ICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1ww
JzsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9
CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfM2Mg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGluZSBj
aGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVq
ZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7
CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICpfX3MgPSAoKHZvaWQg
KikwKTsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0gX19yZWpl
Y3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysgPSAnXDAn
OwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAg
ICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0g
X19yZWplY3QyCiAgICAgICAgICAgICAmJiAqX19jcCAhPSBfX3JlamVjdDMpCiAgICAgICAgKytf
X2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKICAgICAgICB7CiAgICAgICAgICAqX19zID0g
X19jcDsKICAgICAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICAgICAgfQogICAgICBlbHNlCiAg
ICAgICAgKl9fcyA9ICgodm9pZCAqKTApOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDIwCgoKICAgIH0K
ICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF9nIChj
aGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7CiAgcmVn
aXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikw
KSkKICAgIHJldHVybiAoKHZvaWQgKikwKTsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fICh7
IGNoYXIgX19hMCwgX19hMSwgX19hMjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKF9fcmVqZWN0KSArIDEpIC0gKHNpemVfdCkoY29u
c3Qgdm9pZCAqKShfX3JlamVjdCkgPT0gMSkgPyAoKF9fYTAgPSAoKF9fY29uc3QgY2hhciAqKSAo
X19yZWplY3QpKVswXSwgX19hMCA9PSAnXDAnKSA/ICgodm9pZCkgKF9fcmV0dmFsKSwgKCh2b2lk
ICopMCkpIDogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbMV0sIF9fYTEg
PT0gJ1wwJykgPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fYTApICYm
IChfX2EwKSA9PSAnXDAnID8gKGNoYXIgKikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX2EwKSA6
IHN0cmNociAoX19yZXR2YWwsIF9fYTApKSkgOiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAo
X19yZWplY3QpKVsyXSwgX19hMiA9PSAnXDAnKSA/IF9fc3RycGJya19jMiAoX19yZXR2YWwsIF9f
YTAsIF9fYTEpIDogKCgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzNdID09ICdcMCcgPyBf
X3N0cnBicmtfYzMgKF9fcmV0dmFsLCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKF9fcmV0
dmFsLCBfX3JlamVjdCkpKSkpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSk7IH0pKSAh
PSAoKHZvaWQgKikwKSkKICAgICooKl9fcykrKyA9ICdcMCc7CiAgcmV0dXJuIF9fcmV0dmFsOwp9
CiMgMTE4OCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoK
CgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIg
MiAzCiMgNTI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKm1hbGxvYyAo
c2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lk
ICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKIyAxMTg5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDIgMwoKCgoKZXh0ZXJuIGNoYXIgKl9fc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fc3Ry
aW5nKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDEyMTIgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwpleHRlcm4gY2hhciAqX19zdHJuZHVwIChfX2NvbnN0IGNoYXIgKl9f
c3RyaW5nLCBzaXplX3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKIyAzNjAgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCiMgMzUgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgojIDQzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqYy9oYXNoLmgiCnR5cGVkZWYgc3RydWN0IGNhY2hlX25vZGUKewogIHN0cnVjdCBjYWNo
ZV9ub2RlICpuZXh0OwoKICBjb25zdCB2b2lkICprZXk7CgoKCiAgdm9pZCAqdmFsdWU7Cn0gKm5v
ZGVfcHRyOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24u
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDIxCgoKIyA2NCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvaGFzaC5oIgp0eXBlZGVmIHVuc2lnbmVkIGludCAoKmhhc2hfZnVuY190eXBl
KSh2b2lkICosIGNvbnN0IHZvaWQgKik7CiMgNzMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL2hhc2guaCIKdHlwZWRlZiBpbnQgKCpjb21wYXJlX2Z1bmNfdHlwZSkoY29uc3Qgdm9pZCAq
LCBjb25zdCB2b2lkICopOwojIDgyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNo
LmgiCnR5cGVkZWYgc3RydWN0CnsKCiAgbm9kZV9wdHIgKm5vZGVfdGFibGU7CgoKICB1bnNpZ25l
ZCBpbnQgc2l6ZTsKCgogIHVuc2lnbmVkIGludCB1c2VkOwogIHVuc2lnbmVkIGludCBtYXNrOwoK
CgogIHVuc2lnbmVkIGludCBsYXN0X2J1Y2tldDsKCgoKICBoYXNoX2Z1bmNfdHlwZSBoYXNoX2Z1
bmM7CgogIGNvbXBhcmVfZnVuY190eXBlIGNvbXBhcmVfZnVuYzsKfSBjYWNoZV90OwoKdHlwZWRl
ZiBjYWNoZV90ICpjYWNoZV9wdHI7CgoKCmV4dGVybiBjYWNoZV9wdHIgbW9kdWxlX2hhc2hfdGFi
bGUsIGNsYXNzX2hhc2hfdGFibGU7CgoKCmNhY2hlX3B0ciBoYXNoX25ldyAodW5zaWduZWQgaW50
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jX3R5cGUgaGFzaF9mdW5jLAogICAg
ICAgICAgICAgICAgICAgIGNvbXBhcmVfZnVuY190eXBlIGNvbXBhcmVfZnVuYyk7CgoKCnZvaWQg
aGFzaF9kZWxldGUgKGNhY2hlX3B0ciBjYWNoZSk7CgoKCgoKCnZvaWQgaGFzaF9hZGQgKGNhY2hl
X3B0ciAqY2FjaGVwLCBjb25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVlKTsKCgoKCnZvaWQgaGFz
aF9yZW1vdmUgKGNhY2hlX3B0ciBjYWNoZSwgY29uc3Qgdm9pZCAqa2V5KTsKIyAxNDIgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyMgoK
Cm5vZGVfcHRyIGhhc2hfbmV4dCAoY2FjaGVfcHRyIGNhY2hlLCBub2RlX3B0ciBub2RlKTsKCgoK
dm9pZCAqaGFzaF92YWx1ZV9mb3Jfa2V5IChjYWNoZV9wdHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtl
eSk7CgoKCkJPT0wgaGFzaF9pc19rZXlfaW5faGFzaCAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2
b2lkICprZXkpOwojIDE2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgpz
dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludApoYXNoX3B0ciAoY2FjaGVfcHRyIGNhY2hlLCBjb25z
dCB2b2lkICprZXkpCnsKICByZXR1cm4gKChzaXplX3Qpa2V5IC8gc2l6ZW9mICh2b2lkICopKSAm
IGNhY2hlLT5tYXNrOwp9CgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKaGFzaF9zdHJp
bmcgKGNhY2hlX3B0ciBjYWNoZSwgY29uc3Qgdm9pZCAqa2V5KQp7CiAgdW5zaWduZWQgaW50IHJl
dCA9IDA7CiAgdW5zaWduZWQgaW50IGN0ciA9IDA7CgoKICB3aGlsZSAoKihjaGFyKilrZXkpIHsK
ICAgIHJldCBePSAqKGNoYXIqKWtleSsrIDw8IGN0cjsKICAgIGN0ciA9IChjdHIgKyAxKSAlIHNp
emVvZiAodm9pZCAqKTsKICB9CgogIHJldHVybiByZXQgJiBjYWNoZS0+bWFzazsKfQoKCgpzdGF0
aWMgaW5saW5lIGludApjb21wYXJlX3B0cnMgKGNvbnN0IHZvaWQgKmsxLCBjb25zdCB2b2lkICpr
MikKewogIHJldHVybiAhKGsxIC0gazIpOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50CmNvbXBhcmVf
c3RyaW5ncyAoY29uc3Qgdm9pZCAqazEsIGNvbnN0IHZvaWQgKmsyKQp7CiAgaWYgKGsxID09IGsy
KQogICAgcmV0dXJuIDE7CiAgZWxzZSBpZiAoazEgPT0gMCB8fCBrMiA9PSAwKQogICAgcmV0dXJu
IDA7CiAgZWxzZQogICAgcmV0dXJuICFfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwg
X19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoazEpICYmIF9fYnVpbHRpbl9jb25zdGFu
dF9wIChrMikgJiYgKF9fczFfbGVuID0gc3RybGVuIChrMSksIF9fczJfbGVuID0gc3RybGVuIChr
MiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsxKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg
dm9pZCAqKShrMSkgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVfdCkoY29uc3Qg
dm9pZCAqKSgoazIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsyKSA9PSAxKSB8fCBf
X3MyX2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKGsxKSwgKF9fY29uc3Qg
Y2hhciAqKSAoazIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4p
ICsgMSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKGsxKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKSgoazEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsxKSA9PSAxKSAmJiAoX19z
MV9sZW4gPSBzdHJsZW4gKGsxKSwgX19zMV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoazIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMikgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoazIpID09IDEpID8gKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9f
cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsx
KSlbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKGsyKSlb
MF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsxXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMV0pOyBpZiAoX19z
MV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsyXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYm
IF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf
X2NvbnN0IGNoYXIgKikgKGsxKSlbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChrMikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkgOiAoX19leHRlbnNpb25f
XyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczIgPSAoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGsyKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMF0gLSBfX3MyWzBd
KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMV0gLSBfX3MyWzFd
KTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMl0gLSBfX3MyWzJd
KTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzNdIC0gX19zMlszXSk7
IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoazIpICYmICgoc2l6
ZV90KShjb25zdCB2b2lkICopKChrMikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoazIp
ID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoazIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChrMSkgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsxKSArIDEp
IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMSkgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyBy
ZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoazEpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikoazIpKVswXSk7IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChr
MSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIp
KVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzJdIC0gKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVsyXSk7IGlmIChf
X3MyX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVszXSAtICgoX19jb25zdCB1bnNpZ25l
ZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6
IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpOyByZWdpc3RlciBpbnQgX19y
ZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoazIpKVswXTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChrMikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChrMikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs
dCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq
KSAoazIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IHN0cmNtcCAoazEsIGsyKSkpKTsgfSk7
Cn0KIyAzMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIgMgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgIDIzCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
aW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzNyAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8u
aCIgMiAzCgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA0NSAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAz
CiMgNTMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
MS9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA2MyAi
L3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNzMgIi91c3Iv
bG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0
ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMKIyA5ICIvdXNy
L2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAxMCAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwojIDMxMiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90
OwojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwojIDI0ICIvdXNyL2luY2x1ZGUv
X0dfY29uZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMSAzCiMgNDggIi91c3Iv
aW5jbHVkZS93Y2hhci5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDQ5ICIvdXNyL2luY2x1
ZGUvd2NoYXIuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDUx
ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCiMgNjcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAz
CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBf
X3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyAy
NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCnR5cGVkZWYgc3RydWN0CnsKICBfX29m
Zl90IF9fcG9zOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJz
b24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDI0CgoKICBfX21ic3RhdGVfdCBfX3N0YXRl
Owp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21i
c3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29u
ZmlnLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVk
ZS9nY29udi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNy
L2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0
OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIg
MSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2dj
b252LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEgIi91c3IvaW5jbHVkZS9nY29u
di5oIiAyIDMKCgoKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwK
ICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwK
ICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05W
X0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NP
TlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAx
LAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9z
dGVwOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDI1CgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhOwpz
dHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0OwpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhOwoK
Cgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLCBzdHJ1
Y3QgX19nY29udl9zdGVwX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqLCBzaXplX3QgKiwgaW50LCBpbnQpOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7
CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7
CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVw
ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX19nY29udl9zdGVw
X2RhdGEgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJh
bnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIg
KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciAqLCB1bnNpZ25lZCBjaGFyICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVy
eV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqKTsKCgp0eXBlZGVmIGludCAoKl9fZ2Nv
bnZfdHJhbnNfaW5pdF9mY3QpICh2b2lkICoqLCBjb25zdCBjaGFyICopOwp0eXBlZGVmIHZvaWQg
KCpfX2djb252X3RyYW5zX2VuZF9mY3QpICh2b2lkICopOwoKc3RydWN0IF9fZ2NvbnZfdHJhbnNf
ZGF0YQp7CgogIF9fZ2NvbnZfdHJhbnNfZmN0IF9fdHJhbnNfZmN0OwogIF9fZ2NvbnZfdHJhbnNf
Y29udGV4dF9mY3QgX190cmFuc19jb250ZXh0X2ZjdDsKICBfX2djb252X3RyYW5zX2VuZF9mY3Qg
X190cmFuc19lbmRfZmN0OwogIHZvaWQgKl9fZGF0YTsKICBzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhICpfX25leHQ7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXAKewogIHN0cnVjdCBfX2djb252
X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxlOwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1l
OwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpfX2Zyb21fbmFtZTsKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBh
Z2UgICAyNgoKCiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsKICBfX2dj
b252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2ZjdDsKCgoK
ICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwogIGludCBf
X21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0YXRlZnVs
OwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7CiAgdW5z
aWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7CgoKCiAg
aW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGludCBfX2lu
dGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90IF9fc3Rh
dGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0IF9fZ2Nv
bnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YSBfX2RhdGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5o
IiAyIDMKdHlwZWRlZiB1bmlvbgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDI3CgoKewogIHN0cnVjdCBf
X2djb252X2luZm8gX19jZDsKICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9f
Y2Q7CiAgICBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsK
fSBfR19pY29udl90OwoKdHlwZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9H
X3VpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwojIDMxICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMiAzCiMgNTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiMgMSAi
L3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1
ZGUvc3RkYXJnLmgiIDEgMwojIDQzICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCiMg
MTU4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX2p1bXBfdDsgc3RydWN0IF9J
T19GSUxFOwojIDE2OCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiB2b2lkIF9JT19s
b2NrX3Q7CgoKCgoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4
dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwoKCgogIGludCBfcG9zOwojIDE5MSAiL3Vzci9p
bmNsdWRlL2xpYmlvLmgiIDMKfTsKCgplbnVtIF9fY29kZWN2dF9yZXN1bHQKewogIF9fY29kZWN2
dF9vaywKICBfX2NvZGVjdnRfcGFydGlhbCwKICBfX2NvZGVjdnRfZXJyb3IsCiAgX19jb2RlY3Z0
X25vY29udgp9OwojIDI1OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKc3RydWN0IF9JT19GSUxF
IHsKICBpbnQgX2ZsYWdzOwoKCgoKICBjaGFyKiBfSU9fcmVhZF9wdHI7CiAgY2hhciogX0lPX3Jl
YWRfZW5kOwogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMjgKCgog
IGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lP
X3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7Cgog
IGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9J
T19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lP
X0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3Qg
X29sZF9vZmZzZXQ7CgoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNo
YXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAq
X2xvY2s7CiMgMzAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0
OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBj
aGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9
OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVjdCBfSU9fRklMRV9w
bHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4g
c3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19G
SUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwojIDM0MiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
dHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19i
dWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICAyOQoKCgoKCgoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAodm9pZCAqX19jb29raWUsIF9fY29uc3QgY2hh
ciAqX19idWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24pOwoK
CgoKCgoKdHlwZWRlZiBpbnQgX19pb19zZWVrX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90
ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9mbiAodm9pZCAqX19j
b29raWUpOwoKCgoKdHlwZWRlZiBfX2lvX3JlYWRfZm4gY29va2llX3JlYWRfZnVuY3Rpb25fdDsK
dHlwZWRlZiBfX2lvX3dyaXRlX2ZuIGNvb2tpZV93cml0ZV9mdW5jdGlvbl90Owp0eXBlZGVmIF9f
aW9fc2Vla19mbiBjb29raWVfc2Vla19mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fY2xvc2VfZm4g
Y29va2llX2Nsb3NlX2Z1bmN0aW9uX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QKewogIF9faW9fcmVhZF9m
biAqcmVhZDsKICBfX2lvX3dyaXRlX2ZuICp3cml0ZTsKICBfX2lvX3NlZWtfZm4gKnNlZWs7CiAg
X19pb19jbG9zZV9mbiAqY2xvc2U7Cn0gX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdDsKdHlwZWRl
ZiBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IGNvb2tpZV9pb19mdW5jdGlvbnNfdDsKCnN0cnVj
dCBfSU9fY29va2llX2ZpbGU7CgoKZXh0ZXJuIHZvaWQgX0lPX2Nvb2tpZV9pbml0IChzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlICpfX2NmaWxlLCBpbnQgX19yZWFkX3dyaXRlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKl9fY29va2llLCBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190
IF9fZm5zKTsKCgoKCgoKCmV4dGVybiBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0
ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lP
X0ZJTEUgKiwgaW50KSA7CmV4dGVybiB3aW50X3QgX193dW5kZXJmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3dv
dmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90KSA7CiMgNDI0ICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDMwCgoKZXh0ZXJuIGludCBfSU9fZ2V0YyAoX0lPX0ZJ
TEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywgX0lPX0ZJTEUgKl9fZnAp
IDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJTEUgKl9fZnApIDsKZXh0ZXJuIGludCBfSU9f
ZmVycm9yIChfSU9fRklMRSAqX19mcCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChf
SU9fRklMRSAqX19mcCkgOwoKCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgKF9JT19GSUxF
ICopIDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlIChfSU9fRklMRSAqKSA7CmV4dGVybiBp
bnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwojIDQ1NCAiL3Vzci9pbmNsdWRlL2xp
YmlvLmgiIDMKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBj
b25zdCBjaGFyICogX19yZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3Zh
X2xpc3QsIGludCAqX19yZXN0cmljdCkgOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJ
TEUgKl9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2dudWNfdmFfbGlzdCkgOwpleHRlcm4gX19zc2l6ZV90IF9JT19wYWRuIChfSU9f
RklMRSAqLCBpbnQsIF9fc3NpemVfdCkgOwpleHRlcm4gc2l6ZV90IF9JT19zZ2V0biAoX0lPX0ZJ
TEUgKiwgdm9pZCAqLCBzaXplX3QpIDsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtvZmYgKF9J
T19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIDsKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vl
a3BvcyAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQpIDsKCmV4dGVybiB2b2lkIF9JT19mcmVl
X2JhY2t1cF9hcmVhIChfSU9fRklMRSAqKSA7CiMgNzQgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKdHlw
ZWRlZiBfX2dudWNfdmFfbGlzdCBfX25vdF92YV9saXN0X187CiMgODggIi91c3IvbG9jYWwvZ2Nj
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMK
dHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKdHlwZWRlZiBfR19mcG9zNjRfdCBmcG9zNjRf
dDsKIyAxMzcgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0u
aCIgMSAzCiMgMTM4ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRl
cm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwojIDE1MiAiL3Vzci9sb2NhbC9n
Y2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gaW50IHJlbW92ZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lKSA7CgpleHRlcm4g
aW50IHJlbmFtZSAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgOwoK
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICAzMQoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lkKSA7
CiMgMTY4ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpIDsKCgpl
eHRlcm4gY2hhciAqdG1wbmFtIChjaGFyICpfX3MpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1f
ciAoY2hhciAqX19zKSA7CiMgMTg4ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBjaGFyICp0ZW1wbmFt
IChfX2NvbnN0IGNoYXIgKl9fZGlyLCBfX2NvbnN0IGNoYXIgKl9fcGZ4KQogICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgZmNsb3NlIChGSUxF
ICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4
dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGlu
dCBmY2xvc2VhbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW4gKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX21vZGVzKSA7CgpleHRlcm4gRklMRSAqZnJlb3BlbiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyMzIgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZv
cGVuNjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKZXh0ZXJuIEZJTEUg
KmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4g
RklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoKCgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDMyCgoKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAodm9pZCAqX19y
ZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSU9f
Y29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIDsKCgpleHRlcm4gRklMRSAqZm1lbW9w
ZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgoK
CmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAoY2hhciAqKl9fcmVzdHJpY3QgX19idWZsb2Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fc2l6ZWxv
YykgOwoKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIDsKCgoKCmV4dGVybiB2b2lkIHNldGJ1ZmZl
ciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19zaXplKSA7CgoKZXh0ZXJuIHZvaWQgc2V0bGlu
ZWJ1ZiAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBwcmludGYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSA7CgoKZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsKCmV4dGVybiBpbnQgdnByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAg
ICAgICAgOwoKZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVj
X3ZhX2xpc3QgX19hcmcpIDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDMzCgoKCmV4dGVybiBpbnQg
c25wcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7
CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21h
eGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv
cm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgoKCgpleHRlcm4gaW50IHZhc3ByaW50
ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Ys
CiAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4g
aW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBp
bnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCmV4dGVybiBpbnQg
dmRwcmludGYgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsCiAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHBy
aW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7
CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7Cgpl
eHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg
OwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoK
CgpleHRlcm4gaW50IHZmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9f
LCAyLCAwKSkpOwoKCmV4dGVybiBpbnQgdnNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50IHZzc2NhbmYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAg
ICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgIDM0CgoKCgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJl
YW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0
Y2hhciAodm9pZCkgOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkgOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpIDsKCgoKCmV4dGVybiBp
bnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwdXRj
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJ
TEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19jKSA7CgoKCgoKCgpl
eHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgoK
ZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwpleHRl
cm4gaW50IHB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpIDsKCgoKCgpleHRlcm4gaW50IGdldHcg
KEZJTEUgKl9fc3RyZWFtKSA7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0
cmVhbSkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMzUKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
CiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgaW50IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZ2V0cyAoY2hhciAqX19zKSA7
CiMgNDM2ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBfX3NzaXplX3QgX19nZXRkZWxpbSAoY2hhciAq
Kl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gX19zc2l6ZV90
IGdldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgpl
eHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRl
cm4gaW50IGZwdXRzIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CgoKCmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBwdXRzIChfX2NvbnN0
IGNoYXIgKl9fcykgOwoKCgpleHRlcm4gaW50IHVuZ2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJl
YW0pIDsKCgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6
ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0
cmljdCBfX3N0cmVhbSkgOwoKZXh0ZXJuIHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSA7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMzYK
CgpleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBz
aXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBzaXplX3QgZndyaXRlX3VubG9ja2Vk
IChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSA7CgoKCgpleHRlcm4gaW50IGZzZWVrIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19v
ZmYsIGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVh
bSkgOwoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSkgOwojIDQ5OSAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
aW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbyAoRklMRSAqX19zdHJlYW0sIF9fb2ZmX3QgX19vZmYs
IGludCBfX3doZW5jZSkgOwoKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvIChGSUxFICpfX3N0cmVhbSkg
OwoKCgpleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3Nf
dCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAgOwoKZXh0ZXJuIGludCBmc2V0cG9zIChG
SUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSA7CiMgNTMzICIvdXNyL2xvY2Fs
L2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYs
IGludCBfX3doZW5jZSkgOwpleHRlcm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVh
bSkgOwpleHRlcm4gaW50IGZnZXRwb3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBv
czY0X3QgKl9fcmVzdHJpY3QgX19wb3MpCiAgICAgICAgICAgIDsKZXh0ZXJuIGludCBmc2V0cG9z
NjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3M2NF90ICpfX3BvcykgOwoKCgpleHRlcm4g
dm9pZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAq
X19zdHJlYW0pIDsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRl
cm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKZXh0ZXJuIGludCBm
ZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoX19jb25zdCBjaGFy
ICpfX3MpIDsKCgoKCmV4dGVybiBpbnQgc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9f
Y29uc3Qgc3lzX2Vycmxpc3RbXTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgMzcKCgoKZXh0ZXJuIGlu
dCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5c19lcnJsaXN0W107
CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50
IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKnBv
cGVuIChfX2NvbnN0IGNoYXIgKl9fY29tbWFuZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CgoK
ZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN0
ZXJtaWQgKGNoYXIgKl9fcykgOwoKCgoKCmV4dGVybiBjaGFyICpjdXNlcmlkIChjaGFyICpfX3Mp
IDsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0cnVj
dCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKZXh0ZXJuIGludCBv
YnN0YWNrX3ZwcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykgOwoK
CgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgIDM4CgoKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFt
KSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNjQwICIv
dXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAzCiMgMzkgIi91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKZXh0ZXJuIF9faW5saW5lIGludAp2cHJpbnRmIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQp7CiAg
cmV0dXJuIHZmcHJpbnRmIChzdGRvdXQsIF9fZm10LCBfX2FyZyk7Cn0KCgpleHRlcm4gX19pbmxp
bmUgaW50CmdldGNoYXIgKHZvaWQpCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluKTsKfQoKCgoK
ZXh0ZXJuIF9faW5saW5lIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKQp7CiAgcmV0dXJu
ICgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cg
KF9fZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfX2ZwKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoK
ZXh0ZXJuIF9faW5saW5lIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKQp7CiAgcmV0dXJuICgo
c3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAo
c3RkaW4pIDogKih1bnNpZ25lZCBjaGFyICopIChzdGRpbiktPl9JT19yZWFkX3B0cisrKTsKfQoK
CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9JT19w
dXRjIChfX2MsIHN0ZG91dCk7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBpbnQKZnB1dGNfdW5sb2Nr
ZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lP
X3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9f
c3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3Ry
ZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDM5
CgoKCgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUg
Kl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19z
dHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQg
Y2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0
cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAo
aW50IF9fYykKewogIHJldHVybiAoKChzdGRvdXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQp
LT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChf
X2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19j
KSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoqX19s
aW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxp
bSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGlu
ZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVycm9y
X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFn
cyAmIDB4MjApICE9IDApOwp9CiMgNjQxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyAzMyAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIgMgoKdHlwZWRlZiBpbnQgKCpvYmpj
X3R5cGVkX3JlYWRfZnVuYykodm9pZCosIGNoYXIqLCBpbnQpOwp0eXBlZGVmIGludCAoKm9iamNf
dHlwZWRfd3JpdGVfZnVuYykodm9pZCosIGNvbnN0IGNoYXIqLCBpbnQpOwp0eXBlZGVmIGludCAo
Km9iamNfdHlwZWRfZmx1c2hfZnVuYykodm9pZCopOwp0eXBlZGVmIGludCAoKm9iamNfdHlwZWRf
ZW9mX2Z1bmMpKHZvaWQqKTsKIyA0OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlw
ZWRzdHJlYW0uaCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY190eXBlZF9zdHJlYW0gewogIHZvaWQqIHBo
eXNpY2FsOwogIGNhY2hlX3B0ciBvYmplY3RfdGFibGU7CiAgY2FjaGVfcHRyIHN0cmVhbV90YWJs
ZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgICA0MAoKCiAgY2FjaGVfcHRyIGNsYXNzX3RhYmxlOwogIGNh
Y2hlX3B0ciBvYmplY3RfcmVmczsKICBpbnQgbW9kZTsKICBpbnQgdHlwZTsKICBpbnQgdmVyc2lv
bjsKICBpbnQgd3JpdGluZ19yb290X3A7CiAgb2JqY190eXBlZF9yZWFkX2Z1bmMgcmVhZDsKICBv
YmpjX3R5cGVkX3dyaXRlX2Z1bmMgd3JpdGU7CiAgb2JqY190eXBlZF9lb2ZfZnVuYyBlb2Y7CiAg
b2JqY190eXBlZF9mbHVzaF9mdW5jIGZsdXNoOwp9IFR5cGVkU3RyZWFtOwojIDkzICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIgppbnQgb2JqY193cml0ZV90eXBl
IChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLCBjb25zdCB2b2lkKiBkYXRh
KTsKaW50IG9iamNfcmVhZF90eXBlIChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0
eXBlLCB2b2lkKiBkYXRhKTsKCmludCBvYmpjX3dyaXRlX3R5cGVzIChUeXBlZFN0cmVhbSogc3Ry
ZWFtLCBjb25zdCBjaGFyKiB0eXBlLCAuLi4pOwppbnQgb2JqY19yZWFkX3R5cGVzIChUeXBlZFN0
cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLCAuLi4pOwoKaW50IG9iamNfd3JpdGVfb2Jq
ZWN0X3JlZmVyZW5jZSAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgaWQgb2JqZWN0KTsKaW50IG9iamNf
d3JpdGVfcm9vdF9vYmplY3QgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGlkIG9iamVjdCk7Cgpsb25n
IG9iamNfZ2V0X3N0cmVhbV9jbGFzc192ZXJzaW9uIChUeXBlZFN0cmVhbSogc3RyZWFtLCBDbGFz
cyBjbGFzcyk7CgoKCgoKCmludCBvYmpjX3dyaXRlX2FycmF5IChUeXBlZFN0cmVhbSogc3RyZWFt
LCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBjb25z
dCB2b2lkKiBkYXRhKTsKaW50IG9iamNfcmVhZF9hcnJheSAoVHlwZWRTdHJlYW0qIHN0cmVhbSwg
Y29uc3QgY2hhciogdHlwZSwKICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCB2b2lkKiBk
YXRhKTsKCmludCBvYmpjX3dyaXRlX29iamVjdCAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgaWQgb2Jq
ZWN0KTsKaW50IG9iamNfcmVhZF9vYmplY3QgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGlkKiBvYmpl
Y3QpOwojIDEyNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIK
VHlwZWRTdHJlYW0qIG9iamNfb3Blbl90eXBlZF9zdHJlYW0gKEZJTEUqIHBoeXNpY2FsLCBpbnQg
bW9kZSk7ClR5cGVkU3RyZWFtKiBvYmpjX29wZW5fdHlwZWRfc3RyZWFtX2Zvcl9maWxlIChjb25z
dCBjaGFyKiBmaWxlX25hbWUsIGludCBtb2RlKTsKCnZvaWQgb2JqY19jbG9zZV90eXBlZF9zdHJl
YW0gKFR5cGVkU3RyZWFtKiBzdHJlYW0pOwoKQk9PTCBvYmpjX2VuZF9vZl90eXBlZF9zdHJlYW0g
KFR5cGVkU3RyZWFtKiBzdHJlYW0pOwp2b2lkIG9iamNfZmx1c2hfdHlwZWRfc3RyZWFtIChUeXBl
ZFN0cmVhbSogc3RyZWFtKTsKIyAzMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2Jq
ZWN0LmgiIDIKCgoKCgpAaW50ZXJmYWNlIE9iamVjdAp7CiAgICBDbGFzcyBpc2E7Cn0KCgorIGlu
aXRpYWxpemU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNDEKCgotIGluaXQ7CgoKKyBuZXc7CisgYWxs
b2M7Ci0gZnJlZTsKLSBjb3B5OwotIHNoYWxsb3dDb3B5OwotIGRlZXBlbjsKLSBkZWVwQ29weTsK
CgotIChDbGFzcyljbGFzczsKLSAoQ2xhc3Mpc3VwZXJDbGFzczsKLSAoTWV0YUNsYXNzKW1ldGFD
bGFzczsKLSAoY29uc3QgY2hhciAqKW5hbWU7CgoKLSBzZWxmOwotICh1bnNpZ25lZCBpbnQpaGFz
aDsKLSAoQk9PTClpc0VxdWFsOmFuT2JqZWN0OwotIChpbnQpY29tcGFyZTphbm90aGVyT2JqZWN0
OwoKCi0gKEJPT0wpaXNNZXRhQ2xhc3M7Ci0gKEJPT0wpaXNDbGFzczsKLSAoQk9PTClpc0luc3Rh
bmNlOwoKCi0gKEJPT0wpaXNLaW5kT2Y6KENsYXNzKWFDbGFzc09iamVjdDsKLSAoQk9PTClpc01l
bWJlck9mOihDbGFzcylhQ2xhc3NPYmplY3Q7Ci0gKEJPT0wpaXNLaW5kT2ZDbGFzc05hbWVkOihj
b25zdCBjaGFyICopYUNsYXNzTmFtZTsKLSAoQk9PTClpc01lbWJlck9mQ2xhc3NOYW1lZDooY29u
c3QgY2hhciAqKWFDbGFzc05hbWU7CgoKKyAoQk9PTClpbnN0YW5jZXNSZXNwb25kVG86KFNFTClh
U2VsOwotIChCT09MKXJlc3BvbmRzVG86KFNFTClhU2VsOwoKCi0gKEJPT0wpY29uZm9ybXNUbzoo
UHJvdG9jb2wqKWFQcm90b2NvbDsKCgorIChJTVApaW5zdGFuY2VNZXRob2RGb3I6KFNFTClhU2Vs
OwotIChJTVApbWV0aG9kRm9yOihTRUwpYVNlbDsKKyAoc3RydWN0IG9iamNfbWV0aG9kX2Rlc2Ny
aXB0aW9uICopZGVzY3JpcHRpb25Gb3JJbnN0YW5jZU1ldGhvZDooU0VMKWFTZWw7Ci0gKHN0cnVj
dCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiAqKWRlc2NyaXB0aW9uRm9yTWV0aG9kOihTRUwpYVNl
bDsKCgotIHBlcmZvcm06KFNFTClhU2VsOwotIHBlcmZvcm06KFNFTClhU2VsIHdpdGg6YW5PYmpl
Y3Q7Ci0gcGVyZm9ybTooU0VMKWFTZWwgd2l0aDphbk9iamVjdDEgd2l0aDphbk9iamVjdDI7CgoK
LSAocmV0dmFsX3QpZm9yd2FyZDooU0VMKWFTZWwgOihhcmdsaXN0X3QpYXJnRnJhbWU7Ci0gKHJl
dHZhbF90KXBlcmZvcm12OihTRUwpYVNlbCA6KGFyZ2xpc3RfdClhcmdGcmFtZTsKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAg
ICAgICBQYWdlICAgNDIKCgoKKyBwb3NlQXM6KENsYXNzKWFDbGFzc09iamVjdDsKLSAoQ2xhc3Mp
dHJhbnNtdXRlQ2xhc3NUbzooQ2xhc3MpYUNsYXNzT2JqZWN0OwoKCi0gc3ViY2xhc3NSZXNwb25z
aWJpbGl0eTooU0VMKWFTZWw7Ci0gbm90SW1wbGVtZW50ZWQ6KFNFTClhU2VsOwotIHNob3VsZE5v
dEltcGxlbWVudDooU0VMKWFTZWw7CgoKLSBkb2VzTm90UmVjb2duaXplOihTRUwpYVNlbDsKLSBl
cnJvcjooY29uc3QgY2hhciAqKWFTdHJpbmcsIC4uLjsKCgorIChpbnQpdmVyc2lvbjsKKyBzZXRW
ZXJzaW9uOihpbnQpYVZlcnNpb247CisgKGludClzdHJlYW1WZXJzaW9uOiAoVHlwZWRTdHJlYW0q
KWFTdHJlYW07CgotIHJlYWQ6IChUeXBlZFN0cmVhbSopYVN0cmVhbTsKLSB3cml0ZTogKFR5cGVk
U3RyZWFtKilhU3RyZWFtOwotIGF3YWtlOwoKQGVuZAojIDEzICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy9vYmpjLWFwaS5oIiAxCiMgMzQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29i
amMtYXBpLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAxCiMg
MzUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKIyAxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDEKIyAzNiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL3Roci5oIiAxCiMgNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5o
IgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDQyICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90aHIuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9vYmpjL2V4dGVybnZhci5oIiAxCiMgNDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL3Roci5oIiAyCgoKCgpleHRlcm4gaW50IF9fb2JqY190aHJlYWRfZXhpdF9zdGF0dXM7
CiMgNTkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIgp0eXBlZGVmIHZvaWQg
KiBvYmpjX3RocmVhZF90OwoKCnN0cnVjdCBvYmpjX211dGV4CnsKICB2b2xhdGlsZSBvYmpjX3Ro
cmVhZF90IG93bmVyOwogIHZvbGF0aWxlIGludCBkZXB0aDsKICB2b2lkICogYmFja2VuZDsKfTsK
dHlwZWRlZiBzdHJ1Y3Qgb2JqY19tdXRleCAqb2JqY19tdXRleF90OwoKCnN0cnVjdCBvYmpjX2Nv
bmRpdGlvbgp7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNDMKCgogIHZvaWQgKiBiYWNrZW5kOwp9Owp0
eXBlZGVmIHN0cnVjdCBvYmpjX2NvbmRpdGlvbiAqb2JqY19jb25kaXRpb25fdDsKCgpvYmpjX211
dGV4X3Qgb2JqY19tdXRleF9hbGxvY2F0ZSh2b2lkKTsKaW50IG9iamNfbXV0ZXhfZGVhbGxvY2F0
ZShvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2JqY19tdXRleF9sb2NrKG9iamNfbXV0ZXhfdCBt
dXRleCk7CmludCBvYmpjX211dGV4X3VubG9jayhvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2Jq
Y19tdXRleF90cnlsb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CgoKb2JqY19jb25kaXRpb25fdCBv
YmpjX2NvbmRpdGlvbl9hbGxvY2F0ZSh2b2lkKTsKaW50IG9iamNfY29uZGl0aW9uX2RlYWxsb2Nh
dGUob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgb2JqY19jb25kaXRpb25fd2FpdChv
YmpjX2NvbmRpdGlvbl90IGNvbmRpdGlvbiwgb2JqY19tdXRleF90IG11dGV4KTsKaW50IG9iamNf
Y29uZGl0aW9uX3NpZ25hbChvYmpjX2NvbmRpdGlvbl90IGNvbmRpdGlvbik7CmludCBvYmpjX2Nv
bmRpdGlvbl9icm9hZGNhc3Qob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwoKCm9iamNfdGhy
ZWFkX3Qgb2JqY190aHJlYWRfZGV0YWNoKFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0LCBpZCBhcmd1
bWVudCk7CnZvaWQgb2JqY190aHJlYWRfeWllbGQodm9pZCk7CmludCBvYmpjX3RocmVhZF9leGl0
KHZvaWQpOwppbnQgb2JqY190aHJlYWRfc2V0X3ByaW9yaXR5KGludCBwcmlvcml0eSk7CmludCBv
YmpjX3RocmVhZF9nZXRfcHJpb3JpdHkodm9pZCk7CnZvaWQgKiBvYmpjX3RocmVhZF9nZXRfZGF0
YSh2b2lkKTsKaW50IG9iamNfdGhyZWFkX3NldF9kYXRhKHZvaWQgKnZhbHVlKTsKb2JqY190aHJl
YWRfdCBvYmpjX3RocmVhZF9pZCh2b2lkKTsKIyAxMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL3Roci5oIgp0eXBlZGVmIHZvaWQgKCpvYmpjX3RocmVhZF9jYWxsYmFjaykoKTsKb2Jq
Y190aHJlYWRfY2FsbGJhY2sgb2JqY19zZXRfdGhyZWFkX2NhbGxiYWNrKG9iamNfdGhyZWFkX2Nh
bGxiYWNrIGZ1bmMpOwoKCmludCBfX29iamNfaW5pdF90aHJlYWRfc3lzdGVtKHZvaWQpOwppbnQg
X19vYmpjX2ZpbmlfdGhyZWFkX3N5c3RlbSh2b2lkKTsKCgppbnQgX19vYmpjX211dGV4X2FsbG9j
YXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBfX29iamNfbXV0ZXhfZGVhbGxvY2F0ZShvYmpj
X211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX211dGV4X2xvY2sob2JqY19tdXRleF90IG11dGV4
KTsKaW50IF9fb2JqY19tdXRleF90cnlsb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBfX29i
amNfbXV0ZXhfdW5sb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CgoKaW50IF9fb2JqY19jb25kaXRp
b25fYWxsb2NhdGUob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgX19vYmpjX2NvbmRp
dGlvbl9kZWFsbG9jYXRlKG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IF9fb2JqY19j
b25kaXRpb25fd2FpdChvYmpjX2NvbmRpdGlvbl90IGNvbmRpdGlvbiwgb2JqY19tdXRleF90IG11
dGV4KTsKaW50IF9fb2JqY19jb25kaXRpb25fYnJvYWRjYXN0KG9iamNfY29uZGl0aW9uX3QgY29u
ZGl0aW9uKTsKaW50IF9fb2JqY19jb25kaXRpb25fc2lnbmFsKG9iamNfY29uZGl0aW9uX3QgY29u
ZGl0aW9uKTsKCgpvYmpjX3RocmVhZF90IF9fb2JqY190aHJlYWRfZGV0YWNoKHZvaWQgKCpmdW5j
KSh2b2lkICphcmcpLCB2b2lkICphcmcpOwppbnQgX19vYmpjX3RocmVhZF9zZXRfcHJpb3JpdHko
aW50IHByaW9yaXR5KTsKaW50IF9fb2JqY190aHJlYWRfZ2V0X3ByaW9yaXR5KHZvaWQpOwp2b2lk
IF9fb2JqY190aHJlYWRfeWllbGQodm9pZCk7CmludCBfX29iamNfdGhyZWFkX2V4aXQodm9pZCk7
Cm9iamNfdGhyZWFkX3QgX19vYmpjX3RocmVhZF9pZCh2b2lkKTsKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0NAoKCmludCBfX29iamNfdGhyZWFkX3NldF9kYXRhKHZvaWQgKnZhbHVlKTsKdm9pZCAqIF9f
b2JqY190aHJlYWRfZ2V0X2RhdGEodm9pZCk7CiMgMzcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL29iamMtYXBpLmgiIDIKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzOCAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDEgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMK
IyAxMTAgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
MS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyAz
OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgoKIyAxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9leHRlcm52YXIuaCIgMQojIDQxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIiAyCiMgNTAgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCnN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbgp7
CiAgICBTRUwgbmFtZTsKICAgIGNoYXIgKnR5cGVzOwp9OwojIDEwNiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKZXh0ZXJuIHZvaWQgb2JqY19lcnJvciAoaWQgb2Jq
ZWN0LCBpbnQgY29kZSwgY29uc3QgY2hhciogZm10LCAuLi4pOwpleHRlcm4gdm9pZCBvYmpjX3Zl
cnJvciAoaWQgb2JqZWN0LCBpbnQgY29kZSwgY29uc3QgY2hhciogZm10LCB2YV9saXN0IGFwKTsK
dHlwZWRlZiBCT09MICgqb2JqY19lcnJvcl9oYW5kbGVyKSAoaWQsIGludCBjb2RlLCBjb25zdCBj
aGFyICpmbXQsIHZhX2xpc3QgYXApOwpvYmpjX2Vycm9yX2hhbmRsZXIgb2JqY19zZXRfZXJyb3Jf
aGFuZGxlciAob2JqY19lcnJvcl9oYW5kbGVyIGZ1bmMpOwojIDE0NyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKc3RydWN0IG9iamNfc3RhdGljX2luc3RhbmNlcwp7
CiAgY2hhciAqY2xhc3NfbmFtZTsKICBpZCBpbnN0YW5jZXNbMF07Cn07CiMgMTYyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX3N5
bXRhYiB7CiAgdW5zaWduZWQgbG9uZyBzZWxfcmVmX2NudDsKICBTRUwgcmVmczsKICB1bnNpZ25l
ZCBzaG9ydCBjbHNfZGVmX2NudDsKCiAgdW5zaWduZWQgc2hvcnQgY2F0X2RlZl9jbnQ7CgoKCiAg
dm9pZCAqZGVmc1sxXTsKCgoKCgp9IFN5bXRhYiwgKlN5bXRhYl90OwojIDE4OSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19tb2R1
bGUgewogIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIHNpemU7CiAgY29u
c3QgY2hhciogbmFtZTsKCgoKICBTeW10YWJfdCBzeW10YWI7CgoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAg
IDQ1CgoKCgoKCn0gTW9kdWxlLCAqTW9kdWxlX3Q7CgoKCgoKCnR5cGVkZWYgc3RydWN0IG9iamNf
aXZhciogSXZhcl90Owp0eXBlZGVmIHN0cnVjdCBvYmpjX2l2YXJfbGlzdCB7CiAgaW50IGl2YXJf
Y291bnQ7CgoKCgogIHN0cnVjdCBvYmpjX2l2YXIgewogICAgY29uc3QgY2hhciogaXZhcl9uYW1l
OwoKCiAgICBjb25zdCBjaGFyKiBpdmFyX3R5cGU7CgoKICAgIGludCBpdmFyX29mZnNldDsKCgoK
ICB9IGl2YXJfbGlzdFsxXTsKCn0gSXZhckxpc3QsICpJdmFyTGlzdF90OwojIDI0MCAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKc3RydWN0IG9iamNfbWV0aG9kIHsK
ICBTRUwgbWV0aG9kX25hbWU7CgoKCgoKICBjb25zdCBjaGFyKiBtZXRob2RfdHlwZXM7CgoKICBJ
TVAgbWV0aG9kX2ltcDsKCn07Cgp0eXBlZGVmIHN0cnVjdCBvYmpjX21ldGhvZCBNZXRob2Q7Cgp0
eXBlZGVmIE1ldGhvZCogTWV0aG9kX3Q7CnR5cGVkZWYgc3RydWN0IG9iamNfbWV0aG9kX2xpc3Qg
ewogIHN0cnVjdCBvYmpjX21ldGhvZF9saXN0KiBtZXRob2RfbmV4dDsKCgogIGludCBtZXRob2Rf
Y291bnQ7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24u
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQ2CgoKICBzdHJ1Y3Qgb2JqY19tZXRob2QgbWV0
aG9kX2xpc3RbMV07Cgp9IE1ldGhvZExpc3QsICpNZXRob2RMaXN0X3Q7CgpzdHJ1Y3Qgb2JqY19w
cm90b2NvbF9saXN0IHsKICBzdHJ1Y3Qgb2JqY19wcm90b2NvbF9saXN0ICpuZXh0OwogIGludCBj
b3VudDsKICBQcm90b2NvbCAqbGlzdFsxXTsKfTsKIyAzMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL29iamMtYXBpLmgiCnR5cGVkZWYgc3RydWN0IG9iamNfY2F0ZWdvcnkgewogIGNv
bnN0IGNoYXIqIGNhdGVnb3J5X25hbWU7CgoKICBjb25zdCBjaGFyKiBjbGFzc19uYW1lOwoKICBN
ZXRob2RMaXN0X3QgaW5zdGFuY2VfbWV0aG9kczsKCgoKICBNZXRob2RMaXN0X3QgY2xhc3NfbWV0
aG9kczsKCgoKICBzdHJ1Y3Qgb2JqY19wcm90b2NvbF9saXN0ICpwcm90b2NvbHM7Cgp9IENhdGVn
b3J5LCAqQ2F0ZWdvcnlfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19zdXBlciB7CiAgaWQg
c2VsZjsKCiAgQ2xhc3MgY2xhc3M7Cn0gU3VwZXIsICpTdXBlcl90OwoKSU1QIG9iamNfbXNnX2xv
b2t1cF9zdXBlcihTdXBlcl90IHN1cGVyLCBTRUwgc2VsKTsKCgpyZXR2YWxfdCBvYmpjX21zZ19z
ZW5kdihpZCwgU0VMLCBhcmdsaXN0X3QpOwojIDM2NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L29iamMvb2JqYy1hcGkuaCIKZXh0ZXJuIENsYXNzICgqX29iamNfbG9va3VwX2NsYXNzKSAoY29u
c3QgY2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gdm9pZCAoKl9vYmpjX2xvYWRfY2FsbGJhY2sp
IChDbGFzcyBjbGFzcywgQ2F0ZWdvcnkqIGNhdGVnb3J5KTsKCgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0NwoKCgpleHRlcm4gaWQgKCpfb2JqY19vYmplY3RfYWxsb2MpIChDbGFzcyBjbGFzcyk7CmV4
dGVybiBpZCAoKl9vYmpjX29iamVjdF9jb3B5KSAoaWQgb2JqZWN0KTsKZXh0ZXJuIGlkICgqX29i
amNfb2JqZWN0X2Rpc3Bvc2UpIChpZCBvYmplY3QpOwoKCgoKCgoKdm9pZCAqb2JqY19tYWxsb2Mg
KHNpemVfdCBzaXplKTsKCnZvaWQgKm9iamNfYXRvbWljX21hbGxvYyAoc2l6ZV90IHNpemUpOwoK
dm9pZCAqb2JqY192YWxsb2MgKHNpemVfdCBzaXplKTsKCnZvaWQgKm9iamNfcmVhbGxvYyAodm9p
ZCAqbWVtLCBzaXplX3Qgc2l6ZSk7Cgp2b2lkICpvYmpjX2NhbGxvYyAoc2l6ZV90IG5lbGVtLCBz
aXplX3Qgc2l6ZSk7Cgp2b2lkIG9iamNfZnJlZSAodm9pZCAqbWVtKTsKIyA0MTIgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCmV4dGVybiB2b2lkICooKl9vYmpjX21h
bGxvYykgKHNpemVfdCk7CmV4dGVybiB2b2lkICooKl9vYmpjX2F0b21pY19tYWxsb2MpIChzaXpl
X3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY192YWxsb2MpIChzaXplX3QpOwpleHRlcm4gdm9pZCAq
KCpfb2JqY19yZWFsbG9jKSAodm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY19j
YWxsb2MpIChzaXplX3QsIHNpemVfdCk7CmV4dGVybiB2b2lkICgqX29iamNfZnJlZSkgKHZvaWQg
Kik7CgpNZXRob2RfdCBjbGFzc19nZXRfY2xhc3NfbWV0aG9kIChNZXRhQ2xhc3MgY2xhc3MsIFNF
TCBhU2VsKTsKCk1ldGhvZF90IGNsYXNzX2dldF9pbnN0YW5jZV9tZXRob2QgKENsYXNzIGNsYXNz
LCBTRUwgYVNlbCk7CgpDbGFzcyBjbGFzc19wb3NlX2FzIChDbGFzcyBpbXBvc3RvciwgQ2xhc3Mg
c3VwZXJjbGFzcyk7CgpDbGFzcyBvYmpjX2dldF9jbGFzcyAoY29uc3QgY2hhciAqbmFtZSk7CgpD
bGFzcyBvYmpjX2xvb2t1cF9jbGFzcyAoY29uc3QgY2hhciAqbmFtZSk7CgpDbGFzcyBvYmpjX25l
eHRfY2xhc3MgKHZvaWQgKiplbnVtX3N0YXRlKTsKCmNvbnN0IGNoYXIgKnNlbF9nZXRfbmFtZSAo
U0VMIHNlbGVjdG9yKTsKCmNvbnN0IGNoYXIgKnNlbF9nZXRfdHlwZSAoU0VMIHNlbGVjdG9yKTsK
ClNFTCBzZWxfZ2V0X3VpZCAoY29uc3QgY2hhciAqbmFtZSk7CgpTRUwgc2VsX2dldF9hbnlfdWlk
IChjb25zdCBjaGFyICpuYW1lKTsKClNFTCBzZWxfZ2V0X2FueV90eXBlZF91aWQgKGNvbnN0IGNo
YXIgKm5hbWUpOwoKU0VMIHNlbF9nZXRfdHlwZWRfdWlkIChjb25zdCBjaGFyICpuYW1lLCBjb25z
dCBjaGFyKik7CgpTRUwgc2VsX3JlZ2lzdGVyX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICA0OAoKClNFTCBzZWxfcmVnaXN0ZXJfdHlwZWRfbmFtZSAoY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgY2hhcip0eXBlKTsKCgpCT09MIHNlbF9pc19tYXBwZWQgKFNFTCBh
U2VsKTsKCmV4dGVybiBpZCBjbGFzc19jcmVhdGVfaW5zdGFuY2UgKENsYXNzIGNsYXNzKTsKCnN0
YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCmNsYXNzX2dldF9jbGFzc19uYW1lIChDbGFzcyBjbGFz
cykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFM
KSk/Y2xhc3MtPm5hbWU6KChjbGFzcz09KENsYXNzKTApPyJOaWwiOjApOwp9CgpzdGF0aWMgaW5s
aW5lIGxvbmcKY2xhc3NfZ2V0X2luc3RhbmNlX3NpemUgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJu
ICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT5p
bnN0YW5jZV9zaXplIDogMDsKfQoKc3RhdGljIGlubGluZSBNZXRhQ2xhc3MKY2xhc3NfZ2V0X21l
dGFfY2xhc3MgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5p
bmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT5jbGFzc19wb2ludGVyIDogKENsYXNzKTA7
Cn0KCnN0YXRpYyBpbmxpbmUgQ2xhc3MKY2xhc3NfZ2V0X3N1cGVyX2NsYXNzIChDbGFzcyBjbGFz
cykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFM
KSkgPyBjbGFzcy0+c3VwZXJfY2xhc3MgOiAoQ2xhc3MpMDsKfQoKc3RhdGljIGlubGluZSBpbnQK
Y2xhc3NfZ2V0X3ZlcnNpb24gKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgo
Y2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT52ZXJzaW9uIDogLTE7Cn0K
CnN0YXRpYyBpbmxpbmUgQk9PTApjbGFzc19pc19jbGFzcyAoQ2xhc3MgY2xhc3MpCnsKICByZXR1
cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpOwp9CgpzdGF0
aWMgaW5saW5lIEJPT0wKY2xhc3NfaXNfbWV0YV9jbGFzcyAoQ2xhc3MgY2xhc3MpCnsKICByZXR1
cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpOwp9CgoKc3Rh
dGljIGlubGluZSB2b2lkCmNsYXNzX3NldF92ZXJzaW9uIChDbGFzcyBjbGFzcywgbG9uZyB2ZXJz
aW9uKQp7CiAgaWYgKCgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwp
KSkKICAgIGNsYXNzLT52ZXJzaW9uID0gdmVyc2lvbjsKfQoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDQ5
CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCAqCmNsYXNzX2dldF9nY19vYmplY3RfdHlwZSAoQ2xhc3Mg
Y2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0g
MHgxTCkpID8gY2xhc3MtPmdjX29iamVjdF90eXBlIDogKCh2b2lkICopMCk7Cn0KCgpleHRlcm4g
dm9pZCBjbGFzc19pdmFyX3NldF9nY2ludmlzaWJsZSAoQ2xhc3MgY2xhc3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBpdmFybmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJPT0wgZ2NJbnZpc2libGUpOwoKc3Rh
dGljIGlubGluZSBJTVAKbWV0aG9kX2dldF9pbXAgKE1ldGhvZF90IG1ldGhvZCkKewogIHJldHVy
biAobWV0aG9kICE9IChNZXRob2RfdCkwKSA/IG1ldGhvZC0+bWV0aG9kX2ltcCA6IChJTVApIDA7
Cn0KCklNUCBnZXRfaW1wIChDbGFzcyBjbGFzcywgU0VMIHNlbCk7CgoKCgoKCgppZCBvYmplY3Rf
Y29weSAoaWQgb2JqZWN0KTsKCmlkIG9iamVjdF9kaXNwb3NlIChpZCBvYmplY3QpOwoKc3RhdGlj
IGlubGluZSBDbGFzcwpvYmplY3RfZ2V0X2NsYXNzIChpZCBvYmplY3QpCnsKICByZXR1cm4gKChv
YmplY3QgIT0gKGlkKTApCiAgICAgICAgICA/ICgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigo
KChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKQogICAgICAg
ICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXIKICAgICAgICAgICAgIDogKCgob2JqZWN0LT5j
bGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgyTCkg
PT0gMHgyTCkpCiAgICAgICAgICAgICAgICA/IChDbGFzcykgb2JqZWN0CiAgICAgICAgICAgICAg
ICA6IChDbGFzcykwKSkKICAgICAgICAgIDogKENsYXNzKTApOwp9CgpzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIgKgpvYmplY3RfZ2V0X2NsYXNzX25hbWUgKGlkIG9iamVjdCkKewogIHJldHVybiAo
KG9iamVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+
Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRlci0+bmFtZQogICAgICAgICAgICAgICAgICAg
ICAgICAgOiAoKENsYXNzKSBvYmplY3QpLT5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgIDoi
TmlsIik7Cn0KCnN0YXRpYyBpbmxpbmUgTWV0YUNsYXNzCm9iamVjdF9nZXRfbWV0YV9jbGFzcyhp
ZCBvYmplY3QpCnsKICByZXR1cm4gKChvYmplY3QhPShpZCkwKSA/ICgoKG9iamVjdC0+Y2xhc3Nf
cG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09IDB4
MUwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRlci0+
Y2xhc3NfcG9pbnRlcgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQ
ZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDUwCgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19w
b2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOihDbGFzcykwKSkKICAgICAgICAgIDogKENsYXNzKTApOwp9CgpzdGF0aWMgaW5saW5lIENs
YXNzCm9iamVjdF9nZXRfc3VwZXJfY2xhc3MgKGlkIG9iamVjdCkKewogIHJldHVybiAoKG9iamVj
dCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3Nf
cG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyLT5zdXBlcl9jbGFzcwogICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNz
X3BvaW50ZXIpLT5pbmZvKSAmIDB4MkwpID09IDB4MkwpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICA/KChDbGFzcykgb2JqZWN0KS0+c3VwZXJfY2xhc3MKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOiAoQ2xhc3MpMCkpCiAgICAgICAgICA6IChDbGFzcykwKTsKfQoKc3RhdGljIGlu
bGluZSBCT09MCm9iamVjdF9pc19jbGFzcyAoaWQgb2JqZWN0KQp7CiAgcmV0dXJuICgoKENsYXNz
KSBvYmplY3QpJiYoKCgoKENsYXNzKSBvYmplY3QpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKTsK
fQoKc3RhdGljIGlubGluZSBCT09MCm9iamVjdF9pc19pbnN0YW5jZShpZCBvYmplY3QpCnsKICBy
ZXR1cm4gKG9iamVjdCAhPSAoaWQpMCkgJiYgKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgo
b2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSk7Cn0KCnN0YXRp
YyBpbmxpbmUgQk9PTApvYmplY3RfaXNfbWV0YV9jbGFzcyAoaWQgb2JqZWN0KQp7CiAgcmV0dXJu
ICgoKENsYXNzKSBvYmplY3QpJiYoKCgoKENsYXNzKSBvYmplY3QpLT5pbmZvKSAmIDB4MkwpID09
IDB4MkwpKTsKfQoKc3RydWN0IHNhcnJheSogb2JqY19nZXRfdW5pbnN0YWxsZWRfZHRhYmxlICh2
b2lkKTsKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5oIiAy
CgoKCgp0eXBlZGVmIHN0cnVjdCBjbGFzc0RhdGEgKmNsYXNzRGF0YV90Owp0eXBlZGVmIHN0cnVj
dCBtZXRob2REZWZzICptZXRob2REZWZzX3Q7CgoKCgpAaW50ZXJmYWNlIENsYXNzX3M6IE9iamVj
dAp7CkBwdWJsaWMKICBDbGFzc19zICpzdXBlcmNsYXNzOwogIGNvbnN0IGNoYXIgKm5hbWU7CiAg
bG9uZyB2ZXJzaW9uOwogIHVuc2lnbmVkIGxvbmcgaW5mbzsKICBsb25nIGluc3RhbmNlU2l6ZTsK
ICB2b2lkICppdmFyTGlzdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA1MQoKCiAgdm9pZCAqbWV0aG9k
TGlzdDsKICBzdHJ1Y3Qgc2FycmF5ICpkdGFibGU7Cn0KCgpAZW5kCgoKCgpleHRlcm4gY2xhc3NE
YXRhX3QgX29ial9nZXRDbGFzc0RhdGEgKENsYXNzX3MgKmNsYXNzKTsKCgoKCnZvaWQgX29ial9p
bml0TWV0aG9kSW50ZXJmYWNlcyAoQ2xhc3NfcyAqY2xhc3MpOwoKCgoKCgoKQGludGVyZmFjZSBD
cmVhdGVkQ2xhc3NfczogQ2xhc3Nfcwp7CkBwdWJsaWMKICBDbGFzc19zICpkZWZpbmluZ0NsYXNz
OwogIGlkIG1ldGFvYmplY3RzOwp9CgorIGNyZWF0ZUJlZ2luOiBhWm9uZTsKLSBzZXROYW1lOiAo
Y29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSBzZXRDbGFzczogYUNsYXNzOwotIHNldFN1cGVyY2xh
c3M6IGFDbGFzczsKLSBzZXREZWZpbmluZ0NsYXNzOiBhQ2xhc3M7Ci0gYXQ6IChTRUwpYVNlbCBh
ZGRNZXRob2Q6IChJTVApYU1ldGhvZDsKLSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUluQ3Jl
YXRlOiBleHByOwotIGNyZWF0ZUVuZDsKLSAodm9pZCloZGY1T3V0U2hhbGxvdzogc3RyZWFtOwot
ICh2b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07CkBlbmQKCkBpbnRlcmZhY2UgQmVoYXZpb3JQ
aGFzZV9zOiBDcmVhdGVkQ2xhc3Nfcwp7CkBwdWJsaWMKICBDbGFzc19zICpuZXh0UGhhc2U7CiAg
aWQgZmlsbGVyOwogIGlkIG1vcmVmaWxsZXI7Cn0KCi0gKHZvaWQpc2V0TmV4dFBoYXNlOiBhQmVo
YXZpb3JQaGFzZTsKQGVuZAoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDUyCgoKCgoKCnN0cnVjdCBj
bGFzc0RhdGEgewogIGlkICpjbGFzc0lEOwogIGlkIG93bmVyOwogIGlkIHR5cGVJbXBsZW1lbnRl
ZDsKICBCZWhhdmlvclBoYXNlX3MgKmluaXRpYWxQaGFzZTsKICBpZCBtZXRhb2JqZWN0czsKfTsK
CgoKCnN0cnVjdCBtZXRob2REZWZzIHsKICBtZXRob2REZWZzX3QgbmV4dDsKICBpZCBpbnRlcmZh
Y2VJRDsKICBNZXRob2RfdCBmaXJzdEVudHJ5OwogIGludCBjb3VudDsKfTsKIyAxMyAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIgMgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiIDEKIyAxMyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvZGVmb2JqLmgiIDEKIyAxOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgp0
eXBlZGVmIGVudW0ge2ZjYWxsX3R5cGVfdm9pZCA9IDAsCiAgICAgICAgICAgICAgZmNhbGxfdHlw
ZV9ib29sZWFuLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWNoYXIsIGZjYWxsX3R5cGVfc2No
YXIsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91c2hvcnQsIGZjYWxsX3R5cGVfc3Nob3J0LAog
ICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWludCwgZmNhbGxfdHlwZV9zaW50LAogICAgICAgICAg
ICAgIGZjYWxsX3R5cGVfdWxvbmcsIGZjYWxsX3R5cGVfc2xvbmcsCiAgICAgICAgICAgICAgZmNh
bGxfdHlwZV91bG9uZ2xvbmcsIGZjYWxsX3R5cGVfc2xvbmdsb25nLAogICAgICAgICAgICAgIGZj
YWxsX3R5cGVfZmxvYXQsIGZjYWxsX3R5cGVfZG91YmxlLCBmY2FsbF90eXBlX2xvbmdfZG91Ymxl
LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfb2JqZWN0LCBmY2FsbF90eXBlX2NsYXNzLAogICAg
ICAgICAgICAgIGZjYWxsX3R5cGVfc3RyaW5nLCBmY2FsbF90eXBlX3NlbGVjdG9yLAogICAgICAg
ICAgICAgIGZjYWxsX3R5cGVfam9iamVjdCwgZmNhbGxfdHlwZV9qc3RyaW5nLCBmY2FsbF90eXBl
X2pzZWxlY3RvciwKICAgICAgICAgICAgICBmY2FsbF90eXBlX2lpZAogICAgICAgICAgICAgIH0g
ZmNhbGxfdHlwZV90OwoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgi
IDEKIyAzMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIiAyCgp0eXBlZGVmIHVu
aW9uIHsKICBpZCBvYmplY3Q7CiAgU0VMIHNlbGVjdG9yOwogIENsYXNzIF9jbGFzczsKICBjb25z
dCBjaGFyICpzdHJpbmc7CiAgQk9PTCBib29sZWFuOwogIGNoYXIgc2NoYXI7CiAgdW5zaWduZWQg
Y2hhciB1Y2hhcjsKICBzaG9ydCBzc2hvcnQ7CiAgdW5zaWduZWQgc2hvcnQgdXNob3J0OwogIGlu
dCBzaW50OwogIHVuc2lnbmVkIGludCB1aW50OwogIGxvbmcgc2xvbmc7CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAgNTMKCgogIHVuc2lnbmVkIGxvbmcgdWxvbmc7CiAgbG9uZyBsb25nIHNsb25nbG9uZzsK
ICB1bnNpZ25lZCBsb25nIGxvbmcgdWxvbmdsb25nOwogIGZsb2F0IF9mbG9hdDsKICBkb3VibGUg
X2RvdWJsZTsKICBsb25nIGRvdWJsZSBfbG9uZ19kb3VibGU7CiAgdm9pZCAqaWlkOwp9IHR5cGVz
X3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgZmNhbGxfdHlwZV90IHR5cGU7CiAgdHlwZXNfdCB2YWw7
Cn0gdmFsX3Q7CgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0
eXBlLmgiIDEKIyAyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgi
CiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiIDEKIyAyMiAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiIDIKCgoKCgoKQHByb3RvY29s
IENSRUFUQUJMRQpAZW5kCgoKQHByb3RvY29sIFJFVFVSTkFCTEUKQGVuZAojIDQ2ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL2RlZnR5cGUuaCIKdHlwZWRlZiB2b2lkICgqbm90aWZ5
X3QpKCBpZCBvYmplY3QsIGlkIHJlYWxsb2NBZGRyZXNzLCB2b2lkICphcmcgKTsKCgoKCgoKdHlw
ZWRlZiB2b2lkICpyZWZfdDsKCgoKCnR5cGVkZWYgdm9pZCAoKmZ1bmNfdCkoIHZvaWQgKTsKCgoK
CnR5cGVkZWYgaWQgKCpmaXh1cFJvdXRpbmVfdCkoIHZvaWQgKmZpeHVwQ29udGV4dCwgaWQgZml4
dXBPYmplY3QgKTsKdHlwZWRlZiB2b2lkICgqZml4dXBfdCkoIGZpeHVwUm91dGluZV90IGZpeHVw
Um91dGluZSwgdm9pZCAqZml4dXBDb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGlk
IGZpeHVwQXJndW1lbnQgKTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA1NAoKCiMgNjcgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9leHRlcm52YXIuaCIgMQojIDY4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgi
IDIKIyA3NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgpAcHJvdG9jb2wgR2V0
TmFtZQojIDg5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7
Ci0gKGNvbnN0IGNoYXIgKilnZXROYW1lOwpAZW5kCgpAcHJvdG9jb2wgRGVmaW5lZE9iamVjdCA8
R2V0TmFtZT4KIyAxMDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9V
c2luZzsKIyAxMTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSAoQk9PTCly
ZXNwb25kc1RvOiAoU0VMKWFTZWw7CgorIChCT09MKWNvbmZvcm1zVG86IChQcm90b2NvbCAqKXBy
b3RvY29sOwotIChCT09MKWNvbmZvcm1zVG86IChQcm90b2NvbCAqKXByb3RvY29sOwoKCgotIGdl
dENsYXNzOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRUeXBlTmFtZTsKCgoKLSAocmVmX3QpYWRkUmVm
OiAobm90aWZ5X3Qpbm90aWZ5RnVuY3Rpb24gd2l0aEFyZ3VtZW50OiAodm9pZCAqKWFyZzsKCgot
ICh2b2lkKXJlbW92ZVJlZjogKHJlZl90KXJlZlZhbDsKCgotIChpbnQpY29tcGFyZTogYW5PYmpl
Y3Q7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWw7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDog
YW5PYmplY3QxOwoKCi0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0MSB3aXRoOiBh
bk9iajI7CgoKLSBwZXJmb3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2Jq
MiB3aXRoOiBhbk9iajM7CgoKCi0gKHZvaWQpc2V0RGlzcGxheU5hbWU6IChjb25zdCBjaGFyICop
ZGlzcGxheU5hbWU7CgoKCgotIChjb25zdCBjaGFyICopZ2V0RGlzcGxheU5hbWU7CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAg
ICAgICBQYWdlICAgNTUKCgojIDE2OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgotICh2b2lkKWRlc2NyaWJlOiBvdXRwdXRDaGFyU3RyZWFtOwoKCgotICh2b2lkKWRlc2NyaWJl
SUQ6IG91dHB1dENoYXJTdHJlYW07CgoKLSAodm9pZCl4cHJpbnQ7CgoKLSAodm9pZCl4cHJpbnRp
ZDsKCgotICh2b2lkKXhmcHJpbnQ7CgoKLSAodm9pZCl4ZnByaW50aWQ7CgoKLSBnZXRab25lOwpA
ZW5kCgpAcHJvdG9jb2wgQ3VzdG9taXplCiMgMjIzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMgMjM5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCisgY3VzdG9taXplQmVnaW46IGFab25lOwoKCi0gY3VzdG9taXplRW5kOwojIDI2
NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIGN1c3RvbWl6ZUNvcHk6IGFa
b25lOwpAZW5kCgpAcHJvdG9jb2wgQ3JlYXRlIDxEZWZpbmVkT2JqZWN0LCBDdXN0b21pemU+CiMg
MzE5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CiMg
MzM1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCisgY3JlYXRlOiBhWm9uZTsK
CgoKCgoKCisgY3JlYXRlQmVnaW46IGFab25lOwojIDM3MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2RlZm9iai5oIgotIGNyZWF0ZUVuZDsKQGVuZAoKQHByb3RvY29sIERyb3AKIyA0MDEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9Vc2luZzsKLSAodm9pZClkcm9w
OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAg
ICAgICAgICAgICAgICAgUGFnZSAgIDU2CgoKQGVuZAoKQHByb3RvY29sIFpvbmUgPENyZWF0ZSwg
RHJvcCwgQ1JFQVRBQkxFPgojIDQ1NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgotIF9JX0NyZWF0aW5nOwoKCgoKCgoKLSAodm9pZClzZXRQYWdlU2l6ZTogKHNpemVfdClwYWdl
U2l6ZTsKCi0gX0lfVXNpbmc7Ci0gKHNpemVfdClnZXRQYWdlU2l6ZTsKCgoKCgoKLSBhbGxvY0lW
YXJzOiAoQ2xhc3MpYUNsYXNzOwoKCgoKCgotIGNvcHlJVmFyczogYW5PYmplY3Q7CgoKCgoKCgot
ICh2b2lkKWZyZWVJVmFyczogYW5PYmplY3Q7CiMgNDk5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvZGVmb2JqLmgiCi0gYWxsb2NJVmFyc0NvbXBvbmVudDogKENsYXNzKWFDbGFzczsKCgoKLSBj
b3B5SVZhcnNDb21wb25lbnQ6IGFuT2JqZWN0OwoKCi0gKHZvaWQpZnJlZUlWYXJzQ29tcG9uZW50
OiBhbk9iamVjdDsKCgoKCgoKLSBnZXRDb21wb25lbnRab25lOwoKCgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdl
ICAgNTcKCgoKCgotICh2b2lkICopYWxsb2M6IChzaXplX3Qpc2l6ZTsKCgoKCgoKLSAodm9pZClm
cmVlOiAodm9pZCAqKWFCbG9jazsKCgoKCi0gKHZvaWQgKilhbGxvY0Jsb2NrOiAoc2l6ZV90KXNp
emU7CgoKCi0gKHZvaWQpZnJlZUJsb2NrOiAodm9pZCAqKWFCbG9jayBibG9ja1NpemU6IChzaXpl
X3Qpc2l6ZTsKIyA1NDUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBnZXRQ
b3B1bGF0aW9uOwoKCi0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoOiBvdXRwdXRDaGFyU3RyZWFtOwoK
Ci0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoSUQ6IG91dHB1dENoYXJTdHJlYW07CkBlbmQKCkBwcm90
b2NvbCBEZWZpbmVkQ2xhc3MgPERlZmluZWRPYmplY3Q+CgoKCi0gX0lfVXNpbmc7CisgZ2V0U3Vw
ZXJjbGFzczsKKyAoQk9PTClpc1N1YmNsYXNzOiBhQ2xhc3M7CgorICh2b2lkKXNldFR5cGVJbXBs
ZW1lbnRlZDogYVR5cGU7CisgZ2V0VHlwZUltcGxlbWVudGVkOwoKKyAoSU1QKWdldE1ldGhvZEZv
cjogKFNFTClhU2VsOwpAZW5kCgpAcHJvdG9jb2wgQ3JlYXRlZENsYXNzIDxDcmVhdGUsIERlZmlu
ZWRDbGFzcz4KCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1l
OwotIHNldENsYXNzOiBhQ2xhc3M7Ci0gc2V0U3VwZXJjbGFzczogYUNsYXNzOwotIHNldERlZmlu
aW5nQ2xhc3M6IGFDbGFzczsKLSBhdDogKFNFTClhU2VsIGFkZE1ldGhvZDogKElNUClhTWV0aG9k
OwotIGxpc3BJbkNyZWF0ZTogZXhwcjsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA1OAoKCi0gaGRmNUlu
Q3JlYXRlOiBoZGY1T2JqOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQp
aGRmNU91dFNoYWxsb3c6IGhkZjVPYmo7Ci0gKHZvaWQpdXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVy
OwotIF9JX1VzaW5nOwotIGdldERlZmluaW5nQ2xhc3M7CkBlbmQKCkBwcm90b2NvbCBCZWhhdmlv
clBoYXNlIDxDcmVhdGVkQ2xhc3M+CgoKCgotIF9JX0NyZWF0aW5nOwotICh2b2lkKXNldE5leHRQ
aGFzZTogYUNsYXNzOwoKLSBfSV9Vc2luZzsKLSBnZXROZXh0UGhhc2U7CkBlbmQKCkBwcm90b2Nv
bCBDb3B5CiMgNjIwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNp
bmc7Ci0gY29weTogKGlkIDxab25lPilhWm9uZTsKQGVuZAoKCgoKCkBwcm90b2NvbCBHZXRPd25l
cgojIDY0NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX1VzaW5nOwot
IGdldE93bmVyOwpAZW5kCgpAcHJvdG9jb2wgU2V0SW5pdGlhbFZhbHVlCiMgNjcyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CgoKCgoKCgotICh2b2lk
KXNldEluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlOwpAZW5kCgpAcHJvdG9jb2wgU3ltYm9sIDxD
cmVhdGUsIEdldE5hbWUsIENSRUFUQUJMRT4KIyA3MDYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsKCgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUg
c2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDU5CgoKCgoK
QGVuZAoKQHByb3RvY29sIEV2ZW50VHlwZSA8U3ltYm9sPgoKCgoKLSBfSV9Vc2luZzsKCi0gKHZv
aWQpcmFpc2VFdmVudDsKCgoKLSAodm9pZClyYWlzZUV2ZW50OiAoY29uc3Qgdm9pZCAqKWV2ZW50
RGF0YSwgLi4uOwoKCgoKCkBlbmQKCgpAcHJvdG9jb2wgV2FybmluZyA8RXZlbnRUeXBlLCBDUkVB
VEFCTEU+CgoKCgotIF9JX1VzaW5nOwoKLSAodm9pZClzZXRNZXNzYWdlU3RyaW5nOiAoY29uc3Qg
Y2hhciAqKW1lc3NhZ2VTdHJpbmc7CgoKLSAoY29uc3QgY2hhciAqKWdldE1lc3NhZ2VTdHJpbmc7
CgpleHRlcm4gaWQgPFdhcm5pbmc+CiAgV2FybmluZ01lc3NhZ2UsCiAgUmVzb3VyY2VBdmFpbGFi
aWxpdHksCiAgTGlicmFyeVVzYWdlLAogIERlZmF1bHRBc3N1bWVkLAogIE9ic29sZXRlRmVhdHVy
ZSwKICBPYnNvbGV0ZU1lc3NhZ2UsCiAgU2F2ZVdhcm5pbmc7CgoKCgoKQGVuZAoKQHByb3RvY29s
IEVycm9yIDxXYXJuaW5nLCBDUkVBVEFCTEU+CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjAKCgoK
ZXh0ZXJuIGlkIDxFcnJvcj4KICBTb3VyY2VNZXNzYWdlLAogIE5vdEltcGxlbWVudGVkLAogIFN1
YmNsYXNzTXVzdEltcGxlbWVudCwKICBJbnZhbGlkQ29tYmluYXRpb24sCiAgSW52YWxpZE9wZXJh
dGlvbiwKICBJbnZhbGlkQXJndW1lbnQsCiAgQ3JlYXRlU3ViY2xhc3NpbmcsCiAgQ3JlYXRlVXNh
Z2UsCiAgT3V0T2ZNZW1vcnksCiAgSW52YWxpZEFsbG9jU2l6ZSwKICBJbnRlcm5hbEVycm9yLAog
IEJsb2NrZWRPYmplY3RBbGxvYywKICBCbG9ja2VkT2JqZWN0VXNhZ2UsCiAgUHJvdG9jb2xWaW9s
YXRpb24sCiAgTG9hZEVycm9yLAogIFNhdmVFcnJvcjsKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQXJn
dW1lbnRzIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KIyA4NzYgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsKLSBzZXRBcmdjOiAodW5zaWduZWQpY291
bnQgQXJndjogKGNvbnN0IGNoYXIgKiopdGhlQXJndjsKLSBzZXRBcHBOYW1lOiAoY29uc3QgY2hh
ciAqKWFwcE5hbWU7Ci0gc2V0QXBwTW9kZVN0cmluZzogKGNvbnN0IGNoYXIgKilhcHBNb2RlU3Ry
aW5nOwotIHNldE9wdGlvbkZ1bmM6IChpbnQgKCopIChpbnQsIGNvbnN0IGNoYXIgKikpb3B0aW9u
RnVuYzsKLSBzZXRCdWdBZGRyZXNzOiAoY29uc3QgY2hhciAqKWJ1Z0FkZHJlc3M7Ci0gc2V0VmVy
c2lvbjogKGNvbnN0IGNoYXIgKil2ZXJzaW9uOwotIGFkZE9wdGlvbnM6IChzdHJ1Y3QgYXJncF9v
cHRpb24gKilvcHRpb25zOwojIDkwMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgotICh2b2lkKWFkZE9wdGlvbjogKGNvbnN0IGNoYXIgKiluYW1lIGtleTogKGludClrZXkgYXJn
OiAoY29uc3QgY2hhciAqKWFyZyBmbGFnczogKGludClmbGFncyBkb2M6IChjb25zdCBjaGFyICop
ZG9jIGdyb3VwOiAoaW50KWdyb3VwOwoKKyBjcmVhdGVBcmdjOiAoaW50KWFyZ2MgQXJndjogKGNv
bnN0IGNoYXIgKiopYXJndiBhcHBOYW1lOiAoY29uc3QgY2hhciAqKWFwcE5hbWUgdmVyc2lvbjog
KGNvbnN0IGNoYXIgKil2ZXJzaW9uIGJ1Z0FkZHJlc3M6IChjb25zdCBjaGFyICopYnVnQWRkcmVz
cyBvcHRpb25zOiAoc3RydWN0IGFyZ3Bfb3B0aW9uICopb3B0aW9ucyBvcHRpb25GdW5jOiAoaW50
ICgqKSAoaW50LCBjb25zdCBjaGFyICopKW9wdGlvbkZ1bmMgaW5oaWJpdEV4ZWN1dGFibGVTZWFy
Y2hGbGFnOiAoQk9PTClpbmhpYml0RXhlY3V0YWJsZVNlYXJjaEZsYWc7CgoKLSAoaW50KXBhcnNl
S2V5OiAoaW50KWtleSBhcmc6IChjb25zdCBjaGFyICopYXJnOwotIF9JX1NldHRpbmc7Ci0gc2V0
SW5oaWJpdEFyY2hpdmVyTG9hZEZsYWc6IChCT09MKWluaGliaXRBcmNoaXZlckxvYWRGbGFnOwot
IHNldEluaGliaXRFeGVjdXRhYmxlU2VhcmNoRmxhZzogKEJPT0wpdGhlSW5oaWJpdEV4ZWN1dGFi
bGVTZWFyY2hGbGFnOwotIHNldEJhdGNoTW9kZUZsYWc6IChCT09MKWJhdGNoTW9kZUZsYWc7Ci0g
c2V0VmFyeVNlZWRGbGFnOiAoQk9PTCl2YXJ5U2VlZEZsYWc7Ci0gc2V0VmVyYm9zZUZsYWc6IChC
T09MKXZlcmJvc2VGbGFnOwoKCgotIHNldERlZmF1bHRBcHBDb25maWdQYXRoOiAoY29uc3QgY2hh
ciAqKXBhdGg7CgoKLSBzZXREZWZhdWx0QXBwRGF0YVBhdGg6IChjb25zdCBjaGFyICopcGF0aDsK
LSBzZXRGaXhlZFNlZWQ6ICh1bnNpZ25lZClzZWVkOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDYxCgoK
CgotIF9JX1VzaW5nOwotIChCT09MKWdldEJhdGNoTW9kZUZsYWc7Ci0gKEJPT0wpZ2V0VmFyeVNl
ZWRGbGFnOwotIChCT09MKWdldEZpeGVkU2VlZEZsYWc7Ci0gKHVuc2lnbmVkKWdldEZpeGVkU2Vl
ZDsKLSAoQk9PTClnZXRWZXJib3NlRmxhZzsKLSAoY29uc3QgY2hhciAqKWdldEFwcE5hbWU7Ci0g
KGNvbnN0IGNoYXIgKilnZXRBcHBNb2RlU3RyaW5nOwotIChpbnQpZ2V0QXJnYzsKLSAoaW50KWdl
dExhc3RBcmdJbmRleDsKLSAoY29uc3QgY2hhciAqKilnZXRBcmd2OwotIChjb25zdCBjaGFyICop
Z2V0RXhlY3V0YWJsZVBhdGg7Ci0gKGNvbnN0IGNoYXIgKilnZXRTd2FybUhvbWU7Ci0gKGNvbnN0
IGNoYXIgKilnZXRDb25maWdQYXRoOwotIChjb25zdCBjaGFyICopZ2V0RGF0YVBhdGg7CgotIChj
b25zdCBjaGFyICopZ2V0QXBwRGF0YVBhdGg7CgoKLSAoY29uc3QgY2hhciAqKWdldEFwcENvbmZp
Z1BhdGg7Ci0gKEJPT0wpZ2V0U2hvd0N1cnJlbnRUaW1lRmxhZzsKLSAoQk9PTClnZXRJbmhpYml0
QXJjaGl2ZXJMb2FkRmxhZzsKCkBlbmQKCkBwcm90b2NvbCBBcmNoaXZlciA8Q3JlYXRlLCBEcm9w
LCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRJbmhpYml0TG9hZEZsYWc6IChC
T09MKWluaGliaXRMb2FkRmxhZzsKCgotIHNldFBhdGg6IChjb25zdCBjaGFyICopcGF0aDsKCgoK
LSBzZXRTeXN0ZW1BcmNoaXZlckZsYWc6IChCT09MKXN5c3RlbUFyY2hpdmVyRmxhZzsKCgotIHNl
dERlZmF1bHRQYXRoOwoKCi0gc2V0RGVmYXVsdEFwcFBhdGg7Ci0gX0lfVXNpbmc7Ci0gKHZvaWQp
cmVnaXN0ZXJDbGllbnQ6IGNsaWVudDsKLSAodm9pZCl1bnJlZ2lzdGVyQ2xpZW50OiBjbGllbnQ7
CgoKCi0gKHZvaWQpcHV0RGVlcDogKGNvbnN0IGNoYXIgKilrZXkgb2JqZWN0OiBvYmplY3Q7CgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAg
ICAgICAgICAgICAgIFBhZ2UgICA2MgoKCi0gKHZvaWQpcHV0U2hhbGxvdzogKGNvbnN0IGNoYXIg
KilrZXkgb2JqZWN0OiBvYmplY3Q7CgoKLSBnZXRPYmplY3Q6IChjb25zdCBjaGFyICopa2V5OwoK
Ci0gZ2V0V2l0aFpvbmU6IChpZCA8Wm9uZT4pYVpvbmUga2V5OiAoY29uc3QgY2hhciAqKWtleTsK
CgoKLSAodm9pZClzeW5jOwpAZW5kCgpAcHJvdG9jb2wgTGlzcEFyY2hpdmVyIDxBcmNoaXZlciwg
Q1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpv
bmUgc2V0UGF0aDogKGNvbnN0IGNoYXIgKilwYXRoOwoKLSBfSV9TZXR0aW5nOwotIF9JX1VzaW5n
OwpAZW5kCgpAcHJvdG9jb2wgSERGNUFyY2hpdmVyIDxBcmNoaXZlciwgQ1JFQVRBQkxFPgoKCgoK
Ci0gX0lfQ3JlYXRpbmc7CgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0UGF0aDogKGNv
bnN0IGNoYXIgKilwYXRoOwoKLSBfSV9TZXR0aW5nOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9j
b2wgSERGNSA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRX
cml0ZUZsYWc6IChCT09MKXdyaXRlRmxhZzsKLSBzZXREYXRhc2V0RmxhZzogKEJPT0wpZGF0YXNl
dEZsYWc7Ci0gc2V0RXh0ZW5zaWJsZVZlY3RvclR5cGU6IChmY2FsbF90eXBlX3QpdHlwZTsKLSBz
ZXRFeHRlbnNpYmxlRG91YmxlVmVjdG9yOwotIHNldFBhcmVudDogcGFyZW50OwotIHNldENvbXBv
dW5kVHlwZTogY29tcG91bmRUeXBlOwotIHNldENvdW50OiAodW5zaWduZWQpY291bnQ7Ci0gX0lf
U2V0dGluZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjMKCgoKCi0gc2V0TmFtZTogKGNvbnN0IGNo
YXIgKiluYW1lOwotIHNldEJhc2VUeXBlT2JqZWN0OiBiYXNlVHlwZU9iamVjdDsKLSBfSV9Vc2lu
ZzsKLSAodm9pZClpdGVyYXRlOiAoaW50ICgqKSAoaWQgPEhERjU+aGRmNU9iaikpaXRlcmF0ZUZ1
bmM7Ci0gKHZvaWQpaXRlcmF0ZTogKGludCAoKikgKGlkIDxIREY1PmhkZjVPYmopKWl0ZXJhdGVG
dW5jIGRyb3A6IChCT09MKWRyb3BGbGFnOwotIChCT09MKWdldERhdGFzZXRGbGFnOwotIChCT09M
KWdldFdyaXRlRmxhZzsKLSAoc2l6ZV90KWdldERhdGFzZXRSYW5rOwotIChzaXplX3QpZ2V0RGF0
YXNldERpbWVuc2lvbjogKHVuc2lnbmVkKWRpbU51bWJlcjsKLSAodW5zaWduZWQpZ2V0Q291bnQ7
Ci0gZ2V0Q29tcG91bmRUeXBlOwotIGdldENsYXNzOwotICh2b2lkKWFzc2lnbkl2YXI6IG9iajsK
Ci0gKEJPT0wpY2hlY2tOYW1lOiAoY29uc3QgY2hhciAqKW5hbWU7Ci0gKEJPT0wpY2hlY2tEYXRh
c2V0TmFtZTogKGNvbnN0IGNoYXIgKilkYXRhc2V0TmFtZTsKCi0gKHZvaWQpbG9hZERhdGFzZXQ6
ICh2b2lkICopcHRyOwotICh2b2lkKXN0b3JlQXNEYXRhc2V0OiAoY29uc3QgY2hhciAqKW5hbWUg
dHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlwZU5hbWUgdHlwZTogKGZjYWxsX3R5cGVfdCl0eXBl
IHJhbms6ICh1bnNpZ25lZClyYW5rIGRpbXM6ICh1bnNpZ25lZCAqKWRpbXMgcHRyOiAodm9pZCAq
KXB0cjsKCi0gKHZvaWQpYWRkRG91YmxlVG9WZWN0b3I6IChkb3VibGUpdmFsOwoKLSAodm9pZClz
dG9yZVR5cGVOYW1lOiAoY29uc3QgY2hhciAqKXR5cGVOYW1lOwotICh2b2lkKXN0b3JlQ29tcG9u
ZW50VHlwZU5hbWU6IChjb25zdCBjaGFyICopdHlwZU5hbWU7Ci0gKHZvaWQpc2hhbGxvd0xvYWRP
YmplY3Q6IG9iajsKLSAodm9pZClzaGFsbG93U3RvcmVPYmplY3Q6IG9iajsKLSAodm9pZCluYW1l
UmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVtYmVyIG5hbWU6IChjb25zdCBjaGFyICopcmVjb3Jk
TmFtZTsKLSAodm9pZCludW1iZXJSZWNvcmQ6ICh1bnNpZ25lZClyZWNvcmROdW1iZXI7Ci0gKHZv
aWQpc2VsZWN0UmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVtYmVyOwoKLSAoY29uc3QgY2hhciAq
KilyZWFkUm93TmFtZXM7Ci0gKHZvaWQpd3JpdGVSb3dOYW1lczsKLSAodm9pZCl3cml0ZUxldmVs
czsKCi0gKHZvaWQpc3RvcmVBdHRyaWJ1dGU6IChjb25zdCBjaGFyICopYXR0cmlidXRlTmFtZSB2
YWx1ZTogKGNvbnN0IGNoYXIgKil2YWx1ZVN0cmluZzsKLSAodm9pZClpdGVyYXRlQXR0cmlidXRl
czogKGludCAoKikgKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpKWl0ZXJhdGVG
dW5jOwotIChjb25zdCBjaGFyICopZ2V0QXR0cmlidXRlOiAoY29uc3QgY2hhciAqKWF0dHJpYnV0
ZU5hbWU7Ci0gKHZvaWQpZmx1c2g7CkBlbmQKCkBwcm90b2NvbCBIREY1Q29tcG91bmRUeXBlIDxD
cmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgotIF9JX0NyZWF0aW5nOwotIHNldFByb3RvdHlwZTog
cHJvdG90eXBlOwotIF9JX1VzaW5nOwotIGdldFByb3RvdHlwZTsKQGVuZAoKdHlwZWRlZiB2b2lk
ICpKT0JKRUNUOwp0eXBlZGVmIGNvbnN0IHZvaWQgKkNPTU9CSkVDVDsKCkBwcm90b2NvbCBGQXJn
dW1lbnRzIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjQK
CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRMYW5ndWFnZTogKGlkIDxTeW1ib2w+KWxhbmd1YWdlVHlw
ZTsKCgotIHNldFNlbGVjdG9yOiAoU0VMKWFTZWw7Ci0gc2V0SmF2YVNpZ25hdHVyZTogKGNvbnN0
IGNoYXIgKilqYXZhU2lnbmF0dXJlOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRTZWxl
Y3RvcjogKFNFTClhU2VsOwotIGFkZEFyZ3VtZW50OiAodHlwZXNfdCAqKXZhbHVlIG9mVHlwZTog
KGZjYWxsX3R5cGVfdCl0eXBlOwotIGFkZEFyZ3VtZW50OiAodm9pZCAqKXZhbHVlIG9mT2JqQ1R5
cGU6IChjaGFyKXR5cGU7Ci0gYWRkQ2hhcjogKGNoYXIpdmFsdWU7Ci0gYWRkQm9vbGVhbjogKEJP
T0wpdmFsdWU7Ci0gYWRkVW5zaWduZWRDaGFyOiAodW5zaWduZWQgY2hhcil2YWx1ZTsKLSBhZGRT
aG9ydDogKHNob3J0KXZhbHVlOwotIGFkZFVuc2lnbmVkU2hvcnQ6ICh1bnNpZ25lZCBzaG9ydCl2
YWx1ZTsKLSBhZGRJbnQ6IChpbnQpdmFsdWU7Ci0gYWRkVW5zaWduZWQ6ICh1bnNpZ25lZCl2YWx1
ZTsKLSBhZGRMb25nOiAobG9uZyl2YWx1ZTsKLSBhZGRVbnNpZ25lZExvbmc6ICh1bnNpZ25lZCBs
b25nKXZhbHVlOwotIGFkZExvbmdMb25nOiAobG9uZyBsb25nKXZhbHVlOwotIGFkZFVuc2lnbmVk
TG9uZ0xvbmc6ICh1bnNpZ25lZCBsb25nIGxvbmcpdmFsdWU7Ci0gYWRkRmxvYXQ6IChmbG9hdCl2
YWx1ZTsKLSBhZGREb3VibGU6IChkb3VibGUpdmFsdWU7Ci0gYWRkTG9uZ0RvdWJsZTogKGxvbmcg
ZG91YmxlKXZhbHVlOwotIGFkZFN0cmluZzogKGNvbnN0IGNoYXIgKil2YWx1ZTsKLSBhZGRPYmpl
Y3Q6IG9iajsKLSBhZGRTZWxlY3RvcjogKFNFTClhU2VsOwotIGFkZEphdmFPYmplY3Q6IChKT0JK
RUNUKW9iajsKLSBzZXRPYmpDUmV0dXJuVHlwZTogKGNoYXIpdHlwZTsKLSBzZXRSZXR1cm5UeXBl
OiAoZmNhbGxfdHlwZV90KXJldFR5cGU7Ci0gc2V0Qm9vbGVhblJldHVyblR5cGU7Ci0gX0lfVXNp
bmc7Ci0gKHZhbF90KWdldFJldFZhbDsKLSAoaWQgPFN5bWJvbD4pZ2V0TGFuZ3VhZ2U7Ci0gKHZv
aWQgKilnZXRSZXN1bHQ7CkBlbmQKCnR5cGVkZWYgZW51bSBjYWxsVHlwZXMgeyBjY2FsbCwgQ09N
Y2FsbCwgSlNjYWxsLCBqYXZhY2FsbCwgamF2YXN0YXRpY2NhbGwsIG9iamNjYWxsIH0gY2FsbF90
OwoKQHByb3RvY29sIEZDYWxsIDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KCgotIF9JX0NyZWF0
aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSB0YXJnZXQ6IG9iagogICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0b3I6IChTRUwpc2VsCiAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50czogKGlkIDxGQXJndW1lbnRzPilmYTsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUg
dGFyZ2V0OiBvYmoKICAgICAgICAgICAgICAgICAgICAgICBtZXRob2ROYW1lOiAoY29uc3QgY2hh
ciAqKW1ldGhvZE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzOiAoaWQgPEZB
cmd1bWVudHM+KWZhOwotIHNldEFyZ3VtZW50czogYXJnczsKLSBzZXRGdW5jdGlvblBvaW50ZXI6
IChmdW5jX3QpZm47Ci0gc2V0TWV0aG9kRnJvbVNlbGVjdG9yOiAoU0VMKW1ldGhvZCBpbk9iamVj
dDogb2JqZWN0OwotIHNldE1ldGhvZEZyb21OYW1lOiAoY29uc3QgY2hhciAqKW1ldGhvZE5hbWUg
aW5PYmplY3Q6IG9iamVjdDsKLSBzZXRKYXZhTWV0aG9kRnJvbU5hbWU6IChjb25zdCBjaGFyICop
bWV0aG9kTmFtZSBpbk9iamVjdDogKEpPQkpFQ1Qpak9iajsKLSBzZXRKYXZhTWV0aG9kRnJvbU5h
bWU6IChjb25zdCBjaGFyICopbWV0aG9kTmFtZSBpbkNsYXNzOiAoY29uc3QgY2hhciAqKWNsYXNz
TmFtZTsKLSBfSV9Vc2luZzsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA2NQoKCi0gKGNhbGxfdClnZXRD
YWxsVHlwZTsKLSBnZXRBcmd1bWVudHM7Ci0gKHZvaWQpcGVyZm9ybUNhbGw7Ci0gKHZvaWQgKiln
ZXRSZXN1bHQ7Ci0gKHJldHZhbF90KWdldFJldFZhbDogKHJldHZhbF90KXJldFZhbCBidWY6ICh0
eXBlc190ICopYnVmOwotIChmdW5jX3QpZ2V0RnVuY3Rpb25Qb2ludGVyOwpleHRlcm4gdm9pZCBk
ZWZvYmpfaW5pdF9qYXZhX2NhbGxfdGFibGVzICh2b2lkICpqbmlFbnYpOwpleHRlcm4gdm9pZCB1
cGRhdGVUYXJnZXQgKGlkIGNhbGwsIGlkIHRhcmdldCk7CkBlbmQKCkBwcm90b2NvbCBTZXJpYWxp
emF0aW9uCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBsaXNwSW5DcmVhdGU6IGV4cHI7CgoKLSBoZGY1
SW5DcmVhdGU6IChpZCA8SERGNT4paGRmNU9iajsKCgoKZXh0ZXJuIGlkIGxpc3BJbiAoaWQgPFpv
bmU+IGFab25lLCBpZCBleHByKTsKCgpleHRlcm4gaWQgaGRmNUluIChpZCA8Wm9uZT4gYVpvbmUs
IGlkIDxIREY1PiBoZGY1T2JqKTsKCi0gX0lfU2V0dGluZzsKCgotIGxpc3BJbjogZXhwcjsKCgot
IGhkZjVJbjogKGlkIDxIREY1PiloZGY1T2JqOwoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpbGlzcE91
dFNoYWxsb3c6IHN0cmVhbTsKCgotICh2b2lkKWxpc3BPdXREZWVwOiBzdHJlYW07CgoKCi0gKHZv
aWQpbGlzcE91dFZhcnM6IHN0cmVhbSBkZWVwOiAoQk9PTClkZWVwRmxhZzsKCgotICh2b2lkKWhk
ZjVPdXRTaGFsbG93OiAoaWQgPEhERjU+KWhkZjVvYmo7CgoKLSAodm9pZCloZGY1T3V0RGVlcDog
KGlkIDxIREY1PiloZGY1b2JqOwoKLSAodm9pZCl1cGRhdGVBcmNoaXZlcjogYXJjaGl2ZXI7CgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgIDY2CgoKCmV4dGVybiBCT09MIGxpc3BJbkJvb2xlYW4gKGlkIGlu
ZGV4KTsKCgpleHRlcm4gaW50IGxpc3BJbkludGVnZXIgKGlkIGluZGV4KTsKCgpleHRlcm4gY29u
c3QgY2hhciAqbGlzcEluU3RyaW5nIChpZCBpbmRleCk7CgoKZXh0ZXJuIGlkIGxpc3BJbktleXdv
cmQgKGlkIGluZGV4KTsKCkBlbmQKCgpleHRlcm4gaWQgPEFyZ3VtZW50cz4gYXJndW1lbnRzOwoK
CmV4dGVybiBpZCA8SERGNUFyY2hpdmVyPiBoZGY1QXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxMaXNw
QXJjaGl2ZXI+IGxpc3BBcmNoaXZlcjsKCgpleHRlcm4gaWQgPEhERjVBcmNoaXZlcj4gaGRmNUFw
cEFyY2hpdmVyOwoKCmV4dGVybiBpZCA8TGlzcEFyY2hpdmVyPiBsaXNwQXBwQXJjaGl2ZXI7CgoK
ZXh0ZXJuIGlkIDxTeW1ib2w+IHRfQnl0ZUFycmF5LCB0X0xlYWZPYmplY3QsIHRfUG9wdWxhdGlv
bk9iamVjdDsKCgpleHRlcm4gaWQgPFN5bWJvbD4gTGFuZ3VhZ2VDT00sIExhbmd1YWdlSlMsIExh
bmd1YWdlSmF2YSwgTGFuZ3VhZ2VPYmpjOwoKCgoKCgpleHRlcm4gdm9pZCBfb2JqX2Zvcm1hdElE
U3RyaW5nIChjaGFyICpidWZmZXIsIGlkIGFuT2JqZWN0KTsKCgoKZXh0ZXJuIENsYXNzIG9iamNf
Z2V0X2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gaWQgZGVmb2JqX2xvb2t1cF90
eXBlIChjb25zdCBjaGFyICpuYW1lKTsKCgoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai90eXBlcy5oIiAxCmV4dGVybiB2b2lkICpfZGVmb2JqX1tdOwoKZXh0ZXJuIGlkIEdl
dE5hbWU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjcKCgpleHRlcm4gaWQgRGVmaW5lZE9iamVjdDsK
ZXh0ZXJuIGlkIEN1c3RvbWl6ZTsKZXh0ZXJuIGlkIENyZWF0ZTsKZXh0ZXJuIGlkIERyb3A7CmV4
dGVybiBpZCBab25lOwpleHRlcm4gaWQgRGVmaW5lZENsYXNzOwpleHRlcm4gaWQgQ3JlYXRlZENs
YXNzOwpleHRlcm4gaWQgQmVoYXZpb3JQaGFzZTsKZXh0ZXJuIGlkIENvcHk7CmV4dGVybiBpZCBH
ZXRPd25lcjsKZXh0ZXJuIGlkIFNldEluaXRpYWxWYWx1ZTsKZXh0ZXJuIGlkIFN5bWJvbDsKZXh0
ZXJuIGlkIEV2ZW50VHlwZTsKZXh0ZXJuIGlkIFdhcm5pbmc7CmV4dGVybiBpZCBFcnJvcjsKZXh0
ZXJuIGlkIEFyZ3VtZW50czsKZXh0ZXJuIGlkIEFyY2hpdmVyOwpleHRlcm4gaWQgTGlzcEFyY2hp
dmVyOwpleHRlcm4gaWQgSERGNUFyY2hpdmVyOwpleHRlcm4gaWQgSERGNTsKZXh0ZXJuIGlkIEhE
RjVDb21wb3VuZFR5cGU7CmV4dGVybiBpZCBGQXJndW1lbnRzOwpleHRlcm4gaWQgRkNhbGw7CmV4
dGVybiBpZCBTZXJpYWxpemF0aW9uOwoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Rl
Zm9iai9jbGFzc2VzLmgiIDEKZXh0ZXJuIGlkIGlkX0FyY2hpdmVyX2M7CmV4dGVybiBpZCBpZF9B
cHBsaWNhdGlvbjsKZXh0ZXJuIGlkIGlkX0xpc3BBcmNoaXZlcl9jOwpleHRlcm4gaWQgaWRfSERG
NUFyY2hpdmVyX2M7CmV4dGVybiBpZCBpZF9Bcmd1bWVudHNfYzsKZXh0ZXJuIGlkIGlkX0NyZWF0
ZURyb3BfczsKZXh0ZXJuIGlkIGlkX0NyZWF0ZURyb3A7CmV4dGVybiBpZCBpZF9DdXN0b21pemVf
czsKZXh0ZXJuIGlkIGlkX0NyZWF0ZUJ5X2M7CmV4dGVybiBpZCBpZF9DcmVhdGVfYnljb3B5Owpl
eHRlcm4gaWQgaWRfQ3JlYXRlX2J5c2VuZDsKZXh0ZXJuIGlkIGlkX0NyZWF0ZV9ieWJvdGg7CmV4
dGVybiBpZCBpZF9DbGFzc19zOwpleHRlcm4gaWQgaWRfQ3JlYXRlZENsYXNzX3M7CmV4dGVybiBp
ZCBpZF9CZWhhdmlvclBoYXNlX3M7CmV4dGVybiBpZCBpZF9PYmplY3RfczsKZXh0ZXJuIGlkIGlk
X0hERjVDb21wb3VuZFR5cGVfYzsKZXh0ZXJuIGlkIGlkX0hERjVfYzsKZXh0ZXJuIGlkIGlkX1R5
cGVfYzsKZXh0ZXJuIGlkIGlkX1Byb2dyYW1Nb2R1bGVfYzsKZXh0ZXJuIGlkIGlkX01vZHVsZV9z
dXBlcl87CmV4dGVybiBpZCBpZF9TeW1ib2xfYzsKZXh0ZXJuIGlkIGlkX0V2ZW50VHlwZV9jOwpl
eHRlcm4gaWQgaWRfV2FybmluZ19jOwpleHRlcm4gaWQgaWRfRXJyb3JfYzsKZXh0ZXJuIGlkIGlk
X1pvbmVfYzsKZXh0ZXJuIGlkIGlkX0NvbXBvbmVudFpvbmVfYzsKZXh0ZXJuIGlkIGlkX0ZDYWxs
X2M7CmV4dGVybiBpZCBpZF9GQXJndW1lbnRzX2M7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjgKCgpl
eHRlcm4gaWQgaWRfRGlyZWN0b3J5RW50cnk7CmV4dGVybiBpZCBpZF9PYmplY3RFbnRyeTsKZXh0
ZXJuIGlkIGlkX1NlbGVjdG9yRW50cnk7CmV4dGVybiBpZCBpZF9EaXJlY3Rvcnk7CmV4dGVybiBp
ZCBpZF9KYXZhUHJveHk7CmV4dGVybiBpZCBpZF9KYXZhQ2xhc3NQcm94eTsKZXh0ZXJuIGlkIGlk
X0phdmFDb2xsZWN0aW9uOwpleHRlcm4gaWQgaWRfSmF2YUNvbGxlY3Rpb25JbmRleDsKZXh0ZXJu
IGlkIGlkX0NPTVByb3h5OwojIDMxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL3R5
cGVzLmgiIDIKIyAxMjU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKCmV4
dGVybiB2b2lkIGluaXREZWZvYmogKGlkIDxBcmd1bWVudHM+IGFyZ3VtZW50cyk7CgoKZXh0ZXJu
IHZvaWQgX29ial9pbml0TW9kdWxlICh2b2lkICptb2R1bGUpOwoKCgoKCmV4dGVybiBpZCBfb2Jq
X2dsb2JhbFpvbmU7CgoKZXh0ZXJuIGlkIF9vYmpfc2NyYXRjaFpvbmU7CiMgMTI3OSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgpleHRlcm4gQk9PTCBfb2JqX2RlYnVnOwoKCgpl
eHRlcm4gRklMRSAqX29ial94ZXJyb3I7CgpleHRlcm4gRklMRSAqX29ial94ZGVidWc7CgoKZXh0
ZXJuIHZvaWQgeHNldG5hbWUgKGlkIGFuT2JqZWN0LCBjb25zdCBjaGFyICpuYW1lKTsKCgpleHRl
cm4gdm9pZCB4cHJpbnQgKGlkIGFuT2JqZWN0KTsKCgpleHRlcm4gdm9pZCB4cHJpbnRpZCAoaWQg
YW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhmcHJpbnQgKGlkIGFuT2JqZWN0KTsKCgpleHRlcm4g
dm9pZCB4ZnByaW50aWQgKGlkIGFuT2JqZWN0KTsKCgpleHRlcm4gdm9pZCB4ZXhlYyAoaWQgYW5P
YmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpOwoKCmV4dGVybiB2b2lkIHhmZXhlYyAoaWQgYW5PYmpl
Y3QsIGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgNjkKCgpleHRlcm4g
aWQgbmFtZVRvT2JqZWN0IChjb25zdCBjaGFyICpuYW1lKTsKIyAxMzI1ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqLmgiCmV4dGVybiBjaGFyICp6c3RyZHVwIChpZCA8Wm9uZT4gYVpv
bmUsIGNvbnN0IGNoYXIgKnN0cik7CiMgMTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovRGVmT2JqZWN0LmgiIDIKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3N3YXJtY29u
ZmlnLmgiIDEKIyAxNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3Qu
aCIgMgoKQGNsYXNzIE9iamVjdEVudHJ5OwoKCkBpbnRlcmZhY2UgT2JqZWN0X3M6IE9iamVjdCA8
RGVmaW5lZENsYXNzLCBTZXJpYWxpemF0aW9uLCBHZXROYW1lPgp7CkBwdWJsaWMKCgogIHVuc2ln
bmVkIHpiaXRzOwogIE9iamVjdEVudHJ5ICpmb3JlaWduRW50cnk7Cn0KIyA0MSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIKLSAoY29uc3QgY2hhciAqKWdldE5h
bWU7CisgKEJPT0wpcmVzcG9uZHNUbzogKFNFTClhU2VsOwotIChCT09MKXJlc3BvbmRzVG86IChT
RUwpYVNlbDsKKyAoQk9PTCljb25mb3Jtc1RvOiAoUHJvdG9jb2wgKilhUHJvdG9jb2w7CisgZ2V0
Q2xhc3M7Ci0gZ2V0Q2xhc3M7Ci0gZ2V0Wm9uZTsKLSAodm9pZClkcm9wQWxsb2NhdGlvbnM6IChC
T09MKWNvbXBvbmVudEFsbG9jOwotICh2b2lkKWRyb3A7Ci0gKHJlZl90KWFkZFJlZjogKG5vdGlm
eV90KW5vdGlmeUZ1bmN0aW9uIHdpdGhBcmd1bWVudDogKHZvaWQgKilhcmc7OwotICh2b2lkKXJl
bW92ZVJlZjogKHJlZl90KXJlZlZhbDsKKyBnZXRTdXBlcmNsYXNzOworIChCT09MKWlzU3ViY2xh
c3M6IGFDbGFzczsKKyAodm9pZClzZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOworIGdldFR5cGVJ
bXBsZW1lbnRlZDsKKyBnZXRPd25lcjsKKyAoSU1QKWdldE1ldGhvZEZvcjogKFNFTClhU2VsOwor
IGdldERlZmluaW5nQ2xhc3M7CisgZ2V0TmV4dFBoYXNlOworIHNlbGY7Ci0gZ2V0VHlwZTsKLSAo
aW50KWNvbXBhcmU6IGFuT2JqZWN0OwotIHBlcmZvcm06IChTRUwpYVNlbDsKLSBwZXJmb3JtOiAo
U0VMKWFTZWwgd2l0aDogYW5PYmplY3QxOwotIHBlcmZvcm06IChTRUwpYVNlbCB3aXRoOiBhbk9i
amVjdDEgd2l0aDogYW5PYmplY3QyOwotIHBlcmZvcm06IChTRUwpYVNlbCB3aXRoOiBhbk9iamVj
dDEgd2l0aDogYW5PYmplY3QyIHdpdGg6IGFuT2JqZWN0MzsKLSAodm9pZClzZXREaXNwbGF5TmFt
ZTogKGNvbnN0IGNoYXIgKilhTmFtZTsKLSAoY29uc3QgY2hhciAqKWdldERpc3BsYXlOYW1lOwot
IChjb25zdCBjaGFyICopZ2V0T2JqZWN0TmFtZTsKLSAoY29uc3QgY2hhciAqKWdldFR5cGVOYW1l
OwotICh2b2lkKWRlc2NyaWJlOiBvdXRwdXRDaGFyU3RyZWFtOwotICh2b2lkKWRlc2NyaWJlSUQ6
IG91dHB1dENoYXJTdHJlYW07Ci0gKHZvaWQpeHByaW50OwotICh2b2lkKXhwcmludGlkOwotICh2
b2lkKXhmcHJpbnQ7Ci0gKHZvaWQpeGZwcmludGlkOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDcwCgoK
LSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gbGlzcEluOiBleHByOwotIGhkZjVJbkNyZWF0ZTogZXhw
cjsKLSBoZGY1SW46IGV4cHI7Ci0gKHZvaWQpbGlzcE91dFZhcnM6IHN0cmVhbSBkZWVwOiAoQk9P
TClkZWVwRmxhZzsKLSAodm9pZClsaXNwT3V0RGVlcDogc3RyZWFtOwotICh2b2lkKWxpc3BPdXRT
aGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpaGRmNU91dERlZXA6IGhkZjVvYmo7Ci0gKHZvaWQpaGRm
NU91dFNoYWxsb3c6IGhkZjVvYmo7Ci0gKHZvaWQpdXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwpA
ZW5kCgpleHRlcm4gaWQgbGlzcEluIChpZCBhWm9uZSwgaWQgZXhwcik7CgpleHRlcm4gQk9PTCBs
aXNwSW5Cb29sZWFuIChpZCBpbmRleCk7CmV4dGVybiBpbnQgbGlzcEluSW50ZWdlciAoaWQgaW5k
ZXgpOwpleHRlcm4gY29uc3QgY2hhciAqbGlzcEluU3RyaW5nIChpZCBpbmRleCk7CmV4dGVybiBp
ZCBsaXNwSW5LZXl3b3JkIChpZCBpbmRleCk7CiMgMTIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvZGVmb2JqL0RlZk9iamVjdC5oIgpleHRlcm4gSU1QIGdldF9pbXAgKENsYXNzIGNsYXNzLCBT
RUwgc2VsKTsKCgoKCmV4dGVybiBCT09MIHJlc3BvbmRzVG8gKGlkIGFuT2JqZWN0LCBTRUwgYVNl
bCk7CgoKCgoKZXh0ZXJuIElNUCBnZXRNZXRob2RGb3IgKGlkIGFuT2JqZWN0LCBTRUwgYVNlbCk7
CiMgMTU0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIgp0eXBl
ZGVmIHN0cnVjdCBtYXBhbGxvYyAqbWFwYWxsb2NfdDsKCnN0cnVjdCBtYXBhbGxvYyB7CiAgdm9p
ZCAoKm1hcHBpbmdGdW5jdGlvbikgKG1hcGFsbG9jX3QgbWFwYWxsb2MsIEJPT0wgb2JqZWN0QWxs
b2NhdGlvbik7CiAgdm9pZCAqYWxsb2M7CiAgaWQgPFN5bWJvbD4gZGVzY3JpcHRvcjsKICBpZCB6
b25lOwogIHNpemVfdCBzaXplOwp9OwojIDE0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVm
b2JqL0N1c3RvbWl6ZS5oIiAyCiMgMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmov
Q3VzdG9taXplLmgiCmV4dGVybiBpZCBDcmVhdGluZywgU2V0dGluZywgVXNpbmcsIENyZWF0aW5n
T25seSwgVXNpbmdPbmx5OwoKCgoKQGludGVyZmFjZSBDdXN0b21pemVfczogT2JqZWN0X3MKCisg
Y3VzdG9taXplQmVnaW46IGFab25lOwotIGN1c3RvbWl6ZUVuZDsKLSBjdXN0b21pemVDb3B5OiBh
Wm9uZTsKKyBjdXN0b21pemVCZWdpbkVuZDogYVpvbmU7Ci0gX3NldENyZWF0ZUJ5XzogKENsYXNz
KXN1YmNsYXNzIG1lc3NhZ2U6IChTRUwpbWVzc2FnZVNlbGVjdG9yIHRvOiBhbk9iamVjdDsKLSAo
dm9pZClfc2V0Q3JlYXRlQnlDb3B5XzsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3MQoKCi0gKHZvaWQp
X3NldENyZWF0ZUJ5TWVzc2FnZV86IChTRUwpbWVzc2FnZVNlbGVjdG9yIHRvOiBhbk9iamVjdDsK
LSAodm9pZClfc2V0Q3JlYXRlQnlNZXNzYWdlXzogKFNFTCltZXNzYWdlU2VsZWN0b3IgdG9Db3B5
OiBhbk9iamVjdDsKLSAodm9pZClfc2V0UmVjdXN0b21pemVfOiBhbk9iamVjdDsKKyAodm9pZClz
ZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOwpAZW5kCiMgNTYgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9kZWZvYmovQ3VzdG9taXplLmgiCmV4dGVybiBpbmxpbmUgQk9PTApfb2JqX2N1c3RvbWl6
ZSAoaWQgYW5PYmplY3QpCnsKICByZXR1cm4gKCgqKENsYXNzICopKGFuT2JqZWN0KSktPmluZm8g
JiAweDIwMCkgIT0gMDsKfQojIDgyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1
c3RvbWl6ZS5oIgpAaW50ZXJmYWNlIENyZWF0ZUJ5X2M6IE9iamVjdF9zCnsKQHB1YmxpYwogIGlk
IGltcGxlbWVudGVkVHlwZTsKICBpZCBjcmVhdGVSZWNlaXZlcjsKICBTRUwgY3JlYXRlTWVzc2Fn
ZTsKICBJTVAgY3JlYXRlTWV0aG9kOwogIGlkIHJlY3VzdG9taXplOwp9CgotIGNyZWF0ZUJlZ2lu
OiBhWm9uZTsKLSBjdXN0b21pemVCZWdpbjogYVpvbmU7Ci0gKHZvaWQpbWFwQWxsb2NhdGlvbnM6
IChtYXBhbGxvY190KW1hcGFsbG9jOwpAZW5kCgpAaW50ZXJmYWNlIENyZWF0ZV9ieWNvcHk6IENy
ZWF0ZUJ5X2MKCi0gY3JlYXRlOiBhWm9uZTsKQGVuZAoKQGludGVyZmFjZSBDcmVhdGVfYnlzZW5k
OiBDcmVhdGVCeV9jCgotIGNyZWF0ZTogYVpvbmU7CkBlbmQKCkBpbnRlcmZhY2UgQ3JlYXRlX2J5
Ym90aDogQ3JlYXRlQnlfYwoKLSBjcmVhdGU6IGFab25lOwpAZW5kCgoKCgpleHRlcm4gaW5saW5l
IENsYXNzCmdldE5leHRQaGFzZSAoaWQgYUNsYXNzKQp7CiAgcmV0dXJuIChDbGFzcykgKChCZWhh
dmlvclBoYXNlX3MgKikgYUNsYXNzKS0+bmV4dFBoYXNlOwp9CgoKCgpleHRlcm4gaW5saW5lIHZv
aWQKc2V0TmV4dFBoYXNlIChpZCBhbk9iamVjdCkKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3MgoKCnsK
ICAqKENsYXNzICopIGFuT2JqZWN0ID0gKENsYXNzKSAoKihCZWhhdmlvclBoYXNlX3MgKiopIGFu
T2JqZWN0KS0+bmV4dFBoYXNlOwp9CiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovQ3JlYXRlLmgiIDIKCgoKCkBpbnRlcmZhY2UgQ3JlYXRlRHJvcF9zOiBDdXN0b21pemVfcwoK
KyBjcmVhdGU6IGFab25lOworIGNyZWF0ZUJlZ2luOiBhWm9uZTsKLSBjcmVhdGVFbmQ7CkBlbmQK
CkBpbnRlcmZhY2UgQ3JlYXRlRHJvcDogQ3JlYXRlRHJvcF9zCgotIGNyZWF0ZUVuZDsKQGVuZAoj
IDEwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2FybU9iamVjdC5oIiAy
CiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMQojIDIwICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmouaCIgMQojIDIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0
YmFzZS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDEKIyAy
NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCiMgMSAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2NvbGxlY3Rpb25zLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IiAxCiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIiAyCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2V4dGVybnZhci5oIiAxCiMgMTQgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIiAyCiMgMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9jb2xsZWN0aW9ucy5oIgpAcHJvdG9jb2wgT2Zmc2V0cwojIDQyICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCi0gYXRPZmZzZXQ6ICh1bnNp
Z25lZClvZmZzZXQ7CgoKCi0gYXRPZmZzZXQ6ICh1bnNpZ25lZClvZmZzZXQgcHV0OiBhbk9iamVj
dDsKCgotIGdldEZpcnN0OwoKCi0gZ2V0TGFzdDsKQGVuZAoKQHByb3RvY29sIEZvckVhY2gKIyA3
OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfVXNpbmc7Ci0g
KHZvaWQpZm9yRWFjaDogKFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpZm9yRWFjaDogKFNFTClhU2Vs
ZWN0b3IgOiBhcmcxOwotICh2b2lkKWZvckVhY2g6IChTRUwpYVNlbGVjdG9yIDogYXJnMSA6IGFy
ZzI7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAg
ICAgICAgICAgICAgICAgICBQYWdlICAgNzMKCgotICh2b2lkKWZvckVhY2g6IChTRUwpYVNlbGVj
dG9yIDogYXJnMSA6IGFyZzIgOiBhcmczOwoKLSAodm9pZClkZXNjcmliZUZvckVhY2g6IG91dHB1
dENoYXJTdHJlYW07Ci0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoSUQ6IG91dHB1dENoYXJTdHJlYW07
CgpAZW5kCgpAcHJvdG9jb2wgRm9yRWFjaEtleQoKCgoKCi0gX0lfVXNpbmc7Ci0gKHZvaWQpZm9y
RWFjaEtleTogKFNFTClhU2VsZWN0b3I7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0
b3IgOiBhcmcxOwotICh2b2lkKWZvckVhY2hLZXk6IChTRUwpYVNlbGVjdG9yIDogYXJnMSA6IGFy
ZzI7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3IgOiBhcmcxIDogYXJnMiA6IGFy
ZzM7CkBlbmQKCkBwcm90b2NvbCBJbmRleCA8RGVmaW5lZE9iamVjdCwgRHJvcCwgUkVUVVJOQUJM
RT4KIyAxNTcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1Vz
aW5nOwoKCi0gZ2V0Q29sbGVjdGlvbjsKCgoKCgoKLSBuZXh0OwoKCgoKLSBwcmV2OwoKCgoKLSBm
aW5kTmV4dDogYW5PYmplY3Q7CgoKCgotIGZpbmRQcmV2OiBhbk9iamVjdDsKIyAxOTEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIGdldDsKCgoKCi0gcHV0OiBhbk9i
amVjdDsKIyAyMDkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAg
ICAgICAgICAgUGFnZSAgIDc0CgoKLSByZW1vdmU7CiMgMjUzICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAoaWQgPFN5bWJvbD4pZ2V0TG9jOwojIDI2NyAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKHZvaWQpc2V0TG9jOiAoaWQgPFN5
bWJvbD4pbG9jU3ltYm9sOwojIDI4OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rp
b25zLmgiCi0gKGludClnZXRPZmZzZXQ7CgoKCgoKCgotIHNldE9mZnNldDogKHVuc2lnbmVkKW9m
ZnNldDsKIyAzMDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIChp
bnQpY29tcGFyZTogYW5JbmRleDsKIyAzMjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xs
ZWN0aW9ucy5oIgpleHRlcm4gaWQgPFN5bWJvbD4gU3RhcnQsIEVuZCwgQmV0d2VlbiwgUmVtb3Zl
ZCwgTWVtYmVyOwoKCgoKCgoKZXh0ZXJuIGlkIDxFcnJvcj4gT2Zmc2V0T3V0T2ZSYW5nZSwgTm9N
ZW1iZXJzLAogIEFscmVhZHlBdEVuZCwgQWxyZWFkeUF0U3RhcnQsIEludmFsaWRJbmRleExvYywg
SW52YWxpZExvY1N5bWJvbDsKCkBlbmQKCkBwcm90b2NvbCBQZXJtdXRlZEluZGV4IDxJbmRleCwg
UkVUVVJOQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwotIHNldENvbGxlY3Rpb246IGFDb2xsZWN0
aW9uOwotIHNldFVuaWZvcm1SYW5kb206IHJuZDsKLSBfSV9Vc2luZzsKLSByZXNodWZmbGU7CkBl
bmQ7CgpAcHJvdG9jb2wgQ29sbGVjdGlvbiA8Q3JlYXRlLCBTZXRJbml0aWFsVmFsdWUsIENvcHks
IERyb3AsIE9mZnNldHMsIEZvckVhY2g+CiMgNDA3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
Y29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCi0gKHZvaWQpc2V0UmVwbGFjZU9u
bHk6IChCT09MKXJlcGxhY2VPbmx5OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3NQoKCi0gKHZvaWQp
c2V0SW5kZXhGcm9tTWVtYmVyTG9jOiAoaW50KWJ5dGVPZmZzZXQ7CgotIF9JX1VzaW5nOwoKCi0g
Y29weTogKGlkIDxab25lPilhWm9uZTsKCgotIChCT09MKWdldFJlcGxhY2VPbmx5OwoKCgoKCi0g
KHVuc2lnbmVkKWdldENvdW50OwojIDQ0MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxl
Y3Rpb25zLmgiCi0gKEJPT0wpY29udGFpbnM6IGFNZW1iZXI7CgoKCgoKCi0gcmVtb3ZlOiBhTWVt
YmVyOwojIDQ1NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKHZv
aWQpcmVtb3ZlQWxsOwoKCi0gKHZvaWQpZGVsZXRlQWxsOwoKCi0gKEJPT0wpYWxsU2FtZUNsYXNz
OwoKCgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlkIDxab25lPilhWm9uZTsKCi0gKGlkIDxQZXJt
dXRlZEluZGV4PiliZWdpblBlcm11dGVkOiAoaWQgPFpvbmU+KWFab25lOwpAZW5kCgoKCkBwcm90
b2NvbCBEZWZhdWx0TWVtYmVyCiMgNDg4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVj
dGlvbnMuaCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldERlZmF1bHRNZW1iZXI6IG1lbWJlclZh
bHVlOwoKLSBfSV9Vc2luZzsKLSBnZXREZWZhdWx0TWVtYmVyOwpAZW5kCgpAcHJvdG9jb2wgTWVt
YmVyQmxvY2sKIyA1MzcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgot
IF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRNZW1iZXJCbG9jazog
KGlkICopbWVtYmVycyBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFn
ZSAgIDc2CgoKCi0gX0lfU2V0dGluZzsKLSAodm9pZClzZXRNZW1iZXJCbG9jazogKGlkICopbWVt
YmVycyBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwoKLSBfSV9Vc2luZzsKLSAodm9pZCAqKWdl
dE1lbWJlckJsb2NrOwpAZW5kCgpAcHJvdG9jb2wgQXJyYXkgPENvbGxlY3Rpb24sIERlZmF1bHRN
ZW1iZXIsIE1lbWJlckJsb2NrLCBDUkVBVEFCTEU+CiMgNTk4ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4p
YVpvbmUgc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKCi0gX0lfU2V0dGluZzsKCgoKCgoKCi0g
c2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKQGVuZAoKQHByb3RvY29sIExpc3RJbmRleCA8SW5k
ZXgsIFJFVFVSTkFCTEU+CiMgNjQwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlv
bnMuaCIKLSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkQWZ0ZXI6IGFuT2JqZWN0OwoKCi0gKHZvaWQp
YWRkQmVmb3JlOiBhbk9iamVjdDsKQGVuZAoKCkBwcm90b2NvbCBMaXN0IDxDb2xsZWN0aW9uLCBD
UkVBVEFCTEU+CiMgNjY5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIK
LSBfSV9Vc2luZzsKCi0gKHZvaWQpYWRkRmlyc3Q6IGFuT2JqZWN0OwoKCi0gKHZvaWQpYWRkTGFz
dDogYW5PYmplY3Q7CgoKLSByZW1vdmVGaXJzdDsKCgotIHJlbW92ZUxhc3Q7CgoKLSAoaWQgPExp
c3RJbmRleD4pbGlzdEJlZ2luOiAoaWQgPFpvbmU+KWFab25lOwpAZW5kCgoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAg
ICBQYWdlICAgNzcKCgpleHRlcm4gaW50IGNvbXBhcmVJRHMgKGlkLCBpZCk7CgoKZXh0ZXJuIGlu
dCBjb21wYXJlSW50ZWdlcnMgKGlkLCBpZCk7CgoKZXh0ZXJuIGludCBjb21wYXJlVW5zaWduZWRJ
bnRlZ2VycyAoaWQsIGlkKTsKCgpleHRlcm4gaW50IGNvbXBhcmVDU3RyaW5ncyAoaWQsIGlkKTsK
CkBwcm90b2NvbCBDb21wYXJlRnVuY3Rpb24KIyA3MjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9jb2xsZWN0aW9ucy5oIgp0eXBlZGVmIGludCAoKmNvbXBhcmVfdCkgKGlkLCBpZCk7CgotIF9J
X0NyZWF0aW5nOwotIHNldENvbXBhcmVGdW5jdGlvbjogKGNvbXBhcmVfdClhRnVuY3Rpb247Ci0g
c2V0Q29tcGFyZUNTdHJpbmdzOwotIHNldENvbXBhcmVJRHM7Ci0gc2V0Q29tcGFyZUludGVnZXJz
OwotIHNldENvbXBhcmVVbnNpZ25lZEludGVnZXJzOwotIF9JX1VzaW5nOwotIChjb21wYXJlX3Qp
Z2V0Q29tcGFyZUZ1bmN0aW9uOwpAZW5kCgpAcHJvdG9jb2wgS2V5ZWRDb2xsZWN0aW9uIDxDb2xs
ZWN0aW9uLCBGb3JFYWNoS2V5PgojIDc1MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxl
Y3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwotIGNyZWF0ZUluZGV4OiAoaWQg
PFpvbmU+KWFab25lIGZyb21NZW1iZXI6IGFuT2JqZWN0OwoKCgoKCgotIGF0OiBhS2V5OwoKCgoK
CgotIHJlbW92ZUtleTogYUtleTsKCgoKLSAoQk9PTCljb250YWluc0tleTogYUtleTsKQGVuZAoK
QHByb3RvY29sIEtleWVkQ29sbGVjdGlvbkluZGV4IDxJbmRleD4KIyA3ODMgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAZW5kCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3
OAoKCkBwcm90b2NvbCBNZW1iZXJTbG90CiMgODE0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
Y29sbGVjdGlvbnMuaCIKdHlwZWRlZiBzdHJ1Y3QgbWVtYmVyRGF0YSB7IHZvaWQgKm1lbWJlckRh
dGFbMl07IH0gbWVtYmVyX3Q7CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7IHZvaWQgKm1lbWJlckRh
dGFbMl07IGlkIG93bmVyOyB9IGR1cG1lbWJlcl90OwpAZW5kCgpAcHJvdG9jb2wgX1NldAoKCi0g
X0lfVXNpbmc7CgotIChCT09MKWFkZDogYW5PYmplY3Q7CiMgODM5ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKQGVuZAoKQHByb3RvY29sIFNldCA8X1NldCwgS2V5ZWRD
b2xsZWN0aW9uLCBDUkVBVEFCTEU+CiMgODU3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29s
bGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCgoKCgotIHJlcGxhY2U6IGFuT2JqZWN0OwpAZW5kCgpA
cHJvdG9jb2wgT3JkZXJlZFNldCA8X1NldCwgTGlzdCwgQ1JFQVRBQkxFPgojIDg4NiAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBlbmQKCkBwcm90b2NvbCBNYXBJbmRl
eCA8S2V5ZWRDb2xsZWN0aW9uSW5kZXgsIFJFVFVSTkFCTEU+CgoKCgotIF9JX1VzaW5nOwoKCgoK
LSBzZXRLZXk6IGFLZXk7CgoKCgotIGdldEtleTsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA3OQoK
CgoKCi0gKHVuc2lnbmVkIGxvbmcpZ2V0S2V5VmFsdWU7CgoKLSBuZXh0OiAoaWQgKilrZXk7CgoK
LSBwcmV2OiAoaWQgKilrZXk7CgoKLSBnZXQ6IChpZCAqKWtleTsKQGVuZAoKCkBwcm90b2NvbCBN
YXAgPEtleWVkQ29sbGVjdGlvbiwgQ29tcGFyZUZ1bmN0aW9uLCBDUkVBVEFCTEU+CiMgOTM4ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKCgoKCi0g
KEJPT0wpYXQ6IGFLZXkgaW5zZXJ0OiBhbk9iamVjdDsKCgoKCi0gYXQ6IGFLZXkgcmVwbGFjZTog
YW5PYmplY3Q7CgoKLSAoaWQgPE1hcEluZGV4PiltYXBCZWdpbjogKGlkIDxab25lPilhWm9uZTsK
QGVuZAoKCkBwcm90b2NvbCBPdXRwdXRTdHJlYW0gPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoj
IDk2NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRp
bmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEZpbGVTdHJlYW06IChGSUxFICopZmls
ZVN0cmVhbTsKLSBzZXRGaWxlU3RyZWFtOiAoRklMRSAqKWZpbGVTdHJlYW07Ci0gc2V0RXhwckZs
YWc6IChCT09MKWV4cHJGbGFnOwotIF9JX1VzaW5nOwotIChGSUxFICopZ2V0RmlsZVN0cmVhbTsK
LSBnZXRFeHByOwoKCi0gKHZvaWQpY2F0QzogKGNvbnN0IGNoYXIgKiljc3RyaW5nOwoKCi0gKHZv
aWQpY2F0Qm9vbGVhbjogKEJPT0wpYm9vbDsKCgotICh2b2lkKWNhdENoYXI6IChjaGFyKWNoOwoK
Ci0gKHZvaWQpY2F0RmxvYXQ6IChmbG9hdClmbHQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODAKCgoK
Ci0gKHZvaWQpY2F0RG91YmxlOiAoZG91YmxlKWRibDsKCgotICh2b2lkKWNhdExvbmdEb3VibGU6
IChsb25nIGRvdWJsZSlkYmw7CgoKLSAodm9pZCljYXRJbnQ6IChpbnQpaTsKCgotICh2b2lkKWNh
dFVuc2lnbmVkOiAodW5zaWduZWQpdW47CgotICh2b2lkKWNhdFNob3J0OiAoc2hvcnQpc2h0Owot
ICh2b2lkKWNhdFVuc2lnbmVkU2hvcnQ6ICh1bnNpZ25lZCBzaG9ydCl1c2h0OwotICh2b2lkKWNh
dExvbmc6IChsb25nKWxuZzsKLSAodm9pZCljYXRVbnNpZ25lZExvbmc6ICh1bnNpZ25lZCBsb25n
KXVsbmc7Ci0gKHZvaWQpY2F0TG9uZ0xvbmc6IChsb25nIGxvbmcpbG5nbG5nOwotICh2b2lkKWNh
dFVuc2lnbmVkTG9uZ0xvbmc6ICh1bnNpZ25lZCBsb25nIGxvbmcpdWxuZ2xuZzsKLSAodm9pZClj
YXRQb2ludGVyOiAoY29uc3Qgdm9pZCAqKXB0cjsKLSAodm9pZCljYXRMaXRlcmFsOiAoY29uc3Qg
Y2hhciAqKXN0cjsKLSAodm9pZCljYXRTdGFydEV4cHI7Ci0gKHZvaWQpY2F0RW5kRXhwcjsKLSAo
dm9pZCljYXRLZXl3b3JkOiAoY29uc3QgY2hhciAqKWtleXdvcmQ7Ci0gKHZvaWQpY2F0U3ltYm9s
OiAoY29uc3QgY2hhciAqKXN5bWJvbDsKLSAodm9pZCljYXRTdHJpbmc6IChjb25zdCBjaGFyICop
c3RyOwotICh2b2lkKWNhdFNlcGFyYXRvcjsKLSAodm9pZCljYXRBcnJheVJhbms6ICh1bnNpZ25l
ZClyYW5rOwotICh2b2lkKWNhdEVuZEFycmF5OwotICh2b2lkKWNhdFR5cGU6IChjb25zdCBjaGFy
ICopdHlwZTsKLSAodm9pZCljYXRDbGFzczogKENsYXNzKWNsYXNzOwotICh2b2lkKWNhdFN0YXJ0
RnVuY3Rpb246IChjb25zdCBjaGFyICopZnVuY3Rpb25OYW1lOwotICh2b2lkKWNhdEVuZEZ1bmN0
aW9uOwotICh2b2lkKWNhdFN0YXJ0Q29uczsKLSAodm9pZCljYXRFbmRDb25zOwotICh2b2lkKWNh
dFN0YXJ0TGlzdDsKLSAodm9pZCljYXRFbmRMaXN0OwotICh2b2lkKWNhdFN0YXJ0UXVvdGVkTGlz
dDsKLSAodm9pZCljYXRFbmRRdW90ZWRMaXN0OwotICh2b2lkKWNhdFN0YXJ0UGFyc2U7Ci0gKHZv
aWQpY2F0RW5kUGFyc2U7Ci0gKHZvaWQpY2F0U3RhcnRNYWtlSW5zdGFuY2U6IChjb25zdCBjaGFy
ICopdHlwZU5hbWU7Ci0gKHZvaWQpY2F0RW5kTWFrZUluc3RhbmNlOwotICh2b2lkKWNhdFN0YXJ0
TWFrZUNsYXNzOiAoY29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSAodm9pZCljYXRFbmRNYWtlQ2xh
c3M7Ci0gKHZvaWQpY2F0VW5zaWduZWRQYWlyOiAodW5zaWduZWQpYSA6ICh1bnNpZ25lZCliOwot
ICh2b2lkKWNhdE5pbDsKQGVuZAoKQHByb3RvY29sIElucHV0U3RyZWFtIDxDcmVhdGUsIERyb3As
IENSRUFUQUJMRT4KCgoKCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25l
IHNldEZpbGVTdHJlYW06IChGSUxFICopZmlsZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA4MQoKCisg
Y3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEV4cHI6IGV4cHI7Ci0gc2V0RXhwcjogZXhwcjsK
LSBzZXRGaWxlU3RyZWFtOiAoRklMRSAqKWZpbGVTdHJlYW07Ci0gX0lfVXNpbmc7Ci0gKEZJTEUg
KilnZXRGaWxlU3RyZWFtOwotIGdldEV4cHI7CkBlbmQKCgpleHRlcm4gaWQgPFN5bWJvbD4gQXJj
aGl2ZXJMaXRlcmFsLCBBcmNoaXZlclF1b3RlLCBBcmNoaXZlckVPTCwgQXJjaGl2ZXJEb3Q7CgpA
cHJvdG9jb2wgQXJjaGl2ZXJLZXl3b3JkIDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBf
SV9DcmVhdGluZzsKLSBzZXRLZXl3b3JkTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIF9JX1Vz
aW5nOwotIChjb25zdCBjaGFyICopZ2V0S2V5d29yZE5hbWU7Ci0gKHZvaWQpbGlzcE91dFNoYWxs
b3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8
T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQKCkBwcm90b2NvbCBBcmNoaXZlckFycmF5IDxDcmVh
dGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRBcnJheTogYXJyYXk7
Ci0gX0lfVXNpbmc7Ci0gKHZvaWQgKilnZXREYXRhOwotICh1bnNpZ25lZClnZXRSYW5rOwotICh1
bnNpZ25lZCAqKWdldERpbXM7Ci0gKHNpemVfdClnZXRFbGVtZW50U2l6ZTsKLSAodW5zaWduZWQp
Z2V0RWxlbWVudENvdW50OwotIChmY2FsbF90eXBlX3QpZ2V0QXJyYXlUeXBlOwotIGNvbnZlcnRU
b1R5cGU6IChjaGFyKWRlc3RUeXBlIGRlc3Q6ICh2b2lkICopcHRyOwotICh2b2lkKWxpc3BPdXRT
aGFsbG93OiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2b2lkKWxpc3BPdXREZWVwOiAo
aWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2b2lkKWRyb3A7CkBlbmQKCkBwcm90b2NvbCBB
cmNoaXZlclZhbHVlIDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsK
LSBzZXREb3VibGU6IChkb3VibGUpdmFsOwotIHNldExvbmdEb3VibGU6IChsb25nIGRvdWJsZSl2
YWw7Ci0gc2V0RmxvYXQ6IChmbG9hdCl2YWw7Ci0gc2V0TG9uZ0xvbmc6IChsb25nIGxvbmcpdmFs
OwotIHNldENoYXI6IChjaGFyKXZhbDsKLSBzZXRCb29sZWFuOiAoQk9PTCl2YWw7Ci0gc2V0Q2xh
c3M6IChDbGFzcyljbGFzczsKLSBzZXROaWw7Ci0gX0lfVXNpbmc7Ci0gKGZjYWxsX3R5cGVfdCln
ZXRWYWx1ZVR5cGU7Ci0gKGRvdWJsZSlnZXREb3VibGU7Ci0gKGxvbmcgZG91YmxlKWdldExvbmdE
b3VibGU7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAgODIKCgotIChmbG9hdClnZXRGbG9hdDsKLSAobG9u
ZyBsb25nKWdldExvbmdMb25nOwotIChpbnQpZ2V0SW50ZWdlcjsKLSAodW5zaWduZWQpZ2V0VW5z
aWduZWQ7Ci0gKGNoYXIpZ2V0Q2hhcjsKLSAoQk9PTClnZXRCb29sZWFuOwotIGdldE9iamVjdDsK
LSAoQ2xhc3MpZ2V0Q2xhc3M7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3Ry
ZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJl
YW07Ci0gKHZvaWQpZHJvcDsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyUGFpciA8Q3JlYXRlLCBE
cm9wLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q2FyOiBjYXI7Ci0gc2V0Q2Ry
OiBjZHI7Ci0gc2V0Q29uc0Zvcm1hdEZsYWc6IChCT09MKXRoZUNvbnNGb3JtYXRGbGFnOwotIF9J
X1VzaW5nOwotIGdldENhcjsKLSBnZXRDZHI7Ci0gKEJPT0wpZ2V0Q29uc0Zvcm1hdEZsYWc7Ci0g
KHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQp
bGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQKCkBwcm90b2NvbCBB
cmNoaXZlckxpc3QgPExpc3QsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2lu
ZzsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKLSAo
dm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKQGVuZAoKQHByb3Rv
Y29sIEFyY2hpdmVyUXVvdGVkIDxSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0UXVv
dGVkT2JqZWN0OiB2YWx1ZTsKLSBfSV9Vc2luZzsKLSBnZXRRdW90ZWRPYmplY3Q7Ci0gKHZvaWQp
bGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07CkBlbmQKCgoKQHByb3RvY29s
IFN0cmluZyA8Q3JlYXRlLCBEcm9wLCBDb3B5LCBDUkVBVEFCTEU+CiMgMTE1NSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAo
aWQgPFpvbmU+KWFab25lIHNldEM6IChjb25zdCBjaGFyICopY3N0cmluZzsKCi0gX0lfU2V0dGlu
ZzsKLSAodm9pZClzZXRDOiAoY29uc3QgY2hhciAqKWNzdHJpbmc7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdl
ICAgODMKCgoKLSBfSV9Vc2luZzsKLSAoY29uc3QgY2hhciAqKWdldEM7Ci0gKHZvaWQpY2F0Qzog
KGNvbnN0IGNoYXIgKiljc3RyaW5nOwotICh1bnNpZ25lZClnZXRDb3VudDsKQGVuZAoKQHByb3Rv
Y29sIExpc3RTaHVmZmxlciA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CiMgMTE3NiAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRV
bmlmb3JtUmFuZG9tOiBkaXN0OwoKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRVbmlm
b3JtUmFuZG9tOiBkaXN0OwoKLSBfSV9Vc2luZzsKCi0gc2h1ZmZsZVdob2xlTGlzdDogbGlzdDsK
CgoKLSBzaHVmZmxlUGFydGlhbExpc3Q6IGxpc3QgTnVtOiAodW5zaWduZWQpbnVtOwpAZW5kCgpA
cHJvdG9jb2wgUGVybXV0YXRpb25JdGVtIDxDcmVhdGUsIFJFVFVSTkFCTEU+CgoKCi0gX0lfQ3Jl
YXRpbmc7Ci0gc2V0SXRlbTogaXRlbTsKLSBzZXRQb3NpdGlvbjogKHVuc2lnbmVkKXBvc2l0aW9u
OwotIF9JX1VzaW5nOwotIGdldEl0ZW07Ci0gKHVuc2lnbmVkKWdldFBvc2l0aW9uOwpAZW5kCgpA
cHJvdG9jb2wgUGVybXV0YXRpb24gPENvbGxlY3Rpb24sIENyZWF0ZSwgQXJyYXksIENSRUFUQUJM
RT4KCgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q29sbGVjdGlvbjogKGlkIDxDb2xsZWN0aW9u
Piljb2xsZWN0aW9uOwotIHNldExhc3RQZXJtdXRhdGlvbjogKGlkIDxQZXJtdXRhdGlvbj4pcGVy
bXV0YXRpb247Ci0gc2V0VW5pZm9ybVJhbmRvbTogcm5kOwpAZW5kCgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy90eXBlcy5oIiAxCmV4dGVybiB2b2lkICpfY29sbGVj
dGlvbnNfW107CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJz
b24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDg0CgoKZXh0ZXJuIGlkIE9mZnNldHM7CmV4
dGVybiBpZCBGb3JFYWNoOwpleHRlcm4gaWQgRm9yRWFjaEtleTsKZXh0ZXJuIGlkIEluZGV4Owpl
eHRlcm4gaWQgUGVybXV0ZWRJbmRleDsKZXh0ZXJuIGlkIENvbGxlY3Rpb247CmV4dGVybiBpZCBE
ZWZhdWx0TWVtYmVyOwpleHRlcm4gaWQgTWVtYmVyQmxvY2s7CmV4dGVybiBpZCBBcnJheTsKZXh0
ZXJuIGlkIExpc3RJbmRleDsKZXh0ZXJuIGlkIExpc3Q7CmV4dGVybiBpZCBDb21wYXJlRnVuY3Rp
b247CmV4dGVybiBpZCBLZXllZENvbGxlY3Rpb247CmV4dGVybiBpZCBLZXllZENvbGxlY3Rpb25J
bmRleDsKZXh0ZXJuIGlkIE1lbWJlclNsb3Q7CmV4dGVybiBpZCBfU2V0OwpleHRlcm4gaWQgU2V0
OwpleHRlcm4gaWQgT3JkZXJlZFNldDsKZXh0ZXJuIGlkIE1hcEluZGV4OwpleHRlcm4gaWQgTWFw
OwpleHRlcm4gaWQgT3V0cHV0U3RyZWFtOwpleHRlcm4gaWQgSW5wdXRTdHJlYW07CmV4dGVybiBp
ZCBBcmNoaXZlcktleXdvcmQ7CmV4dGVybiBpZCBBcmNoaXZlckFycmF5OwpleHRlcm4gaWQgQXJj
aGl2ZXJWYWx1ZTsKZXh0ZXJuIGlkIEFyY2hpdmVyUGFpcjsKZXh0ZXJuIGlkIEFyY2hpdmVyTGlz
dDsKZXh0ZXJuIGlkIEFyY2hpdmVyUXVvdGVkOwpleHRlcm4gaWQgU3RyaW5nOwpleHRlcm4gaWQg
TGlzdFNodWZmbGVyOwpleHRlcm4gaWQgUGVybXV0YXRpb25JdGVtOwpleHRlcm4gaWQgUGVybXV0
YXRpb247CgoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMvY2xhc3Nl
cy5oIiAxCmV4dGVybiBpZCBpZF9BcnJheV9jOwpleHRlcm4gaWQgaWRfQXJyYXlJbmRleF9jOwpl
eHRlcm4gaWQgaWRfQ29sbGVjdGlvbl9hbnk7CmV4dGVybiBpZCBpZF9JbmRleF9hbnk7CmV4dGVy
biBpZCBpZF9QZXJtdXRlZEluZGV4X2M7CmV4dGVybiBpZCBpZF9JbnB1dFN0cmVhbV9jOwpleHRl
cm4gaWQgaWRfQXJjaGl2ZXJLZXl3b3JkX2M7CmV4dGVybiBpZCBpZF9BcmNoaXZlckFycmF5X2M7
CmV4dGVybiBpZCBpZF9BcmNoaXZlclZhbHVlX2M7CmV4dGVybiBpZCBpZF9BcmNoaXZlclBhaXJf
YzsKZXh0ZXJuIGlkIGlkX0FyY2hpdmVyTGlzdF9jOwpleHRlcm4gaWQgaWRfQXJjaGl2ZXJRdW90
ZWRfYzsKZXh0ZXJuIGlkIGlkX0xpc3RfYW55OwpleHRlcm4gaWQgaWRfTGlzdEluZGV4X2FueTsK
ZXh0ZXJuIGlkIGlkX0xpc3RfbGlua2VkOwpleHRlcm4gaWQgaWRfTGlzdEluZGV4X2xpbmtlZDsK
ZXh0ZXJuIGlkIGlkX0xpc3RfbWxpbmtzOwpleHRlcm4gaWQgaWRfTGlzdEluZGV4X21saW5rczsK
ZXh0ZXJuIGlkIGlkX0xpc3RTaHVmZmxlcl9jOwpleHRlcm4gaWQgaWRfTWFwX2M7CmV4dGVybiBp
ZCBpZF9NYXBJbmRleF9jOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDg1CgoKZXh0ZXJuIGlkIGlkX09y
ZGVyZWRTZXRfYzsKZXh0ZXJuIGlkIGlkX09yZGVyZWRTZXRJbmRleF9jOwpleHRlcm4gaWQgaWRf
T3V0cHV0U3RyZWFtX2M7CmV4dGVybiBpZCBpZF9TZXRfYzsKZXh0ZXJuIGlkIGlkX1NldEluZGV4
X2M7CmV4dGVybiBpZCBpZF9QZXJtdXRhdGlvbkl0ZW1fYzsKZXh0ZXJuIGlkIGlkX1Blcm11dGF0
aW9uX2M7CmV4dGVybiBpZCBpZF9TdHJpbmdfYzsKIyAzOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2NvbGxlY3Rpb25zL3R5cGVzLmgiIDIKIyAxMjIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvY29sbGVjdGlvbnMuaCIgMgojIDI3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZp
dHkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDI4
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMgoKQHByb3RvY29sIERlZmF1
bHRPcmRlcgojIDc1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9D
cmVhdGluZzsKLSBfSV9TZXR0aW5nOwotIHNldERlZmF1bHRPcmRlcjogKGlkIDxTeW1ib2w+KWFT
eW1ib2w7Ci0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdldERlZmF1bHRPcmRlcjsKQGVuZAoK
CkBwcm90b2NvbCBBY3Rpdml0eSA8RGVmaW5lZE9iamVjdCwgRHJvcCwgUkVUVVJOQUJMRT4KIyAx
MjYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwoKCgoK
Ci0gKGlkIDxTeW1ib2w+KXJ1bjsKCgoKLSAodm9pZClzdG9wOwoKCgoKCgoKLSAodm9pZCl0ZXJt
aW5hdGU7CgoKCgotIChpZCA8U3ltYm9sPiluZXh0QWN0aW9uOwoKCi0gKGlkIDxTeW1ib2w+KXN0
ZXBBY3Rpb247CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBl
cnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODYKCgoKLSAoaWQgPFN5bWJvbD4pZ2V0
U3RhdHVzOwojIDE2NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlk
IDxTeW1ib2w+KWdldEhvbGRUeXBlOwoKCi0gZ2V0QWN0aW9uOwoKCi0gZ2V0QWN0aW9uVHlwZTsK
CgotICh2b2lkKXNldE93bmVyQWN0aXZpdHk6IG93bmVyQWN0aXZpdHk7CgoKLSBnZXRPd25lckFj
dGl2aXR5OwoKCi0gZ2V0U3ViYWN0aXZpdGllczsKCgotIGdldENvbnRyb2xsaW5nQWN0aXZpdHk7
CgoKLSBnZXRUb3BMZXZlbEFjdGl2aXR5OwoKCi0gZ2V0U3dhcm1BY3Rpdml0eTsKCgotIGdldFNj
aGVkdWxlQWN0aXZpdHk7CgoKLSBzZXRTZXJpYWxNb2RlOiAoQk9PTClzZXJpYWxNb2RlOwoKCi0g
KEJPT0wpZ2V0U2VyaWFsTW9kZTsKCgotIChpZCA8QWN0aXZpdHk+KWdldEN1cnJlbnRTdWJhY3Rp
dml0eTsKQGVuZAoKCmV4dGVybiBpZCA8U3ltYm9sPiBJbml0aWFsaXplZCwgUnVubmluZywgSG9s
ZGluZywgUmVsZWFzZWQsIFN0b3BwZWQsCiAgVGVybWluYXRlZCwgQ29tcGxldGVkOwoKQHByb3Rv
Y29sIEFjdGlvbiA8Q3JlYXRlLCBEcm9wLCBHZXRPd25lcj4KIyAyNDIgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwotICh2b2lkKV9wZXJmb3JtQWN0aW9u
XzogKGlkIDxBY3Rpdml0eT4pYWN0aXZpdHk7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25BcmdzCgoK
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAg
ICAgICAgICAgICAgICBQYWdlICAgODcKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSAodm9pZClzZXRB
cmcxOiBhcmcxOwotICh2b2lkKXNldEFyZzI6IGFyZzI7Ci0gKHZvaWQpc2V0QXJnMzogYXJnMzsK
LSBfSV9Vc2luZzsKLSAodW5zaWduZWQpZ2V0TkFyZ3M7Ci0gZ2V0QXJnMTsKLSBnZXRBcmcyOwot
IGdldEFyZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uIDxBY3Rpb24sIFJFVFVSTkFCTEU+CgoK
LSBfSV9DcmVhdGluZzsKLSBzZXRDYWxsOiBmY2FsbDsKLSBfSV9TZXR0aW5nOwotIHNldEF1dG9E
cm9wOiAoQk9PTClhdXRvRHJvcDsKLSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIEFjdGlvblRh
cmdldAoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0VGFyZ2V0OiB0YXJnZXQ7Ci0gX0lfVXNp
bmc7Ci0gZ2V0VGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uU2VsZWN0b3IKCgotIF9JX1Nl
dHRpbmc7Ci0gKHZvaWQpc2V0TWVzc2FnZVNlbGVjdG9yOiAoU0VMKWFTZWw7Ci0gX0lfVXNpbmc7
Ci0gKFNFTClnZXRNZXNzYWdlU2VsZWN0b3I7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25UbyA8QWN0
aW9uLCBBY3Rpb25UYXJnZXQsIEFjdGlvblNlbGVjdG9yLCBBY3Rpb25BcmdzLCBSRVRVUk5BQkxF
PgoKCkBlbmQKCkBwcm90b2NvbCBBY3Rpb25Gb3JFYWNoIDxBY3Rpb25UbywgRGVmYXVsdE9yZGVy
LCBSRVRVUk5BQkxFPgoKCkBlbmQKCkBwcm90b2NvbCBBY3Rpb25Gb3JFYWNoSG9tb2dlbmVvdXMg
PEFjdGlvbiwgQWN0aW9uVGFyZ2V0LCBBY3Rpb25TZWxlY3RvciwgRGVmYXVsdE9yZGVyLCBSRVRV
Uk5BQkxFPgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgODgKCgpAZW5kCgpAcHJvdG9jb2wgRkFjdGlv
bkZvckVhY2ggPEZBY3Rpb24sIEFjdGlvblRhcmdldCwgRGVmYXVsdE9yZGVyPgoKCkBlbmQKCkBw
cm90b2NvbCBGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXMgPEZBY3Rpb25Gb3JFYWNoLCBSRVRV
Uk5BQkxFPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzIDxGQWN0
aW9uRm9yRWFjaCwgUkVUVVJOQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2FsbCA8
QWN0aW9uLCBBY3Rpb25BcmdzLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQp
c2V0RnVuY3Rpb25Qb2ludGVyOiAoZnVuY190KWZwdHI7Ci0gX0lfVXNpbmc7Ci0gKGZ1bmNfdCln
ZXRGdW5jdGlvblBvaW50ZXI7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25DaGFuZ2VkIDxBY3Rpb24s
IFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEZBY3Rpb25DcmVhdGluZwoKCi0gX0lfVXNp
bmc7Ci0gKGlkIDxGQWN0aW9uPiljcmVhdGVGQWN0aW9uOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5k
CgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRpbmdDYWxsCgoKCgoKCgotIF9JX1VzaW5nOwotIChpZCA8
QWN0aW9uQ2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOwotIChpZCA8QWN0aW9u
Q2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyIDogYXJnMTsKLSAoaWQgPEFjdGlv
bkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0ciA6IGFyZzEgOiBhcmcyOwotIChp
ZCA8QWN0aW9uQ2FsbD4pY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyIDogYXJnMSA6IGFy
ZzIgOiBhcmczOwpAZW5kCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDg5CgoKQHByb3RvY29sIEFjdGlv
bkNyZWF0aW5nVG8KIyAzODQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgot
IF9JX1VzaW5nOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2Fn
ZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVz
c2FnZTogKFNFTClhU2VsIDogYXJnMTsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVBY3Rpb25Ubzog
dGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbCA6IGFyZzEgOiBhcmcyOwotIChpZCA8QWN0aW9uVG8+
KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMSA6IGFyZzIg
OiBhcmczOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRpbmdGb3JFYWNoCiMgNDAyICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKLSAoaWQgPEFjdGlv
bkZvckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOiB0YXJn
ZXQgbWVzc2FnZTogKFNFTClhU2VsOwoKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlv
bkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNo
PiljcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMTsK
LSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdl
OiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMjsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFj
dGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMiA6IGFy
ZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSGV0ZXJvZ2VuZW91cwoK
CgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM+KWNyZWF0
ZUZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNh
bGw7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXMKCgoK
CgotIF9JX1VzaW5nOwotIChpZCA8RkFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlRkFj
dGlvbkZvckVhY2hIb21vZ2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CkBl
bmQKCkBwcm90b2NvbCBBY3Rpb25DcmVhdGluZyA8RkFjdGlvbkNyZWF0aW5nLCBBY3Rpb25DcmVh
dGluZ0NhbGwsIEFjdGlvbkNyZWF0aW5nVG8sIEFjdGlvbkNyZWF0aW5nRm9yRWFjaCwgRkFjdGlv
bkNyZWF0aW5nRm9yRWFjaEhldGVyb2dlbmVvdXMsIEZBY3Rpb25DcmVhdGluZ0ZvckVhY2hIb21v
Z2VuZW91cz4KIyA0NjIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9J
X1VzaW5nOwoKCgoKLSBjcmVhdGVBY3Rpb246IGFuQWN0aW9uVHlwZTsKCkBlbmQKCgpleHRlcm4g
aWQgPFN5bWJvbD4gQ29uY3VycmVudCwgU2VxdWVudGlhbCwgUmFuZG9taXplZDsKIyA0OTMgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
dGltZXZhbF90OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVy
c29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgICA5MAoKCgoKQHByb3RvY29sIEFjdGl2aXR5
SW5kZXggPEluZGV4LCBSRVRVUk5BQkxFPgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdl
dEhvbGRUeXBlOwotIChpZCA8QWN0aW9uPiluZXh0QWN0aW9uOiAoaWQgKilzdGF0dXM7CkBlbmQK
CgpleHRlcm4gaWQgPFN5bWJvbD4gSG9sZFN0YXJ0LCBIb2xkRW5kOwoKQHByb3RvY29sIEFjdGlv
blR5cGUKIyA1MzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1Vz
aW5nOwojIDU1MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlkIDxB
Y3Rpdml0eT4pYWN0aXZhdGVJbjogc3dhcm1Db250ZXh0OwpAZW5kCgpAcHJvdG9jb2wgU3luY2hy
b25pemF0aW9uVHlwZQojIDU2OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5Lmgi
Ci0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0U3luY2hyb25pemF0aW9uVHlwZTogYVNjaGVkdWxl
VHlwZTsKCi0gX0lfVXNpbmc7Ci0gZ2V0U3luY2hyb25pemF0aW9uVHlwZTsKQGVuZAoKQHByb3Rv
Y29sIEF1dG9Ecm9wCiMgNTk2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIK
LSBfSV9DcmVhdGluZzsKLSBzZXRBdXRvRHJvcDogKEJPT0wpYXV0b0Ryb3A7Ci0gX0lfVXNpbmc7
Ci0gKEJPT0wpZ2V0QXV0b0Ryb3A7CkBlbmQKCkBwcm90b2NvbCBDb21wb3VuZEFjdGlvbiA8QWN0
aW9uVHlwZSwgQ29sbGVjdGlvbiwgQXV0b0Ryb3AsIERlZmF1bHRPcmRlcj4KIyA2MTMgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uR3Jv
dXAgPENvbXBvdW5kQWN0aW9uLCBBY3Rpb25DcmVhdGluZywgRGVmYXVsdE9yZGVyLCBDUkVBVEFC
TEU+CiMgNjM0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKQGVuZAoKQHBy
b3RvY29sIEFjdGlvbkNvbmN1cnJlbnQgPEFjdGlvbiwgUkVUVVJOQUJMRT4KLSBfSV9Vc2luZzsK
CgotIChpZCA8QWN0aW9uR3JvdXA+KWdldENvbmN1cnJlbnRHcm91cDsKQGVuZAoKQHByb3RvY29s
IFJlbGF0aXZlVGltZQoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDkxCgoKCgoKLSBfSV9TZXR0aW5n
OwotIHNldFJlbGF0aXZlVGltZTogKEJPT0wpcmVsYXRpdmVUaW1lOwotIF9JX1VzaW5nOwotIChC
T09MKWdldFJlbGF0aXZlVGltZTsKQGVuZAoKQHByb3RvY29sIFJlcGVhdEludGVydmFsCiMgNjcx
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwotIHNl
dFJlcGVhdEludGVydmFsOiAodGltZXZhbF90KXJlcGVhdEludGVydmFsOwotIF9JX1VzaW5nOwot
ICh0aW1ldmFsX3QpZ2V0UmVwZWF0SW50ZXJ2YWw7CkBlbmQKCkBwcm90b2NvbCBDb25jdXJyZW50
R3JvdXBUeXBlCiMgNzA2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBf
SV9TZXR0aW5nOwotICh2b2lkKXNldENvbmN1cnJlbnRHcm91cFR5cGU6IGdyb3VwVHlwZTsKLSBf
SV9Vc2luZzsKLSBnZXRDb25jdXJyZW50R3JvdXBUeXBlOwpAZW5kCgpAcHJvdG9jb2wgU2luZ2xl
dG9uR3JvdXBzCiMgNzI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBf
SV9TZXR0aW5nOwotICh2b2lkKXNldFNpbmdsZXRvbkdyb3VwczogKEJPT0wpc2luZ2xldG9uR3Jv
dXBzOwotIF9JX1VzaW5nOwotIChCT09MKWdldFNpbmdsZXRvbkdyb3VwczsKQGVuZAoKQHByb3Rv
Y29sIFNjaGVkdWxlIDxNYXAsIENvbXBvdW5kQWN0aW9uLCBBY3Rpb25DcmVhdGluZywgUmVsYXRp
dmVUaW1lLCBSZXBlYXRJbnRlcnZhbCwgQ29uY3VycmVudEdyb3VwVHlwZSwgU2luZ2xldG9uR3Jv
dXBzLCBDUkVBVEFCTEU+CiMgNzYzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHku
aCIKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFJlcGVhdElu
dGVydmFsOiAodGltZXZhbF90KXJwdEludGVydmFsOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFa
b25lIHNldEF1dG9Ecm9wOiAoQk9PTClhdXRvRHJvcDsKCgoKLSBzZXRLZWVwRW1wdHlGbGFnOiAo
Qk9PTClrZWVwRW1wdHlGbGFnOwotIF9JX1VzaW5nOwotIGF0OiAodGltZXZhbF90KXRWYWwgY3Jl
YXRlQWN0aW9uOiBhbkFjdGlvblR5cGU7CgotIChpZCA8RkFjdGlvbj4pYXQ6ICh0aW1ldmFsX3Qp
dFZhbCBjcmVhdGVGQWN0aW9uOiAoaWQgPEZDYWxsPiljYWxsOwotIChpZCA8QWN0aW9uQ2FsbD4p
YXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHI7Ci0gKGlk
IDxBY3Rpb25DYWxsPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkNhbGw6IChmdW5j
X3QpZnB0cjphcmcxOwotIChpZCA8QWN0aW9uQ2FsbD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVh
dGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHI6YXJnMTphcmcyOwotIChpZCA8QWN0aW9uQ2FsbD4p
YXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHI6YXJnMTph
cmcyOmFyZzM7CgotIChpZCA8QWN0aW9uVG8+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0
aW9uVG86IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7Ci0gKGlkIDxBY3Rpb25Ubz4pYXQ6ICh0
aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbDph
cmcxOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDkyCgoKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2
YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6
YXJnMjsKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRv
OiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEFjdGlv
bkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JF
YWNoSG9tb2dlbmVvdXM6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7CgotIChpZCA8QWN0aW9u
Rm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQg
bWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3Qp
dFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE7
Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkZv
ckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw6YXJnMTphcmcyOwotIChpZCA8QWN0aW9u
Rm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQg
bWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEZBY3Rpb25Gb3JFYWNo
SGV0ZXJvZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9yRWFjaEhl
dGVyb2dlbmVvdXM6IHRhcmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwotIChpZCA8RkFjdGlv
bkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9y
RWFjaEhvbW9nZW5lb3VzOiB0YXJnZXQgY2FsbDogKGlkIDxGQ2FsbD4pY2FsbDsKCgoKLSByZW1v
dmU6IGFuQWN0aW9uOwoKCi0gKGlkIDxBY3Rpb25Hcm91cD4paW5zZXJ0R3JvdXA6ICh0aW1ldmFs
X3QpdFZhbDsKQGVuZAoKQHByb3RvY29sIFNjaGVkdWxlQWN0aXZpdHkgPEFjdGl2aXR5LCBSRVRV
Uk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotICh0aW1ldmFsX3QpZ2V0Q3Vy
cmVudFRpbWU7CgoKLSBzdGVwVW50aWw6ICh0aW1ldmFsX3QpdFZhbDsKQGVuZAoKQHByb3RvY29s
IFN3YXJtQWN0aXZpdHkgPFNjaGVkdWxlQWN0aXZpdHksIFJFVFVSTkFCTEU+CgoKCi0gX0lfVXNp
bmc7CgotIGdldFN3YXJtOwoKLSAoaWQgPFNjaGVkdWxlPilnZXRTeW5jaHJvbml6YXRpb25TY2hl
ZHVsZTsKQGVuZAoKQHByb3RvY29sIEZvckVhY2hBY3Rpdml0eSA8QWN0aXZpdHksIFJFVFVSTkFC
TEU+CgoKCi0gX0lfVXNpbmc7Ci0gZ2V0Q3VycmVudE1lbWJlcjsKQGVuZAoKQHByb3RvY29sIFN3
YXJtUHJvY2VzcyA8QWN0aW9uVHlwZSwgWm9uZSwgU3luY2hyb25pemF0aW9uVHlwZT4KIyA4NTAg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX0NyZWF0aW5nOwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgICA5MwoKCgoKCgoKCi0gc2V0SW50ZXJuYWxab25lVHlwZTogYVpvbmVU
eXBlOwoKLSBfSV9Vc2luZzsKCgoKCgotIGdldEludGVybmFsWm9uZTsKCgoKCgotIChpZCA8U3dh
cm1BY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQKIyA5MjQgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9hY3Rpdml0eS5oIgpAcHJvdG9jb2wgR2V0U3ViYWN0aXZpdHlBY3Rpb24KCgoKLSBfSV9V
c2luZzsKLSBfZ2V0U3ViYWN0aXZpdHlBY3Rpb25fOwpAZW5kCgoKCgoKZXh0ZXJuIGlkIF9hY3Rp
dml0eV9jdXJyZW50OwoKCgpleHRlcm4gaWQgX2FjdGl2aXR5X2NvbnRleHRfZXJyb3IgKGNvbnN0
IGNoYXIgKm1hY3JvTmFtZSk7CgoKQHByb3RvY29sIENvbmN1cnJlbnRHcm91cCA8QWN0aW9uR3Jv
dXAsIFJFVFVSTkFCTEU+CgoKLSBfSV9Vc2luZzsKLSAodm9pZClfc2V0QWN0aW9uQ29uY3VycmVu
dF86IGFjdGlvbjsKLSBfZ2V0RW1wdHlBY3Rpb25Db25jdXJyZW50XzsKQGVuZAoKQHByb3RvY29s
IENvbmN1cnJlbnRTY2hlZHVsZSA8Q29uY3VycmVudEdyb3VwLCBTY2hlZHVsZSwgQ1JFQVRBQkxF
PgoKCkBlbmQKCkBwcm90b2NvbCBBY3RpdmF0aW9uT3JkZXIgPEFjdGlvbkdyb3VwLCBSRVRVUk5B
QkxFPgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgIDk0CgoKCgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRM
YXN0OiBtZXJnZUFjdGlvbjsKCgoKLSByZW1vdmU6IG1lcmdlQWN0aW9uOwoKQGVuZAoKCmV4dGVy
biBpZCA8RXJyb3I+IEludmFsaWRTd2FybVpvbmU7CgoKCmV4dGVybiBpZCBfYWN0aXZpdHlfem9u
ZTsKIyA5ODUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpleHRlcm4gQk9P
TCAoKl9hY3Rpdml0eV90cmFjZSkgKGlkKTsKIyA5OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9hY3Rpdml0eS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS90eXBl
cy5oIiAxCmV4dGVybiB2b2lkICpfYWN0aXZpdHlfW107CgpleHRlcm4gaWQgRGVmYXVsdE9yZGVy
OwpleHRlcm4gaWQgQWN0aXZpdHk7CmV4dGVybiBpZCBBY3Rpb247CmV4dGVybiBpZCBBY3Rpb25B
cmdzOwpleHRlcm4gaWQgRkFjdGlvbjsKZXh0ZXJuIGlkIEFjdGlvblRhcmdldDsKZXh0ZXJuIGlk
IEFjdGlvblNlbGVjdG9yOwpleHRlcm4gaWQgQWN0aW9uVG87CmV4dGVybiBpZCBBY3Rpb25Gb3JF
YWNoOwpleHRlcm4gaWQgQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgRkFjdGlv
bkZvckVhY2g7CmV4dGVybiBpZCBGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM7CmV4dGVybiBp
ZCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgQWN0aW9uQ2FsbDsKZXh0ZXJu
IGlkIEFjdGlvbkNoYW5nZWQ7CmV4dGVybiBpZCBGQWN0aW9uQ3JlYXRpbmc7CmV4dGVybiBpZCBB
Y3Rpb25DcmVhdGluZ0NhbGw7CmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZ1RvOwpleHRlcm4gaWQg
QWN0aW9uQ3JlYXRpbmdGb3JFYWNoOwpleHRlcm4gaWQgRkFjdGlvbkNyZWF0aW5nRm9yRWFjaEhl
dGVyb2dlbmVvdXM7CmV4dGVybiBpZCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXM7
CmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZzsKZXh0ZXJuIGlkIEFjdGl2aXR5SW5kZXg7CmV4dGVy
biBpZCBBY3Rpb25UeXBlOwpleHRlcm4gaWQgU3luY2hyb25pemF0aW9uVHlwZTsKZXh0ZXJuIGlk
IEF1dG9Ecm9wOwpleHRlcm4gaWQgQ29tcG91bmRBY3Rpb247CmV4dGVybiBpZCBBY3Rpb25Hcm91
cDsKZXh0ZXJuIGlkIEFjdGlvbkNvbmN1cnJlbnQ7CmV4dGVybiBpZCBSZWxhdGl2ZVRpbWU7CmV4
dGVybiBpZCBSZXBlYXRJbnRlcnZhbDsKZXh0ZXJuIGlkIENvbmN1cnJlbnRHcm91cFR5cGU7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAgOTUKCgpleHRlcm4gaWQgU2luZ2xldG9uR3JvdXBzOwpleHRlcm4g
aWQgU2NoZWR1bGU7CmV4dGVybiBpZCBTY2hlZHVsZUFjdGl2aXR5OwpleHRlcm4gaWQgU3dhcm1B
Y3Rpdml0eTsKZXh0ZXJuIGlkIEZvckVhY2hBY3Rpdml0eTsKZXh0ZXJuIGlkIFN3YXJtUHJvY2Vz
czsKZXh0ZXJuIGlkIEdldFN1YmFjdGl2aXR5QWN0aW9uOwpleHRlcm4gaWQgQ29uY3VycmVudEdy
b3VwOwpleHRlcm4gaWQgQ29uY3VycmVudFNjaGVkdWxlOwpleHRlcm4gaWQgQWN0aXZhdGlvbk9y
ZGVyOwoKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5L2NsYXNzZXMuaCIg
MQpleHRlcm4gaWQgaWRfQ0FjdGlvbjsKZXh0ZXJuIGlkIGlkX1BBY3Rpb247CmV4dGVybiBpZCBp
ZF9QRkFjdGlvbjsKZXh0ZXJuIGlkIGlkX0ZBY3Rpb25fYzsKZXh0ZXJuIGlkIGlkX0FjdGlvbkNh
bGxfYzsKZXh0ZXJuIGlkIGlkX0FjdGlvblRvX2M7CmV4dGVybiBpZCBpZF9BY3Rpb25Gb3JFYWNo
X2M7CmV4dGVybiBpZCBpZF9BY3Rpb25Gb3JFYWNoSG9tb2dlbmVvdXNfYzsKZXh0ZXJuIGlkIGlk
X0ZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91c19jOwpleHRlcm4gaWQgaWRfRkFjdGlvbkZvckVh
Y2hIb21vZ2VuZW91c19jOwpleHRlcm4gaWQgaWRfQWN0aW9uR3JvdXBfYzsKZXh0ZXJuIGlkIGlk
X0NvbmN1cnJlbnRHcm91cF9jOwpleHRlcm4gaWQgaWRfR3JvdXBBY3Rpdml0eV9jOwpleHRlcm4g
aWQgaWRfR3JvdXBJbmRleF9jOwpleHRlcm4gaWQgaWRfR3JvdXBQZXJtdXRlZEluZGV4X2M7CmV4
dGVybiBpZCBpZF9Gb3JFYWNoQWN0aXZpdHlfYzsKZXh0ZXJuIGlkIGlkX0ZvckVhY2hJbmRleF9j
OwpleHRlcm4gaWQgaWRfQWN0aW9uVHlwZV9jOwpleHRlcm4gaWQgaWRfQ29tcG91bmRBY3Rpb25f
YzsKZXh0ZXJuIGlkIGlkX1NjaGVkdWxlX2M7CmV4dGVybiBpZCBpZF9BY3Rpb25Db25jdXJyZW50
X2M7CmV4dGVybiBpZCBpZF9Db25jdXJyZW50U2NoZWR1bGVfYzsKZXh0ZXJuIGlkIGlkX0FjdGl2
YXRpb25PcmRlcl9jOwpleHRlcm4gaWQgaWRfU2NoZWR1bGVBY3Rpdml0eV9jOwpleHRlcm4gaWQg
aWRfU2NoZWR1bGVJbmRleF9jOwpleHRlcm4gaWQgaWRfQWN0aW9uQ2hhbmdlZF9jOwpleHRlcm4g
aWQgaWRfQ1N3YXJtUHJvY2VzczsKZXh0ZXJuIGlkIGlkX1N3YXJtQWN0aXZpdHlfYzsKZXh0ZXJu
IGlkIGlkX0FjdGlvbk1lcmdlX2M7CmV4dGVybiBpZCBpZF9BY3Rpdml0eV9jOwojIDQ4ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvdHlwZXMuaCIgMgojIDk5OSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIKIyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamVjdGJhc2UuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52
YXIuaCIgMQojIDIzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAyCgpA
cHJvdG9jb2wgU3dhcm1PYmplY3QgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgojIDM5ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIF9JX1VzaW5nOwoKCgotIGdldFBy
b2JlTWFwOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24u
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgIDk2CgoKCgoKLSBnZXRDb21wbGV0ZVByb2JlTWFw
OwoKCgotIGdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwoKCgot
IGdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZTsKQGVuZAoKQHByb3Rv
Y29sIFByb2JlQ29uZmlnCgoKCgoKLSBfSV9Vc2luZzsKLSBzZXRPYmplY3RUb05vdGlmeTogYW5P
YmplY3Q7Ci0gZ2V0T2JqZWN0VG9Ob3RpZnk7CkBlbmQKCkBwcm90b2NvbCBQcm9iZSA8U3dhcm1P
YmplY3QsIFByb2JlQ29uZmlnPgojIDgxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0
YmFzZS5oIgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0UHJvYmVkQ2xhc3M6IChDbGFzcyljbGFzczsK
Ci0gc2V0UHJvYmVkT2JqZWN0OiBvYmplY3Q7Ci0gX0lfU2V0dGluZzsKCgoKLSBzZXRTYWZldHk7
CgoKCgotIHVuc2V0U2FmZXR5OwoKLSBfSV9Vc2luZzsKCgoKCgotIGNsb25lOiAoaWQgPFpvbmU+
KWFab25lOwoKCgotIChDbGFzcylnZXRQcm9iZWRDbGFzczsKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAg
OTcKCgoKCgotIChjb25zdCBjaGFyICopZ2V0UHJvYmVkVHlwZTsKQGVuZAoKQHByb3RvY29sIFZh
clByb2JlIDxQcm9iZSwgQ1JFQVRBQkxFPgoKCgoKCgotIF9JX0NyZWF0aW5nOwoKCgoKLSBzZXRQ
cm9iZWRWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgotIF9JX1NldHRpbmc7CgoK
CgoKCgotIHNldE5vbkludGVyYWN0aXZlOwoKCgoKCgotIHNldFN0cmluZ1JldHVyblR5cGU6IHJl
dHVyblR5cGU7CgoKCi0gc2V0RmxvYXRGb3JtYXQ6IChjb25zdCBjaGFyICopZm9ybWF0OwoKLSBf
SV9Vc2luZzsKCgotIChjb25zdCBjaGFyICopZ2V0UHJvYmVkVmFyaWFibGU7CgoKCi0gKEJPT0wp
Z2V0SW50ZXJhY3RpdmVGbGFnOwoKCi0gKHZvaWQgKilwcm9iZVJhdzogYW5PYmplY3Q7CgoKCi0g
KHZvaWQgKilwcm9iZUFzUG9pbnRlcjogYW5PYmplY3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAgOTgK
CgoKCi0gcHJvYmVPYmplY3Q6IGFuT2JqZWN0OwoKCgotIChpbnQpcHJvYmVBc0ludDogYW5PYmpl
Y3Q7CgoKCi0gKGRvdWJsZSlwcm9iZUFzRG91YmxlOiBhbk9iamVjdDsKCgoKLSAoY29uc3QgY2hh
ciAqKXByb2JlQXNTdHJpbmc6IGFuT2JqZWN0IEJ1ZmZlcjogKGNoYXIgKilidWZmZXI7CgoKCi0g
KGlkIDxTdHJpbmc+KXByb2JlQXNTdHJpbmc6IGFuT2JqZWN0OwoKCgoKCgotIChjb25zdCBjaGFy
ICopcHJvYmVBc1N0cmluZzogYW5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6
IChjaGFyICopYnVmCiAgICAgICAgICAgIHdpdGhGdWxsUHJlY2lzaW9uOiAoQk9PTClwcmVjaXNp
b247CgoKLSAodW5zaWduZWQpZ2V0UmFuazsKCgotIChjb25zdCBjaGFyICopZ2V0QmFzZVR5cGU7
CgoKCi0gKHVuc2lnbmVkICopZ2V0RGltczsKCgoKLSBpdGVyYXRlQXNEb3VibGU6IGFuT2JqZWN0
IHVzaW5nOiAodm9pZCAoKikgKHVuc2lnbmVkIHJhbmssIHVuc2lnbmVkICp2ZWMsIGRvdWJsZSB2
YWwpKWZ1bmM7CgoKCi0gaXRlcmF0ZUFzSW50ZWdlcjogYW5PYmplY3QgdXNpbmc6ICh2b2lkICgq
KSAodW5zaWduZWQgcmFuaywgdW5zaWduZWQgKnZlYywgaW50IHZhbCkpZnVuYzsKCgoKLSAodm9p
ZClzZXREYXRhOiBhbk9iamVjdCBUbzogKHZvaWQgKiluZXdWYWx1ZTsKCgoKCgoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgICA5OQoKCgotIChCT09MKXNldERhdGE6IGFuT2JqZWN0IFRvU3RyaW5nOiAoY29u
c3QgY2hhciAqKXM7CgoKCi0gKHZvaWQpc2V0RGF0YTogYW5PYmplY3QgVG9Eb3VibGU6IChkb3Vi
bGUpdmFsOwoKZXh0ZXJuIGlkIDxTeW1ib2w+IERlZmF1bHRTdHJpbmcsIENoYXJTdHJpbmcsIElu
dFN0cmluZzsKQGVuZAoKQHByb3RvY29sIE1lc3NhZ2VQcm9iZSA8UHJvYmUsIENSRUFUQUJMRT4K
CgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRQcm9iZWRTZWxlY3RvcjogKFNFTClhU2VsOwoK
CgoKCi0gc2V0UHJvYmVkTWV0aG9kTmFtZTogKGNvbnN0IGNoYXIgKiltZXRob2ROYW1lOwoKCisg
Y3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFByb2JlZFNlbGVjdG9yOiAoU0VMKWFTZWw7Cgot
IF9JX1NldHRpbmc7CgoKCgotIHNldEhpZGVSZXN1bHQ6IChCT09MKXZhbDsKCi0gX0lfVXNpbmc7
CgoKLSAoQk9PTClpc1Jlc3VsdElkOwoKCgotIChCT09MKWlzQXJndW1lbnRJZDogKHVuc2lnbmVk
KXdoaWNoOwoKCgotIChjb25zdCBjaGFyICopZ2V0UHJvYmVkTWVzc2FnZTsKCi0gKHVuc2lnbmVk
KWdldEFyZ0NvdW50OwoKCi0gKHZhbF90KWdldEFyZzogKHVuc2lnbmVkKXdoaWNoOwoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAg
ICAgICAgUGFnZSAgMTAwCgoKCgoKLSAoY29uc3QgY2hhciAqKWdldEFyZ05hbWU6ICh1bnNpZ25l
ZCl3aGljaDsKCgotIChCT09MKWdldEhpZGVSZXN1bHQ7CgoKCi0gc2V0QXJnOiAodW5zaWduZWQp
d2hpY2ggVG9TdHJpbmc6IChjb25zdCBjaGFyICopd2hhdDsKCgoKCgotIHNldEFyZzogKHVuc2ln
bmVkKXdoaWNoIFRvVW5zaWduZWQ6ICh1bnNpZ25lZCl4OwoKCgotICh2YWxfdClkeW5hbWljQ2Fs
bE9uOiB0YXJnZXQ7CgoKCgotIChkb3VibGUpZG91YmxlRHluYW1pY0NhbGxPbjogdGFyZ2V0OwoK
CgoKLSAobG9uZylsb25nRHluYW1pY0NhbGxPbjogdGFyZ2V0OwoKCgoKLSAoY29uc3QgY2hhciAq
KXN0cmluZ0R5bmFtaWNDYWxsT246IHRhcmdldDsKCgoKCi0gb2JqZWN0RHluYW1pY0NhbGxPbjog
dGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVNYXAgPFN3YXJtT2JqZWN0LCBQcm9iZUNvbmZp
ZywgQ1JFQVRBQkxFPgojIDMzMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2Uu
aCIKLSBfSV9DcmVhdGluZzsKCgoKLSBzZXRQcm9iZWRDbGFzczogKENsYXNzKWNsYXNzOwoKLSBz
ZXRQcm9iZWRPYmplY3Q6IG9iamVjdDsKLSBfSV9Vc2luZzsKCi0gKHVuc2lnbmVkKWdldENvdW50
OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDEwMQoKCgoKLSAoQ2xhc3MpZ2V0UHJvYmVkQ2xhc3M7CgoK
CgotIGFkZFByb2JlOiAoaWQgPFByb2JlPilhUHJvYmU7CgoKCgotIGFkZFByb2JlTWFwOiBhUHJv
YmVNYXA7CgoKCgoKLSBkcm9wUHJvYmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFi
bGU7CgoKCgotIGRyb3BQcm9iZUZvck1lc3NhZ2U6IChjb25zdCBjaGFyICopYU1lc3NhZ2U7CgoK
CgoKLSBkcm9wUHJvYmVNYXA6IGFQcm9iZU1hcDsKCgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlk
IDxab25lPilhWm9uZTsKCgoKCgoKLSBjbG9uZTogKGlkIDxab25lPilhWm9uZTsKCkBlbmQKCkBw
cm90b2NvbCBTd2FybSA8U3dhcm1Qcm9jZXNzLCBDUkVBVEFCTEU+CgoKCgoKLSBfSV9Vc2luZzsK
CgotIGJ1aWxkT2JqZWN0czsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTAyCgoKLSBidWlsZEFjdGlv
bnM7CiMgNDA4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIChpZCA8
QWN0aXZpdHk+KWFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKCgoKLSAoaWQgPFByb2JlTWFwPiln
ZXRQcm9iZU1hcDsKCgotIChpZCA8UHJvYmVNYXA+KWdldENvbXBsZXRlUHJvYmVNYXA7CgoKLSAo
aWQgPFZhclByb2JlPilnZXRQcm9iZUZvclZhcmlhYmxlOiAoY29uc3QgY2hhciAqKWFWYXJpYWJs
ZTsKQGVuZAoKQHByb3RvY29sIERlZmF1bHRQcm9iZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4K
CgoKCgoKCkBlbmQKCkBwcm90b2NvbCBDdXN0b21Qcm9iZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJM
RT4KIyA0NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3Jl
YXRpbmc7CgoKCgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgZm9yQ2xhc3M6IChDbGFzcylh
Q2xhc3Mgd2l0aElkZW50aWZpZXJzOiAoY29uc3QgY2hhciAqKXZhcnMsIC4uLjsKLSBfSV9TZXR0
aW5nOwoKCi0gYWRkUHJvYmVzRm9yQ2xhc3M6IChDbGFzcykgYUNsYXNzCiAgICB3aXRoSWRlbnRp
ZmllcnM6IChjb25zdCBjaGFyICopdmFycywgLi4uOwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9j
b2wgRW1wdHlQcm9iZU1hcCA8Q3VzdG9tUHJvYmVNYXAsIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3Jl
YXRpbmc7CgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBmb3JDbGFzczogKENsYXNzKWFDbGFz
czsKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlUHJvYmVNYXAgPFByb2JlTWFwLCBDUkVBVEFCTEU+
CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAg
ICAgICAgICAgICAgICAgICBQYWdlICAxMDMKCgoKCgoKQGVuZAoKQHByb3RvY29sIENvbXBsZXRl
VmFyTWFwIDxQcm9iZU1hcCwgQ1JFQVRBQkxFPgoKCgoKCkBlbmQKCkBwcm90b2NvbCBQcm9iZUxp
YnJhcnkgPENyZWF0ZSwgRHJvcCwgUHJvYmVDb25maWcsIENSRUFUQUJMRT4KIyA0OTggIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfVXNpbmc7CiMgNTA3ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIHNldERpc3BsYXlQcmVjaXNpb246
ICh1bnNpZ25lZCluU2lnRGlzcGxheTsKCgoKLSAodW5zaWduZWQpZ2V0RGlzcGxheVByZWNpc2lv
bjsKCgoKCgoKCi0gc2V0U2F2ZWRQcmVjaXNpb246ICh1bnNpZ25lZCluU2lnU2F2ZWQ7CgoKCi0g
KHVuc2lnbmVkKWdldFNhdmVkUHJlY2lzaW9uOwoKCgotIChCT09MKWlzUHJvYmVNYXBEZWZpbmVk
Rm9yOiAoQ2xhc3MpYUNsYXNzOwotIChCT09MKWlzUHJvYmVNYXBEZWZpbmVkRm9yT2JqZWN0OiBh
bk9iamVjdDsKCgoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcEZvcjogKENsYXNzKWFD
bGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcEZvck9iamVjdDogYW5PYmplY3Q7CgoK
CgoKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVByb2JlTWFwRm9yOiAoQ2xhc3MpYUNsYXNz
OwotIChpZCA8UHJvYmVNYXA+KWdldENvbXBsZXRlUHJvYmVNYXBGb3JPYmplY3Q6IGFuT2JqZWN0
OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDEwNAoKCgoKCi0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxl
dGVWYXJNYXBGb3I6IChDbGFzcylhQ2xhc3M7Ci0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVW
YXJNYXBGb3JPYmplY3Q6IGFuT2JqZWN0OwoKCgoKCgotIChpZCA8VmFyUHJvYmU+KWdldFByb2Jl
Rm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhciBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwot
IChpZCA8VmFyUHJvYmU+KWdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhciBp
bk9iamVjdDogYW5PYmplY3Q7CgoKCgoKCi0gKGlkIDxNZXNzYWdlUHJvYmU+KWdldFByb2JlRm9y
TWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZSBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwot
IChpZCA8TWVzc2FnZVByb2JlPilnZXRQcm9iZUZvck1lc3NhZ2U6IChjb25zdCBjaGFyICopYU1l
c3NhZ2UgaW5PYmplY3Q6IGFuT2JqZWN0OwoKCgoKLSBzZXRQcm9iZU1hcDogKGlkIDxQcm9iZU1h
cD4pYU1hcCBGb3I6IChDbGFzcylhQ2xhc3M7Ci0gc2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+
KWFNYXAgRm9yT2JqZWN0OiBhbk9iamVjdDsKCkBlbmQKCgpleHRlcm4gaWQgPFByb2JlTGlicmFy
eT4gcHJvYmVMaWJyYXJ5OwoKQHByb3RvY29sIEFjdGl2aXR5Q29udHJvbCA8U3dhcm1PYmplY3Qs
IENSRUFUQUJMRT4KIyA1OTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgi
Ci0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwoKCgoKCi0gKHZvaWQpYXR0YWNoVG9BY3Rpdml0
eTogKGlkIDxTY2hlZHVsZUFjdGl2aXR5PilhbkFjdGl2aXR5OwoKCgoKCgoKLSAoaWQgPFN5bWJv
bD4pcnVuQWN0aXZpdHk7CgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTA1CgoKCgotIChpZCA8U3lt
Ym9sPilzdG9wQWN0aXZpdHk7CgoKCgoKCgotIChpZCA8U3ltYm9sPiluZXh0QWN0aW9uOwoKCgot
IChpZCA8U3ltYm9sPilzdGVwQWN0aW9uOwoKCgoKCi0gKGlkIDxTeW1ib2w+KXN0ZXBVbnRpbDog
KHRpbWV2YWxfdClzdG9wVGltZTsKCgoKCgotICh2b2lkKXVwZGF0ZVN0YXRlVmFyOwoKCi0gKGlk
IDxTeW1ib2w+KWdldFN0YXR1czsKCgotICh2b2lkKXRlcm1pbmF0ZTsKCgotIChpZCA8U2NoZWR1
bGVBY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQKCkBjbGFzcyBQcm9iZTsKQGNsYXNzIFZhclBy
b2JlOwpAY2xhc3MgTWVzc2FnZVByb2JlOwpAY2xhc3MgUHJvYmVNYXA7CkBjbGFzcyBEZWZhdWx0
UHJvYmVNYXA7CkBjbGFzcyBDdXN0b21Qcm9iZU1hcDsKQGNsYXNzIEVtcHR5UHJvYmVNYXA7CkBj
bGFzcyBDb21wbGV0ZVByb2JlTWFwOwpAY2xhc3MgQ29tcGxldGVWYXJNYXA7CkBjbGFzcyBQcm9i
ZUxpYnJhcnk7CkBjbGFzcyBBY3Rpdml0eUNvbnRyb2w7CkBjbGFzcyBTd2FybTsKQGNsYXNzIFN3
YXJtT2JqZWN0OwoKCmV4dGVybiBjb25zdCBjaGFyICpzd2FybV92ZXJzaW9uOwojIDExICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2FybU9iamVjdC5oIiAyCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAg
ICAgICAgUGFnZSAgMTA2CgoKQGludGVyZmFjZSBTd2FybU9iamVjdDogQ3JlYXRlRHJvcCA8U3dh
cm1PYmplY3Q+CnsKfQoKLSBnZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwotIGdl
dFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwotIGdldFByb2JlRm9y
TWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZTsKLSAodm9pZClldmVudE9jY3VycmVkT246
IGFuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgdmlhOiBhUHJvYmUKICAgICAgICAgIHdpdGhQ
cm9iZVR5cGU6IChjb25zdCBjaGFyICopYVByb2JlVHlwZQogICAgICAgICAgICAgICAgICAgICBv
bjogKGNvbnN0IGNoYXIgKilwcm9iZWRFbGVtZW50CiAgICAgICAgICAgICAgICAgb2ZUeXBlOiAo
Y2hhcilkYXRhVHlwZQogICAgICAgICAgICAgICB3aXRoRGF0YTogKHZvaWQgKilkYXRhOwpAZW5k
CiMgMTAgIlBlcnNvbi5oIiAyCgoKdHlwZWRlZiBlbnVtIHsKICBudWxsID0gMCwKICBoZWxsbyA9
IDEsCn0gdG9waWNfdHlwZTsKCgoKCkBpbnRlcmZhY2UgUGVyc29uOiBTd2FybU9iamVjdAp7CiAg
aWQgd29ybGQ7CiAgZmxvYXQgdG9waWNzWzJdOwogIGludCB2YWx1ZTsKICBpZCBuYW1lOwp9CgoK
LSBzdGVwOwoKCi0gc2V0V29ybGQ6IGw7CgoKLSBzZXRQZXJzb246IG4gVG9waWNfYXJyYXk6IChm
bG9hdCAqKXQ7CgoKLSAoY29uc3QgY2hhciAqKWdldE5hbWU7CgoKLSBwcmludDsKCgotIHNwZWFr
OiAodG9waWNfdHlwZSkgdG9waWMgVG9QZXJzb246IChpZCl0YXJnZXQ7CgoKLSBsb29rOwoKQGVu
ZAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAg
ICAgICAgICAgICAgICAgUGFnZSAgMTA3CgoKIyAxMCAiUGVyc29uLm0iIDIKCiMgMSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS5oIiAxCiMgMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9yYW5kb20uaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5o
IiAxCiMgMjUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIgMgoKCkBwcm90b2Nv
bCBJbnRlcm5hbFN0YXRlCiMgNDAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIK
LSBfSV9Vc2luZzsKCi0gKHVuc2lnbmVkKWdldFN0YXRlU2l6ZTsKLSAodm9pZClwdXRTdGF0ZUlu
dG86ICh2b2lkICopYnVmZmVyOwotICh2b2lkKXNldFN0YXRlRnJvbTogKHZvaWQgKilidWZmZXI7
Ci0gKHVuc2lnbmVkKWdldE1hZ2ljOwpAZW5kCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9yYW5kb20vZ2VuZXJhdG9ycy5oIiAxCiMgMjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9y
YW5kb20vZ2VuZXJhdG9ycy5oIgpAcHJvdG9jb2wgQ29tbW9uR2VuZXJhdG9yCgotIF9JX0NyZWF0
aW5nOworIGNyZWF0ZVdpdGhEZWZhdWx0czogKGlkIDxab25lPilhWm9uZTsKCi0gX0lfU2V0dGlu
ZzsKCgotIHNldFN0YXRlRnJvbVNlZWQ6ICh1bnNpZ25lZClzZWVkOwoKCgotIHNldFN0YXRlRnJv
bVNlZWRzOiAodW5zaWduZWQgKilzZWVkczsKCgoKLSBzZXRBbnRpdGhldGljOiAoQk9PTCkgYW50
aVQ7CgotIF9JX1VzaW5nOwoKLSAoQk9PTClnZXRBbnRpdGhldGljOwoKCgotICh1bnNpZ25lZCln
ZXRNYXhTZWVkVmFsdWU7CgoKCi0gKHVuc2lnbmVkICopZ2V0TWF4U2VlZFZhbHVlczsKCgoKLSAo
dW5zaWduZWQpZ2V0SW5pdGlhbFNlZWQ7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMDgKCgotICh1
bnNpZ25lZCAqKWdldEluaXRpYWxTZWVkczsKCgoKLSAodW5zaWduZWQpbGVuZ3RoT2ZTZWVkVmVj
dG9yOwoKCgotIHJlc2V0OwoKCgotICh1bnNpZ25lZClnZXRVbnNpZ25lZE1heDsKQGVuZAoKQHBy
b3RvY29sIFNpbXBsZUdlbmVyYXRvcgoKLSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9u
ZT4pYVpvbmUgc2V0U3RhdGVGcm9tU2VlZDogKHVuc2lnbmVkKXNlZWQ7CgorIGNyZWF0ZTogKGlk
IDxab25lPilhWm9uZSBzZXRTdGF0ZUZyb21TZWVkczogKHVuc2lnbmVkICopc2VlZHM7CgotIF9J
X1VzaW5nOwoKCi0gKHVuc2lnbmVkKWdldFVuc2lnbmVkU2FtcGxlOwoKCgoKLSAoZmxvYXQpZ2V0
RmxvYXRTYW1wbGU7CgoKCgotIChkb3VibGUpZ2V0VGhpbkRvdWJsZVNhbXBsZTsKCgoKCi0gKGRv
dWJsZSlnZXREb3VibGVTYW1wbGU7CgoKCgoKLSAobG9uZyBkb3VibGUpZ2V0TG9uZ0RvdWJsZVNh
bXBsZTsKCgotICh1bnNpZ25lZCBsb25nIGxvbmcgaW50KWdldEN1cnJlbnRDb3VudDsKQGVuZAoK
QHByb3RvY29sIFNwbGl0R2VuZXJhdG9yCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZSA6IChpZCA8
Wm9uZT4pYVpvbmUKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVy
c29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEwOQoKCiAgICAgICAgICAgICAgc2V0QTog
KHVuc2lnbmVkKUEKICAgICAgICAgICAgICBzZXRWOiAodW5zaWduZWQpdgogICAgICAgICAgICAg
IHNldFc6ICh1bnNpZ25lZCl3CiAgc2V0U3RhdGVGcm9tU2VlZDogKHVuc2lnbmVkKXNlZWQ7Cgor
IGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgICAgICBzZXRBOiAodW5zaWduZWQp
QQogICAgICAgICAgICAgIHNldFY6ICh1bnNpZ25lZCl2CiAgICAgICAgICAgICAgc2V0VzogKHVu
c2lnbmVkKXcKIHNldFN0YXRlRnJvbVNlZWRzOiAodW5zaWduZWQgKilzZWVkczsKCi0gX0lfU2V0
dGluZzsKCgotIGluaXRHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuOwoKCgotIGluaXRBbGw7Cgot
IF9JX1VzaW5nOwoKCgoKLSAodW5zaWduZWQpZ2V0TnVtR2VuZXJhdG9yczsKCgoKLSAodW5zaWdu
ZWQpZ2V0TnVtU2VnbWVudHM7CgoKCi0gKHVuc2lnbmVkKWdldFNlZ21lbnRMZW5ndGg7CgoKCi0g
cmVzdGFydEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW47CgoKCi0gYWR2YW5jZUdlbmVyYXRvcjog
KHVuc2lnbmVkKXZHZW47CgoKCi0ganVtcEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW4gdG9TZWdt
ZW50OiAodW5zaWduZWQgbG9uZyBsb25nIGludClzZWc7CgoKCi0gcmVzdGFydEFsbDsKCgoKLSBh
ZHZhbmNlQWxsOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBl
cnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMTAKCgoKLSBqdW1wQWxsVG9TZWdtZW50
OiAodW5zaWduZWQgbG9uZyBsb25nIGludClzZWc7CgoKCgotICh1bnNpZ25lZClnZXRVbnNpZ25l
ZFNhbXBsZTogKHVuc2lnbmVkKXZHZW47CgoKCgoKLSAoZmxvYXQpZ2V0RmxvYXRTYW1wbGU6ICh1
bnNpZ25lZCl2R2VuOwoKCgoKCi0gKGRvdWJsZSlnZXRUaGluRG91YmxlU2FtcGxlOiAodW5zaWdu
ZWQpdkdlbjsKCgoKCgotIChkb3VibGUpZ2V0RG91YmxlU2FtcGxlOiAodW5zaWduZWQpdkdlbjsK
CgoKCgoKLSAobG9uZyBkb3VibGUpZ2V0TG9uZ0RvdWJsZVNhbXBsZTogKHVuc2lnbmVkKXZHZW47
CgoKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpZ2V0Q3VycmVudFNlZ21lbnQ6ICh1bnNpZ25l
ZCl2R2VuOwoKCgotICh1bnNpZ25lZCBsb25nIGxvbmcgaW50KWdldEN1cnJlbnRDb3VudDogKHVu
c2lnbmVkKXZHZW47CkBlbmQKIyAyMjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20v
Z2VuZXJhdG9ycy5oIgpAcHJvdG9jb2wgQmFzaWNSYW5kb21HZW5lcmF0b3IgPFN3YXJtT2JqZWN0
LCBJbnRlcm5hbFN0YXRlLCBDb21tb25HZW5lcmF0b3I+CgoKCkBlbmQKCkBwcm90b2NvbCBTaW1w
bGVSYW5kb21HZW5lcmF0b3IgPEJhc2ljUmFuZG9tR2VuZXJhdG9yLCBTaW1wbGVHZW5lcmF0b3I+
CgoKCgpAZW5kCgpAcHJvdG9jb2wgU3BsaXRSYW5kb21HZW5lcmF0b3IgPEJhc2ljUmFuZG9tR2Vu
ZXJhdG9yLCBTcGxpdEdlbmVyYXRvcj4KCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDExMQoKCgoKCgoKCkBl
bmQKIyAyNTkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vZ2VuZXJhdG9ycy5oIgpA
cHJvdG9jb2wgTENHZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+CiMgMjY5ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGVuZAoKQHByb3RvY29sIExDRzFn
ZW4gPExDR2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIExDRzJnZW4gPExDR2dl
biwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIExDRzNnZW4gPExDR2dlbiwgQ1JFQVRB
QkxFPgoKCgoKQGVuZAojIDMwMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9nZW5l
cmF0b3JzLmgiCkBwcm90b2NvbCBQTU1MQ0dnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4KCgoK
QGVuZAoKQHByb3RvY29sIFBNTUxDRzFnZW4gPFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVu
ZAoKQHByb3RvY29sIFBNTUxDRzJnZW4gPFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoK
QHByb3RvY29sIFBNTUxDRzNnZW4gPFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAg
ICBQYWdlICAxMTIKCgoKCkBlbmQKCkBwcm90b2NvbCBQTU1MQ0c0Z2VuIDxQTU1MQ0dnZW4sIENS
RUFUQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHNWdlbiA8UE1NTENHZ2VuLCBDUkVB
VEFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzZnZW4gPFBNTUxDR2dlbiwgQ1JFQVRB
QkxFPgoKCgoKCkBlbmQKCkBwcm90b2NvbCBQTU1MQ0c3Z2VuIDxQTU1MQ0dnZW4sIENSRUFUQUJM
RT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHOGdlbiA8UE1NTENHZ2VuLCBDUkVBVEFCTEU+
CgoKCgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzlnZW4gPFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoK
CgoKCkBlbmQKCgoKQHByb3RvY29sIEFDR2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yLCBDUkVB
VEFCTEU+CiMgMzkxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMu
aCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDExMwoKCkBlbmQKCkBwcm90b2NvbCBTQ0dnZW4gPFNpbXBs
ZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgojIDQwNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBlbmQKCgoKQHByb3RvY29sIFNXQmdlbiA8U2ltcGxl
UmFuZG9tR2VuZXJhdG9yPgoKCgoKCgoKQGVuZAoKQHByb3RvY29sIFNXQjFnZW4gPFNXQmdlbiwg
Q1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIFNXQjJnZW4gPFNXQmdlbiwgQ1JFQVRBQkxF
PgoKCgoKQGVuZAoKQHByb3RvY29sIFNXQjNnZW4gPFNXQmdlbiwgQ1JFQVRBQkxFPgoKCgoKQGVu
ZAoKCkBwcm90b2NvbCBQU1dCZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4K
CgoKCkBlbmQKCgoKQHByb3RvY29sIE1XQ0FnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JF
QVRBQkxFPgoKCgoKQGVuZAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAg
ICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDExNAoKCkBwcm90b2NvbCBNV0NC
Z2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKCgpAZW5kCgoKQHByb3Rv
Y29sIFJXQzJnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgoKCgpAZW5kCgoK
QHByb3RvY29sIFJXQzhnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgoKCgoK
QGVuZAoKCkBwcm90b2NvbCBUR0ZTUmdlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPgoKCgoKQGVu
ZAoKQHByb3RvY29sIFRUNDAzZ2VuIDxUR0ZTUmdlbiwgQ1JFQVRBQkxFPgoKCgpAZW5kCgpAcHJv
dG9jb2wgVFQ3NzVnZW4gPFRHRlNSZ2VuLCBDUkVBVEFCTEU+CgoKCkBlbmQKCkBwcm90b2NvbCBU
VDgwMGdlbiA8VEdGU1JnZW4sIENSRUFUQUJMRT4KCgoKQGVuZAoKCkBwcm90b2NvbCBNVDE5OTM3
Z2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKQGVuZAoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgIDExNQoKCgpAcHJvdG9jb2wgTVJHZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+
CgoKCgoKCgpAZW5kCgpAcHJvdG9jb2wgTVJHNWdlbiA8TVJHZ2VuLCBDUkVBVEFCTEU+CgoKCgpA
ZW5kCgpAcHJvdG9jb2wgTVJHNmdlbiA8TVJHZ2VuLCBDUkVBVEFCTEU+CgoKCgpAZW5kCgpAcHJv
dG9jb2wgTVJHN2dlbiA8TVJHZ2VuLCBDUkVBVEFCTEU+CgoKCgpAZW5kCgoKQHByb3RvY29sIEMy
VEFVU2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPgoKCgoKQGVuZAoKQHByb3RvY29sIEMyVEFV
UzFnZW4gPEMyVEFVU2dlbiwgQ1JFQVRBQkxFPgoKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQzJUQVVT
MmdlbiA8QzJUQVVTZ2VuLCBDUkVBVEFCTEU+CgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMTYK
CgpAZW5kCgpAcHJvdG9jb2wgQzJUQVVTM2dlbiA8QzJUQVVTZ2VuLCBDUkVBVEFCTEU+CgoKCgoK
CkBlbmQKCgpAcHJvdG9jb2wgQzJNUkczZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFU
QUJMRT4KCgoKCgoKCkBlbmQKCgpAcHJvdG9jb2wgQzNNV0NnZW4gPFNpbXBsZVJhbmRvbUdlbmVy
YXRvciwgQ1JFQVRBQkxFPgoKCgoKQGVuZAojIDYxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBwcm90b2NvbCBDMkxDR1hnZW4gPFNwbGl0UmFuZG9tR2Vu
ZXJhdG9yLCBDUkVBVEFCTEU+CiMgNjI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9t
L2dlbmVyYXRvcnMuaCIKQGVuZAoKCkBwcm90b2NvbCBDNExDR1hnZW4gPFNwbGl0UmFuZG9tR2Vu
ZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgoKQGVuZAojIDY1MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBjbGFzcyBMQ0cxZ2VuOwpAY2xhc3MgTENHMmdlbjsK
QGNsYXNzIExDRzNnZW47CkBjbGFzcyBQTU1MQ0cxZ2VuOwpAY2xhc3MgUE1NTENHMmdlbjsKQGNs
YXNzIFBNTUxDRzNnZW47CkBjbGFzcyBQTU1MQ0c0Z2VuOwpAY2xhc3MgUE1NTENHNWdlbjsKQGNs
YXNzIFBNTUxDRzZnZW47CkBjbGFzcyBQTU1MQ0c3Z2VuOwpAY2xhc3MgUE1NTENHOGdlbjsKQGNs
YXNzIFBNTUxDRzlnZW47CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTE3CgoKCgpAY2xhc3MgQUNHZ2Vu
OwpAY2xhc3MgU0NHZ2VuOwpAY2xhc3MgU1dCMWdlbjsKQGNsYXNzIFNXQjJnZW47CkBjbGFzcyBT
V0IzZ2VuOwpAY2xhc3MgUFNXQmdlbjsKQGNsYXNzIFRUNDAzZ2VuOwpAY2xhc3MgVFQ3NzVnZW47
CkBjbGFzcyBUVDgwMGdlbjsKQGNsYXNzIE1UMTk5MzdnZW47CkBjbGFzcyBNUkc1Z2VuOwpAY2xh
c3MgTVJHNmdlbjsKQGNsYXNzIE1SRzdnZW47CkBjbGFzcyBNV0NBZ2VuOwpAY2xhc3MgTVdDQmdl
bjsKQGNsYXNzIFJXQzJnZW47CkBjbGFzcyBSV0M4Z2VuOwoKCgpAY2xhc3MgQzJUQVVTMWdlbjsK
QGNsYXNzIEMyVEFVUzJnZW47CkBjbGFzcyBDMlRBVVMzZ2VuOwoKCgpAY2xhc3MgQzJNUkczZ2Vu
OwpAY2xhc3MgQzNNV0NnZW47CiMgNzA4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9t
L2dlbmVyYXRvcnMuaCIKQGNsYXNzIEMyTENHWGdlbjsKQGNsYXNzIEM0TENHWGdlbjsKIyA0OSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL3JhbmRvbS9kaXN0cmlidXRpb25zLmgiIDEKIyAyNSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL3JhbmRvbS9kaXN0cmlidXRpb25zLmgiCkBwcm90b2NvbCBQcm9iYWJpbGl0eURp
c3RyaWJ1dGlvbiA8U3dhcm1PYmplY3QsIEludGVybmFsU3RhdGU+CgoKCgoKCi0gX0lfQ3JlYXRp
bmc7CgoKKyBjcmVhdGVXaXRoRGVmYXVsdHM6IChpZCA8Wm9uZT4pYVpvbmU7CgoKKyBjcmVhdGUg
OiAoaWQgPFpvbmU+KWFab25lCiAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVy
YXRvcj4pc2ltcGxlR2VuZXJhdG9yOwoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAg
ICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJh
dG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKSB2R2VuOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAg
UGFnZSAgMTE4CgoKCi0gX0lfU2V0dGluZzsKCi0gc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJh
bmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yOwoKCi0gc2V0R2VuZXJhdG9yIDogKGlkIDxT
cGxpdFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9y
OiAodW5zaWduZWQpdkdlbjsKCgotIHJlc2V0OwoKLSBfSV9Vc2luZzsKCi0gKGlkIDxCYXNpY1Jh
bmRvbUdlbmVyYXRvcj4pIGdldEdlbmVyYXRvcjsKCgotICh1bnNpZ25lZClnZXRWaXJ0dWFsR2Vu
ZXJhdG9yOwoKCi0gKEJPT0wpZ2V0T3B0aW9uc0luaXRpYWxpemVkOwoKCi0gKHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQpZ2V0Q3VycmVudENvdW50OwpAZW5kCgoKCgoKQHByb3RvY29sIEJvb2xlYW5E
aXN0cmlidXRpb24gPFByb2JhYmlsaXR5RGlzdHJpYnV0aW9uPgoKCgoKLSBfSV9Vc2luZzsKCi0g
KEJPT0wpZ2V0Qm9vbGVhblNhbXBsZTsKLSAoaW50KWdldEludGVnZXJTYW1wbGU7CkBlbmQKCkBw
cm90b2NvbCBJbnRlZ2VyRGlzdHJpYnV0aW9uIDxQcm9iYWJpbGl0eURpc3RyaWJ1dGlvbj4KCgoK
Ci0gX0lfVXNpbmc7CgotIChpbnQpZ2V0SW50ZWdlclNhbXBsZTsKQGVuZAoKQHByb3RvY29sIFVu
c2lnbmVkRGlzdHJpYnV0aW9uIDxQcm9iYWJpbGl0eURpc3RyaWJ1dGlvbj4KCgoKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAg
ICAgICBQYWdlICAxMTkKCgoKLSBfSV9Vc2luZzsKCi0gKHVuc2lnbmVkKWdldFVuc2lnbmVkU2Ft
cGxlOwpAZW5kCgpAcHJvdG9jb2wgRG91YmxlRGlzdHJpYnV0aW9uIDxQcm9iYWJpbGl0eURpc3Ry
aWJ1dGlvbj4KCgoKCgotIF9JX1VzaW5nOwoKCi0gKGRvdWJsZSlnZXREb3VibGVTYW1wbGU7CkBl
bmQKCgoKCgoKQHByb3RvY29sIFJhbmRvbUJpdERpc3QgPEJvb2xlYW5EaXN0cmlidXRpb24sIENS
RUFUQUJMRT4KCgoKCgotIF9JX1VzaW5nOwoKLSAoQk9PTClnZXRDb2luVG9zczsKQGVuZAoKQHBy
b3RvY29sIEJlcm5vdWxsaURpc3QgPEJvb2xlYW5EaXN0cmlidXRpb24sIENSRUFUQUJMRT4KCgoK
LSBfSV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgc2V0R2VuZXJh
dG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAgc2V0UHJv
YmFiaWxpdHk6IChkb3VibGUpcDsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAg
ICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRv
cgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuCiAgICAgICBzZXRQcm9iYWJp
bGl0eTogKGRvdWJsZSlwOwoKLSBfSV9TZXR0aW5nOwoKLSBzZXRQcm9iYWJpbGl0eTogKGRvdWJs
ZSlwOwoKLSBfSV9Vc2luZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
ICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMjAKCgotIChkb3VibGUpZ2V0
UHJvYmFiaWxpdHk7CgoKLSAoQk9PTClnZXRTYW1wbGVXaXRoUHJvYmFiaWxpdHk6IChkb3VibGUp
cDsKQGVuZAoKCkBwcm90b2NvbCBVbmlmb3JtSW50ZWdlckRpc3QgPEludGVnZXJEaXN0cmlidXRp
b24sIENSRUFUQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+
KWFab25lCiAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxl
R2VuZXJhdG9yCiBzZXRJbnRlZ2VyTWluOiAoaW50KW1pblZhbHVlCiAgICAgICAgc2V0TWF4OiAo
aW50KW1heFZhbHVlOwoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgc2V0R2Vu
ZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgpzZXRWaXJ0
dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpIHZHZW4KICAgICAgc2V0SW50ZWdlck1pbjogKGludClt
aW5WYWx1ZQogICAgICAgICAgICAgc2V0TWF4OiAoaW50KW1heFZhbHVlOwoKLSBfSV9TZXR0aW5n
OwoKCi0gc2V0SW50ZWdlck1pbjogKGludCltaW5WYWx1ZSBzZXRNYXg6IChpbnQpbWF4VmFsdWU7
CgotIF9JX1VzaW5nOwoKLSAoaW50KWdldEludGVnZXJNaW47CgoKLSAoaW50KWdldEludGVnZXJN
YXg7CgoKCi0gKGludClnZXRJbnRlZ2VyV2l0aE1pbjogKGludCltaW5WYWx1ZSB3aXRoTWF4OiAo
aW50KW1heFZhbHVlOwpAZW5kCgpAcHJvdG9jb2wgVW5pZm9ybVVuc2lnbmVkRGlzdCA8VW5zaWdu
ZWREaXN0cmlidXRpb24sIENSRUFUQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUg
OiAoaWQgPFpvbmU+KWFab25lCiAgICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2Vu
ZXJhdG9yPilzaW1wbGVHZW5lcmF0b3IKICBzZXRVbnNpZ25lZE1pbjogKHVuc2lnbmVkKW1pblZh
bHVlCiAgICAgICAgICBzZXRNYXg6ICh1bnNpZ25lZCltYXhWYWx1ZTsKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBh
Z2UgIDEyMQoKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICAgICAgIHNldEdlbmVy
YXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0
dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbgogICAgICAgc2V0VW5zaWduZWRNaW46ICh1bnNp
Z25lZCltaW5WYWx1ZQogICAgICAgICAgICAgICBzZXRNYXg6ICh1bnNpZ25lZCltYXhWYWx1ZTsK
Ci0gX0lfU2V0dGluZzsKCgotIHNldFVuc2lnbmVkTWluOiAodW5zaWduZWQpbWluVmFsdWUKICAg
ICAgICAgIHNldE1heDogKHVuc2lnbmVkKW1heFZhbHVlOwoKLSBfSV9Vc2luZzsKCi0gKHVuc2ln
bmVkKWdldFVuc2lnbmVkTWluOwoKCi0gKHVuc2lnbmVkKWdldFVuc2lnbmVkTWF4OwoKCgotICh1
bnNpZ25lZClnZXRVbnNpZ25lZFdpdGhNaW46ICh1bnNpZ25lZCltaW5WYWwKICAgICAgICAgICAg
ICAgICAgICAgICB3aXRoTWF4OiAodW5zaWduZWQpbWF4VmFsOwpAZW5kCgpAcHJvdG9jb2wgVW5p
Zm9ybURvdWJsZURpc3QgPERvdWJsZURpc3RyaWJ1dGlvbiwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBf
SV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgc2V0R2VuZXJhdG9y
OiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAgICBzZXREb3Vi
bGVNaW46IChkb3VibGUpbWluVmFsdWUKICAgICAgICAgIHNldE1heDogKGRvdWJsZSltYXhWYWx1
ZTsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAo
aWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5l
cmF0b3I6ICh1bnNpZ25lZCl2R2VuCiAgICAgICAgIHNldERvdWJsZU1pbjogKGRvdWJsZSltaW5W
YWx1ZQogICAgICAgICAgICAgICBzZXRNYXg6IChkb3VibGUpbWF4VmFsdWU7CgotIF9JX1NldHRp
bmc7CgoKLSBzZXREb3VibGVNaW46IChkb3VibGUpbWluVmFsdWUgc2V0TWF4OiAoZG91YmxlKW1h
eFZhbHVlOwoKLSBfSV9Vc2luZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMjIKCgoKLSAoZG91Ymxl
KWdldERvdWJsZU1pbjsKCgoKLSAoZG91YmxlKWdldERvdWJsZU1heDsKCgoKLSAoZG91YmxlKWdl
dERvdWJsZVdpdGhNaW46IChkb3VibGUpbWluVmFsdWUgd2l0aE1heDogKGRvdWJsZSltYXhWYWx1
ZTsKQGVuZAoKQHByb3RvY29sIE5vcm1hbCA8RG91YmxlRGlzdHJpYnV0aW9uPgoKLSBfSV9DcmVh
dGluZzsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgIHNldEdlbmVyYXRvcjogKGlk
IDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+KXNpbXBsZUdlbmVyYXRvcgogICAgICAgICBzZXRNZWFu
OiAoZG91YmxlKW1lYW4KICAgICBzZXRWYXJpYW5jZTogKGRvdWJsZSl2YXJpYW5jZTsKCgoKKyBj
cmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFu
ZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3IKICAgICAgICAgc2V0TWVhbjogKGRvdWJsZSlt
ZWFuCiAgICAgICBzZXRTdGREZXY6IChkb3VibGUpc2RldjsKCgoKKyBjcmVhdGUgOiAoaWQgPFpv
bmU+KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRv
cj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbgog
ICAgICAgICAgICAgIHNldE1lYW46IChkb3VibGUpbWVhbgogICAgICAgICAgc2V0VmFyaWFuY2U6
IChkb3VibGUpdmFyaWFuY2U7CgoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAg
ICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9y
CiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW4KICAgICAgICAgICAgICBzZXRN
ZWFuOiAoZG91YmxlKW1lYW4KICAgICAgICAgICAgc2V0U3RkRGV2OiAoZG91YmxlKXNkZXY7Cgot
IF9JX1NldHRpbmc7CgoKLSBzZXRNZWFuOiAoZG91YmxlKW1lYW4gc2V0VmFyaWFuY2U6IChkb3Vi
bGUpdmFyaWFuY2U7CgoKCi0gc2V0TWVhbjogKGRvdWJsZSltZWFuIHNldFN0ZERldjogKGRvdWJs
ZSlzZGV2OwoKLSBfSV9Vc2luZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMjMKCgotIChkb3VibGUp
Z2V0TWVhbjsKCgotIChkb3VibGUpZ2V0VmFyaWFuY2U7CgoKLSAoZG91YmxlKWdldFN0ZERldjsK
CgoKLSAoZG91YmxlKWdldFNhbXBsZVdpdGhNZWFuOiAoZG91YmxlKW1lYW4KICAgICAgICAgICAg
ICAgd2l0aFZhcmlhbmNlOiAoZG91YmxlKXZhcmlhbmNlOwoKCgotIChkb3VibGUpZ2V0U2FtcGxl
V2l0aE1lYW46IChkb3VibGUpbWVhbgogICAgICAgICAgICAgICAgIHdpdGhTdGREZXY6IChkb3Vi
bGUpc2RldjsKQGVuZAoKQHByb3RvY29sIE5vcm1hbERpc3QgPE5vcm1hbCwgQ1JFQVRBQkxFPgoK
CgpAZW5kCgpAcHJvdG9jb2wgTG9nTm9ybWFsRGlzdCA8Tm9ybWFsLCBDUkVBVEFCTEU+CgoKCkBl
bmQKCkBwcm90b2NvbCBFeHBvbmVudGlhbERpc3QgPERvdWJsZURpc3RyaWJ1dGlvbiwgQ1JFQVRB
QkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgc2V0
R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAg
ICAgICBzZXRNZWFuOiAoZG91YmxlKW1lYW47CgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25l
CiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRH
ZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbgogICAgICAgICAg
ICAgIHNldE1lYW46IChkb3VibGUpbWVhbjsKCgotIF9JX1NldHRpbmc7CgotIHNldE1lYW46IChk
b3VibGUpbWVhbjsKCi0gX0lfVXNpbmc7CgotIChkb3VibGUpZ2V0TWVhbjsKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAg
ICBQYWdlICAxMjQKCgoKCi0gKGRvdWJsZSlnZXRTYW1wbGVXaXRoTWVhbjogKGRvdWJsZSltZWFu
OwpAZW5kCgpAcHJvdG9jb2wgR2FtbWFEaXN0IDxEb3VibGVEaXN0cmlidXRpb24sIENSRUFUQUJM
RT4KCgoKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogc2V0R2Vu
ZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4pc2ltcGxlR2VuZXJhdG9yCiAgICAg
c2V0QWxwaGE6IChkb3VibGUpYWxwaGEKICAgICAgc2V0QmV0YTogKGRvdWJsZSliZXRhOwoKCisg
Y3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3Bs
aXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjog
KHVuc2lnbmVkKXZHZW4KICAgICAgICAgICAgIHNldEFscGhhOiAoZG91YmxlKWFscGhhCiAgICAg
ICAgICAgICAgc2V0QmV0YTogKGRvdWJsZSliZXRhOwoKLSBfSV9TZXR0aW5nOwoKCi0gc2V0QWxw
aGE6IChkb3VibGUpYWxwaGEgc2V0QmV0YTogKGRvdWJsZSliZXRhOwoKLSBfSV9Vc2luZzsKCi0g
KGRvdWJsZSlnZXRBbHBoYTsKCgotIChkb3VibGUpZ2V0QmV0YTsKCgoKLSAoZG91YmxlKWdldFNh
bXBsZVdpdGhBbHBoYTogKGRvdWJsZSlhbHBoYQogICAgICAgICAgICAgICAgICAgIHdpdGhCZXRh
OiAoZG91YmxlKWJldGE7CkBlbmQKCkBwcm90b2NvbCBQb2lzc29uRGlzdCA8VW5zaWduZWREaXN0
cmlidXRpb24sIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZSA6IChpZCA8
Wm9uZT4pYVpvbmUKIHNldEdlbmVyYXRvcjogKGlkIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+KWdl
bmVyYXRvcjsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiBzZXRHZW5lcmF0b3I6IChp
ZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilnZW5lcmF0b3IKIHNldE9jY3VyUmF0ZTogKGRvdWJs
ZSkgYW5PY2N1clJhdGUKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
UGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEyNQoKCiAgc2V0SW50ZXJ2YWw6IChk
b3VibGUpIGFuSW50ZXJ2YWw7CgoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAg
ICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+KWdlbmVyYXRvcgogIHNl
dFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2R2VuOwoKCgorIGNyZWF0ZSA6IChpZCA8Wm9u
ZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9y
PilnZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbgogICAgICAg
ICBzZXRPY2N1clJhdGU6IChkb3VibGUpIGFuT2NjdXJSYXRlCiAgICAgICAgICBzZXRJbnRlcnZh
bDogKGRvdWJsZSkgYW5JbnRlcnZhbDsKCi0gX0lfU2V0dGluZzsKCgoKLSBzZXRJbnRlcnZhbDog
KGRvdWJsZSkgYW5JbnRlcnZhbDsKCgoKLSBzZXRPY2N1clJhdGU6IChkb3VibGUpIGFuT2NjdXJS
YXRlOwoKCgotIHNldE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1clJhdGUKICAgc2V0SW50ZXJ2
YWw6IChkb3VibGUpIGFuSW50ZXJ2YWw7CgotIF9JX1VzaW5nOwoKCi0gKGRvdWJsZSkgZ2V0T2Nj
dXJSYXRlOwoKCi0gKGRvdWJsZSkgZ2V0SW50ZXJ2YWw7CgoKCgotICh1bnNpZ25lZCkgZ2V0VW5z
aWduZWRTYW1wbGU7CgoKCgotICh1bnNpZ25lZCkgZ2V0VW5zaWduZWRTYW1wbGVXaXRoSW50ZXJ2
YWw6IChkb3VibGUpIGFuSW50ZXJ2YWw7CgoKCgoKLSAodW5zaWduZWQpIGdldFVuc2lnbmVkU2Ft
cGxlV2l0aE9jY3VyUmF0ZTogKGRvdWJsZSkgYW5PY2N1clJhdGUKICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpdGhJbnRlcnZhbDogKGRvdWJsZSkgYW5JbnRlcnZhbDsKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAxMjYKCgpAZW5kCgoKCgoKQGNsYXNzIFJhbmRvbUJpdERpc3Q7CkBjbGFzcyBCZXJub3Vs
bGlEaXN0OwoKCkBjbGFzcyBVbmlmb3JtSW50ZWdlckRpc3Q7CgoKQGNsYXNzIFVuaWZvcm1VbnNp
Z25lZERpc3Q7CgoKQGNsYXNzIFVuaWZvcm1Eb3VibGVEaXN0OwpAY2xhc3MgTm9ybWFsRGlzdDsK
QGNsYXNzIExvZ05vcm1hbERpc3Q7CkBjbGFzcyBFeHBvbmVudGlhbERpc3Q7CkBjbGFzcyBHYW1t
YURpc3Q7CkBjbGFzcyBQb2lzc29uRGlzdDsKIyA1MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L3JhbmRvbS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9yYW5kb212
YXJzLmgiIDEKIyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9yYW5kb212YXJz
LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2V4dGVybnZhci5oIiAxCiMgMjMgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tdmFycy5oIiAyCgoKCmV4dGVybiBp
ZCA8TVQxOTkzN2dlbj4gcmFuZG9tR2VuZXJhdG9yOwoKCmV4dGVybiBpZCA8VW5pZm9ybUludGVn
ZXJEaXN0PiB1bmlmb3JtSW50UmFuZDsKZXh0ZXJuIGlkIDxVbmlmb3JtVW5zaWduZWREaXN0PiB1
bmlmb3JtVW5zUmFuZDsKZXh0ZXJuIGlkIDxVbmlmb3JtRG91YmxlRGlzdD4gdW5pZm9ybURibFJh
bmQ7CgoKCgpleHRlcm4gQk9PTCBfdXNlRml4ZWRTZWVkOwpleHRlcm4gdW5zaWduZWQgaW50IF9m
aXJzdFNlZWQ7CgoKCgoKCgpleHRlcm4gdm9pZCBpbml0UmFuZG9tIChpZCBhcmd1bWVudHMpOwpl
eHRlcm4gdW5zaWduZWQgaW50IHRlbXB1c0Z1Z2l0ICh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGlu
dCBuZXh0U2VlZCAodm9pZCk7CiMgNTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20u
aCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tZGVmcy5oIiAx
CiMgMjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tZGVmcy5oIgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDEKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEy
NwoKCiMgOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvc3dhcm1jb25maWcuaCIgMQojIDEwICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvbWlzYy5oIiAyCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxMiAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL21pc2MuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDE2ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDE3
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0
cmluZy5oIiAxIDMKIyAxOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgoKIyAx
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMiAzCiMgMTc1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy9wb3NpeF9vcHQuaCIgMSAzCiMgMTc2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi
IDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAxIDMKIyAyMyAi
L3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy93b3Jkc2l6ZS5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgi
IDIgMwojIDE4MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAxOTAgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDE5MSAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoK
CgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy
IDMKCgoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAg
ICAgICAgICAgICAgICAgUGFnZSAgMTI4CgoKCgoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoK
CgoKdHlwZWRlZiBfX29mZjY0X3Qgb2ZmNjRfdDsKCgoKCnR5cGVkZWYgX191c2Vjb25kc190IHVz
ZWNvbmRzX3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgoKCnR5cGVkZWYgX19pbnRw
dHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMgMjYw
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29uc3QgY2hh
ciAqX19uYW1lLCBpbnQgX190eXBlKSA7CgoKCgpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKF9fY29u
c3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CiMgMjkwICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBp
bnQgX193aGVuY2UpIDsKIyAzMDIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19v
ZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5j
ZSkgOwoKCgpleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCkgOwoKCgpleHRlcm4gc3NpemVfdCBy
ZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcykgOwoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgIDEyOQoKCgpleHRlcm4gc3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qg
dm9pZCAqX19idWYsIHNpemVfdCBfX24pIDsKCgoKZXh0ZXJuIHNzaXplX3QgcHJlYWQgKGludCBf
X2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLCBfX29mZl90IF9fb2Zmc2V0KQogICAg
ICAgICAgICA7CmV4dGVybiBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAq
X19idWYsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgX19vZmZfdCBfX29mZnNl
dCkgOwojIDM0MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHByZWFk
NjQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAgICAgICAgICAg
ICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIDsKCgpleHRlcm4gc3NpemVfdCBwd3JpdGU2
NCAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX29mZjY0X3QgX19vZmZzZXQpIDsKCgoKCgoKCmV4dGVybiBpbnQgcGlw
ZSAoaW50IF9fcGlwZWRlc1syXSkgOwojIDM2MiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsKIyAzNzEg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1bnNp
Z25lZCBpbnQgX19zZWNvbmRzKSA7CgoKCgoKCmV4dGVybiBfX3VzZWNvbmRzX3QgdWFsYXJtIChf
X3VzZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpCiAgICAgICAgICAg
IDsKCgoKZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKSA7CgoKCgoK
ZXh0ZXJuIGludCBwYXVzZSAodm9pZCkgOwoKCgpleHRlcm4gaW50IGNob3duIChfX2NvbnN0IGNo
YXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApCiAgICAgICAgICAg
IDsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lk
X3QgX19ncm91cCkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
UGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEzMAoKCgoKCmV4dGVybiBpbnQgbGNo
b3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3Jv
dXApCiAgICAgICAgICAgIDsKCgoKCmV4dGVybiBpbnQgY2hkaXIgKF9fY29uc3QgY2hhciAqX19w
YXRoKSA7CgoKCmV4dGVybiBpbnQgZmNoZGlyIChpbnQgX19mZCkgOwojIDQyMyAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBjaGFyICpnZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19zaXplKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1lICh2b2lkKSA7
CgoKCgoKCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQg
ZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVwMiAoaW50IF9fZmQsIGludCBfX2ZkMikg
OwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKZXh0ZXJuIGNoYXIgKiplbnZpcm9uOwoKCgoK
CmV4dGVybiBpbnQgZXhlY3ZlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBf
X2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pIDsKCgoK
CmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9fZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNo
YXIgKl9fY29uc3QgX19lbnZwW10pCiAgICAgICAgICAgIDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAx
MzEKCgoKCgpleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19j
b25zdCBfX2FyZ3ZbXSkgOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoX19jb25zdCBjaGFyICpfX3Bh
dGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWNsIChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoKCmV4dGVybiBp
bnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkg
OwoKCgoKZXh0ZXJuIGludCBleGVjbHAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX2NvbnN0IGNo
YXIgKl9fYXJnLCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgbmljZSAoaW50IF9faW5jKSA7CgoKCgpl
eHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy
bl9fKSk7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMKIyAyNSAi
L3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwplbnVtCiAgewogICAgX1BDX0xJTktfTUFY
LAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBVVCwKCiAgICBfUENfTkFNRV9N
QVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JVRiwKCiAgICBfUENfQ0hPV05f
UkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTMyCgoK
ICAgIF9QQ19WRElTQUJMRSwKCiAgICBfUENfU1lOQ19JTywKCiAgICBfUENfQVNZTkNfSU8sCgog
ICAgX1BDX1BSSU9fSU8sCgogICAgX1BDX1NPQ0tfTUFYQlVGLAoKICAgIF9QQ19GSUxFU0laRUJJ
VFMsCgogICAgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX01BWF9YRkVSX1NJ
WkUsCgogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfWEZFUl9BTElHTgoK
ICB9OwoKCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAg
IF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgog
ICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05U
Uk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAg
X1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNI
Uk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVE
X0lPLAoKICAgIF9TQ19GU1lOQywKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEzMwoKCgogICAgX1NDX01B
UFBFRF9GSUxFUywKCiAgICBfU0NfTUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAg
ICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBf
U0NfU0VNQVBIT1JFUywKCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19B
SU9fTElTVElPX01BWCwKCiAgICBfU0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFf
TUFYLAoKICAgIF9TQ19ERUxBWVRJTUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAg
X1NDX01RX1BSSU9fTUFYLAoKICAgIF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgog
ICAgX1NDX1JUU0lHX01BWCwKCiAgICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZB
TFVFX01BWCwKCiAgICBfU0NfU0lHUVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKCgog
ICAgX1NDX0JDX0JBU0VfTUFYLAoKICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19CQ19TQ0FM
RV9NQVgsCgogICAgX1NDX0JDX1NUUklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hUU19NQVgs
CgogICAgX1NDX0VRVUlWX0NMQVNTX01BWCwKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDEzNAoKCgogICAg
X1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFY
LAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAg
X1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAg
IF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYs
CgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgog
ICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAg
ICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19JT1ZfTUFYID0gX1ND
X1VJT19NQVhJT1YsCgogICAgX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0sCgogICAgX1NDX1BJSV9J
TlRFUk5FVF9ER1JBTSwKCiAgICBfU0NfUElJX09TSV9DT1RTLAoKICAgIF9TQ19QSUlfT1NJX0NM
VFMsCgogICAgX1NDX1BJSV9PU0lfTSwKCiAgICBfU0NfVF9JT1ZfTUFYLAoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAg
ICBQYWdlICAxMzUKCgoKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19USFJFQURfU0FGRV9GVU5D
VElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1NDX0dFVFBXX1JfU0laRV9N
QVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlfTkFNRV9NQVgsCgogICAg
X1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1NDX1RIUkVBRF9LRVlTX01B
WCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFY
LAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NU
QUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RI
UkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCgogICAgX1ND
X1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNTT1JTX0NPTkYsCgogICAg
X1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMsCgogICAgX1NDX0FWUEhZ
U19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFTU19NQVgsCgoKICAgIF9T
Q19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiwKCiAgICBfU0NfWE9Q
RU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hPUEVOX0VOSF9JMThOLAoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAg
ICAgICAgICAgICAgUGFnZSAgMTM2CgoKCiAgICBfU0NfWE9QRU5fU0hNLAoKCiAgICBfU0NfMl9D
SEFSX1RFUk0sCgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9TQ18yX1VQRSwKCgogICAgX1ND
X1hPUEVOX1hQRzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAgX1NDX1hPUEVOX1hQRzQsCgoK
ICAgIF9TQ19DSEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgogICAgX1NDX0NIQVJfTUlOLAoK
ICAgIF9TQ19JTlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAgIF9TQ19MT05HX0JJVCwKCiAg
ICBfU0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgogICAgX1NDX05aRVJPLAoKICAg
IF9TQ19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAgICBfU0NfU0NIQVJfTUlOLAoK
ICAgIF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgogICAgX1NDX1VDSEFSX01BWCwK
CiAgICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwKCiAgICBfU0NfVVNIUlRfTUFY
LAoKCiAgICBfU0NfTkxfQVJHTUFYLAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTM3CgoKCiAgICBfU0Nf
TkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAgIF9TQ19OTF9OTUFYLAoKICAgIF9T
Q19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoKICAgIF9TQ19YQlM1X0lMUDMyX09G
RjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAgICBfU0NfWEJTNV9MUDY0X09GRjY0
LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAgX1NDX1hPUEVOX0xFR0FDWSwKCiAg
ICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMsCgoK
ICAgIF9TQ19BRFZJU09SWV9JTkZPLAoKICAgIF9TQ19CQVJSSUVSUywKCiAgICBfU0NfQkFTRSwK
CiAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCgogICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsCgogICAg
X1NDX0NMT0NLX1NFTEVDVElPTiwKCiAgICBfU0NfQ1BVVElNRSwKCiAgICBfU0NfVEhSRUFEX0NQ
VVRJTUUsCgogICAgX1NDX0RFVklDRV9JTywKCiAgICBfU0NfREVWSUNFX1NQRUNJRklDLAoKICAg
IF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiwKCiAgICBfU0NfRkRfTUdNVCwKCiAgICBfU0NfRklGTywK
CiAgICBfU0NfUElQRSwKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
IFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxMzgKCgogICAgX1NDX0ZJTEVfQVRU
UklCVVRFUywKCiAgICBfU0NfRklMRV9MT0NLSU5HLAoKICAgIF9TQ19GSUxFX1NZU1RFTSwKCiAg
ICBfU0NfTU9OT1RPTklDX0NMT0NLLAoKICAgIF9TQ19NVUxUSVBMRV9QUk9DRVNTLAoKICAgIF9T
Q19TSU5HTEVfUFJPQ0VTUywKCiAgICBfU0NfTkVUV09SS0lORywKCiAgICBfU0NfUkVBREVSX1dS
SVRFUl9MT0NLUywKCiAgICBfU0NfU1BJTl9MT0NLUywKCiAgICBfU0NfUkVHRVhQLAoKICAgIF9T
Q19SRUdFWF9WRVJTSU9OLAoKICAgIF9TQ19TSEVMTCwKCiAgICBfU0NfU0lHTkFMUywKCiAgICBf
U0NfU1BBV04sCgogICAgX1NDX1NQT1JBRElDX1NFUlZFUiwKCiAgICBfU0NfVEhSRUFEX1NQT1JB
RElDX1NFUlZFUiwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFLAoKICAgIF9TQ19TWVNURU1fREFU
QUJBU0VfUiwKCiAgICBfU0NfVElNRU9VVFMsCgogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RT
LAoKICAgIF9TQ19VU0VSX0dST1VQUywKCiAgICBfU0NfVVNFUl9HUk9VUFNfUiwKCiAgICBfU0Nf
Ml9QQlMsCgogICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsCgogICAgX1NDXzJfUEJTX0xPQ0FURSwK
CiAgICBfU0NfMl9QQlNfTUVTU0FHRSwKCiAgICBfU0NfMl9QQlNfVFJBQ0ssCgogICAgX1NDX1NZ
TUxPT1AsCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24u
bWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTM5CgoKICAgIF9TQ19TVFJFQU1TLAoKICAgIF9T
Q18yX1BCU19DSEVDS1BPSU5UCgogIH07CgoKCgoKZW51bQogIHsKICAgIF9DU19QQVRICgoKCgog
ICAgLAogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLAoKICAgIF9DU19MRlNfTERGTEFHUywKCiAg
ICBfQ1NfTEZTX0xJQlMsCgogICAgX0NTX0xGU19MSU5URkxBR1MsCgogICAgX0NTX0xGUzY0X0NG
TEFHUywKCiAgICBfQ1NfTEZTNjRfTERGTEFHUywKCiAgICBfQ1NfTEZTNjRfTElCUywKCiAgICBf
Q1NfTEZTNjRfTElOVEZMQUdTCgoKCgogICAgLAogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZM
QUdTID0gMTEwMCwKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAoKICAgIF9DU19Y
QlM1X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdT
LAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJf
T0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJQlMsCgogICAgX0NT
X1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0X0NG
TEFHUywKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAxNDAKCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9M
REZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfWEJTNV9MUDY0
X09GRjY0X0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAg
IF9DU19YQlM1X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJ
R19MSUJTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MKCgogIH07CiMgNTAx
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAo
X19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgZnBh
dGhjb25mIChpbnQgX19mZCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25m
IChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBzaXpl
X3QgY29uZnN0ciAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoK
ZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cHBpZCAo
dm9pZCkgOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUzNiAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3Bp
ZCkgOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwoKCgoKCgpleHRl
cm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSA7CiMgNTYyICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSA7CgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAg
ICAgICAgICBQYWdlICAxNDEKCgojIDU4MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVy
biBfX3BpZF90IHNldHNpZCAodm9pZCkgOwoKCgpleHRlcm4gX19waWRfdCBnZXRzaWQgKF9fcGlk
X3QgX19waWQpIDsKCgoKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSA7CgoKZXh0ZXJuIF9f
dWlkX3QgZ2V0ZXVpZCAodm9pZCkgOwoKCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgOwoK
CmV4dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIDsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBz
IChpbnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSA7CgoKCmV4dGVybiBpbnQgZ3JvdXBfbWVt
YmVyIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0dWlkIChfX3VpZF90IF9f
dWlkKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBf
X2V1aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoKCgpl
eHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
IDE0MgoKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBfX2dpZF90IF9fZWdp
ZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRlZ2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgoKCmV4dGVy
biBfX3BpZF90IGZvcmsgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQp
IDsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB0
dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCmV4
dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgOwoKCgoKCmV4dGVybiBpbnQgdHR5c2xvdCAodm9p
ZCkgOwoKCgoKZXh0ZXJuIGludCBsaW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBj
aGFyICpfX3RvKSA7CgoKCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20s
IF9fY29uc3QgY2hhciAqX190bykgOwoKCgoKZXh0ZXJuIGludCByZWFkbGluayAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbGVuKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTQzCgoKCgpl
eHRlcm4gaW50IHVubGluayAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgpleHRlcm4gaW50IHJt
ZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gX19waWRfdCB0Y2dldHBncnAg
KGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9f
cGdycF9pZCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIDsKCgoKCmV4dGVybiBp
bnQgZ2V0bG9naW5fciAoY2hhciAqX19uYW1lLCBzaXplX3QgX19uYW1lX2xlbikgOwoKCgoKZXh0
ZXJuIGludCBzZXRsb2dpbiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA3MjYgIi91c3IvaW5j
bHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiMgNDcgIi91
c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gY2hhciAqb3B0YXJnOwojIDYxICIvdXNyL2lu
Y2x1ZGUvZ2V0b3B0LmgiIDMKZXh0ZXJuIGludCBvcHRpbmQ7CgoKCgpleHRlcm4gaW50IG9wdGVy
cjsKCgoKZXh0ZXJuIGludCBvcHRvcHQ7CiMgMTQ1ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMK
ZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX2FyZ2MsIGNoYXIgKmNvbnN0ICpfX2FyZ3YsIGNvbnN0
IGNoYXIgKl9fc2hvcnRvcHRzKTsKIyA3MjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoK
CgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg
OwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkg
ICAgICAgICAgICAgICAgICAgUGFnZSAgMTQ0CgoKCgoKZXh0ZXJuIGludCBzZXRob3N0bmFtZSAo
X19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgpleHRlcm4gaW50IHNldGhv
c3RpZCAobG9uZyBpbnQgX19pZCkgOwoKCgoKCmV4dGVybiBpbnQgZ2V0ZG9tYWlubmFtZSAoY2hh
ciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSA7CgoKCgoKZXh0ZXJuIGludCB2aGFuZ3Vw
ICh2b2lkKSA7CgoKZXh0ZXJuIGludCByZXZva2UgKF9fY29uc3QgY2hhciAqX19maWxlKSA7CgoK
CgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3NhbXBsZV9idWZm
ZXIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBzaXplX3QgX19vZmZzZXQsIHVu
c2lnbmVkIGludCBfX3NjYWxlKSA7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2
b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQp
IDsKCgoKCgpleHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkg
OwoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAxNDUKCgoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29u
c3QgY2hhciAqX19wYXRoKSA7CgoKCmV4dGVybiBjaGFyICpnZXRwYXNzIChfX2NvbnN0IGNoYXIg
Kl9fcHJvbXB0KSA7CgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpIDsKCgoKCgoKZXh0
ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHN5bmMgKHZvaWQp
IDsKCgoKCmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKCgoKCmV4dGVybiBpbnQgdHJ1bmNhdGUgKF9fY29uc3QgY2hhciAqX19maWxlLCBf
X29mZl90IF9fbGVuZ3RoKSA7CiMgODM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJu
IGludCB0cnVuY2F0ZTY0IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9fbGVuZ3Ro
KSA7CgoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgp
IDsKIyA4NTEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0
IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3RoKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkdGFi
bGVzaXplICh2b2lkKSA7CiMgODY2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGlu
dCBicmsgKHZvaWQgKl9fYWRkcikgOwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBf
X2RlbHRhKSA7CiMgODg3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBh
Z2UgIDE0NgoKCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4p
IDsKIyA5MDcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGxvY2tmIChpbnQg
X19mZCwgaW50IF9fY21kLCBfX29mZl90IF9fbGVuKSA7CiMgOTE3ICIvdXNyL2luY2x1ZGUvdW5p
c3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZjY0
X3QgX19sZW4pIDsKIyA5MzggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGZk
YXRhc3luYyAoaW50IF9fZmlsZGVzKSA7CgoKCgoKCgpleHRlcm4gY2hhciAqY3J5cHQgKF9fY29u
c3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KSA7CgoKCmV4dGVybiB2b2lkIGVu
Y3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgOwoKCgoKCgpleHRlcm4gdm9pZCBz
d2FiIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19mcm9tLCB2b2lkICpfX3Jlc3RyaWN0IF9f
dG8sCiAgICAgICAgICAgICAgICAgIHNzaXplX3QgX19uKSA7CgoKCgoKCgpleHRlcm4gY2hhciAq
Y3Rlcm1pZCAoY2hhciAqX19zKSA7CiMgOTgzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0
ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgOwojIDIwICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMg
MjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MSAzCiMgMjkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDM4ICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy
IDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDQzICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAyIDMKIyA1NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDU3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAg
ICAgICAgICAgICBQYWdlICAxNDcKCgoKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsKCgoKCgoK
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS90
aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwojIDc5ICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgODAgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDkx
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MSAzCiMgOTIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX190aW1lcl90IHRp
bWVyX3Q7CiMgMTA2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0aW1lc3BlYwogIHsK
ICAgIGxvbmcgaW50IHR2X3NlYzsKICAgIGxvbmcgaW50IHR2X25zZWM7CiAgfTsKCgoKCgoKCnN0
cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQgdG1fbWluOwogIGludCB0bV9ob3VyOwogIGlu
dCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50IHRtX3llYXI7CiAgaW50IHRtX3dkYXk7CiAg
aW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0OwoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwogIF9f
Y29uc3QgY2hhciAqdG1fem9uZTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTQ4CgoKCgp9OwoKCgoK
c3RydWN0IGl0aW1lcnNwZWMKICB7CiAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAg
ICBzdHJ1Y3QgdGltZXNwZWMgaXRfdmFsdWU7CiAgfTsKCgpzdHJ1Y3Qgc2lnZXZlbnQ7CiMgMTYz
ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBjbG9ja190IGNsb2NrICh2b2lkKSA7CgoK
ZXh0ZXJuIHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIDsKCgpleHRlcm4gZG91YmxlIGRp
ZmZ0aW1lICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0
bSAqX190cCkgOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBzaXplX3QgX19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
c3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICAgICAgICAg
OwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIp
IDsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1l
cikgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29u
Lm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE0OQoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGlt
ZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKZXh0ZXJuIHN0cnVj
dCB0bSAqbG9jYWx0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkg
OwoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWUgKF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSA7CgoK
ZXh0ZXJuIGNoYXIgKmN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgoKCgpleHRl
cm4gY2hhciAqYXNjdGltZV9yIChfX2NvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwLAog
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKZXh0ZXJu
IGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgpleHRlcm4gY2hh
ciAqX190em5hbWVbMl07CmV4dGVybiBpbnQgX19kYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IF9f
dGltZXpvbmU7CgoKCgpleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKCgpleHRlcm4gdm9pZCB0enNl
dCAodm9pZCkgOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpv
bmU7CgoKCgoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgOwojIDI3
MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gdGltZV90IHRpbWVnbSAoc3RydWN0IHRt
ICpfX3RwKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNv
bi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxNTAKCgoKCmV4dGVybiB0aW1lX3QgdGltZWxv
Y2FsIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gaW50IGR5c2l6ZSAoaW50IF9feWVhcikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgbmFub3NsZWVwIChf
X2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpIDsKCgoKZXh0ZXJuIGludCBjbG9j
a19nZXRyZXMgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSA7
CgoKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0
IHRpbWVzcGVjICpfX3RwKSA7CgoKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lIChjbG9ja2lkX3Qg
X19jbG9ja19pZCwgX19jb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHApCiAgICAgICAgICAgIDsK
CgoKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBpbnQg
X19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWVz
cGVjICpfX3JlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAq
X19yZW0pIDsKCgpleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBpZF90IF9fcGlkLCBj
bG9ja2lkX3QgKl9fY2xvY2tfaWQpIDsKCgoKCmV4dGVybiBpbnQgdGltZXJfY3JlYXRlIChjbG9j
a2lkX3QgX19jbG9ja19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdldmVu
dCAqX19yZXN0cmljdCBfX2V2cCwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyX3QgKl9f
cmVzdHJpY3QgX190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUgKHRpbWVyX3Qg
X190aW1lcmlkKSA7CgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lICh0aW1lcl90IF9fdGltZXJp
ZCwgaW50IF9fZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3Qg
aXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fb3ZhbHVlKSA7CgoKZXh0ZXJuIGludCB0
aW1lcl9nZXR0aW1lICh0aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFs
dWUpCiAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4gKHRpbWVyX3Qg
X190aW1lcmlkKSA7CiMgMzQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAxNTEKCgpleHRlcm4gaW50IGdldGRhdGVfZXJyOwoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0g
KmdldGRhdGUgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIDsKIyAzNTcgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKZXh0ZXJuIGludCBnZXRkYXRlX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Jl
c2J1ZnApIDsKIyAyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgojIDEgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9z
eXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjUg
Ii91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvdGltZS5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3Rp
bWUuaCIgMiAzCgoKCnN0cnVjdCB0aW1ldmFsCiAgewogICAgX190aW1lX3QgdHZfc2VjOwogICAg
X19zdXNlY29uZHNfdCB0dl91c2VjOwogIH07CiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
IiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjUgIi91c3IvaW5j
bHVkZS9zeXMvc2VsZWN0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MjYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvc3lz
L3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIyAy
MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWlj
X3Q7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5t
aSAgICAgICAgICAgICAgICAgICBQYWdlICAxNTIKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1
bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25n
IGludCkpKV07CiAgfSBfX3NpZ3NldF90OwojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAyIDMKCgoKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAxIDMKIyA0NCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNDYgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDIgMwoKCgp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFzazsKCgoKCgoKCnR5cGVkZWYg
c3RydWN0CiAgewoKCgogICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAo
X19mZF9tYXNrKSldOwoKCgoKCiAgfSBmZF9zZXQ7CgoKCgoKCnR5cGVkZWYgX19mZF9tYXNrIGZk
X21hc2s7CiMgOTYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBzZWxl
Y3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAgICAg
ICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAgICAg
IGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgIHN0cnVj
dCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAx
NTMKCgoKCgpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmlj
dCBfX3JlYWRmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3Jp
dGVmZHMsCiAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRz
LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBf
X3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgX19zaWdzZXRfdCAqX19yZXN0cmlj
dCBfX3NpZ21hc2spIDsKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMwoKCnR5cGVk
ZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKIyA1NiAiL3Vzci9pbmNsdWRlL3N5cy90aW1l
LmgiIDMKc3RydWN0IHRpbWV6b25lCiAgewogICAgaW50IHR6X21pbnV0ZXN3ZXN0OwogICAgaW50
IHR6X2RzdHRpbWU7CiAgfTsKCnR5cGVkZWYgc3RydWN0IHRpbWV6b25lICpfX3Jlc3RyaWN0IF9f
dGltZXpvbmVfcHRyX3Q7CiMgNzIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCmV4dGVybiBp
bnQgZ2V0dGltZW9mZGF5IChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3R2LAogICAgICAg
ICAgICAgICAgICAgICAgICAgX190aW1lem9uZV9wdHJfdCBfX3R6KSA7CgoKCgpleHRlcm4gaW50
IHNldHRpbWVvZmRheSAoX19jb25zdCBzdHJ1Y3QgdGltZXZhbCAqX190diwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRpbWV6b25lICpfX3R6KSA7CgoKCgoKZXh0ZXJu
IGludCBhZGp0aW1lIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFsICpfX2RlbHRhLAogICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX29sZGRlbHRhKSA7CgoKCgplbnVtIF9faXRpbWVy
X3doaWNoCiAgewoKICAgIElUSU1FUl9SRUFMID0gMCwKCgogICAgSVRJTUVSX1ZJUlRVQUwgPSAx
LAoKCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxNTQK
CgpzdHJ1Y3QgaXRpbWVydmFsCiAgewoKICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwoK
ICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwogIH07CgoKdHlwZWRlZiBlbnVtIF9faXRpbWVy
X3doaWNoIF9faXRpbWVyX3doaWNoX3Q7CgoKCgoKCmV4dGVybiBpbnQgZ2V0aXRpbWVyIChfX2l0
aW1lcl93aGljaF90IF9fd2hpY2gsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVy
dmFsICpfX3ZhbHVlKSA7CgoKCgpleHRlcm4gaW50IHNldGl0aW1lciAoX19pdGltZXJfd2hpY2hf
dCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBzdHJ1Y3QgaXRpbWVydmFs
ICpfX3Jlc3RyaWN0IF9fbmV3LAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZh
bCAqX19yZXN0cmljdCBfX29sZCkgOwoKCgpleHRlcm4gaW50IHV0aW1lcyAoX19jb25zdCBjaGFy
ICpfX2ZpbGUsIF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgX190dnBbMl0pCiAgICAgICAgICAgIDsK
IyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgojIDEgIi91c3IvaW5jbHVk
ZS9lcnJuby5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMKIyAxICIvdXNyL2lu
Y2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzAgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgoK
CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRl
L2JpdHMvZXJybm8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMKCgoK
IyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMwojIDUgIi91c3IvaW5jbHVkZS9saW51
eC9lcnJuby5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCiMgMzYg
Ii91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMKZXh0ZXJuIGludCBlcnJubzsKCgpleHRlcm4g
aW50ICpfX2Vycm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CiMgMzcgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1NQoK
CiMgNTUgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzCmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9j
YXRpb25fbmFtZSwgKnByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lOwojIDY5ICIvdXNyL2lu
Y2x1ZGUvZXJybm8uaCIgMwp0eXBlZGVmIGludCBlcnJvcl90OwojIDIzICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwojIDI2
ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMgNDAgIi91c3Iv
aW5jbHVkZS9jdHlwZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA0MSAi
L3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKCgoKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkg
PCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkgOiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIg
PSAoKDEpIDwgOCA/ICgoMSA8PCAoMSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9J
U2FscGhhID0gKCgyKSA8IDggPyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgp
KSwKICBfSVNkaWdpdCA9ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMp
KSA+PiA4KSksCiAgX0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgo
MSA8PCAoNCkpID4+IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwg
OCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAo
NikpIDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAo
KDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgoOCkg
PCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lTY250cmwg
PSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4gOCkpLAogIF9J
U3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgxIDw8ICgxMCkpID4+
IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8
PCAoMTEpKSA+PiA4KSkKfTsKIyA3NSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9f
Y29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CmV4dGVybiBfX2NvbnN0IF9faW50
MzJfdCAqX19jdHlwZV90b2xvd2VyOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5cGVf
dG91cHBlcjsKIyA5MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIGludCBpc2FsbnVt
IChpbnQpIDsKZXh0ZXJuIGludCBpc2FscGhhIChpbnQpIDsKZXh0ZXJuIGludCBpc2NudHJsIChp
bnQpIDsKZXh0ZXJuIGludCBpc2RpZ2l0IChpbnQpIDsKZXh0ZXJuIGludCBpc2xvd2VyIChpbnQp
IDsKZXh0ZXJuIGludCBpc2dyYXBoIChpbnQpIDsKZXh0ZXJuIGludCBpc3ByaW50IChpbnQpIDsK
ZXh0ZXJuIGludCBpc3B1bmN0IChpbnQpIDsKZXh0ZXJuIGludCBpc3NwYWNlIChpbnQpIDsKZXh0
ZXJuIGludCBpc3VwcGVyIChpbnQpIDsKZXh0ZXJuIGludCBpc3hkaWdpdCAoaW50KSA7CgoKZXh0
ZXJuIGludCBpc2JsYW5rIChpbnQpIDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTU2CgoKCgpleHRl
cm4gaW50IHRvbG93ZXIgKGludCBfX2MpIDsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2Mp
IDsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpIChpbnQgX19jKSA7CgoKCmV4dGVybiBpbnQgdG9h
c2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50IF90b3VwcGVyIChpbnQpIDsKZXh0ZXJuIGlu
dCBfdG9sb3dlciAoaW50KSA7CiMgMTY4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRlcm4g
X19pbmxpbmUgaW50CnRvbG93ZXIgKGludCBfX2MpCnsKICByZXR1cm4gX19jID49IC0xMjggJiYg
X19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBfX2M7Cn0KCmV4dGVybiBfX2lubGlu
ZSBpbnQKdG91cHBlciAoaW50IF9fYykKewogIHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAy
NTYgPyBfX2N0eXBlX3RvdXBwZXJbX19jXSA6IF9fYzsKfQojIDIxMSAiL3Vzci9pbmNsdWRlL2N0
eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMKIyAyMTIgIi91c3IvaW5j
bHVkZS9jdHlwZS5oIiAyIDMKIyAyMjQgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBp
bnQgX19pc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNhbHBoYV9s
IChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzY250cmxfbCAoaW50LCBfX2xvY2Fs
ZV90KSA7CmV4dGVybiBpbnQgX19pc2RpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4g
aW50IF9faXNsb3dlcl9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzZ3JhcGhf
bCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3ByaW50X2wgKGludCwgX19sb2Nh
bGVfdCkgOwpleHRlcm4gaW50IF9faXNwdW5jdF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJu
IGludCBfX2lzc3BhY2VfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3VwcGVy
X2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXN4ZGlnaXRfbCAoaW50LCBfX2xv
Y2FsZV90KSA7CgpleHRlcm4gaW50IF9faXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIDsKCgoK
ZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIDsKCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAg
ICAgICAgICBQYWdlICAxNTcKCgoKZXh0ZXJuIGludCBfX3RvdXBwZXJfbCAoaW50IF9fYywgX19s
b2NhbGVfdCBfX2wpIDsKIyAyNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5o
IiAxIDMKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9fdV9j
aGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVf
aW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5
cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlw
ZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKCgoKdHlw
ZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKIyA2OCAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoK
dHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKIyAxMDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwp0eXBlZGVmIF9faWRfdCBpZF90OwojIDExMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzCnR5cGVkZWYgX19kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7
CgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE1OAoKCiMgMTI2
ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAx
IDMKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMgMTQwICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQxICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHVsb25nOwp0
eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVp
bnQ7CiMgMTg0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBpbnQgaW50OF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVmIGludCBpbnQxNl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBpbnQzMl90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIGludCBpbnQ2NF90
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKCnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ESV9fKSkpOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJp
YnV0ZV9fICgoX19tb2RlX18gKF9fd29yZF9fKSkpOwojIDIwNiAiL3Vzci9pbmNsdWRlL3N5cy90
eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMDcgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAx
IDMKIyAyMTAgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAyMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
MiAzCgoKCgp0eXBlZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVfdDsKCgoKCgoKdHlwZWRlZiBfX2Js
a2NudF90IGJsa2NudF90OwoKCgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwoKCgp0
eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTU5CgoK
IyAyNTEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIF9fYmxrY250NjRfdCBi
bGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBf
X2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7CiMgMjUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9taXNjLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiMgMjYgIi91c3Iv
aW5jbHVkZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwoj
IDI3ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCgoKCiMgMSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMzMgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAy
IDMKIyA5OCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zdGF0LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMKc3RydWN0IHN0
YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDE7
CgogICAgX19pbm9fdCBzdF9pbm87CgoKCiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlu
a190IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAg
IF9fZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3BhZDI7CgogICAgX19v
ZmZfdCBzdF9zaXplOwoKCgogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCgogICAgX19ibGtj
bnRfdCBzdF9ibG9ja3M7CgoKCiAgICBfX3RpbWVfdCBzdF9hdGltZTsKICAgIHVuc2lnbmVkIGxv
bmcgaW50IF9fdW51c2VkMTsKICAgIF9fdGltZV90IHN0X210aW1lOwogICAgdW5zaWduZWQgbG9u
ZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7CiAgICB1bnNpZ25lZCBsb25n
IGludCBfX3VudXNlZDM7CgogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ0OwogICAgdW5z
aWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTYwCgoKCgoKICB9
OwoKCnN0cnVjdCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIHVuc2lnbmVkIGlu
dCBfX3BhZDE7CgogICAgX19pbm9fdCBfX3N0X2lubzsKICAgIF9fbW9kZV90IHN0X21vZGU7CiAg
ICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lkX3Qgc3Rf
Z2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgaW50IF9fcGFkMjsKICAgIF9f
b2ZmNjRfdCBzdF9zaXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKCiAgICBfX2Jsa2Nu
dDY0X3Qgc3RfYmxvY2tzOwogICAgX190aW1lX3Qgc3RfYXRpbWU7CiAgICB1bnNpZ25lZCBsb25n
IGludCBfX3VudXNlZDE7CiAgICBfX3RpbWVfdCBzdF9tdGltZTsKICAgIHVuc2lnbmVkIGxvbmcg
aW50IF9fdW51c2VkMjsKICAgIF9fdGltZV90IHN0X2N0aW1lOwogICAgdW5zaWduZWQgbG9uZyBp
bnQgX191bnVzZWQzOwogICAgX19pbm82NF90IHN0X2lubzsKICB9OwojIDk5ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMiAzCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRl
cm4gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAg
ICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBmc3Rh
dCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0ICpfX2J1ZikgOwojIDIxOSAiL3Vzci9pbmNsdWRlL3N5
cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBzdGF0NjQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X2ZpbGUsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVm
KSA7CmV4dGVybiBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVjdCBzdGF0NjQgKl9fYnVmKSA7
CgoKCgoKCmV4dGVybiBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUs
CiAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CiMgMjQx
ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGxzdGF0NjQgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2
NCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTYxCgoKCgoKZXh0
ZXJuIGludCBjaG1vZCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgOwoK
CgpleHRlcm4gaW50IGZjaG1vZCAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgoKCmV4
dGVybiBfX21vZGVfdCB1bWFzayAoX19tb2RlX3QgX19tYXNrKSA7CgoKCgpleHRlcm4gX19tb2Rl
X3QgZ2V0dW1hc2sgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBta2RpciAoX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fbW9kZV90IF9fbW9kZSkgOwoKCgoKCmV4dGVybiBpbnQgbWtub2QgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpCiAgICAgICAgICAg
IDsKCgoKCmV4dGVybiBpbnQgbWtmaWZvIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3Qg
X19tb2RlKSA7CiMgMzA2ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IF9f
ZnhzdGF0IChpbnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYp
IDsKZXh0ZXJuIGludCBfX3hzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgOwpleHRlcm4g
aW50IF9fbHhzdGF0IChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdF9idWYpIDsKIyAzMzAgIi91c3IvaW5j
bHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgX19meHN0YXQ2NCAoaW50IF9fdmVyLCBpbnQg
X19maWxkZXMsIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpCiAgICAgICAgICAgIDsKZXh0ZXJu
IGludCBfX3hzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50
IF9fbHhzdGF0NjQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdF9idWYpIDsKCmV4dGVybiBpbnQg
X194bWtub2QgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgX19kZXZfdCAqX19kZXYpIDsKCgoKCmV4dGVybiBfX2lu
bGluZV9fIGludCBzdGF0IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2Ug
IDE2MgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVm
KQp7CiAgcmV0dXJuIF9feHN0YXQgKDMsIF9fcGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBf
X2lubGluZV9fIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3Rh
dCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IGZzdGF0
IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdCAo
MywgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBta25vZCAoX19j
b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2Rldl90IF9fZGV2KQp7CiAgcmV0dXJuIF9feG1rbm9kICgxLCBfX3BhdGgsIF9f
bW9kZSwgJl9fZGV2KTsKfQoKCgoKCmV4dGVybiBfX2lubGluZV9fIGludCBzdGF0NjQgKF9fY29u
c3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3Rh
dDY0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX194c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1
Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3Bh
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRi
dWYpCnsKICByZXR1cm4gX19seHN0YXQ2NCAoMywgX19wYXRoLCBfX3N0YXRidWYpOwp9CgoKZXh0
ZXJuIF9faW5saW5lX18gaW50IGZzdGF0NjQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdDY0ICpfX3N0
YXRidWYpCnsKICByZXR1cm4gX19meHN0YXQ2NCAoMywgX19mZCwgX19zdGF0YnVmKTsKfQojIDI2
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMSAzCiMgMjggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAg
ICAgICAgIFBhZ2UgIDE2MwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDEg
MwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAyIDMK
IyAzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bmFuLmgiIDEgMwojIDM4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYu
aCIgMwp0eXBlZGVmIGxvbmcgZG91YmxlIGZsb2F0X3Q7Cgp0eXBlZGVmIGxvbmcgZG91YmxlIGRv
dWJsZV90OwojIDQxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl
L21hdGguaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGRvdWJsZSBhY29zIChkb3Vi
bGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hY29zIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91
YmxlIGFzaW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRh
biAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhdGFuMiAoZG91YmxlIF9feSwgZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsK
CgpleHRlcm4gZG91YmxlIGNvcyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY29zIChk
b3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91
YmxlIF9fc2luIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHRhbiAoZG91YmxlIF9feCkg
OyBleHRlcm4gZG91YmxlIF9fdGFuIChkb3VibGUgX194KSA7CgoKCmV4dGVybiB2b2lkIHNpbmNv
cyAoZG91YmxlIF9feCwgZG91YmxlICpfX3NpbngsIGRvdWJsZSAqX19jb3N4KSA7IGV4dGVybiB2
b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nvc3gp
IDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBjb3NoIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUg
X19jb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHNpbmggKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX3NpbmggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgdGFuaCAo
ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fdGFuaCAoZG91YmxlIF9feCkgOwoKCgpleHRl
cm4gZG91YmxlIGFjb3NoIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hY29zaCAoZG91
YmxlIF9feCkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVy
c29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE2NAoKCmV4dGVybiBkb3VibGUgYXNpbmgg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2FzaW5oIChkb3VibGUgX194KSA7CgpleHRl
cm4gZG91YmxlIGF0YW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hdGFuaCAoZG91
YmxlIF9feCkgOwoKCgoKCmV4dGVybiBkb3VibGUgZXhwIChkb3VibGUgX194KSA7IGV4dGVybiBk
b3VibGUgX19leHAgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSBleHAxMCAoZG91Ymxl
IF9feCkgOyBleHRlcm4gZG91YmxlIF9fZXhwMTAgKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3Vi
bGUgcG93MTAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdzEwIChkb3VibGUgX194
KSA7CgoKCmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkg
OyBleHRlcm4gZG91YmxlIF9fZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoK
CmV4dGVybiBkb3VibGUgbGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7IGV4dGVy
biBkb3VibGUgX19sZGV4cCAoZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4g
ZG91YmxlIGxvZyAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nIChkb3VibGUgX194
KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2cxMCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9f
bG9nMTAgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRv
dWJsZSAqX19pcHRyKSA7IGV4dGVybiBkb3VibGUgX19tb2RmIChkb3VibGUgX194LCBkb3VibGUg
Kl9faXB0cikgOwoKCgpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUgX194KSA7IGV4dGVybiBk
b3VibGUgX19leHBtMSAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMXAgKGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzFwIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRv
dWJsZSBsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19sb2diIChkb3VibGUgX194
KSA7CgoKCgpleHRlcm4gZG91YmxlIGV4cDIgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBf
X2V4cDIgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGxvZzIgKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBw
b3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3BvdyAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
ICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTY1CgoKCgpleHRlcm4gZG91
YmxlIHNxcnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX3NxcnQgKGRvdWJsZSBfX3gp
IDsKCgoKZXh0ZXJuIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRl
cm4gZG91YmxlIF9faHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBk
b3VibGUgY2JydCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fY2JydCAoZG91YmxlIF9f
eCkgOwoKCgoKCgpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2NlaWwgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZhYnMgKGRvdWJs
ZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZsb29y
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19mbG9vciAoZG91YmxlIF9feCkgOwoKCmV4
dGVybiBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91Ymxl
IF9fZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGludCBfX2lzaW5m
IChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBp
bnQgX19maW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gaW50IGlzaW5mIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9f
Y29uc3RfXykpOwoKCmV4dGVybiBpbnQgZmluaXRlIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBpbmZuYW4gKGludCBfX2Vy
cm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19pbmZuYW4g
KGludCBfX2Vycm9yKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJs
ZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19kcmVtIChk
b3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTY2CgoKCgpleHRl
cm4gZG91YmxlIHNpZ25pZmljYW5kIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zaWdu
aWZpY2FuZCAoZG91YmxlIF9feCkgOwoKCgoKZXh0ZXJuIGRvdWJsZSBjb3B5c2lnbiAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91
YmxlIF9fY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgbmFuIChfX2NvbnN0IGNoYXIgKl9fdGFnYikg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fbmFuIChfX2NvbnN0
IGNoYXIgKl9fdGFnYikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGlu
dCBfX2lzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgpleHRlcm4gaW50IGlzbmFuIChkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKCmV4dGVybiBkb3VibGUgajAgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fajAg
KGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIGoxIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2ox
IChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2puIChpbnQsIGRvdWJsZSkgOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIDsgZXh0ZXJu
IGRvdWJsZSBfX3kwIChkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKSA7IGV4dGVy
biBkb3VibGUgX195MSAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeW4gKGludCwgZG91YmxlKSA7
IGV4dGVybiBkb3VibGUgX195biAoaW50LCBkb3VibGUpIDsKCgoKCgpleHRlcm4gZG91YmxlIGVy
ZiAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgOwpleHRlcm4gZG91Ymxl
IGVyZmMgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fZXJmYyAoZG91YmxlKSA7CmV4dGVybiBk
b3VibGUgbGdhbW1hIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSA7
CgoKCmV4dGVybiBkb3VibGUgdGdhbW1hIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3RnYW1t
YSAoZG91YmxlKSA7CgoKCgpleHRlcm4gZG91YmxlIGdhbW1hIChkb3VibGUpIDsgZXh0ZXJuIGRv
dWJsZSBfX2dhbW1hIChkb3VibGUpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBsZ2FtbWFfciAoZG91
YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYV9yIChkb3VibGUs
IGludCAqX19zaWduZ2FtcCkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxNjcKCgoKCgoKZXh0ZXJu
IGRvdWJsZSByaW50IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19yaW50IChkb3VibGUg
X194KSA7CgoKZXh0ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHRhZnRlciAo
ZG91YmxlIF9feCwgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKZXh0
ZXJuIGRvdWJsZSBuZXh0dG93YXJkIChkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25leHR0b3dhcmQgKGRvdWJs
ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpl
eHRlcm4gZG91YmxlIHJlbWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4g
ZG91YmxlIF9fcmVtYWluZGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCmV4dGVybiBk
b3VibGUgc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3Nj
YWxiIChkb3VibGUgX194LCBkb3VibGUgX19uKSA7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibiAo
ZG91YmxlIF9feCwgaW50IF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGJuIChkb3VibGUgX194
LCBpbnQgX19uKSA7CgoKCmV4dGVybiBpbnQgaWxvZ2IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGlu
dCBfX2lsb2diIChkb3VibGUgX194KSA7CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibG4gKGRvdWJs
ZSBfX3gsIGxvbmcgaW50IF9fbikgOyBleHRlcm4gZG91YmxlIF9fc2NhbGJsbiAoZG91YmxlIF9f
eCwgbG9uZyBpbnQgX19uKSA7CgoKCmV4dGVybiBkb3VibGUgbmVhcmJ5aW50IChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19uZWFyYnlpbnQgKGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGRv
dWJsZSByb3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcm91bmQgKGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGRvdWJsZSB0cnVuYyAoZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fdHJ1bmMgKGRvdWJsZSBfX3gpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBkb3VibGUgcmVtcXVvIChkb3VibGUgX194
LCBkb3VibGUgX195LCBpbnQgKl9fcXVvKSA7IGV4dGVybiBkb3VibGUgX19yZW1xdW8gKGRvdWJs
ZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIDsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
aW50IChkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xyaW50IChkb3VibGUgX194KSA7
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAg
ICAgICAgICAgICAgICBQYWdlICAxNjgKCgpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnQgKGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnQgKGRvdWJsZSBfX3gpIDsK
CgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBpbnQg
X19scm91bmQgKGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmQgKGRvdWJsZSBfX3gpIDsK
CgoKZXh0ZXJuIGRvdWJsZSBmZGltIChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBk
b3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBm
bWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbWF4IChkb3Vi
bGUgX194LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUgX194LCBk
b3VibGUgX195KSA7IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195
KSA7CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5IChkb3VibGUgX192YWx1ZSkKICAgICBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXQgKGRvdWJsZSBf
X3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJs
ZSBmbWEgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIDsgZXh0ZXJuIGRvdWJs
ZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikgOwojIDY0ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4MiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2JpdHMv
bWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGZsb2F0IGFjb3NmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZs
b2F0IF9fYWNvc2YgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGFzaW5mIChmbG9hdCBfX3gp
IDsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZsb2F0IGF0YW5m
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRhbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJu
IGZsb2F0IGF0YW4yZiAoZmxvYXQgX195LCBmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRh
bjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBjb3NmIChmbG9hdCBf
X3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgc2lu
ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3NpbmYgKGZsb2F0IF9feCkgOwoKZXh0ZXJu
IGZsb2F0IHRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX190YW5mIChmbG9hdCBfX3gp
IDsKCgoKZXh0ZXJuIHZvaWQgc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19zaW54LCBmbG9h
dCAqX19jb3N4KSA7IGV4dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQgX194LCBmbG9hdCAqX19z
aW54LCBmbG9hdCAqX19jb3N4KSA7CgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE2OQoKCgpleHRl
cm4gZmxvYXQgY29zaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NoZiAoZmxvYXQg
X194KSA7CgpleHRlcm4gZmxvYXQgc2luaGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19z
aW5oZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgdGFuaGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBhY29zaGYgKGZs
b2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJuIGZs
b2F0IGFzaW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2FzaW5oZiAoZmxvYXQgX194
KSA7CgpleHRlcm4gZmxvYXQgYXRhbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fYXRh
bmhmIChmbG9hdCBfX3gpIDsKCgoKCgpleHRlcm4gZmxvYXQgZXhwZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX2V4cGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgZXhwMTBmIChm
bG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fZXhwMTBmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBm
bG9hdCBwb3cxMGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19wb3cxMGYgKGZsb2F0IF9f
eCkgOwoKCgpleHRlcm4gZmxvYXQgZnJleHBmIChmbG9hdCBfX3gsIGludCAqX19leHBvbmVudCkg
OyBleHRlcm4gZmxvYXQgX19mcmV4cGYgKGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSA7CgoK
ZXh0ZXJuIGZsb2F0IGxkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRlcm4g
ZmxvYXQgX19sZGV4cGYgKGZsb2F0IF9feCwgaW50IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gZmxv
YXQgbG9nZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2xvZ2YgKGZsb2F0IF9feCkgOwoK
CmV4dGVybiBmbG9hdCBsb2cxMGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2cxMGYg
KGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQgX194LCBmbG9hdCAqX19p
cHRyKSA7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpfX2lwdHIpIDsK
CgoKZXh0ZXJuIGZsb2F0IGV4cG0xZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2V4cG0x
ZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzFwZiAoZmxvYXQgX194KSA7IGV4dGVy
biBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZ2JmIChmbG9h
dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nYmYgKGZsb2F0IF9feCkgOwoKCgoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAg
ICAgIFBhZ2UgIDE3MAoKCmV4dGVybiBmbG9hdCBleHAyZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2V4cDJmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbG9nMmYgKGZsb2F0IF9f
eCkgOyBleHRlcm4gZmxvYXQgX19sb2cyZiAoZmxvYXQgX194KSA7CgoKCgoKCmV4dGVybiBmbG9h
dCBwb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19wb3dmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgOwoKCmV4dGVybiBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSA7IGV4
dGVybiBmbG9hdCBfX3NxcnRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGh5cG90ZiAo
ZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgOwoKCgoKZXh0ZXJuIGZsb2F0IGNicnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fY2JydGYgKGZsb2F0IF9feCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgY2VpbGYgKGZs
b2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jZWlsZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZs
b2F0IGZhYnNmIChmbG9hdCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu
IGZsb2F0IF9fZmFic2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19mbG9vcmYg
KGZsb2F0IF9feCkgOwoKCmV4dGVybiBmbG9hdCBmbW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCgpleHRl
cm4gaW50IF9faXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZmIChmbG9hdCBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3Zh
bHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTcx
CgoKCgoKCgoKZXh0ZXJuIGZsb2F0IGluZm5hbmYgKGludCBfX2Vycm9yKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2luZm5hbmYgKGludCBfX2Vycm9yKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGRyZW1mIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19kcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsKCgoKZXh0ZXJuIGZsb2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9h
dCBfX3NpZ25pZmljYW5kZiAoZmxvYXQgX194KSA7CgoKCgpleHRlcm4gZmxvYXQgY29weXNpZ25m
IChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl
cm4gZmxvYXQgX19jb3B5c2lnbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZmxvYXQgbmFuZiAoX19jb25zdCBjaGFyICpfX3Rh
Z2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmFuZiAoX19j
b25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVy
biBpbnQgX19pc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKCgoKZXh0ZXJuIGludCBpc25hbmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgajBmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19q
MGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2ox
ZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGpuZiAoaW50LCBmbG9hdCkgOyBleHRlcm4gZmxvYXQg
X19qbmYgKGludCwgZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHkwZiAoZmxvYXQpIDsgZXh0ZXJuIGZs
b2F0IF9feTBmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTFmIChmbG9hdCkgOyBleHRlcm4gZmxv
YXQgX195MWYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5bmYgKGludCwgZmxvYXQpIDsgZXh0ZXJu
IGZsb2F0IF9feW5mIChpbnQsIGZsb2F0KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX2VyZmYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBlcmZjZiAoZmxv
YXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmY2YgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCBsZ2FtbWFm
IChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19sZ2FtbWFmIChmbG9hdCkgOwoKCgpleHRlcm4gZmxv
YXQgdGdhbW1hZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fdGdhbW1hZiAoZmxvYXQpIDsKCgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDE3MgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkgOyBl
eHRlcm4gZmxvYXQgX19nYW1tYWYgKGZsb2F0KSA7CgoKCgoKCmV4dGVybiBmbG9hdCBsZ2FtbWFm
X3IgKGZsb2F0LCBpbnQgKl9fc2lnbmdhbXApIDsgZXh0ZXJuIGZsb2F0IF9fbGdhbW1hZl9yIChm
bG9hdCwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQg
X194KSA7IGV4dGVybiBmbG9hdCBfX3JpbnRmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQg
bmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0
X18pKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBmbG9hdCBuZXh0dG93YXJkZiAoZmxv
YXQgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0
ZXJuIGZsb2F0IF9fbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCByZW1haW5kZXJmIChmbG9h
dCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19yZW1haW5kZXJmIChmbG9hdCBfX3gs
IGZsb2F0IF9feSkgOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9f
bikgOyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSA7CgoKCgpl
eHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7IGV4dGVybiBmbG9hdCBf
X3NjYWxibmYgKGZsb2F0IF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2diZiAoZmxv
YXQgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJuIGZs
b2F0IHNjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgOyBleHRlcm4gZmxvYXQgX19z
Y2FsYmxuZiAoZmxvYXQgX194LCBsb25nIGludCBfX24pIDsKCgoKZXh0ZXJuIGZsb2F0IG5lYXJi
eWludGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19uZWFyYnlpbnRmIChmbG9hdCBfX3gp
IDsKCgoKZXh0ZXJuIGZsb2F0IHJvdW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Jv
dW5kZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCB0cnVuY2YgKGZsb2F0IF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX190cnVuY2YgKGZsb2F0IF9f
eCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE3MwoK
CgoKCmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1
bykgOyBleHRlcm4gZmxvYXQgX19yZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpf
X3F1bykgOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGxvbmcgaW50IF9fbHJpbnRmIChmbG9hdCBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxy
aW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZiAoZmxvYXQg
X194KSA7CgoKCmV4dGVybiBsb25nIGludCBscm91bmRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGxv
bmcgaW50IF9fbHJvdW5kZiAoZmxvYXQgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91
bmRmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kZiAoZmxvYXQg
X194KSA7CgoKCmV4dGVybiBmbG9hdCBmZGltZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsgZXh0
ZXJuIGZsb2F0IF9fZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0
IGZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19mbWF4ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgZm1pbmYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2ZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoK
CgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWYgKGZsb2F0IF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0ZiAoZmxvYXQgX192YWx1
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFm
IChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSA7IGV4dGVybiBmbG9hdCBfX2ZtYWYg
KGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIDsKIyA4MyAiL3Vzci9pbmNsdWRlL21h
dGguaCIgMiAzCiMgOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAzCmV4dGVybiBsb25nIGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX2Fjb3NsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJs
ZSBhc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2FzaW5sIChs
b25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFubCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRv
dWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgY29zbCAobG9uZyBkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxv
bmcgZG91YmxlIHNpbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19z
aW5sIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE3NAoKCgpleHRlcm4g
bG9uZyBkb3VibGUgdGFubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBf
X3RhbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NsIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gpIDsgZXh0
ZXJuIHZvaWQgX19zaW5jb3NsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3Npbngs
IGxvbmcgZG91YmxlICpfX2Nvc3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvc2hsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zaGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIHRhbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGFu
aGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgYWNvc2hsIChsb25n
IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2hsIChsb25nIGRvdWJsZSBf
X3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGF0YW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2F0
YW5obCAobG9uZyBkb3VibGUgX194KSA7CgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cGwgKGxv
bmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19leHBsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDEwbCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX2V4cDEwbCAobG9uZyBkb3VibGUgX194KSA7CgpleHRlcm4gbG9u
ZyBkb3VibGUgcG93MTBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
cG93MTBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZyZXhwbCAo
bG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOwoKCmV4dGVybiBsb25n
IGRvdWJsZSBsZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fbGRleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2wgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19sb2dsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUg
bG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChs
b25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbW9kZmwgKGxvbmcgZG91Ymxl
IF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19tb2RmbCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7CgoKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAxNzUKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwbTFsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4g
bG9uZyBkb3VibGUgbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nYmwg
KGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2dibCAobG9uZyBkb3Vi
bGUgX194KSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMmwgKGxvbmcgZG91YmxlIF9feCkg
OyBleHRlcm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbG9nMmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcG93
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fcG93bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgpleHRlcm4gbG9u
ZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19z
cXJ0bCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBoeXBvdGwgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2h5
cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoKCmV4dGVybiBsb25n
IGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ni
cnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNlaWxsIChs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY2VpbGwgKGxvbmcgZG91Ymxl
IF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmYWJzbCAobG9uZyBkb3VibGUgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25n
IGRvdWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBk
b3VibGUgZmxvb3JsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmxv
b3JsIChsb25nIGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1vZGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Ztb2Rs
IChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgoKZXh0ZXJuIGludCBfX2lz
aW5mbCAobG9uZyBkb3VibGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAg
ICAgICAgICAgICAgIFBhZ2UgIDE3NgoKCgpleHRlcm4gaW50IF9fZmluaXRlbCAobG9uZyBkb3Vi
bGUgX192YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBp
c2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBpbmZuYW5sIChpbnQgX19l
cnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19p
bmZuYW5sIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBkcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9fZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZpY2FuZGwgKGxvbmcgZG91YmxlIF9feCkg
OwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNvcHlzaWdubCAobG9uZyBkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fY29weXNpZ25sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRy
aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5hbmwgKF9fY29u
c3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX25hbmwgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgaXNuYW5sIChsb25nIGRv
dWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGowbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fajBsIChsb25n
IGRvdWJsZSkgOwpleHRlcm4gbG9uZyBkb3VibGUgajFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19qMWwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqbmwg
KGludCwgbG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fam5sIChpbnQsIGxvbmcg
ZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3kwbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkxbCAo
bG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgOwpl
eHRlcm4gbG9uZyBkb3VibGUgeW5sIChpbnQsIGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX3lubCAoaW50LCBsb25nIGRvdWJsZSkgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE3
NwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fZXJmbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIGVyZmNsIChs
b25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19lcmZjbCAobG9uZyBkb3VibGUpIDsK
ZXh0ZXJuIGxvbmcgZG91YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2xnYW1tYWwgKGxvbmcgZG91YmxlKSA7CgoKCmV4dGVybiBsb25nIGRvdWJsZSB0Z2Ft
bWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190Z2FtbWFsIChsb25nIGRv
dWJsZSkgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGdhbW1hbCAobG9uZyBkb3VibGUpIDsgZXh0
ZXJuIGxvbmcgZG91YmxlIF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gbG9u
ZyBkb3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7IGV4dGVy
biBsb25nIGRvdWJsZSBfX2xnYW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkg
OwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmludGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBkb3VibGUgX19yaW50bCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIG5leHRhZnRlcmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRhZnRlcmwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwg
bG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25n
IGRvdWJsZSBfX25leHR0b3dhcmRsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVtYWlu
ZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fcmVtYWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf
X24pIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibmwgKGxvbmcgZG91Ymxl
IF9feCwgaW50IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYm5sIChsb25nIGRvdWJs
ZSBfX3gsIGludCBfX24pIDsKCgoKZXh0ZXJuIGludCBpbG9nYmwgKGxvbmcgZG91YmxlIF9feCkg
OyBleHRlcm4gaW50IF9faWxvZ2JsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVybiBsb25n
IGRvdWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBsb25nIGludCBfX24pIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2NhbGJsbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSA7
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAg
ICAgICAgICAgICAgICAgIFBhZ2UgIDE3OAoKCgpleHRlcm4gbG9uZyBkb3VibGUgbmVhcmJ5aW50
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX25lYXJieWludGwgKGxv
bmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcm91bmRsIChsb25nIGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcm91bmRsIChsb25nIGRvdWJsZSBfX3gpIDsK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHRydW5jbCAobG9uZyBkb3VibGUgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RydW5jbCAobG9uZyBkb3Vi
bGUgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8p
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtcXVvbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3ksIGludCAqX19xdW8pIDsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50bCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xyaW50bCAobG9uZyBkb3VibGUgX194
KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRl
cm4gbG9uZyBsb25nIGludCBfX2xscmludGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4g
bG9uZyBpbnQgbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xy
b3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kbCAo
bG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZmRpbWwgKGxvbmcgZG91YmxlIF9f
eCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZkaW1sIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWF4bCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
Zm1heGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsK
CgoKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlsIChsb25nIGRvdWJsZSBfX3ZhbHVlKQogICAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fc2lnbmJpdGwgKGxvbmcg
ZG91YmxlIF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl
cm4gbG9uZyBkb3VibGUgZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxv
bmcgZG91YmxlIF9feikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWFsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSA7CiMgMTAwICIvdXNyL2luY2x1
ZGUvbWF0aC5oIiAyIDMKIyAxMTMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKZXh0ZXJuIGludCBz
aWduZ2FtOwojIDE1NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwplbnVtCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQ
YWdlICAxNzkKCgogIHsKICAgIEZQX05BTiwKCiAgICBGUF9JTkZJTklURSwKCiAgICBGUF9aRVJP
LAoKICAgIEZQX1NVQk5PUk1BTCwKCiAgICBGUF9OT1JNQUwKCiAgfTsKIyAyNDAgIi91c3IvaW5j
bHVkZS9tYXRoLmgiIDMKdHlwZWRlZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwKICBfU1ZJRF8sCiAg
X1hPUEVOXywKICBfUE9TSVhfLAogIF9JU09DXwp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKCgoKZXh0
ZXJuIF9MSUJfVkVSU0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKIyAyNjUgIi91c3IvaW5jbHVkZS9t
YXRoLmgiIDMKc3RydWN0IGV4Y2VwdGlvbgoKICB7CiAgICBpbnQgdHlwZTsKICAgIGNoYXIgKm5h
bWU7CiAgICBkb3VibGUgYXJnMTsKICAgIGRvdWJsZSBhcmcyOwogICAgZG91YmxlIHJldHZhbDsK
ICB9OwoKCgoKZXh0ZXJuIGludCBtYXRoZXJyIChzdHJ1Y3QgZXhjZXB0aW9uICpfX2V4Yyk7CiMg
MzUwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlu
bGluZS5oIiAxIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRl
cm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdGYgKGZsb2F0IF9feCkKewogIF9fZXh0ZW5zaW9uX18g
dW5pb24geyBmbG9hdCBfX2Y7IGludCBfX2k7IH0gX191ID0geyBfX2Y6IF9feCB9OwogIHJldHVy
biBfX3UuX19pIDwgMDsKfQpleHRlcm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdCAoZG91YmxlIF9f
eCkKewogIF9fZXh0ZW5zaW9uX18gdW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9IF9f
dSA9IHsgX19kOiBfX3ggfTsKICByZXR1cm4gX191Ll9faVsxXSA8IDA7Cn0KCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE4MAoKCmV4dGVybiBfX2lubGluZSBpbnQKX19zaWduYml0bCAobG9uZyBkb3VibGUg
X194KQp7CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGxvbmcgZG91YmxlIF9fbDsgaW50IF9faVsz
XTsgfSBfX3UgPSB7IF9fbDogX194IH07CiAgcmV0dXJuIChfX3UuX19pWzJdICYgMHg4MDAwKSAh
PSAwOwp9CiMgMjkxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGRvdWJsZSBfX3NnbiAoZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBkb3VibGUgX19z
Z24gKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8g
MS4wIDogLTEuMCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQpIDsgZXh0
ZXJuIF9faW5saW5lIGZsb2F0IF9fc2duZiAoZmxvYXQgX194KSB7IHJldHVybiBfX3ggPT0gMC4w
ID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjApOyB9IGV4dGVybiBfX2lubGluZSBsb25n
IGRvdWJsZSBfX3NnbmwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJs
ZSBfX3NnbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChf
X3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfQojIDQyNiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlu
bGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJs
ZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9f
ICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW4yZiAoZmxv
YXQgX195LCBmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20g
X192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIg
KF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnBhdGFuIiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAic3QoMSkiKTsgcmV0dXJuIF9f
dmFsdWU7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJs
ZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBf
X2FzbSBfX3ZvbGF0aWxlX18gKCJmcGF0YW4iIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCks
ICJ1IiAoX195KSA6ICJzdCgxKSIpOyByZXR1cm4gX192YWx1ZTsgfQoKCmV4dGVybiBfX2lubGlu
ZSBkb3VibGUgZm1vZCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJ
JSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5s
aW5lIGZsb2F0IGZtb2RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbVxuXHQiICJmbnN0c3cJ
JSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gp
LCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIGZtb2RsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg
eyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglm
cHJlbVxuXHQiICJmbnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9f
dmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiYXgiLCAiY2MiKTsgcmV0dXJuIF9fdmFs
dWU7IH0KIyA0NDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19p
bmxpbmUgZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91YmxlIF9fcmVzdWx0
OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9f
eCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IHNxcnRmIChmbG9h
dCBfX3gpIHsgcmVnaXN0ZXIgZmxvYXQgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZz
cXJ0IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfSBl
eHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZnNxcnQiIDog
Ij10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fcmVzdWx0OyB9CmV4dGVybiBf
X2lubGluZSBsb25nIGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIg
KF9fcmVzdWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQoKCmV4dGVybiBfX2lu
bGluZSBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnMgKF9f
eCk7IH0KZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZhYnNmIChmbG9hdCBfX3gpIHsgcmV0dXJuIF9f
YnVpbHRpbl9mYWJzZiAoX194KTsgfQpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZmFic2wg
KGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNsIChfX3gpOyB9CmV4dGVy
biBfX2lubGluZSBsb25nIGRvdWJsZSBfX2ZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJu
IF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQojIDQ2NyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlu
bGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgeyByZWdp
c3RlciBkb3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIg
OiAiPXQiIChfX3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGZs
b2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAo
X19yZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFu
IiA6ICI9dCIgKF9fcmVzdWx0KSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1
bHQ7IH0KCmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX3NnbjFsIChsb25nIGRvdWJsZSkg
OyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUgX194KSB7
IF9fZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBfX3hsZDsgdW5zaWduZWQgaW50IF9f
eGlbM107IH0gX19uID0geyBfX3hsZDogX194IH07IF9fbi5fX3hpWzJdID0gKF9fbi5fX3hpWzJd
ICYgMHg4MDAwKSB8IDB4M2ZmZjsgX19uLl9feGlbMV0gPSAweDgwMDAwMDAwOyBfX24uX194aVsw
XSA9IDA7IHJldHVybiBfX24uX194bGQ7IH0KIyA0OTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhp
bmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZsb29yIChkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9fdm9s
YXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAweGYz
ZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3d0
bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsgcmV0
dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQg
aW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3d0bXA7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3dG1wID0gKF9fY3cgJiAw
eGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9f
Y3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10IiAoX192YWx1ZSkgOiAi
MCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDogOiAibSIgKF9fY3cpKTsg
cmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZsb29ybCAobG9u
ZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRpbGUg
dW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50IF9f
Y3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBfX2N3
dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwNDAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cg
JTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDogIj10
IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAiIDog
OiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1MDQgIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGNlaWwgKGRvdWJsZSBfX3gp
IHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9y
dCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20g
X192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAiPW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAm
IDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAo
X19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6
ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykp
OyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgY2VpbGYgKGZsb2F0IF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3
ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0i
IChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3
KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBjZWlsbCAo
bG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1MjIgIi91c3IvaW5jbHVkZS9i
aXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlCmxkZXhwIChkb3VibGUg
X194LCBpbnQgX195KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192
b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKChs
b25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVlOwp9CiMgNTQwICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2cxcCAoZG91Ymxl
IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAoX194KSA+
PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxvZ2wgKDEu
MCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4Y2hcblx0
IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1
cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgbG9nMXBmIChmbG9hdCBfX3gpIHsg
cmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFic2wgKF9feCkgPj0gMS4wIC0g
MC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUgPSBsb2dsICgxLjAgKyBfX3gp
OyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQiICJmeGNoXG5cdCIgImZ5bDJ4
cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fdmFs
dWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChfX2ZhYnNsIChfX3gpID49IDEu
MCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3ZhbHVlID0gbG9nbCAoMS4wICsg
X194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJcblx0IiAiZnhjaFxuXHQiICJm
eWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBf
X3ZhbHVlOyB9CiMgNTU0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJu
IF9faW5saW5lIGRvdWJsZSBhc2luaCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9fc3Fy
dGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9IGV4
dGVybiBfX2lubGluZSBmbG9hdCBhc2luaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRv
dWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAoX195ICogX195IC8gKF9f
c3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9fc2duMWwgKF9feCkpOyB9
IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhc2luaGwgKGxvbmcgZG91YmxlIF9feCkgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gKGxvZzFwbCAo
X195ICogX195IC8gKF9fc3FydGwgKF9feSAqIF9feSArIDEuMCkgKyAxLjApICsgX195KSAqIF9f
c2duMWwgKF9feCkpOyB9CgoKCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFjb3NoIChkb3VibGUg
X194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAo
X194ICsgMS4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFjb3NoZiAoZmxvYXQgX194KSB7
IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAoX194ICsg
MS4wKSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUg
X194KSB7IHJldHVybiBsb2dsIChfX3ggKyBfX3NxcnRsIChfX3ggLSAxLjApICogX19zcXJ0bCAo
X194ICsgMS4wKSk7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW5oIChkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41
ICogbG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9
IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFwbCAoLShfX3kg
KyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfSBleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgYXRhbmhsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX195ID0gX19mYWJzbCAoX194KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195
KSAvICgxLjAgKyBfX3kpKSAqIF9fc2duMWwgKF9feCk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBk
b3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9f
eCAqIF9feCArIF9feSAqIF9feSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGh5cG90ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9f
eSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194
LCBsb25nIGRvdWJsZSBfX3kpIHsgcmV0dXJuIF9fc3FydGwgKF9feCAqIF9feCArIF9feSAqIF9f
eSk7IH0KCmV4dGVybiBfX2lubGluZSBkb3VibGUgbG9nYiAoZG91YmxlIF9feCkgeyByZWdpc3Rl
ciBsb25nIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNt
IF9fdm9sYXRpbGVfXyAoImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFs
dWUpIDogIjAiIChfX3gpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0
IGxvZ2JmIChmbG9hdCBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIg
OiAiPXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Zh
bHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194
KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9f
anVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5rKSwg
Ij11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfQoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAg
ICAgUGFnZSAgMTgxCgoKIyA1ODQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpl
eHRlcm4gX19pbmxpbmUgZmxvYXQKbGRleHBmIChmbG9hdCBfX3gsIGludCBfX3kpCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0
dXJuIF9fdmFsdWU7Cn0KCmV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZQpsZGV4cGwgKGxvbmcg
ZG91YmxlIF9feCwgaW50IF9feSkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9f
YXNtIF9fdm9sYXRpbGVfXyAoImZzY2FsZSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwg
InUiICgobG9uZyBkb3VibGUpIF9feSkpOyByZXR1cm4gX192YWx1ZTsKfQojIDYwOCAiL3Vzci9p
bmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBsb25nIGludApscmlu
dGYgKGZsb2F0IF9feCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGls
ZV9fICgiZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7
IHJldHVybiBfX2xyaW50cmVzOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApscmludCAoZG91
YmxlIF9feCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
ZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVy
biBfX2xyaW50cmVzOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApscmludGwgKGxvbmcgZG91
YmxlIF9feCkKewogIGxvbmcgaW50IF9fbHJpbnRyZXM7IF9fYXNtX18gX192b2xhdGlsZV9fICgi
ZmlzdHBsICUwIiA6ICI9bSIgKF9fbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVy
biBfX2xyaW50cmVzOwp9CiMgNjMxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMK
ZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50ZiAoZmxvYXQgX194KQp7CiAgbG9u
ZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmaXN0cGxsICUw
IiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19sbHJp
bnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50IChkb3VibGUgX194
KQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJm
aXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1
cm4gX19sbHJpbnRyZXM7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKbGxyaW50bCAo
bG9uZyBkb3VibGUgX194KQp7CiAgbG9uZyBsb25nIGludCBfX2xscmludHJlczsgX19hc21fXyBf
X3ZvbGF0aWxlX18gKCJmaXN0cGxsICUwIiA6ICI9bSIgKF9fbGxyaW50cmVzKSA6ICJ0IiAoX194
KSA6ICJzdCIpOyByZXR1cm4gX19sbHJpbnRyZXM7Cn0KCgoKCgoKCmV4dGVybiBfX2lubGluZSBk
b3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192
YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglm
cHJlbTFcblx0IiAiZnN0c3cJJSVheFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9f
dmFsdWUpLCAiPSZhIiAoX19jbG9iYmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2Mi
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGRyZW1mIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9f
Y2xvYmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVh
eFxuXHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9i
YmVyZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGRyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgeyByZWdpc3RlciBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIgaW50IF9fY2xv
YmJlcmVkOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCIxOglmcHJlbTFcblx0IiAiZnN0c3cJJSVheFxu
XHQiICJzYWhmXG5cdCIgImpwCTFiIiA6ICI9dCIgKF9fdmFsdWUpLCAiPSZhIiAoX19jbG9iYmVy
ZWQpIDogIjAiIChfX3gpLCAidSIgKF9feSkgOiAiY2MiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA2
NjYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgaW50
Cl9fZmluaXRlIChkb3VibGUgX194KQp7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxODIKCgogIHJldHVy
biAoX19leHRlbnNpb25fXwogICAgICAgICAgKCgoKCh1bmlvbiB7IGRvdWJsZSBfX2Q7IGludCBf
X2lbMl07IH0pIHtfX2Q6IF9feH0pLl9faVsxXQogICAgICAgICAgICAgfCAweDgwMGZmZmZmdSkg
KyAxKSA+PiAzMSkpOwp9CiMgMzUxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyAyNyAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL29iamMuaCIgMQojIDI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5o
IiAyCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNy
L2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9z
eXNsaW1pdHMuaCIgMSAzCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDEyNSAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGlt
aXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1
ZGUvbGltaXRzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91
c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTQ0ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwojIDEyNiAiL3Vzci9pbmNs
dWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGlt
LmgiIDEgMwojIDM2ICIvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS9saW51eC9saW1pdHMuaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2Fs
X2xpbS5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzCiMg
MTQ1ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3Bvc2l4Ml9saW0uaCIgMSAzCiMgMTQ5ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoKCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRl
L2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpb19saW0uaCIg
MSAzCiMgMzUgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAyIDMKIyAxMzYgIi91c3Iv
aW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNp
emUuaCIgMSAzCiMgMTM3ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMiAzCiMgMTUz
ICIvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDEyNiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDgg
Ii91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNs
dWRlL3N5c2xpbWl0cy5oIiAyIDMKIyAxMiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvbGltaXRzLmgiIDIgMwojIDMwICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMgNDQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9taXNjLmgiCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
IFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxODMKCgojIDEgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoK
CiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4x
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoj
IDQyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0
ZmxhZ3MuaCIgMSAzCiMgNDMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMKIyA2MyAiL3Vzci9pbmNsdWRlL2JpdHMvd2Fp
dHN0YXR1cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyA2NCAiL3Vzci9p
bmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAyIDMKCnVuaW9uIHdhaXQKICB7CiAgICBpbnQgd19z
dGF0dXM7CiAgICBzdHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3Rlcm1z
aWc6NzsKICAgICAgICB1bnNpZ25lZCBpbnQgX193X2NvcmVkdW1wOjE7CiAgICAgICAgdW5zaWdu
ZWQgaW50IF9fd19yZXRjb2RlOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgoKICAg
ICAgfSBfX3dhaXRfdGVybWluYXRlZDsKICAgIHN0cnVjdAogICAgICB7CgogICAgICAgIHVuc2ln
bmVkIGludCBfX3dfc3RvcHZhbDo4OwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfc3RvcHNpZzo4
OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKICAgICAgfSBfX3dhaXRfc3RvcHBlZDsK
ICB9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDY4ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDMKdHlwZWRlZiB1bmlvbgogIHsKICAgIHVuaW9uIHdhaXQgKl9fdXB0cjsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAg
ICAgICAgICAgIFBhZ2UgIDE4NAoKCiAgICBpbnQgKl9faXB0cjsKICB9IF9fV0FJVF9TVEFUVVMg
X19hdHRyaWJ1dGVfXyAoKF9fdHJhbnNwYXJlbnRfdW5pb25fXykpOwojIDk0ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCBy
ZW07CiAgfSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90Owog
ICAgbG9uZyBpbnQgcmVtOwogIH0gbGRpdl90OwoKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsK
ICB9IGxsZGl2X3Q7CiMgMTMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHNpemVf
dCBfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICh2b2lkKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAo
X19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJu
IGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f
KSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50
IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSA7CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVy
c29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE4NQoKCgpleHRlcm4gbG9uZyBpbnQgc3Ry
dG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBs
b25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50
IF9fYmFzZSkgOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBz
dHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKICAgICAgICAgICAgOwoKCgoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg
aW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl
KSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2Up
CiAgICAgICAgICAgIDsKIyAyMTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3Iv
aW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK
CgoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lv
bl9fCmV4dGVybiBsb25nIGxvbmcgaW50IF9fc3RydG9sbF9sIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSA7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgICAgICAgICA7CgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAg
ICAgICAgICBQYWdlICAxODYKCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9sIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKQogICAgICAgICAgICA7CgpleHRl
cm4gZmxvYXQgX19zdHJ0b2ZfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2Fs
ZV90IF9fbG9jKSA7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19sb2NhbGVfdCBfX2xvYykgOwoKCgoKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAg
ICAgICAgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICAgICAgICAgOwpleHRlcm4gbG9u
ZyBkb3VibGUgX19zdHJ0b2xkX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IF9fZ3JvdXApIDsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgpleHRlcm4gdW5zaWduZWQgbG9u
ZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19jb25zdCBjaGFy
ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkK
ICAgICAgICAgICAgOwojIDI5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBfX2lu
bGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0cikKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE4NwoKCnsKICByZXR1
cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIDApOwp9CmV4dGVybiBfX2lu
bGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4g
X19zdHJ0b2xfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KZXh0ZXJu
IF9faW5saW5lIHVuc2lnbmVkIGxvbmcgaW50CnN0cnRvdWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19i
YXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQoKCmV4dGVybiBfX2lubGluZSBmbG9hdApzdHJ0b2YgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJu
IF9fc3RydG9mX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxp
bmUgbG9uZyBkb3VibGUKc3RydG9sZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCnsKICByZXR1cm4gX19zdHJ0b2xkX2ludGVybmFs
IChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVy
biBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19l
eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIGludApzdHJ0b3Vx
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2Vu
ZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFs
IChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJu
IF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2Up
CnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQKc3RydG91bGwgKF9fY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0
b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29uLm1pICAgICAgICAgICAgICAgICAg
IFBhZ2UgIDE4OAoKCn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hh
ciAqX19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop
MCkpOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsK
ICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTAp
Owp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK
ewogIHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0K
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAo
KHZvaWQgKikwKSwgMTApOwp9CiMgMzg1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2Nv
bnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDM5MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMK
CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHNyYW5k
b20gKHVuc2lnbmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1
bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIg
Kl9fc3RhdGVidWYpIDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
IFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxODkKCgoKCgoKCgpzdHJ1Y3QgcmFu
ZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsKICAgIGlu
dDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2RlZzsKICAgIGlu
dCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVybiBpbnQgcmFuZG9t
X3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAg
ICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwoKZXh0ZXJuIGludCBzcmFuZG9t
X3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpIDsKCmV4
dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJp
Y3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4s
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBf
X2J1ZikgOwoKZXh0ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVi
dWYsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmKSA7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSA7CgpleHRlcm4gdm9pZCBzcmFu
ZCAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQg
aW50ICpfX3NlZWQpIDsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAodm9pZCkgOwpleHRl
cm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0
ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSA7CgoKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDgg
KHZvaWQpIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAgUGVyc29u
Lm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5MAoKCmV4dGVybiBsb25nIGludCBqcmFuZDQ4
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgOwoKCmV4dGVybiB2b2lkIHNyYW5kNDgg
KGxvbmcgaW50IF9fc2VlZHZhbCkgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDgg
KHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10pIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAo
dW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10pIDsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRh
CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGlu
dCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNo
b3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fYTsKICB9OwoKCmV4
dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7
CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsK
CgpleHRlcm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBf
X2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVz
dWx0KSA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz
XSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jl
c3VsdCkgOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJp
Y3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBf
X3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3Ry
aWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZh
bCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgICAgICAgIDsKCmV4dGVybiBp
bnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAg
ICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4gaW50IGxj
b25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwojIDUzNyAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9f
c2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZv
aWQgKl9fcHRyKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
UGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5MQoKCgpleHRlcm4gdm9pZCBjZnJl
ZSAodm9pZCAqX19wdHIpIDsKCgoKIyAxICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwojIDIy
ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg
MSAzCiMgMjMgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2dj
YzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRlcm4gdm9pZCAq
YWxsb2NhIChzaXplX3QgX19zaXplKSA7CiMgNTQ4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg
MwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAo
KF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21l
bXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19zaXplKQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQg
KCpfX2Z1bmMpICh2b2lkKSkgOwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5j
KSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgICAgICAgICA7
CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19u
b3JldHVybl9fKSk7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgICAg
IFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxOTIKCgoKZXh0ZXJuIHZvaWQgX0V4
aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0
ZXJuIGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIg
Kl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4gaW50
IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg
ICAgICAgICAgOwoKCmV4dGVybiBpbnQgdW5zZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7
CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIDsKIyA2MjQgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgoK
CgpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKIyA2NDEgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkg
OwojIDY1MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta2R0ZW1wIChj
aGFyICpfX3RlbXBsYXRlKSA7CgoKCgpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpf
X2NvbW1hbmQpIDsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICAgICAg
UGVyc29uLm1pICAgICAgICAgICAgICAgICAgIFBhZ2UgIDE5MwoKCgoKCmV4dGVybiBjaGFyICpj
YW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwojIDY3MyAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpyZWFscGF0aCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3Ry
aWN0IF9fcmVzb2x2ZWQpIDsKCgoKCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAoX19j
b25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29t
cGFyaXNvbl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQgKl9f
a2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJu
IHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUs
CiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJuIGlu
dCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxvbmcg
aW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19l
eHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCmV4dGVybiBk
aXZfdCBkaXYgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVy
LCBsb25nIGludCBfX2Rlbm9tKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBf
X251bWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50
IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzI5
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3Zh
bHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAg
ICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxOTQK
CgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIDsKCgoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChs
b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50
ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIDsKZXh0ZXJuIGNo
YXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVm
KSA7CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19y
ZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19sZW4pIDsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3VibGUgX192YWx1
ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2Rl
Y3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAgICAgICAgICAgICAgIGNoYXIgKl9f
cmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwpleHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAgICAg
ICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIDsKCgoKCgoKZXh0ZXJu
IGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50
IG1idG93YyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IHdj
dG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIDsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0
b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIDsKCmV4dGVybiBzaXpl
X3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTk1
CgoKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9f
cHdjcywgc2l6ZV90IF9fbikKICAgICAgICAgICAgOwoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNo
IChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIDsKIyA4MDkgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAog
ICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywK
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSA7CgoKCgoK
ZXh0ZXJuIHZvaWQgc2V0a2V5IChfX2NvbnN0IGNoYXIgKl9fa2V5KSA7CgoKCgoKCgpleHRlcm4g
aW50IHBvc2l4X29wZW5wdCAoaW50IF9fb2ZsYWcpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRw
dCAoaW50IF9fZmQpIDsKCgoKZXh0ZXJuIGludCB1bmxvY2twdCAoaW50IF9fZmQpIDsKCgoKCmV4
dGVybiBjaGFyICpwdHNuYW1lIChpbnQgX19mZCkgOwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVf
ciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgpleHRlcm4gaW50
IGdldHB0ICh2b2lkKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgICAg
ICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTk2CgoKCgoKCgpleHRlcm4gaW50
IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKIyA0NSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgojIDU3ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvbWlzYy5oIgp2b2lkICp4bWFsbG9jIChzaXplX3Qgc2l6ZSk7CnZvaWQgKnhtYWxsb2Nf
YXRvbWljIChzaXplX3Qgc2l6ZSk7CnZvaWQgKnhjYWxsb2MgKHNpemVfdCBubWVtYiwgc2l6ZV90
IHNpemUpOwp2b2lkICp4cmVhbGxvYyAodm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CnZvaWQgeGZy
ZWUgKHZvaWQgKmJ1Zik7CgoKY2hhciAqZHJvcGRpciAoY2hhciAqcGF0aCk7CgpjaGFyICp4c3Ry
ZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwojIDE0NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L21pc2MuaCIKY29uc3QgY2hhciAqZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwcm9ncmFt
X25hbWUpOwoKdm9pZCBkZWJ1Z2Fib3J0IChjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQg
bGluZW5vLCBjb25zdCBjaGFyICpmdW5jdGlvbikgX19hdHRyaWJ1dGVfXyAoKG5vcmV0dXJuKSk7
Cgp0eXBlZGVmIGludCAoKnF1aWNrc29ydF9jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29u
c3Qgdm9pZCAqKTsKCmV4dGVybiB2b2lkIHF1aWNrc29ydCAodm9pZCAqY29uc3QgcGJhc2UsIHNp
emVfdCB0b3RhbF9lbGVtcywKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgcXVp
Y2tzb3J0X2NvbXBhcl9mbl90IGNtcCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgQk9PTAppc0RpZ2l0
IChjaGFyIGNoKQp7CiAgcmV0dXJuIGNoID49ICcwJyAmJiBjaCA8PSAnOSc7Cn0KCnN0YXRpYyBp
bmxpbmUgQk9PTAppc1NwYWNlIChjaGFyIGNoKQp7CiAgcmV0dXJuIGNoID09ICcgJyB8fCBjaCA9
PSAnXHQnIHx8IGNoID09ICdcbicgfHwgY2ggPT0gJ1xyJyB8fCBjaCA9PSAnXGYnOwp9CgpzdGF0
aWMgaW5saW5lIEJPT0wKaXNVcHBlciAoY2hhciBjaCkKewogIHJldHVybiBjaCA+PSAnQScgJiYg
Y2ggPD0gJ1onOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKaXNMb3dlciAoY2hhciBjaCkKewogIHJl
dHVybiBjaCA+PSAnYScgJiYgY2ggPD0gJ3onOwp9CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgICAgIFBlcnNvbi5taSAgICAgICAgICAgICAgICAgICBQYWdlICAxOTcKCgoK
c3RhdGljIGlubGluZSBCT09MCmlzQWxwaGEgKGNoYXIgY2gpCnsKICByZXR1cm4gaXNVcHBlciAo
Y2gpIHx8IGlzTG93ZXIgKGNoKTsKfQoKc3RhdGljIGlubGluZSBCT09MCmlzQWxudW0gKGNoYXIg
Y2gpCnsKICByZXR1cm4gaXNBbHBoYSAoY2gpIHx8IGlzRGlnaXQgKGNoKTsKfQoKc3RhdGljIGlu
bGluZSBCT09MCmlzUHVuY3QgKGNoYXIgY2gpCnsKICByZXR1cm4gKCgoY2ggPiAnICcpICYmIChj
aCA8ICcwJykpCiAgICAgICAgICB8fCAoKGNoID4gJzknKSAmJiAoY2ggPCAnQScpKQogICAgICAg
ICAgfHwgKChjaCA+ICdaJykgJiYgKGNoIDwgJ2EnKSkKICAgICAgICAgIHx8ICgoY2ggPiAneicp
ICYmIChjaCA8PSAnficpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTAppc1ByaW50IChjaGFyIGNo
KQp7CiAgcmV0dXJuIGlzUHVuY3QgKGNoKSB8fCBpc0FsbnVtIChjaCkgfHwgY2ggPT0gJyAnOwp9
CiMgMjkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tZGVmcy5oIiAyCiMg
NTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIgMgojIDEyICJQZXJzb24ubSIg
MgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIiAxCiMgMTMgIlBl
cnNvbi5tIiAyCgpAaW1wbGVtZW50YXRpb24gUGVyc29uCgotIHN0ZXAKewogIHZhbHVlICs9IDE7
CiAgW3NlbGYgbG9va107CiAgcmV0dXJuIHNlbGY7Cn0KCi0gc2V0V29ybGQ6IGwKewogIHdvcmxk
ID0gbDsKICByZXR1cm4gc2VsZjsKfQoKLSBzZXRQZXJzb246IG4gVG9waWNfYXJyYXk6IChmbG9h
dCAqKXQKewogIGludCBpOwoKICBuYW1lID0gbjsKICB2YWx1ZSA9IDA7CiAgZm9yIChpPSAwO2kg
PCAyOyBpKyspCiAgICB0b3BpY3NbaV0gPSB0W2ldOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgICAgICBQZXJzb24ubWkgICAgICAgICAgICAgICAgICAgUGFnZSAgMTk4CgoK
ICByZXR1cm4gc2VsZjsKfQoKLSBwcmludAp7CiAgKHZvaWQpIGZwcmludGYgKHN0ZG91dCwgIlx0
IFN0ZXAgdmFsdWUgPSAlZFxuIiwgdmFsdWUpOwogICh2b2lkKSBmcHJpbnRmIChzdGRvdXQsICIl
cyVmXG4lcyVmXG4iLCAiXHQgICAgICAgICAgICAgIHRvcGljc1tudWxsXSA9ICIsIHRvcGljc1tu
dWxsXSwgIlx0ICAgICAgICAgICAgIHRvcGljc1toZWxsb10gPSAiLCB0b3BpY3NbaGVsbG9dKTsK
CgoKICByZXR1cm4gc2VsZjsKfQoKLSAoY29uc3QgY2hhciAqKWdldE5hbWUKewogIHJldHVybiBb
bmFtZSBnZXRDXTsKfQoKLSBzcGVhazogKHRvcGljX3R5cGUpdG9waWMgVG9QZXJzb246IHBlcnNv
bgp7CiAgZmxvYXQgbmV3X3RvcGljX251bTsKCiAgbmV3X3RvcGljX251bSA9IChmbG9hdClbdW5p
Zm9ybURibFJhbmQgZ2V0RG91YmxlV2l0aE1pbjogMC4wTCB3aXRoTWF4OiAxLjBMXTsKCiAgaWYg
KG5ld190b3BpY19udW0gPCB0b3BpY3NbbnVsbF0pCiAgICAodm9pZClmcHJpbnRmIChzdGRvdXQs
ICJQcmVmZXIgdG8gdGFsayBhYm91dCBub3RoaW5nIHdpdGggIik7CiAgZWxzZSBpZiAobmV3X3Rv
cGljX251bSA8IHRvcGljc1toZWxsb10pCiAgICAodm9pZClmcHJpbnRmIChzdGRvdXQsICIlcyBz
YXlzIEhlbGxvLCAiLCBbc2VsZiBnZXROYW1lXSk7CiAgZWxzZQogICAgewogICAgICAodm9pZCkg
ZnByaW50ZihzdGRlcnIsIkV4Y2VwdGlvbiBpbiByYW5kb20gdG9waWMgZHJhdy5cbiIpOwogICAg
ICBleGl0KC0xKTsKICAgIH0KCiAgKHZvaWQpZnByaW50ZiAoc3Rkb3V0LCAiIHRvICU1cy5cbiIs
IFtwZXJzb24gZ2V0TmFtZV0pOwoKICByZXR1cm4gc2VsZjsKfQoKLSBsb29rCnsKICBpZCB0YXJn
ZXQ7CgogIHRhcmdldCA9IFt3b3JsZCBhdE9mZnNldDogW3VuaWZvcm1JbnRSYW5kCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldEludGVnZXJXaXRoTWluOiAxTAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aXRoTWF4OiAoW3dvcmxkIGdldENvdW50XS0xKV1dOwoKICBbc2Vs
ZiBzcGVhazogaGVsbG8gVG9QZXJzb246IHRhcmdldF07CiAgcmV0dXJuIHNlbGY7Cn0KQGVuZAoK
CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5t
aSAgICAgICAgICAgICAgICBQYWdlICAgIDEKCgojIDYgIlBwbE1vZGVsU3dhcm0ubSIKIyAxICJQ
cGxNb2RlbFN3YXJtLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpl
Y3RiYXNlL1N3YXJtLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpl
Y3RiYXNlLmgiIDEKIyAyMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDEKIyAxOCAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgp0eXBlZGVmIGVudW0ge2ZjYWxsX3R5cGVfdm9pZCA9
IDAsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV9ib29sZWFuLAogICAgICAgICAgICAgIGZjYWxs
X3R5cGVfdWNoYXIsIGZjYWxsX3R5cGVfc2NoYXIsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91
c2hvcnQsIGZjYWxsX3R5cGVfc3Nob3J0LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWludCwg
ZmNhbGxfdHlwZV9zaW50LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWxvbmcsIGZjYWxsX3R5
cGVfc2xvbmcsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91bG9uZ2xvbmcsIGZjYWxsX3R5cGVf
c2xvbmdsb25nLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfZmxvYXQsIGZjYWxsX3R5cGVfZG91
YmxlLCBmY2FsbF90eXBlX2xvbmdfZG91YmxlLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfb2Jq
ZWN0LCBmY2FsbF90eXBlX2NsYXNzLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfc3RyaW5nLCBm
Y2FsbF90eXBlX3NlbGVjdG9yLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfam9iamVjdCwgZmNh
bGxfdHlwZV9qc3RyaW5nLCBmY2FsbF90eXBlX2pzZWxlY3RvciwKICAgICAgICAgICAgICBmY2Fs
bF90eXBlX2lpZAogICAgICAgICAgICAgIH0gZmNhbGxfdHlwZV90OwoKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamMvb2JqYy5oIgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvbG9jYWwv
Z2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAxOTkgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYg
dW5zaWduZWQgaW50IHNpemVfdDsKIyAyODcgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBp
bnQgd2NoYXJfdDsKIyAzNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAy
CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQk9PTDsKIyA1MSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy5oIgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBvYmpjX3NlbGVjdG9y
CnsKICB2b2lkICpzZWxfaWQ7CiAgY29uc3QgY2hhciAqc2VsX3R5cGVzOwp9ICpTRUw7CgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAg
ICAgICAgICAgUGFnZSAgICAyCgoKaW5saW5lIHN0YXRpYyBCT09MCnNlbF9lcSAoU0VMIHMxLCBT
RUwgczIpCnsKICBpZiAoczEgPT0gMCB8fCBzMiA9PSAwKQogICAgcmV0dXJuIHMxID09IHMyOwog
IGVsc2UKICAgIHJldHVybiBzMS0+c2VsX2lkID09IHMyLT5zZWxfaWQ7Cn0KCgoKCgp0eXBlZGVm
IHN0cnVjdCBvYmpjX29iamVjdCB7CiAgc3RydWN0IG9iamNfY2xhc3MqIGNsYXNzX3BvaW50ZXI7
Cn0gKmlkOwoKCgoKCnR5cGVkZWYgaWQgKCpJTVApKGlkLCBTRUwsIC4uLik7CgoKCgoKCnR5cGVk
ZWYgY2hhciAqU1RSOwojIDk3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgi
CnR5cGVkZWYgc3RydWN0IG9iamNfY2xhc3MgKk1ldGFDbGFzczsKdHlwZWRlZiBzdHJ1Y3Qgb2Jq
Y19jbGFzcyAqQ2xhc3M7CnN0cnVjdCBvYmpjX2NsYXNzIHsKICBNZXRhQ2xhc3MgY2xhc3NfcG9p
bnRlcjsKCiAgc3RydWN0IG9iamNfY2xhc3MqIHN1cGVyX2NsYXNzOwoKCiAgY29uc3QgY2hhciog
bmFtZTsKICBsb25nIHZlcnNpb247CiAgdW5zaWduZWQgbG9uZyBpbmZvOwoKICBsb25nIGluc3Rh
bmNlX3NpemU7CgoKCiAgc3RydWN0IG9iamNfaXZhcl9saXN0KiBpdmFyczsKCgoKCgoKICBzdHJ1
Y3Qgb2JqY19tZXRob2RfbGlzdCogbWV0aG9kczsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgICAzCgoK
ICBzdHJ1Y3Qgc2FycmF5ICogZHRhYmxlOwoKICBzdHJ1Y3Qgb2JqY19jbGFzcyogc3ViY2xhc3Nf
bGlzdDsKICBzdHJ1Y3Qgb2JqY19jbGFzcyogc2libGluZ19jbGFzczsKCiAgc3RydWN0IG9iamNf
cHJvdG9jb2xfbGlzdCAqcHJvdG9jb2xzOwogIHZvaWQqIGdjX29iamVjdF90eXBlOwp9OwojIDE0
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIgpAY2xhc3MgUHJvdG9jb2w7
CgoKdHlwZWRlZiB2b2lkKiByZXR2YWxfdDsKdHlwZWRlZiB2b2lkKCphcHBseV90KSh2b2lkKTsK
dHlwZWRlZiB1bmlvbiB7CiAgY2hhciAqYXJnX3B0cjsKICBjaGFyIGFyZ19yZWdzW3NpemVvZiAo
Y2hhciopXTsKfSAqYXJnbGlzdF90OwoKCklNUCBvYmpjX21zZ19sb29rdXAgKGlkIHJlY2VpdmVy
LCBTRUwgb3ApOwojIDMzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKCnR5
cGVkZWYgdW5pb24gewogIGlkIG9iamVjdDsKICBTRUwgc2VsZWN0b3I7CiAgQ2xhc3MgX2NsYXNz
OwogIGNvbnN0IGNoYXIgKnN0cmluZzsKICBCT09MIGJvb2xlYW47CiAgY2hhciBzY2hhcjsKICB1
bnNpZ25lZCBjaGFyIHVjaGFyOwogIHNob3J0IHNzaG9ydDsKICB1bnNpZ25lZCBzaG9ydCB1c2hv
cnQ7CiAgaW50IHNpbnQ7CiAgdW5zaWduZWQgaW50IHVpbnQ7CiAgbG9uZyBzbG9uZzsKICB1bnNp
Z25lZCBsb25nIHVsb25nOwogIGxvbmcgbG9uZyBzbG9uZ2xvbmc7CiAgdW5zaWduZWQgbG9uZyBs
b25nIHVsb25nbG9uZzsKICBmbG9hdCBfZmxvYXQ7CiAgZG91YmxlIF9kb3VibGU7CiAgbG9uZyBk
b3VibGUgX2xvbmdfZG91YmxlOwogIHZvaWQgKmlpZDsKfSB0eXBlc190OwoKdHlwZWRlZiBzdHJ1
Y3QgewogIGZjYWxsX3R5cGVfdCB0eXBlOwogIHR5cGVzX3QgdmFsOwp9IHZhbF90OwoKCgoKCgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovZGVmdHlwZS5oIiAxCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAgIDQKCgojIDIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL2Rl
ZnR5cGUuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9PYmplY3QuaCIgMQoj
IDMwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9PYmplY3QuaCIKIyAxICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvT2JqZWN0LmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2Jq
Yy90eXBlZHN0cmVhbS5oIiAxCiMgMzAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5
cGVkc3RyZWFtLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAx
CiMgMzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiIDIKIyAx
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDEKIyAzMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAxCiMgMzMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmpjL2hhc2guaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2V4dGVy
bnZhci5oIiAxCiMgMzQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgoj
IDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdHJpbmcu
aCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAzMTEgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTIgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK
CgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAz
CgoKCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24p
IDsKCgpleHRlcm4gdm9pZCAqbWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9f
c3JjLCBzaXplX3QgX19uKQogICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkg
KHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMs
CiAgICAgICAgICAgICAgICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICA7
CgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0u
bWkgICAgICAgICAgICAgICAgUGFnZSAgICA1CgoKZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAq
X19zLCBpbnQgX19jLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qg
dm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25z
dCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgICAgICAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gdm9pZCAqcmF3bWVtY2hyIChfX2NvbnN0IHZv
aWQgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZv
aWQgKm1lbXJjaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0
cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJp
Y3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAg
OwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19u
KSA7CgoKZXh0ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4g
aW50IHN0cm5jbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXpl
X3QgX19uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu
IGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4
ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS94bG9jYWxlLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5
cGVkZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgICA2CgoKewoK
ICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25z
dCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAxMDkgIi91c3IvaW5jbHVk
ZS9zdHJpbmcuaCIgMiAzCgoKZXh0ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFy
ICpfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sKSA7CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwIChf
X2NvbnN0IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0
ZXJuIGNoYXIgKnN0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hy
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgICAgICAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3Qg
Y2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpf
X3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj
aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAgNwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNh
c2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkK
ICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gY2hhciAq
c3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9f
cmVzdHJpY3QgX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmlj
dCBfX3NhdmVfcHRyKSA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7CgoKCgoKCmV4dGVybiB2b2lkICpt
ZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRs
ZWxlbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4g
dm9pZCAqX19tZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4
dGVybiB2b2lkICptZW1wY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoK
CgoKZXh0ZXJuIHNpemVfdCBzdHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9f
ICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpf
X3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpl
eHRlcm4gY2hhciAqc3RyZXJyb3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fYnVmbGVuKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxN
b2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAgOAoKCgoKZXh0ZXJuIHZvaWQgX19i
emVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2Nv
bnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9p
ZCBiemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBiY21wIChfX2Nv
bnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4
dGVybiBjaGFyICpyaW5kZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRl
X18gKChjb25zdCkpOwoKCgoKZXh0ZXJuIGludCBmZnNsIChsb25nIGludCBfX2wpIF9fYXR0cmli
dXRlX18gKChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25nIGxv
bmcgaW50IF9fbGwpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4
dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50
IHN0cm5jYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6
ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4
dGVybiBpbnQgX19zdHJjYXNlY21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFy
ICpfX3MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0
dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBfX24sIF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAgOQoKCgoKZXh0ZXJu
IGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAg
ICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgOwoKCgoKZXh0ZXJuIGlu
dCBzdHJ2ZXJzY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJz
aWduYWwgKGludCBfX3NpZykgOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAg
OwpleHRlcm4gY2hhciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0
cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIg
KnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNo
YXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9p
ZCAqX19zLCBzaXplX3QgX19uKSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25z
dCBjaGFyICpfX2ZpbGVuYW1lKSA7CiMgMzU2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiMgMzU3ICIvdXNyL2luY2x1ZGUvc3Ry
aW5nLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIyA1MiAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5o
IiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2Zl
YXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNy
L2luY2x1ZGUvZW5kaWFuLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAz
CiMgMzggIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjYg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAxMAoKCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy90
eXBlcy5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2Jp
dHMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxv
bmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMK
dHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWlu
dDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWdu
ZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7
Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5
cGVkZWYgX191X2ludCBfX2dpZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYg
X191X2ludCBfX21vZGVfdDsKdHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25n
IGludCBfX29mZl90Owp0eXBlZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3Bp
ZF90Owp0eXBlZGVmIGludCBfX3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5
cGVkZWYgX191X3F1YWRfdCBfX3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlw
ZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVm
IGludCBfX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50
IF9fdGltZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9u
ZyBpbnQgX19zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVm
IGxvbmcgaW50IF9fY2xvY2tfdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAxMQoKCgoKdHlwZWRlZiBp
bnQgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCgoKCgp0eXBlZGVmIGlu
dCBfX2tleV90OwoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0
eXBlZGVmIGxvbmcgaW50IF9fYmxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu
dF90Owp0eXBlZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9f
ZnNibGtjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYg
X191X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7
CgoKdHlwZWRlZiBfX3VfcXVhZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2Zm
NjRfdDsKCgp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIGludCBfX3RfdXNjYWxhcl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0
aHJlYWR0eXBlcy5oIiAxIDMKIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi
IDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1p
ICAgICAgICAgICAgICAgIFBhZ2UgICAxMgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQu
aCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKc3RydWN0IF9fc2NoZWRf
cGFyYW0KICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojIDI0ICIvdXNyL2luY2x1
ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsK
ICBsb25nIGludCBfX3N0YXR1czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3Ry
dWN0IF9wdGhyZWFkX2Rlc2NyX3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBz
dHJ1Y3QgX19wdGhyZWFkX2F0dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2No
ZWRwb2xpY3k7CiAgc3RydWN0IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2lu
aGVyaXRzY2hlZDsKICBpbnQgX19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9f
c3RhY2thZGRyX3NldDsKICB2b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7
Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sgX19jX2xvY2s7CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVh
ZF9jb25kX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2Nv
bmRhdHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAg
ICAgICAgUGFnZSAgIDEzCgoKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX21fcmVzZXJ2ZWQ7
CiAgaW50IF9fbV9jb3VudDsKICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9r
aW5kOwogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4
X3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRl
eGF0dHJfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVj
dCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9j
azsKICBpbnQgX19yd19yZWFkZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9w
dGhyZWFkX2Rlc2NyIF9fcndfcmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3Jp
dGVfd2FpdGluZzsKICBpbnQgX19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVh
ZF9yd2xvY2tfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBf
X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGlu
dCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVh
ZF9mYXN0bG9jayBfX2JhX2xvY2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJl
c2VudDsKICBfcHRocmVhZF9kZXNjciBfX2JhX3dhaXRpbmc7CgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAg
MTQKCgp9IHB0aHJlYWRfYmFycmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX19wc2hh
cmVkOwp9IHB0aHJlYWRfYmFycmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
aW50IHB0aHJlYWRfdDsKIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDU0
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDIgMwojIDIxNyAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSB2b2lkICpfX21lbXBjcHlfc21hbGwgKHZv
aWQgKiwgY2hhciwgY2hhciwgY2hhciwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX191aW50MTZfdCwgX191aW50MTZfdCwgX191aW50MzJfdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJu
IF9faW5saW5lIHZvaWQgKgpfX21lbXBjcHlfc21hbGwgKHZvaWQgKl9fZGVzdDEsCiAgICAgICAg
ICAgICAgICAgY2hhciBfX3NyYzBfMSwgY2hhciBfX3NyYzJfMSwgY2hhciBfX3NyYzRfMSwgY2hh
ciBfX3NyYzZfMSwKICAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQx
Nl90IF9fc3JjNF8yLAogICAgICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWlu
dDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5p
b24gewogICAgX191aW50MzJfdCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2ln
bmVkIGNoYXIgX191YzsKICAgIHVuc2lnbmVkIGNoYXIgX19jOwogIH0gKl9fdSA9IF9fZGVzdDE7
CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAg
ICAgX191LT5fX2MgPSBfX3NyYzBfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0g
X19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwog
ICAgICBicmVhazsKICAgIGNhc2UgMzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAg
ICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2Mg
PSBfX3NyYzJfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7
CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAg
ICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwog
ICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRl
bnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X19jID0gX19zcmM0XzE7CiAg
ICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAg
UGFnZSAgIDE1CgoKICAgICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9f
c3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAyKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9
IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsK
ICAgICAgX191LT5fX3VzaSA9IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3NyYzZfMTsKICAgICAgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA4
OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBfX3Ug
PSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgYnJlYWs7CiAgICB9CiAg
cmV0dXJuICh2b2lkICopIF9fdTsKfQojIDM3MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o
IiAzCmV4dGVybiB2b2lkICpfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKTsK
IyAzOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hh
ciAqX19zdHJjcHlfc21hbGwgKGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBz
aXplX3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rl
c3QsCiAgICAgICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3Jj
NF8yLAogICAgICAgICAgICAgICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3Ny
YzRfNCwKICAgICAgICAgICAgICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9f
dWludDMyX3QgX191aTsKICAgIF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9f
dWM7CiAgfSAqX191ID0gKHZvaWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkg
X19zcmNsZW4pCiAgICB7CiAgICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAg
IGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSAzOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAn
OwogICAgICBicmVhazsKICAgIGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAg
ICAgIGJyZWFrOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVs
U3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDE2CgoKICAgIGNhc2UgNToKICAgICAgX191
LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9f
dSArIDQpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgNjoK
ICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIGJyZWFr
OwogICAgY2FzZSA3OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRf
MjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9f
dS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4g
X19kZXN0Owp9CiMgNTU0ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKl9fc3RwY3B5X3NtYWxsIChjaGFyICosIF9fdWludDE2X3QsIF9fdWludDE2
X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwgX191
aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cGNweV9zbWFsbCAo
Y2hhciAqX19kZXN0LAogICAgICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50
MTZfdCBfX3NyYzRfMiwKICAgICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWlu
dDMyX3QgX19zcmM0XzQsCiAgICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4pCnsKICB1bmlv
biB7CiAgICB1bnNpZ25lZCBpbnQgX191aTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsK
ICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICAgIGNoYXIgX19jOwogIH0gKl9fdSA9ICh2b2lkICop
IF9fZGVzdDsKICBzd2l0Y2ggKCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2Fz
ZSAxOgogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAg
ICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9p
ZCAqKSBfX3UgKyAxKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kg
PSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7
CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAxNwoKCiAgICAgIF9fdSA9
IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDMpOwogICAgICBicmVhazsKICAgIGNhc2Ug
NToKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18g
KCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsK
ICAgIGNhc2UgNjoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7
CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVh
azsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0
XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBf
X3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3Vp
ID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQp
OwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAo
KHZvaWQgKikgX191ICsgMyk7CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiAmX191LT5fX2M7
Cn0KIyA4NzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
c2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpl
eHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNo
YXIgX19yZWplY3QpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChf
X3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxp
bmUgc2l6ZV90Cl9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3Qx
LCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp
bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQog
ICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAo
X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVq
ZWN0MSwgY2hhciBfX3JlamVjdDIsCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMTgKCgogICAgICAgICAg
ICAgIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICB3
aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3Qx
CiAgICAgICAgICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyICYmIF9fc1tfX3Jlc3VsdF0g
IT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5Mjgg
Ii91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdCk7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3Vs
dF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0
ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIg
X19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNj
ZXB0Mik7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3Qg
X19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19z
W19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpf
X3MsIGNoYXIgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyIF9fYWNjZXB0MiwgY2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9f
c3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2Nl
cHQyLCBjaGFyIF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7Cgog
IHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19y
ZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CiMgOTgzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9f
Y29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxl
ICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIp
CiAgICArK19fczsKICByZXR1cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAq
KSAoc2l6ZV90KSBfX3M7Cn0KCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
UHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMTkKCgpleHRlcm4gX19pbmxp
bmUgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBf
X2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBj
aGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50
IF9fYWNjZXB0MykKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQx
ICYmICpfX3MgIT0gX19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAg
KytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNp
emVfdCkgX19zOwp9CiMgMTAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVy
biBfX2lubGluZSBzaXplX3QKc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90
IF9fbWF4bGVuKQp7CiAgX19jb25zdCBjaGFyICpfX2VuZCA9IChfX2NvbnN0IGNoYXIgKikgbWVt
Y2hyIChfX3N0cmluZywgJ1wwJywgX19tYXhsZW4pOwogIHJldHVybiBfX2VuZCA/IChzaXplX3Qp
IChfX2VuZCAtIF9fc3RyaW5nKSA6IF9fbWF4bGVuOwp9CiMgMTA0NSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIg
KgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7
CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpf
X25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytfX3M7CiAgaWYgKCpfX3MgPT0g
J1wwJykKICAgIF9fcmVzdWx0ID0gKCh2b2lkICopMCk7CiAgZWxzZQogICAgewogICAgICBfX3Jl
c3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fc2VwKQog
ICAgICAgICsrX19zOwogICAgICBpZiAoKl9fcyA9PSAnXDAnKQogICAgICAgICpfX25leHRwID0g
X19zOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgKl9fcyA9ICdcMCc7CiAgICAgICAg
ICAqX19uZXh0cCA9IF9fcyArIDE7CiAgICAgICAgfQogICAgfQogIHJldHVybiBfX3Jlc3VsdDsK
fQojIDEwOTUgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUg
Y2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAg
cmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQg
KikwKSkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBf
X3JlamVjdCkKICAgICooKl9fcykrKyA9ICdcMCc7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMjAKCgog
IGVsc2UKICAgIGlmICgoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRf
cCAoX19yZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9fcmF3bWVtY2hy
IChfX3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWplY3QpKSkpICE9
ICgodm9pZCAqKTApKQogICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgZWxzZQogICAgICAqX19z
ID0gKCh2b2lkICopMCk7CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgY2hh
ciAqX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0
Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g
Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgo
dm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBf
X3JlamVjdDIpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0
ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAq
X19jcCAhPSBfX3JlamVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyKQogICAgICAgICsrX19jcDsK
ICAgICAgaWYgKCpfX2NwICE9ICdcMCcpCiAgICAgICAgewogICAgICAgICAgKl9fcyA9IF9fY3A7
CiAgICAgICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAg
ICpfX3MgPSAoKHZvaWQgKikwKTsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBf
X2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNo
YXIgX19yZWplY3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19y
ZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lz
dGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkp
CiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWpl
Y3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVq
ZWN0MykKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBj
aGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2Nw
ICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIKICAgICAgICAgICAgICYmICpfX2Nw
ICE9IF9fcmVqZWN0MykKICAgICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQog
ICAgICAgIHsKICAgICAgICAgICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1ww
JzsKICAgICAgICB9CiAgICAgIGVsc2UKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAyMQoKCiAgICAgICAg
Kl9fcyA9ICgodm9pZCAqKTApOwogICAgfQogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWpl
Y3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29u
c3QgY2hhciAqX19yZWplY3QpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAg
aWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwogIGlm
ICgoKl9fcyA9IF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWls
dGluX2NvbnN0YW50X3AgKF9fcmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoX19y
ZWplY3QpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ICgo
X19hMCA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcpID8g
KCh2b2lkKSAoX19yZXR2YWwpLCAoKHZvaWQgKikwKSkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hh
ciAqKSAoX19yZWplY3QpKVsxXSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1
aWx0aW5fY29uc3RhbnRfcCAoX19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jh
d21lbWNociAoX19yZXR2YWwsIF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgo
X19hMiA9ICgoX19jb25zdCBjaGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8g
X19zdHJwYnJrX2MyIChfX3JldHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikg
KF9fcmVqZWN0KSlbM10gPT0gJ1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9f
YTEsIF9fYTIpIDogc3RycGJyayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChf
X3JldHZhbCwgX19yZWplY3QpKTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0g
J1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KIyAxMTg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp
bmcyLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1
ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAz
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA1MjggIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDEx
ODkgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgpleHRlcm4gY2hhciAqX19z
dHJkdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CiMgMTIxMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpf
X3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDM2MCAiL3Vzci9pbmNsdWRlL3N0cmlu
Zy5oIiAyIDMKIyAzNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAyCiMg
NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKdHlwZWRlZiBzdHJ1Y3Qg
Y2FjaGVfbm9kZQp7CiAgc3RydWN0IGNhY2hlX25vZGUgKm5leHQ7CgogIGNvbnN0IHZvaWQgKmtl
eTsKCgoKICB2b2lkICp2YWx1ZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAyMgoKCn0gKm5vZGVfcHRy
OwojIDY0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCnR5cGVkZWYgdW5z
aWduZWQgaW50ICgqaGFzaF9mdW5jX3R5cGUpKHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKIyA3MyAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgp0eXBlZGVmIGludCAoKmNvbXBh
cmVfZnVuY190eXBlKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CiMgODIgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKdHlwZWRlZiBzdHJ1Y3QKewoKICBub2RlX3B0
ciAqbm9kZV90YWJsZTsKCgogIHVuc2lnbmVkIGludCBzaXplOwoKCiAgdW5zaWduZWQgaW50IHVz
ZWQ7CiAgdW5zaWduZWQgaW50IG1hc2s7CgoKCiAgdW5zaWduZWQgaW50IGxhc3RfYnVja2V0OwoK
CgogIGhhc2hfZnVuY190eXBlIGhhc2hfZnVuYzsKCiAgY29tcGFyZV9mdW5jX3R5cGUgY29tcGFy
ZV9mdW5jOwp9IGNhY2hlX3Q7Cgp0eXBlZGVmIGNhY2hlX3QgKmNhY2hlX3B0cjsKCgoKZXh0ZXJu
IGNhY2hlX3B0ciBtb2R1bGVfaGFzaF90YWJsZSwgY2xhc3NfaGFzaF90YWJsZTsKCgoKY2FjaGVf
cHRyIGhhc2hfbmV3ICh1bnNpZ25lZCBpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICBoYXNo
X2Z1bmNfdHlwZSBoYXNoX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9mdW5jX3R5
cGUgY29tcGFyZV9mdW5jKTsKCgoKdm9pZCBoYXNoX2RlbGV0ZSAoY2FjaGVfcHRyIGNhY2hlKTsK
CgoKCgoKdm9pZCBoYXNoX2FkZCAoY2FjaGVfcHRyICpjYWNoZXAsIGNvbnN0IHZvaWQgKmtleSwg
dm9pZCAqdmFsdWUpOwoKCgoKdm9pZCBoYXNoX3JlbW92ZSAoY2FjaGVfcHRyIGNhY2hlLCBjb25z
dCB2b2lkICprZXkpOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1v
ZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDIzCgoKIyAxNDIgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKbm9kZV9wdHIgaGFzaF9uZXh0IChjYWNoZV9wdHIg
Y2FjaGUsIG5vZGVfcHRyIG5vZGUpOwoKCgp2b2lkICpoYXNoX3ZhbHVlX2Zvcl9rZXkgKGNhY2hl
X3B0ciBjYWNoZSwgY29uc3Qgdm9pZCAqa2V5KTsKCgoKQk9PTCBoYXNoX2lzX2tleV9pbl9oYXNo
IChjYWNoZV9wdHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtleSk7CiMgMTY0ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cmhhc2hf
cHRyIChjYWNoZV9wdHIgY2FjaGUsIGNvbnN0IHZvaWQgKmtleSkKewogIHJldHVybiAoKHNpemVf
dClrZXkgLyBzaXplb2YgKHZvaWQgKikpICYgY2FjaGUtPm1hc2s7Cn0KCgoKCgpzdGF0aWMgaW5s
aW5lIHVuc2lnbmVkIGludApoYXNoX3N0cmluZyAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lk
ICprZXkpCnsKICB1bnNpZ25lZCBpbnQgcmV0ID0gMDsKICB1bnNpZ25lZCBpbnQgY3RyID0gMDsK
CgogIHdoaWxlICgqKGNoYXIqKWtleSkgewogICAgcmV0IF49ICooY2hhciopa2V5KysgPDwgY3Ry
OwogICAgY3RyID0gKGN0ciArIDEpICUgc2l6ZW9mICh2b2lkICopOwogIH0KCiAgcmV0dXJuIHJl
dCAmIGNhY2hlLT5tYXNrOwp9CgoKCnN0YXRpYyBpbmxpbmUgaW50CmNvbXBhcmVfcHRycyAoY29u
c3Qgdm9pZCAqazEsIGNvbnN0IHZvaWQgKmsyKQp7CiAgcmV0dXJuICEoazEgLSBrMik7Cn0KCgoK
c3RhdGljIGlubGluZSBpbnQKY29tcGFyZV9zdHJpbmdzIChjb25zdCB2b2lkICprMSwgY29uc3Qg
dm9pZCAqazIpCnsKICBpZiAoazEgPT0gazIpCiAgICByZXR1cm4gMTsKICBlbHNlIGlmIChrMSA9
PSAwIHx8IGsyID09IDApCiAgICByZXR1cm4gMDsKICBlbHNlCiAgICByZXR1cm4gIV9fZXh0ZW5z
aW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9w
IChrMSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKGsyKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4g
KGsxKSwgX19zMl9sZW4gPSBzdHJsZW4gKGsyKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
azEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsxKSA9PSAxKSB8fCBfX3MxX2xlbiA+
PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMikgKyAxKSAtIChzaXplX3QpKGNv
bnN0IHZvaWQgKikoazIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29u
c3QgY2hhciAqKSAoazEpLCAoX19jb25zdCBjaGFyICopIChrMiksIChfX3MxX2xlbiA8IF9fczJf
bGVuID8gX19zMV9sZW4gOiBfX3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
azEpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChrMSkgKyAxKSAtIChzaXplX3QpKGNvbnN0
IHZvaWQgKikoazEpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoazEpLCBfX3MxX2xlbiA8
IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChrMikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQg
KikoKGsyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMikgPT0gMSkgPyAoX19leHRl
bnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikoazIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1
bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoazIpKVsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChr
MSkpWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIp
KVsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVszXSAtICgoX19j
b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbM10pOyB9IH0gX19y
ZXN1bHQ7IH0pKSA6IChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19z
MiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpOyByZWdp
c3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoazEpKVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoazEpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0
ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg
Y2hhciAqKSAoazEpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0
ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGsxKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRp
bl9jb25zdGFudF9wIChrMikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsyKSArIDEpIC0g
KHNpemVfdCkoY29uc3Qgdm9pZCAqKShrMikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChr
MiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKGsxKSAmJiAoKHNpemVf
dCkoY29uc3Qgdm9pZCAqKSgoazEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsxKSA9
PSAxKSA/IChfX2V4dGVuc2lvbl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzBdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKShrMikpWzBdKTsgaWYgKF9fczJfbGVu
ID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj
aGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jl
c3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGsxKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf
X3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChr
MSkpWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIp
KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp
Z25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChrMSk7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzBdOyBpZiAoX19zMl9sZW4gPiAw
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAx
ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAy
ICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp
IDogc3RyY21wIChrMSwgazIpKSkpOyB9KTsKfQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDI0CgoKIyAz
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdHlwZWRzdHJlYW0uaCIgMgojIDEgIi91
c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGlvLmgiIDEgMwojIDM2ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwojIDM3ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2Nj
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyA0MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMu
MC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDEgMwojIDQ1ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRpby5oIiAyIDMKIyA1MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0
cnVjdCBfSU9fRklMRSBGSUxFOwojIDYzICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9J
T19GSUxFIF9fRklMRTsKIyA3MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
X0dfY29uZmlnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUvX0dfY29uZmln
LmgiIDIgMwoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzEyICIvdXNyL2xvY2FsL2djYzMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwp0
eXBlZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcu
aCIgMiAzCiMgMjQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMSAzCiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2
NyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50
OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBf
X3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwoKdHlwZWRlZiBzdHJ1Y3QKewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
IFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDI1CgoKICBfX29mZl90IF9f
cG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7
CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7
CiMgNDQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29u
di5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2djb252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
ZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEg
Ii91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgi
IDIgMwojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvZ2Nj
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAx
IDMKIyAzMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9fR0NPTlZf
T0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVN
LAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09O
Vl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9J
TExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsK
ICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgw
MDAyCn07CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxT
d2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMjYKCgpzdHJ1Y3QgX19nY29udl9zdGVwOwpz
dHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3Q7CnN0
cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChz
dHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVu
c2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
KiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0
KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5z
X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25l
ZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoK
CnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25z
dCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRl
ZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0
IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNv
bnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQg
Kik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190
cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0
OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRh
OwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2Nv
bnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7
CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAg
ICAgUGFnZSAgIDI3CgoKICBjaGFyICpfX2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7Cgog
IF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9fZ2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2dj
b252X2VuZF9mY3QgX19lbmRfZmN0OwoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQg
X19tYXhfbmVlZGVkX2Zyb207CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVl
ZGVkX3RvOwoKCiAgaW50IF9fc3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0
IF9fZ2NvbnZfc3RlcF9kYXRhCnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNpZ25l
ZCBjaGFyICpfX291dGJ1ZmVuZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0
aW9uX2NvdW50ZXI7CgoKCiAgaW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19z
dGF0ZXA7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19k
YXRhICpfX3RyYW5zOwp9OwoKCgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNpemVf
dCBfX25zdGVwczsKICBzdHJ1Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9u
X18gc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1
ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDI4CgoK
dHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsK
ICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0
YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19p
bnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBf
R19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVu
c2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX1NJX18pKSk7CiMgMzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9j
YWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFy
Zy5oIiAzCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTIgIi91
c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyAxNTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0
cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTY4ICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7
CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoK
CiAgaW50IF9wb3M7CiMgMTkxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19j
b2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9f
Y29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjU5ICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9J
T19yZWFkX3B0cjsKICBjaGFyKiBfSU9fcmVhZF9lbmQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMjkK
CgogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciog
X0lPX3dyaXRlX3B0cjsKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwogIGNoYXIqIF9JT19idWZfYmFz
ZTsKICBjaGFyKiBfSU9fYnVmX2VuZDsKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpf
SU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtl
ciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsK
ICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9y
dCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9y
dGJ1ZlsxXTsKCgoKICBfSU9fbG9ja190ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAzCiAgX19vZmY2NF90IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAq
X19wYWQyOwoKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkg
LSAyICogc2l6ZW9mICh2b2lkICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lP
X0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3Bs
dXMgX0lPXzJfMV9zdGRpbl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0
ZG91dF87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQy
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4g
KHZvaWQgKl9fY29va2llLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAgMzAKCgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2
b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4g
KHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGlu
dCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBlZGVmIF9faW9fcmVhZF9m
biBjb29raWVfcmVhZF9mdW5jdGlvbl90Owp0eXBlZGVmIF9faW9fd3JpdGVfZm4gY29va2llX3dy
aXRlX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tpZV9zZWVrX2Z1bmN0aW9u
X3Q7CnR5cGVkZWYgX19pb19jbG9zZV9mbiBjb29raWVfY2xvc2VfZnVuY3Rpb25fdDsKCgp0eXBl
ZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwogIF9faW9fd3JpdGVfZm4gKndyaXRl
OwogIF9faW9fc2Vla19mbiAqc2VlazsKICBfX2lvX2Nsb3NlX2ZuICpjbG9zZTsKfSBfSU9fY29v
a2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29v
a2llX2lvX2Z1bmN0aW9uc190OwoKc3RydWN0IF9JT19jb29raWVfZmlsZTsKCgpleHRlcm4gdm9p
ZCBfSU9fY29va2llX2luaXQgKHN0cnVjdCBfSU9fY29va2llX2ZpbGUgKl9fY2ZpbGUsIGludCBf
X3JlYWRfd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19jb29raWUs
IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19mbnMpOwoKCgoKCgoKZXh0ZXJuIGludCBfX3Vu
ZGVyZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIDsK
ZXh0ZXJuIGludCBfX292ZXJmbG93IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHdpbnRfdCBf
X3d1bmRlcmZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJ
TEUgKikgOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAg
ICAgICAgICAgICAgIFBhZ2UgICAzMQoKCiMgNDI0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpl
eHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19wdXRj
IChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklM
RSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxFICpfX2ZwKSA7CgpleHRl
cm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZv
aWQgX0lPX2Zsb2NrZmlsZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2Zp
bGUgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAq
KSA7CiMgNDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5m
IChfSU9fRklMRSAqIF9fcmVzdHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVy
biBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19y
ZXN0cmljdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVy
biBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVy
biBzaXplX3QgX0lPX3NnZXRuIChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJu
IF9fb2ZmNjRfdCBfSU9fc2Vla29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkg
OwpleHRlcm4gX19vZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGlu
dCkgOwoKZXh0ZXJuIHZvaWQgX0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA3
NCAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IF9fbm90X3ZhX2xp
c3RfXzsKIyA4OCAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgp0
eXBlZGVmIF9HX2Zwb3M2NF90IGZwb3M2NF90OwojIDEzNyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIyAxMzggIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoK
CgpleHRlcm4gRklMRSAqc3RkaW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpz
dGRlcnI7CiMgMTUyICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNo
YXIgKl9fZmlsZW5hbWUpIDsKCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xk
LCBfX2NvbnN0IGNoYXIgKl9fbmV3KSA7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgMzIKCgoKZXh0
ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpIDsKIyAxNjggIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJ
TEUgKnRtcGZpbGU2NCAodm9pZCkgOwoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykg
OwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxODggIi91c3IvbG9j
YWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlv
LmgiIDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3Qg
Y2hhciAqX19wZngpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVz
aCAoRklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZjbG9zZWFsbCAodm9pZCkgOwoKCgoKCmV4dGVy
biBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVy
biBGSUxFICpmcmVvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAg
ICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIzMiAiL3Vz
ci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUv
c3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19tb2RlcykgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0
IGNoYXIgKl9fbW9kZXMpIDsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAzMwoKCgoKZXh0ZXJuIEZJ
TEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5j
cykgOwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9f
Y29uc3QgY2hhciAqX19tb2RlcykgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChj
aGFyICoqX19yZXN0cmljdCBfX2J1ZmxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSA7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4
dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikg
OwoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBj
aGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3Np
emUpIDsKCgpleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0
ZXJuIGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4g
aW50IHByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4
dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50
IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoK
ZXh0ZXJuIGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChj
aGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAg
IFBhZ2UgICAzNAoKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms
IHNpemVfdCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAg
ICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkp
OwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJp
Y3QgX19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMiwgMykpKTsKZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3Qg
X19wdHIsCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwgLi4uKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmcpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZf
XywgMiwgMCkpKTsKZXh0ZXJuIGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt
YXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19y
ZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcp
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAw
KSkpOwoKCmV4dGVybiBpbnQgdnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9f
Z251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICAzNQoKCgoKCgpleHRl
cm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGdldGMgKEZJTEUgKl9f
c3RyZWFtKSA7CgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpleHRlcm4gaW50
IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxv
Y2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJl
YW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4
dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1
dGNoYXIgKGludCBfX2MpIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBf
X2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9f
YykgOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50
IHB1dHcgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDM2
CgoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICAgICAgICAgOwoKCgpleHRlcm4gY2hhciAq
ZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVy
biBjaGFyICpnZXRzIChjaGFyICpfX3MpIDsKIyA0MzYgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIF9f
c3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxp
bWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSA7CmV4dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9f
bGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hhciAq
Kl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICpfX3Jlc3RyaWN0IF9fbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKCgoK
ZXh0ZXJuIGludCBmcHV0c191bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoK
CgpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5n
ZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90
IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsK
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkg
ICAgICAgICAgICAgICAgUGFnZSAgIDM3CgoKCmV4dGVybiBzaXplX3QgZnJlYWRfdW5sb2NrZWQg
KHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0
ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0
ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJ
TEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9u
ZyBpbnQgZnRlbGwgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUg
Kl9fc3RyZWFtKSA7CiMgNDk5ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChGSUxF
ICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gX19vZmZf
dCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgICAgICAg
ICA7CgpleHRlcm4gaW50IGZzZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAq
X19wb3MpIDsKIyA1MzMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAq
X19zdHJlYW0sIF9fb2ZmNjRfdCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBfX29mZjY0
X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0IChGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAg
ICAgICAgOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBv
czY0X3QgKl9fcG9zKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkg
OwoKZXh0ZXJuIGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3Ig
KEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxF
ICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7
CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJu
IHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVy
cjsKZXh0ZXJuIF9fY29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAg
ICAgUGFnZSAgIDM4CgoKCgpleHRlcm4gaW50IF9zeXNfbmVycjsKZXh0ZXJuIF9fY29uc3QgY2hh
ciAqX19jb25zdCBfc3lzX2Vycmxpc3RbXTsKCgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVh
bSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBf
X2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJl
YW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CgoKCgoKZXh0ZXJu
IGNoYXIgKmN1c2VyaWQgKGNoYXIgKl9fcykgOwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJu
IGludCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsIC4uLikgOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sg
Kl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19nbnVjX3ZhX2xpc3QgX19hcmdzKSA7CgoKCgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDM5CgoK
ZXh0ZXJuIHZvaWQgZmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IGZ0
cnlsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAo
RklMRSAqX19zdHJlYW0pIDsKIyA2NDAgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9zdGRpby5oIiAxIDMKIyAzOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRl
cm4gX19pbmxpbmUgaW50CnZwcmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwg
X19nbnVjX3ZhX2xpc3QgX19hcmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQs
IF9fYXJnKTsKfQoKCmV4dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVy
biBfSU9fZ2V0YyAoc3RkaW4pOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2Nr
ZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2Zw
KS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9f
ZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5s
b2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4p
LT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0
ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIg
KGludCBfX2MpCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJu
IF9faW5saW5lIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsK
ICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193
cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkg
OiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkp
OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkg
ICAgICAgICAgICAgICAgUGFnZSAgIDQwCgoKfQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5s
aW5lIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCkt
Pl9JT193cml0ZV9wdHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAo
c3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91
dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19z
c2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0
cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJl
YW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0
cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoK
ZXh0ZXJuIF9faW5saW5lIGludApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAg
cmV0dXJuICgoKF9fc3RyZWFtKS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2NDEgIi91c3Iv
bG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0
ZGlvLmgiIDIgMwojIDMzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVh
bS5oIiAyCgp0eXBlZGVmIGludCAoKm9iamNfdHlwZWRfcmVhZF9mdW5jKSh2b2lkKiwgY2hhcios
IGludCk7CnR5cGVkZWYgaW50ICgqb2JqY190eXBlZF93cml0ZV9mdW5jKSh2b2lkKiwgY29uc3Qg
Y2hhciosIGludCk7CnR5cGVkZWYgaW50ICgqb2JqY190eXBlZF9mbHVzaF9mdW5jKSh2b2lkKik7
CnR5cGVkZWYgaW50ICgqb2JqY190eXBlZF9lb2ZfZnVuYykodm9pZCopOwojIDQ4ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpj
X3R5cGVkX3N0cmVhbSB7CiAgdm9pZCogcGh5c2ljYWw7CiAgY2FjaGVfcHRyIG9iamVjdF90YWJs
ZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1p
ICAgICAgICAgICAgICAgIFBhZ2UgICA0MQoKCiAgY2FjaGVfcHRyIHN0cmVhbV90YWJsZTsKICBj
YWNoZV9wdHIgY2xhc3NfdGFibGU7CiAgY2FjaGVfcHRyIG9iamVjdF9yZWZzOwogIGludCBtb2Rl
OwogIGludCB0eXBlOwogIGludCB2ZXJzaW9uOwogIGludCB3cml0aW5nX3Jvb3RfcDsKICBvYmpj
X3R5cGVkX3JlYWRfZnVuYyByZWFkOwogIG9iamNfdHlwZWRfd3JpdGVfZnVuYyB3cml0ZTsKICBv
YmpjX3R5cGVkX2VvZl9mdW5jIGVvZjsKICBvYmpjX3R5cGVkX2ZsdXNoX2Z1bmMgZmx1c2g7Cn0g
VHlwZWRTdHJlYW07CiMgOTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3Ry
ZWFtLmgiCmludCBvYmpjX3dyaXRlX3R5cGUgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNo
YXIqIHR5cGUsIGNvbnN0IHZvaWQqIGRhdGEpOwppbnQgb2JqY19yZWFkX3R5cGUgKFR5cGVkU3Ry
ZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsIHZvaWQqIGRhdGEpOwoKaW50IG9iamNfd3Jp
dGVfdHlwZXMgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsIC4uLik7Cmlu
dCBvYmpjX3JlYWRfdHlwZXMgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUs
IC4uLik7CgppbnQgb2JqY193cml0ZV9vYmplY3RfcmVmZXJlbmNlIChUeXBlZFN0cmVhbSogc3Ry
ZWFtLCBpZCBvYmplY3QpOwppbnQgb2JqY193cml0ZV9yb290X29iamVjdCAoVHlwZWRTdHJlYW0q
IHN0cmVhbSwgaWQgb2JqZWN0KTsKCmxvbmcgb2JqY19nZXRfc3RyZWFtX2NsYXNzX3ZlcnNpb24g
KFR5cGVkU3RyZWFtKiBzdHJlYW0sIENsYXNzIGNsYXNzKTsKCgoKCgoKaW50IG9iamNfd3JpdGVf
YXJyYXkgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICBpbnQgY291bnQsIGNvbnN0IHZvaWQqIGRhdGEpOwppbnQgb2JqY19yZWFkX2Fy
cmF5IChUeXBlZFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICBpbnQgY291bnQsIHZvaWQqIGRhdGEpOwoKaW50IG9iamNfd3JpdGVfb2JqZWN0IChU
eXBlZFN0cmVhbSogc3RyZWFtLCBpZCBvYmplY3QpOwppbnQgb2JqY19yZWFkX29iamVjdCAoVHlw
ZWRTdHJlYW0qIHN0cmVhbSwgaWQqIG9iamVjdCk7CiMgMTI0ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIgpUeXBlZFN0cmVhbSogb2JqY19vcGVuX3R5cGVkX3N0
cmVhbSAoRklMRSogcGh5c2ljYWwsIGludCBtb2RlKTsKVHlwZWRTdHJlYW0qIG9iamNfb3Blbl90
eXBlZF9zdHJlYW1fZm9yX2ZpbGUgKGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwgaW50IG1vZGUpOwoK
dm9pZCBvYmpjX2Nsb3NlX3R5cGVkX3N0cmVhbSAoVHlwZWRTdHJlYW0qIHN0cmVhbSk7CgpCT09M
IG9iamNfZW5kX29mX3R5cGVkX3N0cmVhbSAoVHlwZWRTdHJlYW0qIHN0cmVhbSk7CnZvaWQgb2Jq
Y19mbHVzaF90eXBlZF9zdHJlYW0gKFR5cGVkU3RyZWFtKiBzdHJlYW0pOwojIDMyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9PYmplY3QuaCIgMgoKCgoKCkBpbnRlcmZhY2UgT2JqZWN0
CnsKICAgIENsYXNzIGlzYTsKfQoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNDIKCgorIGluaXRpYWxp
emU7Ci0gaW5pdDsKCgorIG5ldzsKKyBhbGxvYzsKLSBmcmVlOwotIGNvcHk7Ci0gc2hhbGxvd0Nv
cHk7Ci0gZGVlcGVuOwotIGRlZXBDb3B5OwoKCi0gKENsYXNzKWNsYXNzOwotIChDbGFzcylzdXBl
ckNsYXNzOwotIChNZXRhQ2xhc3MpbWV0YUNsYXNzOwotIChjb25zdCBjaGFyICopbmFtZTsKCgot
IHNlbGY7Ci0gKHVuc2lnbmVkIGludCloYXNoOwotIChCT09MKWlzRXF1YWw6YW5PYmplY3Q7Ci0g
KGludCljb21wYXJlOmFub3RoZXJPYmplY3Q7CgoKLSAoQk9PTClpc01ldGFDbGFzczsKLSAoQk9P
TClpc0NsYXNzOwotIChCT09MKWlzSW5zdGFuY2U7CgoKLSAoQk9PTClpc0tpbmRPZjooQ2xhc3Mp
YUNsYXNzT2JqZWN0OwotIChCT09MKWlzTWVtYmVyT2Y6KENsYXNzKWFDbGFzc09iamVjdDsKLSAo
Qk9PTClpc0tpbmRPZkNsYXNzTmFtZWQ6KGNvbnN0IGNoYXIgKilhQ2xhc3NOYW1lOwotIChCT09M
KWlzTWVtYmVyT2ZDbGFzc05hbWVkOihjb25zdCBjaGFyICopYUNsYXNzTmFtZTsKCgorIChCT09M
KWluc3RhbmNlc1Jlc3BvbmRUbzooU0VMKWFTZWw7Ci0gKEJPT0wpcmVzcG9uZHNUbzooU0VMKWFT
ZWw7CgoKLSAoQk9PTCljb25mb3Jtc1RvOihQcm90b2NvbCopYVByb3RvY29sOwoKCisgKElNUClp
bnN0YW5jZU1ldGhvZEZvcjooU0VMKWFTZWw7Ci0gKElNUCltZXRob2RGb3I6KFNFTClhU2VsOwor
IChzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3JpcHRpb24gKilkZXNjcmlwdGlvbkZvckluc3RhbmNl
TWV0aG9kOihTRUwpYVNlbDsKLSAoc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uICopZGVz
Y3JpcHRpb25Gb3JNZXRob2Q6KFNFTClhU2VsOwoKCi0gcGVyZm9ybTooU0VMKWFTZWw7Ci0gcGVy
Zm9ybTooU0VMKWFTZWwgd2l0aDphbk9iamVjdDsKLSBwZXJmb3JtOihTRUwpYVNlbCB3aXRoOmFu
T2JqZWN0MSB3aXRoOmFuT2JqZWN0MjsKCgotIChyZXR2YWxfdClmb3J3YXJkOihTRUwpYVNlbCA6
KGFyZ2xpc3RfdClhcmdGcmFtZTsKLSAocmV0dmFsX3QpcGVyZm9ybXY6KFNFTClhU2VsIDooYXJn
bGlzdF90KWFyZ0ZyYW1lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBw
bE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDQzCgoKCgorIHBvc2VBczooQ2xh
c3MpYUNsYXNzT2JqZWN0OwotIChDbGFzcyl0cmFuc211dGVDbGFzc1RvOihDbGFzcylhQ2xhc3NP
YmplY3Q7CgoKLSBzdWJjbGFzc1Jlc3BvbnNpYmlsaXR5OihTRUwpYVNlbDsKLSBub3RJbXBsZW1l
bnRlZDooU0VMKWFTZWw7Ci0gc2hvdWxkTm90SW1wbGVtZW50OihTRUwpYVNlbDsKCgotIGRvZXNO
b3RSZWNvZ25pemU6KFNFTClhU2VsOwotIGVycm9yOihjb25zdCBjaGFyICopYVN0cmluZywgLi4u
OwoKCisgKGludCl2ZXJzaW9uOworIHNldFZlcnNpb246KGludClhVmVyc2lvbjsKKyAoaW50KXN0
cmVhbVZlcnNpb246IChUeXBlZFN0cmVhbSopYVN0cmVhbTsKCi0gcmVhZDogKFR5cGVkU3RyZWFt
KilhU3RyZWFtOwotIHdyaXRlOiAoVHlwZWRTdHJlYW0qKWFTdHJlYW07Ci0gYXdha2U7CgpAZW5k
CiMgMjIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovZGVmdHlwZS5oIiAyCgoKCgoK
CkBwcm90b2NvbCBDUkVBVEFCTEUKQGVuZAoKCkBwcm90b2NvbCBSRVRVUk5BQkxFCkBlbmQKIyA0
NiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiCnR5cGVkZWYgdm9p
ZCAoKm5vdGlmeV90KSggaWQgb2JqZWN0LCBpZCByZWFsbG9jQWRkcmVzcywgdm9pZCAqYXJnICk7
CgoKCgoKCnR5cGVkZWYgdm9pZCAqcmVmX3Q7CgoKCgp0eXBlZGVmIHZvaWQgKCpmdW5jX3QpKCB2
b2lkICk7CgoKCgp0eXBlZGVmIGlkICgqZml4dXBSb3V0aW5lX3QpKCB2b2lkICpmaXh1cENvbnRl
eHQsIGlkIGZpeHVwT2JqZWN0ICk7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNDQKCgp0eXBlZGVmIHZv
aWQgKCpmaXh1cF90KSggZml4dXBSb3V0aW5lX3QgZml4dXBSb3V0aW5lLCB2b2lkICpmaXh1cENv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgZml4dXBBcmd1bWVudCApOwojIDY3
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZXh0ZXJudmFyLmgiIDEKIyA2OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai5oIiAyCiMgNzcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKQHBy
b3RvY29sIEdldE5hbWUKIyA4OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgot
IF9JX1VzaW5nOwotIChjb25zdCBjaGFyICopZ2V0TmFtZTsKQGVuZAoKQHByb3RvY29sIERlZmlu
ZWRPYmplY3QgPEdldE5hbWU+CiMgMTA4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2Jq
LmgiCi0gX0lfVXNpbmc7CiMgMTE3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgi
Ci0gKEJPT0wpcmVzcG9uZHNUbzogKFNFTClhU2VsOwoKKyAoQk9PTCljb25mb3Jtc1RvOiAoUHJv
dG9jb2wgKilwcm90b2NvbDsKLSAoQk9PTCljb25mb3Jtc1RvOiAoUHJvdG9jb2wgKilwcm90b2Nv
bDsKCgoKLSBnZXRDbGFzczsKCgotIChjb25zdCBjaGFyICopZ2V0VHlwZU5hbWU7CgoKCi0gKHJl
Zl90KWFkZFJlZjogKG5vdGlmeV90KW5vdGlmeUZ1bmN0aW9uIHdpdGhBcmd1bWVudDogKHZvaWQg
Kilhcmc7CgoKLSAodm9pZClyZW1vdmVSZWY6IChyZWZfdClyZWZWYWw7CgoKLSAoaW50KWNvbXBh
cmU6IGFuT2JqZWN0OwoKCi0gcGVyZm9ybTogKFNFTClhU2VsOwoKCi0gcGVyZm9ybTogKFNFTClh
U2VsIHdpdGg6IGFuT2JqZWN0MTsKCgotIHBlcmZvcm06IChTRUwpYVNlbCB3aXRoOiBhbk9iamVj
dDEgd2l0aDogYW5PYmoyOwoKCi0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0MSB3
aXRoOiBhbk9iajIgd2l0aDogYW5PYmozOwoKCgotICh2b2lkKXNldERpc3BsYXlOYW1lOiAoY29u
c3QgY2hhciAqKWRpc3BsYXlOYW1lOwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDQ1CgoKCi0gKGNv
bnN0IGNoYXIgKilnZXREaXNwbGF5TmFtZTsKIyAxNjggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9kZWZvYmouaCIKLSAodm9pZClkZXNjcmliZTogb3V0cHV0Q2hhclN0cmVhbTsKCgoKLSAodm9p
ZClkZXNjcmliZUlEOiBvdXRwdXRDaGFyU3RyZWFtOwoKCi0gKHZvaWQpeHByaW50OwoKCi0gKHZv
aWQpeHByaW50aWQ7CgoKLSAodm9pZCl4ZnByaW50OwoKCi0gKHZvaWQpeGZwcmludGlkOwoKCi0g
Z2V0Wm9uZTsKQGVuZAoKQHByb3RvY29sIEN1c3RvbWl6ZQojIDIyMyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0NyZWF0aW5nOwojIDIzOSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai5oIgorIGN1c3RvbWl6ZUJlZ2luOiBhWm9uZTsKCgotIGN1c3RvbWl6
ZUVuZDsKIyAyNjUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBjdXN0b21p
emVDb3B5OiBhWm9uZTsKQGVuZAoKQHByb3RvY29sIENyZWF0ZSA8RGVmaW5lZE9iamVjdCwgQ3Vz
dG9taXplPgojIDMxOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0Ny
ZWF0aW5nOwojIDMzNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgorIGNyZWF0
ZTogYVpvbmU7CgoKCgoKCgorIGNyZWF0ZUJlZ2luOiBhWm9uZTsKIyAzNzEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBjcmVhdGVFbmQ7CkBlbmQKCkBwcm90b2NvbCBEcm9w
CiMgNDAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQ
YWdlICAgNDYKCgotIF9JX1VzaW5nOwotICh2b2lkKWRyb3A7CkBlbmQKCkBwcm90b2NvbCBab25l
IDxDcmVhdGUsIERyb3AsIENSRUFUQUJMRT4KIyA0NTYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9kZWZvYmouaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCi0gKHZvaWQpc2V0UGFnZVNpemU6IChz
aXplX3QpcGFnZVNpemU7CgotIF9JX1VzaW5nOwotIChzaXplX3QpZ2V0UGFnZVNpemU7CgoKCgoK
Ci0gYWxsb2NJVmFyczogKENsYXNzKWFDbGFzczsKCgoKCgoKLSBjb3B5SVZhcnM6IGFuT2JqZWN0
OwoKCgoKCgoKLSAodm9pZClmcmVlSVZhcnM6IGFuT2JqZWN0OwojIDQ5OSAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2RlZm9iai5oIgotIGFsbG9jSVZhcnNDb21wb25lbnQ6IChDbGFzcylhQ2xh
c3M7CgoKCi0gY29weUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKCgotICh2b2lkKWZyZWVJVmFy
c0NvbXBvbmVudDogYW5PYmplY3Q7CgoKCgoKCi0gZ2V0Q29tcG9uZW50Wm9uZTsKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAg
ICAgIFBhZ2UgICA0NwoKCgoKCgoKLSAodm9pZCAqKWFsbG9jOiAoc2l6ZV90KXNpemU7CgoKCgoK
Ci0gKHZvaWQpZnJlZTogKHZvaWQgKilhQmxvY2s7CgoKCgotICh2b2lkICopYWxsb2NCbG9jazog
KHNpemVfdClzaXplOwoKCgotICh2b2lkKWZyZWVCbG9jazogKHZvaWQgKilhQmxvY2sgYmxvY2tT
aXplOiAoc2l6ZV90KXNpemU7CiMgNTQ1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2Jq
LmgiCi0gZ2V0UG9wdWxhdGlvbjsKCgotICh2b2lkKWRlc2NyaWJlRm9yRWFjaDogb3V0cHV0Q2hh
clN0cmVhbTsKCgotICh2b2lkKWRlc2NyaWJlRm9yRWFjaElEOiBvdXRwdXRDaGFyU3RyZWFtOwpA
ZW5kCgpAcHJvdG9jb2wgRGVmaW5lZENsYXNzIDxEZWZpbmVkT2JqZWN0PgoKCgotIF9JX1VzaW5n
OworIGdldFN1cGVyY2xhc3M7CisgKEJPT0wpaXNTdWJjbGFzczogYUNsYXNzOwoKKyAodm9pZClz
ZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOworIGdldFR5cGVJbXBsZW1lbnRlZDsKCisgKElNUCln
ZXRNZXRob2RGb3I6IChTRUwpYVNlbDsKQGVuZAoKQHByb3RvY29sIENyZWF0ZWRDbGFzcyA8Q3Jl
YXRlLCBEZWZpbmVkQ2xhc3M+CgoKCgotIF9JX0NyZWF0aW5nOwotIHNldE5hbWU6IChjb25zdCBj
aGFyICopbmFtZTsKLSBzZXRDbGFzczogYUNsYXNzOwotIHNldFN1cGVyY2xhc3M6IGFDbGFzczsK
LSBzZXREZWZpbmluZ0NsYXNzOiBhQ2xhc3M7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNDgKCgotIGF0
OiAoU0VMKWFTZWwgYWRkTWV0aG9kOiAoSU1QKWFNZXRob2Q7Ci0gbGlzcEluQ3JlYXRlOiBleHBy
OwotIGhkZjVJbkNyZWF0ZTogaGRmNU9iajsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogc3RyZWFt
OwotICh2b2lkKWhkZjVPdXRTaGFsbG93OiBoZGY1T2JqOwotICh2b2lkKXVwZGF0ZUFyY2hpdmVy
OiBhcmNoaXZlcjsKLSBfSV9Vc2luZzsKLSBnZXREZWZpbmluZ0NsYXNzOwpAZW5kCgpAcHJvdG9j
b2wgQmVoYXZpb3JQaGFzZSA8Q3JlYXRlZENsYXNzPgoKCgoKLSBfSV9DcmVhdGluZzsKLSAodm9p
ZClzZXROZXh0UGhhc2U6IGFDbGFzczsKCi0gX0lfVXNpbmc7Ci0gZ2V0TmV4dFBoYXNlOwpAZW5k
CgpAcHJvdG9jb2wgQ29weQojIDYyMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgotIF9JX1VzaW5nOwotIGNvcHk6IChpZCA8Wm9uZT4pYVpvbmU7CkBlbmQKCgoKCgpAcHJvdG9j
b2wgR2V0T3duZXIKIyA2NDcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBf
SV9Vc2luZzsKLSBnZXRPd25lcjsKQGVuZAoKQHByb3RvY29sIFNldEluaXRpYWxWYWx1ZQojIDY3
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0NyZWF0aW5nOwoKCgoK
CgoKLSAodm9pZClzZXRJbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZTsKQGVuZAoKQHByb3RvY29s
IFN5bWJvbCA8Q3JlYXRlLCBHZXROYW1lLCBDUkVBVEFCTEU+CiMgNzA2ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7CgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2Ug
ICA0OQoKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXROYW1lOiAoY29uc3QgY2hhciAq
KW5hbWU7CgoKCkBlbmQKCkBwcm90b2NvbCBFdmVudFR5cGUgPFN5bWJvbD4KCgoKCi0gX0lfVXNp
bmc7CgotICh2b2lkKXJhaXNlRXZlbnQ7CgoKCi0gKHZvaWQpcmFpc2VFdmVudDogKGNvbnN0IHZv
aWQgKilldmVudERhdGEsIC4uLjsKCgoKCgpAZW5kCgoKQHByb3RvY29sIFdhcm5pbmcgPEV2ZW50
VHlwZSwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpc2V0TWVzc2FnZVN0cmlu
ZzogKGNvbnN0IGNoYXIgKiltZXNzYWdlU3RyaW5nOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRNZXNz
YWdlU3RyaW5nOwoKZXh0ZXJuIGlkIDxXYXJuaW5nPgogIFdhcm5pbmdNZXNzYWdlLAogIFJlc291
cmNlQXZhaWxhYmlsaXR5LAogIExpYnJhcnlVc2FnZSwKICBEZWZhdWx0QXNzdW1lZCwKICBPYnNv
bGV0ZUZlYXR1cmUsCiAgT2Jzb2xldGVNZXNzYWdlLAogIFNhdmVXYXJuaW5nOwoKCgoKCkBlbmQK
CkBwcm90b2NvbCBFcnJvciA8V2FybmluZywgQ1JFQVRBQkxFPgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2Ug
ICA1MAoKCgoKCmV4dGVybiBpZCA8RXJyb3I+CiAgU291cmNlTWVzc2FnZSwKICBOb3RJbXBsZW1l
bnRlZCwKICBTdWJjbGFzc011c3RJbXBsZW1lbnQsCiAgSW52YWxpZENvbWJpbmF0aW9uLAogIElu
dmFsaWRPcGVyYXRpb24sCiAgSW52YWxpZEFyZ3VtZW50LAogIENyZWF0ZVN1YmNsYXNzaW5nLAog
IENyZWF0ZVVzYWdlLAogIE91dE9mTWVtb3J5LAogIEludmFsaWRBbGxvY1NpemUsCiAgSW50ZXJu
YWxFcnJvciwKICBCbG9ja2VkT2JqZWN0QWxsb2MsCiAgQmxvY2tlZE9iamVjdFVzYWdlLAogIFBy
b3RvY29sVmlvbGF0aW9uLAogIExvYWRFcnJvciwKICBTYXZlRXJyb3I7CgoKCgoKQGVuZAoKQHBy
b3RvY29sIEFyZ3VtZW50cyA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CiMgODc2ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0QXJnYzogKHVu
c2lnbmVkKWNvdW50IEFyZ3Y6IChjb25zdCBjaGFyICoqKXRoZUFyZ3Y7Ci0gc2V0QXBwTmFtZTog
KGNvbnN0IGNoYXIgKilhcHBOYW1lOwotIHNldEFwcE1vZGVTdHJpbmc6IChjb25zdCBjaGFyICop
YXBwTW9kZVN0cmluZzsKLSBzZXRPcHRpb25GdW5jOiAoaW50ICgqKSAoaW50LCBjb25zdCBjaGFy
ICopKW9wdGlvbkZ1bmM7Ci0gc2V0QnVnQWRkcmVzczogKGNvbnN0IGNoYXIgKilidWdBZGRyZXNz
OwotIHNldFZlcnNpb246IChjb25zdCBjaGFyICopdmVyc2lvbjsKLSBhZGRPcHRpb25zOiAoc3Ry
dWN0IGFyZ3Bfb3B0aW9uICopb3B0aW9uczsKIyA5MDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9kZWZvYmouaCIKLSAodm9pZClhZGRPcHRpb246IChjb25zdCBjaGFyICopbmFtZSBrZXk6IChp
bnQpa2V5IGFyZzogKGNvbnN0IGNoYXIgKilhcmcgZmxhZ3M6IChpbnQpZmxhZ3MgZG9jOiAoY29u
c3QgY2hhciAqKWRvYyBncm91cDogKGludClncm91cDsKCisgY3JlYXRlQXJnYzogKGludClhcmdj
IEFyZ3Y6IChjb25zdCBjaGFyICoqKWFyZ3YgYXBwTmFtZTogKGNvbnN0IGNoYXIgKilhcHBOYW1l
IHZlcnNpb246IChjb25zdCBjaGFyICopdmVyc2lvbiBidWdBZGRyZXNzOiAoY29uc3QgY2hhciAq
KWJ1Z0FkZHJlc3Mgb3B0aW9uczogKHN0cnVjdCBhcmdwX29wdGlvbiAqKW9wdGlvbnMgb3B0aW9u
RnVuYzogKGludCAoKikgKGludCwgY29uc3QgY2hhciAqKSlvcHRpb25GdW5jIGluaGliaXRFeGVj
dXRhYmxlU2VhcmNoRmxhZzogKEJPT0wpaW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOwoKCi0g
KGludClwYXJzZUtleTogKGludClrZXkgYXJnOiAoY29uc3QgY2hhciAqKWFyZzsKLSBfSV9TZXR0
aW5nOwotIHNldEluaGliaXRBcmNoaXZlckxvYWRGbGFnOiAoQk9PTClpbmhpYml0QXJjaGl2ZXJM
b2FkRmxhZzsKLSBzZXRJbmhpYml0RXhlY3V0YWJsZVNlYXJjaEZsYWc6IChCT09MKXRoZUluaGli
aXRFeGVjdXRhYmxlU2VhcmNoRmxhZzsKLSBzZXRCYXRjaE1vZGVGbGFnOiAoQk9PTCliYXRjaE1v
ZGVGbGFnOwotIHNldFZhcnlTZWVkRmxhZzogKEJPT0wpdmFyeVNlZWRGbGFnOwotIHNldFZlcmJv
c2VGbGFnOiAoQk9PTCl2ZXJib3NlRmxhZzsKCgoKLSBzZXREZWZhdWx0QXBwQ29uZmlnUGF0aDog
KGNvbnN0IGNoYXIgKilwYXRoOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNTEKCgotIHNldERlZmF1
bHRBcHBEYXRhUGF0aDogKGNvbnN0IGNoYXIgKilwYXRoOwotIHNldEZpeGVkU2VlZDogKHVuc2ln
bmVkKXNlZWQ7CgoKLSBfSV9Vc2luZzsKLSAoQk9PTClnZXRCYXRjaE1vZGVGbGFnOwotIChCT09M
KWdldFZhcnlTZWVkRmxhZzsKLSAoQk9PTClnZXRGaXhlZFNlZWRGbGFnOwotICh1bnNpZ25lZCln
ZXRGaXhlZFNlZWQ7Ci0gKEJPT0wpZ2V0VmVyYm9zZUZsYWc7Ci0gKGNvbnN0IGNoYXIgKilnZXRB
cHBOYW1lOwotIChjb25zdCBjaGFyICopZ2V0QXBwTW9kZVN0cmluZzsKLSAoaW50KWdldEFyZ2M7
Ci0gKGludClnZXRMYXN0QXJnSW5kZXg7Ci0gKGNvbnN0IGNoYXIgKiopZ2V0QXJndjsKLSAoY29u
c3QgY2hhciAqKWdldEV4ZWN1dGFibGVQYXRoOwotIChjb25zdCBjaGFyICopZ2V0U3dhcm1Ib21l
OwotIChjb25zdCBjaGFyICopZ2V0Q29uZmlnUGF0aDsKLSAoY29uc3QgY2hhciAqKWdldERhdGFQ
YXRoOwoKLSAoY29uc3QgY2hhciAqKWdldEFwcERhdGFQYXRoOwoKCi0gKGNvbnN0IGNoYXIgKiln
ZXRBcHBDb25maWdQYXRoOwotIChCT09MKWdldFNob3dDdXJyZW50VGltZUZsYWc7Ci0gKEJPT0wp
Z2V0SW5oaWJpdEFyY2hpdmVyTG9hZEZsYWc7CgpAZW5kCgpAcHJvdG9jb2wgQXJjaGl2ZXIgPENy
ZWF0ZSwgRHJvcCwgUkVUVVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0SW5oaWJpdExv
YWRGbGFnOiAoQk9PTClpbmhpYml0TG9hZEZsYWc7CgoKLSBzZXRQYXRoOiAoY29uc3QgY2hhciAq
KXBhdGg7CgoKCi0gc2V0U3lzdGVtQXJjaGl2ZXJGbGFnOiAoQk9PTClzeXN0ZW1BcmNoaXZlckZs
YWc7CgoKLSBzZXREZWZhdWx0UGF0aDsKCgotIHNldERlZmF1bHRBcHBQYXRoOwotIF9JX1VzaW5n
OwotICh2b2lkKXJlZ2lzdGVyQ2xpZW50OiBjbGllbnQ7Ci0gKHZvaWQpdW5yZWdpc3RlckNsaWVu
dDogY2xpZW50OwoKCgotICh2b2lkKXB1dERlZXA6IChjb25zdCBjaGFyICopa2V5IG9iamVjdDog
b2JqZWN0OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dh
cm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDUyCgoKCgotICh2b2lkKXB1dFNoYWxsb3c6IChj
b25zdCBjaGFyICopa2V5IG9iamVjdDogb2JqZWN0OwoKCi0gZ2V0T2JqZWN0OiAoY29uc3QgY2hh
ciAqKWtleTsKCgotIGdldFdpdGhab25lOiAoaWQgPFpvbmU+KWFab25lIGtleTogKGNvbnN0IGNo
YXIgKilrZXk7CgoKCi0gKHZvaWQpc3luYzsKQGVuZAoKQHByb3RvY29sIExpc3BBcmNoaXZlciA8
QXJjaGl2ZXIsIENSRUFUQUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKCisgY3JlYXRlOiAoaWQg
PFpvbmU+KWFab25lIHNldFBhdGg6IChjb25zdCBjaGFyICopcGF0aDsKCi0gX0lfU2V0dGluZzsK
LSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIEhERjVBcmNoaXZlciA8QXJjaGl2ZXIsIENSRUFU
QUJMRT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNl
dFBhdGg6IChjb25zdCBjaGFyICopcGF0aDsKCi0gX0lfU2V0dGluZzsKLSBfSV9Vc2luZzsKQGVu
ZAoKQHByb3RvY29sIEhERjUgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCi0gX0lfQ3JlYXRp
bmc7Ci0gc2V0V3JpdGVGbGFnOiAoQk9PTCl3cml0ZUZsYWc7Ci0gc2V0RGF0YXNldEZsYWc6IChC
T09MKWRhdGFzZXRGbGFnOwotIHNldEV4dGVuc2libGVWZWN0b3JUeXBlOiAoZmNhbGxfdHlwZV90
KXR5cGU7Ci0gc2V0RXh0ZW5zaWJsZURvdWJsZVZlY3RvcjsKLSBzZXRQYXJlbnQ6IHBhcmVudDsK
LSBzZXRDb21wb3VuZFR5cGU6IGNvbXBvdW5kVHlwZTsKLSBzZXRDb3VudDogKHVuc2lnbmVkKWNv
dW50OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0u
bWkgICAgICAgICAgICAgICAgUGFnZSAgIDUzCgoKLSBfSV9TZXR0aW5nOwoKCgotIHNldE5hbWU6
IChjb25zdCBjaGFyICopbmFtZTsKLSBzZXRCYXNlVHlwZU9iamVjdDogYmFzZVR5cGVPYmplY3Q7
Ci0gX0lfVXNpbmc7Ci0gKHZvaWQpaXRlcmF0ZTogKGludCAoKikgKGlkIDxIREY1PmhkZjVPYmop
KWl0ZXJhdGVGdW5jOwotICh2b2lkKWl0ZXJhdGU6IChpbnQgKCopIChpZCA8SERGNT5oZGY1T2Jq
KSlpdGVyYXRlRnVuYyBkcm9wOiAoQk9PTClkcm9wRmxhZzsKLSAoQk9PTClnZXREYXRhc2V0Rmxh
ZzsKLSAoQk9PTClnZXRXcml0ZUZsYWc7Ci0gKHNpemVfdClnZXREYXRhc2V0UmFuazsKLSAoc2l6
ZV90KWdldERhdGFzZXREaW1lbnNpb246ICh1bnNpZ25lZClkaW1OdW1iZXI7Ci0gKHVuc2lnbmVk
KWdldENvdW50OwotIGdldENvbXBvdW5kVHlwZTsKLSBnZXRDbGFzczsKLSAodm9pZClhc3NpZ25J
dmFyOiBvYmo7CgotIChCT09MKWNoZWNrTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIChCT09M
KWNoZWNrRGF0YXNldE5hbWU6IChjb25zdCBjaGFyICopZGF0YXNldE5hbWU7CgotICh2b2lkKWxv
YWREYXRhc2V0OiAodm9pZCAqKXB0cjsKLSAodm9pZClzdG9yZUFzRGF0YXNldDogKGNvbnN0IGNo
YXIgKiluYW1lIHR5cGVOYW1lOiAoY29uc3QgY2hhciAqKXR5cGVOYW1lIHR5cGU6IChmY2FsbF90
eXBlX3QpdHlwZSByYW5rOiAodW5zaWduZWQpcmFuayBkaW1zOiAodW5zaWduZWQgKilkaW1zIHB0
cjogKHZvaWQgKilwdHI7CgotICh2b2lkKWFkZERvdWJsZVRvVmVjdG9yOiAoZG91YmxlKXZhbDsK
Ci0gKHZvaWQpc3RvcmVUeXBlTmFtZTogKGNvbnN0IGNoYXIgKil0eXBlTmFtZTsKLSAodm9pZClz
dG9yZUNvbXBvbmVudFR5cGVOYW1lOiAoY29uc3QgY2hhciAqKXR5cGVOYW1lOwotICh2b2lkKXNo
YWxsb3dMb2FkT2JqZWN0OiBvYmo7Ci0gKHZvaWQpc2hhbGxvd1N0b3JlT2JqZWN0OiBvYmo7Ci0g
KHZvaWQpbmFtZVJlY29yZDogKHVuc2lnbmVkKXJlY29yZE51bWJlciBuYW1lOiAoY29uc3QgY2hh
ciAqKXJlY29yZE5hbWU7Ci0gKHZvaWQpbnVtYmVyUmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVt
YmVyOwotICh2b2lkKXNlbGVjdFJlY29yZDogKHVuc2lnbmVkKXJlY29yZE51bWJlcjsKCi0gKGNv
bnN0IGNoYXIgKiopcmVhZFJvd05hbWVzOwotICh2b2lkKXdyaXRlUm93TmFtZXM7Ci0gKHZvaWQp
d3JpdGVMZXZlbHM7CgotICh2b2lkKXN0b3JlQXR0cmlidXRlOiAoY29uc3QgY2hhciAqKWF0dHJp
YnV0ZU5hbWUgdmFsdWU6IChjb25zdCBjaGFyICopdmFsdWVTdHJpbmc7Ci0gKHZvaWQpaXRlcmF0
ZUF0dHJpYnV0ZXM6IChpbnQgKCopIChjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVl
KSlpdGVyYXRlRnVuYzsKLSAoY29uc3QgY2hhciAqKWdldEF0dHJpYnV0ZTogKGNvbnN0IGNoYXIg
KilhdHRyaWJ1dGVOYW1lOwotICh2b2lkKWZsdXNoOwpAZW5kCgpAcHJvdG9jb2wgSERGNUNvbXBv
dW5kVHlwZSA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRQ
cm90b3R5cGU6IHByb3RvdHlwZTsKLSBfSV9Vc2luZzsKLSBnZXRQcm90b3R5cGU7CkBlbmQKCnR5
cGVkZWYgdm9pZCAqSk9CSkVDVDsKdHlwZWRlZiBjb25zdCB2b2lkICpDT01PQkpFQ1Q7CgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAg
ICAgICAgICAgUGFnZSAgIDU0CgoKQHByb3RvY29sIEZBcmd1bWVudHMgPENyZWF0ZSwgRHJvcCwg
Q1JFQVRBQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0TGFuZ3VhZ2U6IChpZCA8U3ltYm9sPils
YW5ndWFnZVR5cGU7CgoKLSBzZXRTZWxlY3RvcjogKFNFTClhU2VsOwotIHNldEphdmFTaWduYXR1
cmU6IChjb25zdCBjaGFyICopamF2YVNpZ25hdHVyZTsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpv
bmUgc2V0U2VsZWN0b3I6IChTRUwpYVNlbDsKLSBhZGRBcmd1bWVudDogKHR5cGVzX3QgKil2YWx1
ZSBvZlR5cGU6IChmY2FsbF90eXBlX3QpdHlwZTsKLSBhZGRBcmd1bWVudDogKHZvaWQgKil2YWx1
ZSBvZk9iakNUeXBlOiAoY2hhcil0eXBlOwotIGFkZENoYXI6IChjaGFyKXZhbHVlOwotIGFkZEJv
b2xlYW46IChCT09MKXZhbHVlOwotIGFkZFVuc2lnbmVkQ2hhcjogKHVuc2lnbmVkIGNoYXIpdmFs
dWU7Ci0gYWRkU2hvcnQ6IChzaG9ydCl2YWx1ZTsKLSBhZGRVbnNpZ25lZFNob3J0OiAodW5zaWdu
ZWQgc2hvcnQpdmFsdWU7Ci0gYWRkSW50OiAoaW50KXZhbHVlOwotIGFkZFVuc2lnbmVkOiAodW5z
aWduZWQpdmFsdWU7Ci0gYWRkTG9uZzogKGxvbmcpdmFsdWU7Ci0gYWRkVW5zaWduZWRMb25nOiAo
dW5zaWduZWQgbG9uZyl2YWx1ZTsKLSBhZGRMb25nTG9uZzogKGxvbmcgbG9uZyl2YWx1ZTsKLSBh
ZGRVbnNpZ25lZExvbmdMb25nOiAodW5zaWduZWQgbG9uZyBsb25nKXZhbHVlOwotIGFkZEZsb2F0
OiAoZmxvYXQpdmFsdWU7Ci0gYWRkRG91YmxlOiAoZG91YmxlKXZhbHVlOwotIGFkZExvbmdEb3Vi
bGU6IChsb25nIGRvdWJsZSl2YWx1ZTsKLSBhZGRTdHJpbmc6IChjb25zdCBjaGFyICopdmFsdWU7
Ci0gYWRkT2JqZWN0OiBvYmo7Ci0gYWRkU2VsZWN0b3I6IChTRUwpYVNlbDsKLSBhZGRKYXZhT2Jq
ZWN0OiAoSk9CSkVDVClvYmo7Ci0gc2V0T2JqQ1JldHVyblR5cGU6IChjaGFyKXR5cGU7Ci0gc2V0
UmV0dXJuVHlwZTogKGZjYWxsX3R5cGVfdClyZXRUeXBlOwotIHNldEJvb2xlYW5SZXR1cm5UeXBl
OwotIF9JX1VzaW5nOwotICh2YWxfdClnZXRSZXRWYWw7Ci0gKGlkIDxTeW1ib2w+KWdldExhbmd1
YWdlOwotICh2b2lkICopZ2V0UmVzdWx0OwpAZW5kCgp0eXBlZGVmIGVudW0gY2FsbFR5cGVzIHsg
Y2NhbGwsIENPTWNhbGwsIEpTY2FsbCwgamF2YWNhbGwsIGphdmFzdGF0aWNjYWxsLCBvYmpjY2Fs
bCB9IGNhbGxfdDsKCkBwcm90b2NvbCBGQ2FsbCA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoK
LSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgdGFyZ2V0OiBvYmoKICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAoU0VMKXNlbAogICAgICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudHM6IChpZCA8RkFyZ3VtZW50cz4pZmE7CisgY3JlYXRlOiAoaWQgPFpv
bmU+KWFab25lIHRhcmdldDogb2JqCiAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kTmFtZTog
KGNvbnN0IGNoYXIgKiltZXRob2ROYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
czogKGlkIDxGQXJndW1lbnRzPilmYTsKLSBzZXRBcmd1bWVudHM6IGFyZ3M7Ci0gc2V0RnVuY3Rp
b25Qb2ludGVyOiAoZnVuY190KWZuOwotIHNldE1ldGhvZEZyb21TZWxlY3RvcjogKFNFTCltZXRo
b2QgaW5PYmplY3Q6IG9iamVjdDsKLSBzZXRNZXRob2RGcm9tTmFtZTogKGNvbnN0IGNoYXIgKilt
ZXRob2ROYW1lIGluT2JqZWN0OiBvYmplY3Q7Ci0gc2V0SmF2YU1ldGhvZEZyb21OYW1lOiAoY29u
c3QgY2hhciAqKW1ldGhvZE5hbWUgaW5PYmplY3Q6IChKT0JKRUNUKWpPYmo7CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAgNTUKCgotIHNldEphdmFNZXRob2RGcm9tTmFtZTogKGNvbnN0IGNoYXIgKiltZXRo
b2ROYW1lIGluQ2xhc3M6IChjb25zdCBjaGFyICopY2xhc3NOYW1lOwotIF9JX1VzaW5nOwotIChj
YWxsX3QpZ2V0Q2FsbFR5cGU7Ci0gZ2V0QXJndW1lbnRzOwotICh2b2lkKXBlcmZvcm1DYWxsOwot
ICh2b2lkICopZ2V0UmVzdWx0OwotIChyZXR2YWxfdClnZXRSZXRWYWw6IChyZXR2YWxfdClyZXRW
YWwgYnVmOiAodHlwZXNfdCAqKWJ1ZjsKLSAoZnVuY190KWdldEZ1bmN0aW9uUG9pbnRlcjsKZXh0
ZXJuIHZvaWQgZGVmb2JqX2luaXRfamF2YV9jYWxsX3RhYmxlcyAodm9pZCAqam5pRW52KTsKZXh0
ZXJuIHZvaWQgdXBkYXRlVGFyZ2V0IChpZCBjYWxsLCBpZCB0YXJnZXQpOwpAZW5kCgpAcHJvdG9j
b2wgU2VyaWFsaXphdGlvbgoKCgotIF9JX0NyZWF0aW5nOwoKCi0gbGlzcEluQ3JlYXRlOiBleHBy
OwoKCi0gaGRmNUluQ3JlYXRlOiAoaWQgPEhERjU+KWhkZjVPYmo7CgoKCmV4dGVybiBpZCBsaXNw
SW4gKGlkIDxab25lPiBhWm9uZSwgaWQgZXhwcik7CgoKZXh0ZXJuIGlkIGhkZjVJbiAoaWQgPFpv
bmU+IGFab25lLCBpZCA8SERGNT4gaGRmNU9iaik7CgotIF9JX1NldHRpbmc7CgoKLSBsaXNwSW46
IGV4cHI7CgoKLSBoZGY1SW46IChpZCA8SERGNT4paGRmNU9iajsKCi0gX0lfVXNpbmc7CgotICh2
b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07CgoKLSAodm9pZClsaXNwT3V0RGVlcDogc3RyZWFt
OwoKCgotICh2b2lkKWxpc3BPdXRWYXJzOiBzdHJlYW0gZGVlcDogKEJPT0wpZGVlcEZsYWc7CgoK
LSAodm9pZCloZGY1T3V0U2hhbGxvdzogKGlkIDxIREY1PiloZGY1b2JqOwoKCi0gKHZvaWQpaGRm
NU91dERlZXA6IChpZCA8SERGNT4paGRmNW9iajsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNTYKCgot
ICh2b2lkKXVwZGF0ZUFyY2hpdmVyOiBhcmNoaXZlcjsKCgpleHRlcm4gQk9PTCBsaXNwSW5Cb29s
ZWFuIChpZCBpbmRleCk7CgoKZXh0ZXJuIGludCBsaXNwSW5JbnRlZ2VyIChpZCBpbmRleCk7CgoK
ZXh0ZXJuIGNvbnN0IGNoYXIgKmxpc3BJblN0cmluZyAoaWQgaW5kZXgpOwoKCmV4dGVybiBpZCBs
aXNwSW5LZXl3b3JkIChpZCBpbmRleCk7CgpAZW5kCgoKZXh0ZXJuIGlkIDxBcmd1bWVudHM+IGFy
Z3VtZW50czsKCgpleHRlcm4gaWQgPEhERjVBcmNoaXZlcj4gaGRmNUFyY2hpdmVyOwoKCmV4dGVy
biBpZCA8TGlzcEFyY2hpdmVyPiBsaXNwQXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxIREY1QXJjaGl2
ZXI+IGhkZjVBcHBBcmNoaXZlcjsKCgpleHRlcm4gaWQgPExpc3BBcmNoaXZlcj4gbGlzcEFwcEFy
Y2hpdmVyOwoKCmV4dGVybiBpZCA8U3ltYm9sPiB0X0J5dGVBcnJheSwgdF9MZWFmT2JqZWN0LCB0
X1BvcHVsYXRpb25PYmplY3Q7CgoKZXh0ZXJuIGlkIDxTeW1ib2w+IExhbmd1YWdlQ09NLCBMYW5n
dWFnZUpTLCBMYW5ndWFnZUphdmEsIExhbmd1YWdlT2JqYzsKCgoKCgoKZXh0ZXJuIHZvaWQgX29i
al9mb3JtYXRJRFN0cmluZyAoY2hhciAqYnVmZmVyLCBpZCBhbk9iamVjdCk7CgoKCmV4dGVybiBD
bGFzcyBvYmpjX2dldF9jbGFzcyAoY29uc3QgY2hhciAqbmFtZSk7CgoKZXh0ZXJuIGlkIGRlZm9i
al9sb29rdXBfdHlwZSAoY29uc3QgY2hhciAqbmFtZSk7CgoKCgojIDEgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9kZWZvYmovdHlwZXMuaCIgMQpleHRlcm4gdm9pZCAqX2RlZm9ial9bXTsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAg
ICAgICAgICAgIFBhZ2UgICA1NwoKCgpleHRlcm4gaWQgR2V0TmFtZTsKZXh0ZXJuIGlkIERlZmlu
ZWRPYmplY3Q7CmV4dGVybiBpZCBDdXN0b21pemU7CmV4dGVybiBpZCBDcmVhdGU7CmV4dGVybiBp
ZCBEcm9wOwpleHRlcm4gaWQgWm9uZTsKZXh0ZXJuIGlkIERlZmluZWRDbGFzczsKZXh0ZXJuIGlk
IENyZWF0ZWRDbGFzczsKZXh0ZXJuIGlkIEJlaGF2aW9yUGhhc2U7CmV4dGVybiBpZCBDb3B5Owpl
eHRlcm4gaWQgR2V0T3duZXI7CmV4dGVybiBpZCBTZXRJbml0aWFsVmFsdWU7CmV4dGVybiBpZCBT
eW1ib2w7CmV4dGVybiBpZCBFdmVudFR5cGU7CmV4dGVybiBpZCBXYXJuaW5nOwpleHRlcm4gaWQg
RXJyb3I7CmV4dGVybiBpZCBBcmd1bWVudHM7CmV4dGVybiBpZCBBcmNoaXZlcjsKZXh0ZXJuIGlk
IExpc3BBcmNoaXZlcjsKZXh0ZXJuIGlkIEhERjVBcmNoaXZlcjsKZXh0ZXJuIGlkIEhERjU7CmV4
dGVybiBpZCBIREY1Q29tcG91bmRUeXBlOwpleHRlcm4gaWQgRkFyZ3VtZW50czsKZXh0ZXJuIGlk
IEZDYWxsOwpleHRlcm4gaWQgU2VyaWFsaXphdGlvbjsKIyAxMjU2ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvZGVmb2JqLmgiIDIKCmV4dGVybiB2b2lkIGluaXREZWZvYmogKGlkIDxBcmd1bWVu
dHM+IGFyZ3VtZW50cyk7CgoKZXh0ZXJuIHZvaWQgX29ial9pbml0TW9kdWxlICh2b2lkICptb2R1
bGUpOwoKCgoKCmV4dGVybiBpZCBfb2JqX2dsb2JhbFpvbmU7CgoKZXh0ZXJuIGlkIF9vYmpfc2Ny
YXRjaFpvbmU7CiMgMTI3OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgpleHRl
cm4gQk9PTCBfb2JqX2RlYnVnOwoKCgpleHRlcm4gRklMRSAqX29ial94ZXJyb3I7CgpleHRlcm4g
RklMRSAqX29ial94ZGVidWc7CgoKZXh0ZXJuIHZvaWQgeHNldG5hbWUgKGlkIGFuT2JqZWN0LCBj
b25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gdm9pZCB4cHJpbnQgKGlkIGFuT2JqZWN0KTsKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAgNTgKCgoKZXh0ZXJuIHZvaWQgeHByaW50aWQgKGlkIGFuT2JqZWN0
KTsKCgpleHRlcm4gdm9pZCB4ZnByaW50IChpZCBhbk9iamVjdCk7CgoKZXh0ZXJuIHZvaWQgeGZw
cmludGlkIChpZCBhbk9iamVjdCk7CgoKZXh0ZXJuIHZvaWQgeGV4ZWMgKGlkIGFuT2JqZWN0LCBj
b25zdCBjaGFyICpuYW1lKTsKCgpleHRlcm4gdm9pZCB4ZmV4ZWMgKGlkIGFuT2JqZWN0LCBjb25z
dCBjaGFyICpuYW1lKTsKCgpleHRlcm4gaWQgbmFtZVRvT2JqZWN0IChjb25zdCBjaGFyICpuYW1l
KTsKIyAxMzI1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCmV4dGVybiBjaGFy
ICp6c3RyZHVwIChpZCA8Wm9uZT4gYVpvbmUsIGNvbnN0IGNoYXIgKnN0cik7CiMgMjEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvYWN0aXZpdHkuaCIgMQojIDI2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIgMQoj
IDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKIyAxICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDEKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2NvbGxlY3Rpb25zLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZXh0ZXJu
dmFyLmgiIDEKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiIDIK
IyAyNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBwcm90b2NvbCBP
ZmZzZXRzCiMgNDIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9J
X1VzaW5nOwoKLSBhdE9mZnNldDogKHVuc2lnbmVkKW9mZnNldDsKCgoKLSBhdE9mZnNldDogKHVu
c2lnbmVkKW9mZnNldCBwdXQ6IGFuT2JqZWN0OwoKCi0gZ2V0Rmlyc3Q7CgoKLSBnZXRMYXN0OwpA
ZW5kCgpAcHJvdG9jb2wgRm9yRWFjaAojIDc4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29s
bGVjdGlvbnMuaCIKLSBfSV9Vc2luZzsKLSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxlY3RvcjsK
LSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxlY3RvciA6IGFyZzE7Ci0gKHZvaWQpZm9yRWFjaDog
KFNFTClhU2VsZWN0b3IgOiBhcmcxIDogYXJnMjsKLSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxl
Y3RvciA6IGFyZzEgOiBhcmcyIDogYXJnMzsKCi0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoOiBvdXRw
dXRDaGFyU3RyZWFtOwotICh2b2lkKWRlc2NyaWJlRm9yRWFjaElEOiBvdXRwdXRDaGFyU3RyZWFt
OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkg
ICAgICAgICAgICAgICAgUGFnZSAgIDU5CgoKCkBlbmQKCkBwcm90b2NvbCBGb3JFYWNoS2V5CgoK
CgoKLSBfSV9Vc2luZzsKLSAodm9pZClmb3JFYWNoS2V5OiAoU0VMKWFTZWxlY3RvcjsKLSAodm9p
ZClmb3JFYWNoS2V5OiAoU0VMKWFTZWxlY3RvciA6IGFyZzE7Ci0gKHZvaWQpZm9yRWFjaEtleTog
KFNFTClhU2VsZWN0b3IgOiBhcmcxIDogYXJnMjsKLSAodm9pZClmb3JFYWNoS2V5OiAoU0VMKWFT
ZWxlY3RvciA6IGFyZzEgOiBhcmcyIDogYXJnMzsKQGVuZAoKQHByb3RvY29sIEluZGV4IDxEZWZp
bmVkT2JqZWN0LCBEcm9wLCBSRVRVUk5BQkxFPgojIDE1NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfVXNpbmc7CgoKLSBnZXRDb2xsZWN0aW9uOwoKCgoKCgot
IG5leHQ7CgoKCgotIHByZXY7CgoKCgotIGZpbmROZXh0OiBhbk9iamVjdDsKCgoKCi0gZmluZFBy
ZXY6IGFuT2JqZWN0OwojIDE5MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gZ2V0OwoKCgoKLSBwdXQ6IGFuT2JqZWN0OwojIDIwOSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gcmVtb3ZlOwojIDI1MyAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKGlkIDxTeW1ib2w+KWdldExvYzsKIyAyNjcgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDYw
CgoKLSAodm9pZClzZXRMb2M6IChpZCA8U3ltYm9sPilsb2NTeW1ib2w7CiMgMjg4ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAoaW50KWdldE9mZnNldDsKCgoKCgoK
Ci0gc2V0T2Zmc2V0OiAodW5zaWduZWQpb2Zmc2V0OwojIDMwOCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gKGludCljb21wYXJlOiBhbkluZGV4OwojIDMyMSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCmV4dGVybiBpZCA8U3ltYm9sPiBT
dGFydCwgRW5kLCBCZXR3ZWVuLCBSZW1vdmVkLCBNZW1iZXI7CgoKCgoKCgpleHRlcm4gaWQgPEVy
cm9yPiBPZmZzZXRPdXRPZlJhbmdlLCBOb01lbWJlcnMsCiAgQWxyZWFkeUF0RW5kLCBBbHJlYWR5
QXRTdGFydCwgSW52YWxpZEluZGV4TG9jLCBJbnZhbGlkTG9jU3ltYm9sOwoKQGVuZAoKQHByb3Rv
Y29sIFBlcm11dGVkSW5kZXggPEluZGV4LCBSRVRVUk5BQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7
Ci0gc2V0Q29sbGVjdGlvbjogYUNvbGxlY3Rpb247Ci0gc2V0VW5pZm9ybVJhbmRvbTogcm5kOwot
IF9JX1VzaW5nOwotIHJlc2h1ZmZsZTsKQGVuZDsKCkBwcm90b2NvbCBDb2xsZWN0aW9uIDxDcmVh
dGUsIFNldEluaXRpYWxWYWx1ZSwgQ29weSwgRHJvcCwgT2Zmc2V0cywgRm9yRWFjaD4KIyA0MDcg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX0NyZWF0aW5nOwoK
CgoKCgoKLSAodm9pZClzZXRSZXBsYWNlT25seTogKEJPT0wpcmVwbGFjZU9ubHk7CgotICh2b2lk
KXNldEluZGV4RnJvbU1lbWJlckxvYzogKGludClieXRlT2Zmc2V0OwoKLSBfSV9Vc2luZzsKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAgNjEKCgoKLSBjb3B5OiAoaWQgPFpvbmU+KWFab25lOwoKCi0gKEJP
T0wpZ2V0UmVwbGFjZU9ubHk7CgoKCgoKLSAodW5zaWduZWQpZ2V0Q291bnQ7CiMgNDQwICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAoQk9PTCljb250YWluczogYU1l
bWJlcjsKCgoKCgoKLSByZW1vdmU6IGFNZW1iZXI7CiMgNDU2ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvY29sbGVjdGlvbnMuaCIKLSAodm9pZClyZW1vdmVBbGw7CgoKLSAodm9pZClkZWxldGVB
bGw7CgoKLSAoQk9PTClhbGxTYW1lQ2xhc3M7CgoKCgotIChpZCA8SW5kZXg+KWJlZ2luOiAoaWQg
PFpvbmU+KWFab25lOwoKLSAoaWQgPFBlcm11dGVkSW5kZXg+KWJlZ2luUGVybXV0ZWQ6IChpZCA8
Wm9uZT4pYVpvbmU7CkBlbmQKCgoKQHByb3RvY29sIERlZmF1bHRNZW1iZXIKIyA0ODggIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1NldHRpbmc7Ci0gKHZvaWQp
c2V0RGVmYXVsdE1lbWJlcjogbWVtYmVyVmFsdWU7CgotIF9JX1VzaW5nOwotIGdldERlZmF1bHRN
ZW1iZXI7CkBlbmQKCkBwcm90b2NvbCBNZW1iZXJCbG9jawojIDUzNyAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpv
bmU+KWFab25lIHNldE1lbWJlckJsb2NrOiAoaWQgKiltZW1iZXJzIHNldENvdW50OiAodW5zaWdu
ZWQpY291bnQ7CgotIF9JX1NldHRpbmc7Ci0gKHZvaWQpc2V0TWVtYmVyQmxvY2s6IChpZCAqKW1l
bWJlcnMgc2V0Q291bnQ6ICh1bnNpZ25lZCljb3VudDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNjIK
CgotIF9JX1VzaW5nOwotICh2b2lkICopZ2V0TWVtYmVyQmxvY2s7CkBlbmQKCkBwcm90b2NvbCBB
cnJheSA8Q29sbGVjdGlvbiwgRGVmYXVsdE1lbWJlciwgTWVtYmVyQmxvY2ssIENSRUFUQUJMRT4K
IyA1OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX0NyZWF0
aW5nOworIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50
OwoKLSBfSV9TZXR0aW5nOwoKCgoKCgoKLSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwpAZW5k
CgpAcHJvdG9jb2wgTGlzdEluZGV4IDxJbmRleCwgUkVUVVJOQUJMRT4KIyA2NDAgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRB
ZnRlcjogYW5PYmplY3Q7CgoKLSAodm9pZClhZGRCZWZvcmU6IGFuT2JqZWN0OwpAZW5kCgoKQHBy
b3RvY29sIExpc3QgPENvbGxlY3Rpb24sIENSRUFUQUJMRT4KIyA2NjkgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRGaXJzdDog
YW5PYmplY3Q7CgoKLSAodm9pZClhZGRMYXN0OiBhbk9iamVjdDsKCgotIHJlbW92ZUZpcnN0OwoK
Ci0gcmVtb3ZlTGFzdDsKCgotIChpZCA8TGlzdEluZGV4PilsaXN0QmVnaW46IChpZCA8Wm9uZT4p
YVpvbmU7CkBlbmQKCgoKZXh0ZXJuIGludCBjb21wYXJlSURzIChpZCwgaWQpOwoKCmV4dGVybiBp
bnQgY29tcGFyZUludGVnZXJzIChpZCwgaWQpOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDYzCgoKCgpl
eHRlcm4gaW50IGNvbXBhcmVVbnNpZ25lZEludGVnZXJzIChpZCwgaWQpOwoKCmV4dGVybiBpbnQg
Y29tcGFyZUNTdHJpbmdzIChpZCwgaWQpOwoKQHByb3RvY29sIENvbXBhcmVGdW5jdGlvbgojIDcy
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCnR5cGVkZWYgaW50ICgq
Y29tcGFyZV90KSAoaWQsIGlkKTsKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q29tcGFyZUZ1bmN0aW9u
OiAoY29tcGFyZV90KWFGdW5jdGlvbjsKLSBzZXRDb21wYXJlQ1N0cmluZ3M7Ci0gc2V0Q29tcGFy
ZUlEczsKLSBzZXRDb21wYXJlSW50ZWdlcnM7Ci0gc2V0Q29tcGFyZVVuc2lnbmVkSW50ZWdlcnM7
Ci0gX0lfVXNpbmc7Ci0gKGNvbXBhcmVfdClnZXRDb21wYXJlRnVuY3Rpb247CkBlbmQKCkBwcm90
b2NvbCBLZXllZENvbGxlY3Rpb24gPENvbGxlY3Rpb24sIEZvckVhY2hLZXk+CiMgNzUwICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKCi0gX0lf
VXNpbmc7Ci0gY3JlYXRlSW5kZXg6IChpZCA8Wm9uZT4pYVpvbmUgZnJvbU1lbWJlcjogYW5PYmpl
Y3Q7CgoKCgoKCi0gYXQ6IGFLZXk7CgoKCgoKCi0gcmVtb3ZlS2V5OiBhS2V5OwoKCgotIChCT09M
KWNvbnRhaW5zS2V5OiBhS2V5OwpAZW5kCgpAcHJvdG9jb2wgS2V5ZWRDb2xsZWN0aW9uSW5kZXgg
PEluZGV4PgojIDc4MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBl
bmQKCgpAcHJvdG9jb2wgTWVtYmVyU2xvdAojIDgxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2NvbGxlY3Rpb25zLmgiCnR5cGVkZWYgc3RydWN0IG1lbWJlckRhdGEgeyB2b2lkICptZW1iZXJE
YXRhWzJdOyB9IG1lbWJlcl90OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA2NAoKCgoKCgoKCnR5cGVk
ZWYgc3RydWN0IHsgdm9pZCAqbWVtYmVyRGF0YVsyXTsgaWQgb3duZXI7IH0gZHVwbWVtYmVyX3Q7
CkBlbmQKCkBwcm90b2NvbCBfU2V0CgoKLSBfSV9Vc2luZzsKCi0gKEJPT0wpYWRkOiBhbk9iamVj
dDsKIyA4MzkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAZW5kCgpA
cHJvdG9jb2wgU2V0IDxfU2V0LCBLZXllZENvbGxlY3Rpb24sIENSRUFUQUJMRT4KIyA4NTcgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKCgoKCi0g
cmVwbGFjZTogYW5PYmplY3Q7CkBlbmQKCkBwcm90b2NvbCBPcmRlcmVkU2V0IDxfU2V0LCBMaXN0
LCBDUkVBVEFCTEU+CiMgODg2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMu
aCIKQGVuZAoKQHByb3RvY29sIE1hcEluZGV4IDxLZXllZENvbGxlY3Rpb25JbmRleCwgUkVUVVJO
QUJMRT4KCgoKCi0gX0lfVXNpbmc7CgoKCgotIHNldEtleTogYUtleTsKCgoKCi0gZ2V0S2V5OwoK
CgoKCgotICh1bnNpZ25lZCBsb25nKWdldEtleVZhbHVlOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDY1
CgoKCgotIG5leHQ6IChpZCAqKWtleTsKCgotIHByZXY6IChpZCAqKWtleTsKCgotIGdldDogKGlk
ICopa2V5OwpAZW5kCgoKQHByb3RvY29sIE1hcCA8S2V5ZWRDb2xsZWN0aW9uLCBDb21wYXJlRnVu
Y3Rpb24sIENSRUFUQUJMRT4KIyA5MzggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0
aW9ucy5oIgotIF9JX1VzaW5nOwoKCgoKLSAoQk9PTClhdDogYUtleSBpbnNlcnQ6IGFuT2JqZWN0
OwoKCgoKLSBhdDogYUtleSByZXBsYWNlOiBhbk9iamVjdDsKCgotIChpZCA8TWFwSW5kZXg+KW1h
cEJlZ2luOiAoaWQgPFpvbmU+KWFab25lOwpAZW5kCgoKQHByb3RvY29sIE91dHB1dFN0cmVhbSA8
Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CiMgOTY0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
Y29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUg
c2V0RmlsZVN0cmVhbTogKEZJTEUgKilmaWxlU3RyZWFtOwotIHNldEZpbGVTdHJlYW06IChGSUxF
ICopZmlsZVN0cmVhbTsKLSBzZXRFeHByRmxhZzogKEJPT0wpZXhwckZsYWc7Ci0gX0lfVXNpbmc7
Ci0gKEZJTEUgKilnZXRGaWxlU3RyZWFtOwotIGdldEV4cHI7CgoKLSAodm9pZCljYXRDOiAoY29u
c3QgY2hhciAqKWNzdHJpbmc7CgoKLSAodm9pZCljYXRCb29sZWFuOiAoQk9PTClib29sOwoKCi0g
KHZvaWQpY2F0Q2hhcjogKGNoYXIpY2g7CgoKLSAodm9pZCljYXRGbG9hdDogKGZsb2F0KWZsdDsK
CgotICh2b2lkKWNhdERvdWJsZTogKGRvdWJsZSlkYmw7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDY2
CgoKCi0gKHZvaWQpY2F0TG9uZ0RvdWJsZTogKGxvbmcgZG91YmxlKWRibDsKCgotICh2b2lkKWNh
dEludDogKGludClpOwoKCi0gKHZvaWQpY2F0VW5zaWduZWQ6ICh1bnNpZ25lZCl1bjsKCi0gKHZv
aWQpY2F0U2hvcnQ6IChzaG9ydClzaHQ7Ci0gKHZvaWQpY2F0VW5zaWduZWRTaG9ydDogKHVuc2ln
bmVkIHNob3J0KXVzaHQ7Ci0gKHZvaWQpY2F0TG9uZzogKGxvbmcpbG5nOwotICh2b2lkKWNhdFVu
c2lnbmVkTG9uZzogKHVuc2lnbmVkIGxvbmcpdWxuZzsKLSAodm9pZCljYXRMb25nTG9uZzogKGxv
bmcgbG9uZylsbmdsbmc7Ci0gKHZvaWQpY2F0VW5zaWduZWRMb25nTG9uZzogKHVuc2lnbmVkIGxv
bmcgbG9uZyl1bG5nbG5nOwotICh2b2lkKWNhdFBvaW50ZXI6IChjb25zdCB2b2lkICopcHRyOwot
ICh2b2lkKWNhdExpdGVyYWw6IChjb25zdCBjaGFyICopc3RyOwotICh2b2lkKWNhdFN0YXJ0RXhw
cjsKLSAodm9pZCljYXRFbmRFeHByOwotICh2b2lkKWNhdEtleXdvcmQ6IChjb25zdCBjaGFyICop
a2V5d29yZDsKLSAodm9pZCljYXRTeW1ib2w6IChjb25zdCBjaGFyICopc3ltYm9sOwotICh2b2lk
KWNhdFN0cmluZzogKGNvbnN0IGNoYXIgKilzdHI7Ci0gKHZvaWQpY2F0U2VwYXJhdG9yOwotICh2
b2lkKWNhdEFycmF5UmFuazogKHVuc2lnbmVkKXJhbms7Ci0gKHZvaWQpY2F0RW5kQXJyYXk7Ci0g
KHZvaWQpY2F0VHlwZTogKGNvbnN0IGNoYXIgKil0eXBlOwotICh2b2lkKWNhdENsYXNzOiAoQ2xh
c3MpY2xhc3M7Ci0gKHZvaWQpY2F0U3RhcnRGdW5jdGlvbjogKGNvbnN0IGNoYXIgKilmdW5jdGlv
bk5hbWU7Ci0gKHZvaWQpY2F0RW5kRnVuY3Rpb247Ci0gKHZvaWQpY2F0U3RhcnRDb25zOwotICh2
b2lkKWNhdEVuZENvbnM7Ci0gKHZvaWQpY2F0U3RhcnRMaXN0OwotICh2b2lkKWNhdEVuZExpc3Q7
Ci0gKHZvaWQpY2F0U3RhcnRRdW90ZWRMaXN0OwotICh2b2lkKWNhdEVuZFF1b3RlZExpc3Q7Ci0g
KHZvaWQpY2F0U3RhcnRQYXJzZTsKLSAodm9pZCljYXRFbmRQYXJzZTsKLSAodm9pZCljYXRTdGFy
dE1ha2VJbnN0YW5jZTogKGNvbnN0IGNoYXIgKil0eXBlTmFtZTsKLSAodm9pZCljYXRFbmRNYWtl
SW5zdGFuY2U7Ci0gKHZvaWQpY2F0U3RhcnRNYWtlQ2xhc3M6IChjb25zdCBjaGFyICopY2xhc3NO
YW1lOwotICh2b2lkKWNhdEVuZE1ha2VDbGFzczsKLSAodm9pZCljYXRVbnNpZ25lZFBhaXI6ICh1
bnNpZ25lZClhIDogKHVuc2lnbmVkKWI7Ci0gKHZvaWQpY2F0TmlsOwpAZW5kCgpAcHJvdG9jb2wg
SW5wdXRTdHJlYW0gPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsK
KyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0RmlsZVN0cmVhbTogKEZJTEUgKilmaWxlOwor
IGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRFeHByOiBleHByOwotIHNldEV4cHI6IGV4cHI7
Ci0gc2V0RmlsZVN0cmVhbTogKEZJTEUgKilmaWxlU3RyZWFtOwotIF9JX1VzaW5nOwoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAg
ICAgICAgUGFnZSAgIDY3CgoKLSAoRklMRSAqKWdldEZpbGVTdHJlYW07Ci0gZ2V0RXhwcjsKQGVu
ZAoKCmV4dGVybiBpZCA8U3ltYm9sPiBBcmNoaXZlckxpdGVyYWwsIEFyY2hpdmVyUXVvdGUsIEFy
Y2hpdmVyRU9MLCBBcmNoaXZlckRvdDsKCkBwcm90b2NvbCBBcmNoaXZlcktleXdvcmQgPENyZWF0
ZSwgRHJvcCwgUkVUVVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwotIHNldEtleXdvcmROYW1lOiAo
Y29uc3QgY2hhciAqKW5hbWU7Ci0gX0lfVXNpbmc7Ci0gKGNvbnN0IGNoYXIgKilnZXRLZXl3b3Jk
TmFtZTsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsK
LSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKQGVuZAoKQHBy
b3RvY29sIEFyY2hpdmVyQXJyYXkgPENyZWF0ZSwgRHJvcCwgUkVUVVJOQUJMRT4KCgotIF9JX0Ny
ZWF0aW5nOwotIHNldEFycmF5OiBhcnJheTsKLSBfSV9Vc2luZzsKLSAodm9pZCAqKWdldERhdGE7
Ci0gKHVuc2lnbmVkKWdldFJhbms7Ci0gKHVuc2lnbmVkICopZ2V0RGltczsKLSAoc2l6ZV90KWdl
dEVsZW1lbnRTaXplOwotICh1bnNpZ25lZClnZXRFbGVtZW50Q291bnQ7Ci0gKGZjYWxsX3R5cGVf
dClnZXRBcnJheVR5cGU7Ci0gY29udmVydFRvVHlwZTogKGNoYXIpZGVzdFR5cGUgZGVzdDogKHZv
aWQgKilwdHI7Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJl
YW07Ci0gKHZvaWQpbGlzcE91dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZv
aWQpZHJvcDsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyVmFsdWUgPENyZWF0ZSwgRHJvcCwgUkVU
VVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwotIHNldERvdWJsZTogKGRvdWJsZSl2YWw7Ci0gc2V0
TG9uZ0RvdWJsZTogKGxvbmcgZG91YmxlKXZhbDsKLSBzZXRGbG9hdDogKGZsb2F0KXZhbDsKLSBz
ZXRMb25nTG9uZzogKGxvbmcgbG9uZyl2YWw7Ci0gc2V0Q2hhcjogKGNoYXIpdmFsOwotIHNldEJv
b2xlYW46IChCT09MKXZhbDsKLSBzZXRDbGFzczogKENsYXNzKWNsYXNzOwotIHNldE5pbDsKLSBf
SV9Vc2luZzsKLSAoZmNhbGxfdHlwZV90KWdldFZhbHVlVHlwZTsKLSAoZG91YmxlKWdldERvdWJs
ZTsKLSAobG9uZyBkb3VibGUpZ2V0TG9uZ0RvdWJsZTsKLSAoZmxvYXQpZ2V0RmxvYXQ7Ci0gKGxv
bmcgbG9uZylnZXRMb25nTG9uZzsKLSAoaW50KWdldEludGVnZXI7Ci0gKHVuc2lnbmVkKWdldFVu
c2lnbmVkOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dh
cm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDY4CgoKLSAoY2hhcilnZXRDaGFyOwotIChCT09M
KWdldEJvb2xlYW47Ci0gZ2V0T2JqZWN0OwotIChDbGFzcylnZXRDbGFzczsKLSAodm9pZClsaXNw
T3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKLSAodm9pZClsaXNwT3V0RGVl
cDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKLSAodm9pZClkcm9wOwpAZW5kCgpAcHJvdG9j
b2wgQXJjaGl2ZXJQYWlyIDxDcmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGlu
ZzsKLSBzZXRDYXI6IGNhcjsKLSBzZXRDZHI6IGNkcjsKLSBzZXRDb25zRm9ybWF0RmxhZzogKEJP
T0wpdGhlQ29uc0Zvcm1hdEZsYWc7Ci0gX0lfVXNpbmc7Ci0gZ2V0Q2FyOwotIGdldENkcjsKLSAo
Qk9PTClnZXRDb25zRm9ybWF0RmxhZzsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRw
dXRTdHJlYW0+KXN0cmVhbTsKLSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+
KXN0cmVhbTsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyTGlzdCA8TGlzdCwgUkVUVVJOQUJMRT4K
CgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiAoaWQg
PE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2b2lkKWxpc3BPdXREZWVwOiAoaWQgPE91dHB1dFN0
cmVhbT4pc3RyZWFtOwpAZW5kCgpAcHJvdG9jb2wgQXJjaGl2ZXJRdW90ZWQgPFJFVFVSTkFCTEU+
CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRRdW90ZWRPYmplY3Q6IHZhbHVlOwotIF9JX1VzaW5nOwot
IGdldFF1b3RlZE9iamVjdDsKLSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+
KXN0cmVhbTsKQGVuZAoKCgpAcHJvdG9jb2wgU3RyaW5nIDxDcmVhdGUsIERyb3AsIENvcHksIENS
RUFUQUJMRT4KIyAxMTU1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIK
LSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0QzogKGNvbnN0IGNo
YXIgKiljc3RyaW5nOwoKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldEM6IChjb25zdCBjaGFyICop
Y3N0cmluZzsKCi0gX0lfVXNpbmc7Ci0gKGNvbnN0IGNoYXIgKilnZXRDOwotICh2b2lkKWNhdEM6
IChjb25zdCBjaGFyICopY3N0cmluZzsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA2OQoKCi0gKHVuc2ln
bmVkKWdldENvdW50OwpAZW5kCgpAcHJvdG9jb2wgTGlzdFNodWZmbGVyIDxDcmVhdGUsIERyb3As
IENSRUFUQUJMRT4KIyAxMTc2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMu
aCIKLSBfSV9DcmVhdGluZzsKCgotIHNldFVuaWZvcm1SYW5kb206IGRpc3Q7CgoKCisgY3JlYXRl
OiAoaWQgPFpvbmU+KWFab25lIHNldFVuaWZvcm1SYW5kb206IGRpc3Q7CgotIF9JX1VzaW5nOwoK
LSBzaHVmZmxlV2hvbGVMaXN0OiBsaXN0OwoKCgotIHNodWZmbGVQYXJ0aWFsTGlzdDogbGlzdCBO
dW06ICh1bnNpZ25lZCludW07CkBlbmQKCkBwcm90b2NvbCBQZXJtdXRhdGlvbkl0ZW0gPENyZWF0
ZSwgUkVUVVJOQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRJdGVtOiBpdGVtOwotIHNldFBv
c2l0aW9uOiAodW5zaWduZWQpcG9zaXRpb247Ci0gX0lfVXNpbmc7Ci0gZ2V0SXRlbTsKLSAodW5z
aWduZWQpZ2V0UG9zaXRpb247CkBlbmQKCkBwcm90b2NvbCBQZXJtdXRhdGlvbiA8Q29sbGVjdGlv
biwgQ3JlYXRlLCBBcnJheSwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRD
b2xsZWN0aW9uOiAoaWQgPENvbGxlY3Rpb24+KWNvbGxlY3Rpb247Ci0gc2V0TGFzdFBlcm11dGF0
aW9uOiAoaWQgPFBlcm11dGF0aW9uPilwZXJtdXRhdGlvbjsKLSBzZXRVbmlmb3JtUmFuZG9tOiBy
bmQ7CkBlbmQKCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zL3R5cGVz
LmgiIDEKZXh0ZXJuIHZvaWQgKl9jb2xsZWN0aW9uc19bXTsKCmV4dGVybiBpZCBPZmZzZXRzOwpl
eHRlcm4gaWQgRm9yRWFjaDsKZXh0ZXJuIGlkIEZvckVhY2hLZXk7CmV4dGVybiBpZCBJbmRleDsK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAg
ICAgICAgICAgICAgIFBhZ2UgICA3MAoKCmV4dGVybiBpZCBQZXJtdXRlZEluZGV4OwpleHRlcm4g
aWQgQ29sbGVjdGlvbjsKZXh0ZXJuIGlkIERlZmF1bHRNZW1iZXI7CmV4dGVybiBpZCBNZW1iZXJC
bG9jazsKZXh0ZXJuIGlkIEFycmF5OwpleHRlcm4gaWQgTGlzdEluZGV4OwpleHRlcm4gaWQgTGlz
dDsKZXh0ZXJuIGlkIENvbXBhcmVGdW5jdGlvbjsKZXh0ZXJuIGlkIEtleWVkQ29sbGVjdGlvbjsK
ZXh0ZXJuIGlkIEtleWVkQ29sbGVjdGlvbkluZGV4OwpleHRlcm4gaWQgTWVtYmVyU2xvdDsKZXh0
ZXJuIGlkIF9TZXQ7CmV4dGVybiBpZCBTZXQ7CmV4dGVybiBpZCBPcmRlcmVkU2V0OwpleHRlcm4g
aWQgTWFwSW5kZXg7CmV4dGVybiBpZCBNYXA7CmV4dGVybiBpZCBPdXRwdXRTdHJlYW07CmV4dGVy
biBpZCBJbnB1dFN0cmVhbTsKZXh0ZXJuIGlkIEFyY2hpdmVyS2V5d29yZDsKZXh0ZXJuIGlkIEFy
Y2hpdmVyQXJyYXk7CmV4dGVybiBpZCBBcmNoaXZlclZhbHVlOwpleHRlcm4gaWQgQXJjaGl2ZXJQ
YWlyOwpleHRlcm4gaWQgQXJjaGl2ZXJMaXN0OwpleHRlcm4gaWQgQXJjaGl2ZXJRdW90ZWQ7CmV4
dGVybiBpZCBTdHJpbmc7CmV4dGVybiBpZCBMaXN0U2h1ZmZsZXI7CmV4dGVybiBpZCBQZXJtdXRh
dGlvbkl0ZW07CmV4dGVybiBpZCBQZXJtdXRhdGlvbjsKIyAxMjIxICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvY29sbGVjdGlvbnMuaCIgMgojIDI3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
YWN0aXZpdHkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIg
MQojIDI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMgoKQHByb3RvY29s
IERlZmF1bHRPcmRlcgojIDc1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIK
LSBfSV9DcmVhdGluZzsKLSBfSV9TZXR0aW5nOwotIHNldERlZmF1bHRPcmRlcjogKGlkIDxTeW1i
b2w+KWFTeW1ib2w7Ci0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdldERlZmF1bHRPcmRlcjsK
QGVuZAoKCkBwcm90b2NvbCBBY3Rpdml0eSA8RGVmaW5lZE9iamVjdCwgRHJvcCwgUkVUVVJOQUJM
RT4KIyAxMjYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5n
OwoKCgoKCi0gKGlkIDxTeW1ib2w+KXJ1bjsKCgoKLSAodm9pZClzdG9wOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAg
UGFnZSAgIDcxCgoKCgoKCgoKCi0gKHZvaWQpdGVybWluYXRlOwoKCgoKLSAoaWQgPFN5bWJvbD4p
bmV4dEFjdGlvbjsKCgotIChpZCA8U3ltYm9sPilzdGVwQWN0aW9uOwoKCgoKLSAoaWQgPFN5bWJv
bD4pZ2V0U3RhdHVzOwojIDE2NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5Lmgi
Ci0gKGlkIDxTeW1ib2w+KWdldEhvbGRUeXBlOwoKCi0gZ2V0QWN0aW9uOwoKCi0gZ2V0QWN0aW9u
VHlwZTsKCgotICh2b2lkKXNldE93bmVyQWN0aXZpdHk6IG93bmVyQWN0aXZpdHk7CgoKLSBnZXRP
d25lckFjdGl2aXR5OwoKCi0gZ2V0U3ViYWN0aXZpdGllczsKCgotIGdldENvbnRyb2xsaW5nQWN0
aXZpdHk7CgoKLSBnZXRUb3BMZXZlbEFjdGl2aXR5OwoKCi0gZ2V0U3dhcm1BY3Rpdml0eTsKCgot
IGdldFNjaGVkdWxlQWN0aXZpdHk7CgoKLSBzZXRTZXJpYWxNb2RlOiAoQk9PTClzZXJpYWxNb2Rl
OwoKCi0gKEJPT0wpZ2V0U2VyaWFsTW9kZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA3MgoKCgoKLSAo
aWQgPEFjdGl2aXR5PilnZXRDdXJyZW50U3ViYWN0aXZpdHk7CkBlbmQKCgpleHRlcm4gaWQgPFN5
bWJvbD4gSW5pdGlhbGl6ZWQsIFJ1bm5pbmcsIEhvbGRpbmcsIFJlbGVhc2VkLCBTdG9wcGVkLAog
IFRlcm1pbmF0ZWQsIENvbXBsZXRlZDsKCkBwcm90b2NvbCBBY3Rpb24gPENyZWF0ZSwgRHJvcCwg
R2V0T3duZXI+CiMgMjQyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBf
SV9Vc2luZzsKLSAodm9pZClfcGVyZm9ybUFjdGlvbl86IChpZCA8QWN0aXZpdHk+KWFjdGl2aXR5
OwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQXJncwoKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSAodm9p
ZClzZXRBcmcxOiBhcmcxOwotICh2b2lkKXNldEFyZzI6IGFyZzI7Ci0gKHZvaWQpc2V0QXJnMzog
YXJnMzsKLSBfSV9Vc2luZzsKLSAodW5zaWduZWQpZ2V0TkFyZ3M7Ci0gZ2V0QXJnMTsKLSBnZXRB
cmcyOwotIGdldEFyZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uIDxBY3Rpb24sIFJFVFVSTkFC
TEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRDYWxsOiBmY2FsbDsKLSBfSV9TZXR0aW5nOwotIHNl
dEF1dG9Ecm9wOiAoQk9PTClhdXRvRHJvcDsKLSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIEFj
dGlvblRhcmdldAoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0VGFyZ2V0OiB0YXJnZXQ7Ci0g
X0lfVXNpbmc7Ci0gZ2V0VGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uU2VsZWN0b3IKCgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAg
ICAgICAgICAgICAgUGFnZSAgIDczCgoKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldE1lc3NhZ2VT
ZWxlY3RvcjogKFNFTClhU2VsOwotIF9JX1VzaW5nOwotIChTRUwpZ2V0TWVzc2FnZVNlbGVjdG9y
OwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uVG8gPEFjdGlvbiwgQWN0aW9uVGFyZ2V0LCBBY3Rpb25T
ZWxlY3RvciwgQWN0aW9uQXJncywgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9u
Rm9yRWFjaCA8QWN0aW9uVG8sIERlZmF1bHRPcmRlciwgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJv
dG9jb2wgQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzIDxBY3Rpb24sIEFjdGlvblRhcmdldCwgQWN0
aW9uU2VsZWN0b3IsIERlZmF1bHRPcmRlciwgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wg
RkFjdGlvbkZvckVhY2ggPEZBY3Rpb24sIEFjdGlvblRhcmdldCwgRGVmYXVsdE9yZGVyPgoKCkBl
bmQKCkBwcm90b2NvbCBGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXMgPEZBY3Rpb25Gb3JFYWNo
LCBSRVRVUk5BQkxFPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3Vz
IDxGQWN0aW9uRm9yRWFjaCwgUkVUVVJOQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9u
Q2FsbCA8QWN0aW9uLCBBY3Rpb25BcmdzLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0g
KHZvaWQpc2V0RnVuY3Rpb25Qb2ludGVyOiAoZnVuY190KWZwdHI7Ci0gX0lfVXNpbmc7Ci0gKGZ1
bmNfdClnZXRGdW5jdGlvblBvaW50ZXI7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25DaGFuZ2VkIDxB
Y3Rpb24sIFJFVFVSTkFCTEU+CgoKQGVuZAoKQHByb3RvY29sIEZBY3Rpb25DcmVhdGluZwoKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAgNzQKCgotIF9JX1VzaW5nOwotIChpZCA8RkFjdGlvbj4pY3JlYXRl
RkFjdGlvbjogKGlkIDxGQ2FsbD4pY2FsbDsKQGVuZAoKQHByb3RvY29sIEFjdGlvbkNyZWF0aW5n
Q2FsbAoKCgoKCgoKLSBfSV9Vc2luZzsKLSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNh
bGw6IChmdW5jX3QpZnB0cjsKLSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChm
dW5jX3QpZnB0ciA6IGFyZzE7Ci0gKGlkIDxBY3Rpb25DYWxsPiljcmVhdGVBY3Rpb25DYWxsOiAo
ZnVuY190KWZwdHIgOiBhcmcxIDogYXJnMjsKLSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlv
bkNhbGw6IChmdW5jX3QpZnB0ciA6IGFyZzEgOiBhcmcyIDogYXJnMzsKQGVuZAoKQHByb3RvY29s
IEFjdGlvbkNyZWF0aW5nVG8KIyAzODQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0
eS5oIgotIF9JX1VzaW5nOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQg
bWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJn
ZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMTsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVBY3Rp
b25UbzogdGFyZ2V0IG1lc3NhZ2U6IChTRUwpYVNlbCA6IGFyZzEgOiBhcmcyOwotIChpZCA8QWN0
aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMSA6
IGFyZzIgOiBhcmczOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRpbmdGb3JFYWNoCiMgNDAy
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKLSAoaWQg
PEFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3Vz
OiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwoKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0
ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7Ci0gKGlkIDxBY3Rpb25G
b3JFYWNoPiljcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDog
YXJnMTsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBt
ZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMjsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNy
ZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJn
MiA6IGFyZzM7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSGV0ZXJvZ2Vu
ZW91cwoKCgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM+
KWNyZWF0ZUZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNh
bGw+KWNhbGw7CkBlbmQKCkBwcm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVv
dXMKCgoKCgotIF9JX1VzaW5nOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
IFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDc1CgoKLSAoaWQgPEZBY3Rp
b25Gb3JFYWNoSG9tb2dlbmVvdXM+KWNyZWF0ZUZBY3Rpb25Gb3JFYWNoSG9tb2dlbmVvdXM6IHRh
cmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRp
bmcgPEZBY3Rpb25DcmVhdGluZywgQWN0aW9uQ3JlYXRpbmdDYWxsLCBBY3Rpb25DcmVhdGluZ1Rv
LCBBY3Rpb25DcmVhdGluZ0ZvckVhY2gsIEZBY3Rpb25DcmVhdGluZ0ZvckVhY2hIZXRlcm9nZW5l
b3VzLCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXM+CiMgNDYyICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKCgoKCi0gY3JlYXRlQWN0aW9u
OiBhbkFjdGlvblR5cGU7CgpAZW5kCgoKZXh0ZXJuIGlkIDxTeW1ib2w+IENvbmN1cnJlbnQsIFNl
cXVlbnRpYWwsIFJhbmRvbWl6ZWQ7CiMgNDkzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHRpbWV2YWxfdDsKCgoKQHByb3RvY29sIEFj
dGl2aXR5SW5kZXggPEluZGV4LCBSRVRVUk5BQkxFPgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1i
b2w+KWdldEhvbGRUeXBlOwotIChpZCA8QWN0aW9uPiluZXh0QWN0aW9uOiAoaWQgKilzdGF0dXM7
CkBlbmQKCgpleHRlcm4gaWQgPFN5bWJvbD4gSG9sZFN0YXJ0LCBIb2xkRW5kOwoKQHByb3RvY29s
IEFjdGlvblR5cGUKIyA1MzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgot
IF9JX1VzaW5nOwojIDU1MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0g
KGlkIDxBY3Rpdml0eT4pYWN0aXZhdGVJbjogc3dhcm1Db250ZXh0OwpAZW5kCgpAcHJvdG9jb2wg
U3luY2hyb25pemF0aW9uVHlwZQojIDU2OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2
aXR5LmgiCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0U3luY2hyb25pemF0aW9uVHlwZTogYVNj
aGVkdWxlVHlwZTsKCi0gX0lfVXNpbmc7Ci0gZ2V0U3luY2hyb25pemF0aW9uVHlwZTsKQGVuZAoK
QHByb3RvY29sIEF1dG9Ecm9wCiMgNTk2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZp
dHkuaCIKLSBfSV9DcmVhdGluZzsKLSBzZXRBdXRvRHJvcDogKEJPT0wpYXV0b0Ryb3A7Ci0gX0lf
VXNpbmc7Ci0gKEJPT0wpZ2V0QXV0b0Ryb3A7CkBlbmQKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNzYK
CgpAcHJvdG9jb2wgQ29tcG91bmRBY3Rpb24gPEFjdGlvblR5cGUsIENvbGxlY3Rpb24sIEF1dG9E
cm9wLCBEZWZhdWx0T3JkZXI+CiMgNjEzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZp
dHkuaCIKQGVuZAoKQHByb3RvY29sIEFjdGlvbkdyb3VwIDxDb21wb3VuZEFjdGlvbiwgQWN0aW9u
Q3JlYXRpbmcsIERlZmF1bHRPcmRlciwgQ1JFQVRBQkxFPgojIDYzNCAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2FjdGl2aXR5LmgiCkBlbmQKCkBwcm90b2NvbCBBY3Rpb25Db25jdXJyZW50IDxB
Y3Rpb24sIFJFVFVSTkFCTEU+Ci0gX0lfVXNpbmc7CgoKLSAoaWQgPEFjdGlvbkdyb3VwPilnZXRD
b25jdXJyZW50R3JvdXA7CkBlbmQKCkBwcm90b2NvbCBSZWxhdGl2ZVRpbWUKCgoKCgoKLSBfSV9T
ZXR0aW5nOwotIHNldFJlbGF0aXZlVGltZTogKEJPT0wpcmVsYXRpdmVUaW1lOwotIF9JX1VzaW5n
OwotIChCT09MKWdldFJlbGF0aXZlVGltZTsKQGVuZAoKQHByb3RvY29sIFJlcGVhdEludGVydmFs
CiMgNjcxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5n
OwotIHNldFJlcGVhdEludGVydmFsOiAodGltZXZhbF90KXJlcGVhdEludGVydmFsOwotIF9JX1Vz
aW5nOwotICh0aW1ldmFsX3QpZ2V0UmVwZWF0SW50ZXJ2YWw7CkBlbmQKCkBwcm90b2NvbCBDb25j
dXJyZW50R3JvdXBUeXBlCiMgNzA2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHku
aCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldENvbmN1cnJlbnRHcm91cFR5cGU6IGdyb3VwVHlw
ZTsKLSBfSV9Vc2luZzsKLSBnZXRDb25jdXJyZW50R3JvdXBUeXBlOwpAZW5kCgpAcHJvdG9jb2wg
U2luZ2xldG9uR3JvdXBzCiMgNzI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHku
aCIKLSBfSV9TZXR0aW5nOwotICh2b2lkKXNldFNpbmdsZXRvbkdyb3VwczogKEJPT0wpc2luZ2xl
dG9uR3JvdXBzOwotIF9JX1VzaW5nOwotIChCT09MKWdldFNpbmdsZXRvbkdyb3VwczsKQGVuZAoK
QHByb3RvY29sIFNjaGVkdWxlIDxNYXAsIENvbXBvdW5kQWN0aW9uLCBBY3Rpb25DcmVhdGluZywg
UmVsYXRpdmVUaW1lLCBSZXBlYXRJbnRlcnZhbCwgQ29uY3VycmVudEdyb3VwVHlwZSwgU2luZ2xl
dG9uR3JvdXBzLCBDUkVBVEFCTEU+CiMgNzYzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0
aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgNzcKCgorIGNyZWF0
ZTogKGlkIDxab25lPilhWm9uZSBzZXRSZXBlYXRJbnRlcnZhbDogKHRpbWV2YWxfdClycHRJbnRl
cnZhbDsKCgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBzZXRBdXRvRHJvcDogKEJPT0wpYXV0
b0Ryb3A7CgoKCi0gc2V0S2VlcEVtcHR5RmxhZzogKEJPT0wpa2VlcEVtcHR5RmxhZzsKLSBfSV9V
c2luZzsKLSBhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbjogYW5BY3Rpb25UeXBlOwoK
LSAoaWQgPEZBY3Rpb24+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlRkFjdGlvbjogKGlkIDxG
Q2FsbD4pY2FsbDsKLSAoaWQgPEFjdGlvbkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRl
QWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOwotIChpZCA8QWN0aW9uQ2FsbD4pYXQ6ICh0aW1ldmFs
X3QpdFZhbCBjcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHI6YXJnMTsKLSAoaWQgPEFjdGlv
bkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRy
OmFyZzE6YXJnMjsKLSAoaWQgPEFjdGlvbkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRl
QWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEFjdGlvblRv
PilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNF
TClhU2VsOwotIChpZCA8QWN0aW9uVG8+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9u
VG86IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw6YXJnMTsKLSAoaWQgPEFjdGlvblRvPilhdDog
KHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2Vs
OmFyZzE6YXJnMjsKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFj
dGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQg
PEFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rp
b25Gb3JFYWNoSG9tb2dlbmVvdXM6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7CgotIChpZCA8
QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0
YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1l
dmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2Vs
OmFyZzE7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFj
dGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw6YXJnMTphcmcyOwotIChpZCA8
QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0
YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEZBY3Rpb25G
b3JFYWNoSGV0ZXJvZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9y
RWFjaEhldGVyb2dlbmVvdXM6IHRhcmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwotIChpZCA8
RkFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0
aW9uRm9yRWFjaEhvbW9nZW5lb3VzOiB0YXJnZXQgY2FsbDogKGlkIDxGQ2FsbD4pY2FsbDsKCgoK
LSByZW1vdmU6IGFuQWN0aW9uOwoKCi0gKGlkIDxBY3Rpb25Hcm91cD4paW5zZXJ0R3JvdXA6ICh0
aW1ldmFsX3QpdFZhbDsKQGVuZAoKQHByb3RvY29sIFNjaGVkdWxlQWN0aXZpdHkgPEFjdGl2aXR5
LCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotICh0aW1ldmFsX3Qp
Z2V0Q3VycmVudFRpbWU7CgoKLSBzdGVwVW50aWw6ICh0aW1ldmFsX3QpdFZhbDsKQGVuZAoKQHBy
b3RvY29sIFN3YXJtQWN0aXZpdHkgPFNjaGVkdWxlQWN0aXZpdHksIFJFVFVSTkFCTEU+CgoKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAgNzgKCgotIF9JX1VzaW5nOwoKLSBnZXRTd2FybTsKCi0gKGlkIDxT
Y2hlZHVsZT4pZ2V0U3luY2hyb25pemF0aW9uU2NoZWR1bGU7CkBlbmQKCkBwcm90b2NvbCBGb3JF
YWNoQWN0aXZpdHkgPEFjdGl2aXR5LCBSRVRVUk5BQkxFPgoKCgotIF9JX1VzaW5nOwotIGdldEN1
cnJlbnRNZW1iZXI7CkBlbmQKCkBwcm90b2NvbCBTd2FybVByb2Nlc3MgPEFjdGlvblR5cGUsIFpv
bmUsIFN5bmNocm9uaXphdGlvblR5cGU+CiMgODUwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
YWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKCgoKCgoKCi0gc2V0SW50ZXJuYWxab25lVHlwZTog
YVpvbmVUeXBlOwoKLSBfSV9Vc2luZzsKCgoKCgotIGdldEludGVybmFsWm9uZTsKCgoKCgotIChp
ZCA8U3dhcm1BY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQKIyA5MjQgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpAcHJvdG9jb2wgR2V0U3ViYWN0aXZpdHlBY3Rpb24KCgoK
LSBfSV9Vc2luZzsKLSBfZ2V0U3ViYWN0aXZpdHlBY3Rpb25fOwpAZW5kCgoKCgoKZXh0ZXJuIGlk
IF9hY3Rpdml0eV9jdXJyZW50OwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA3OQoKCgoKZXh0ZXJuIGlk
IF9hY3Rpdml0eV9jb250ZXh0X2Vycm9yIChjb25zdCBjaGFyICptYWNyb05hbWUpOwoKCkBwcm90
b2NvbCBDb25jdXJyZW50R3JvdXAgPEFjdGlvbkdyb3VwLCBSRVRVUk5BQkxFPgoKCi0gX0lfVXNp
bmc7Ci0gKHZvaWQpX3NldEFjdGlvbkNvbmN1cnJlbnRfOiBhY3Rpb247Ci0gX2dldEVtcHR5QWN0
aW9uQ29uY3VycmVudF87CkBlbmQKCkBwcm90b2NvbCBDb25jdXJyZW50U2NoZWR1bGUgPENvbmN1
cnJlbnRHcm91cCwgU2NoZWR1bGUsIENSRUFUQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgQWN0aXZh
dGlvbk9yZGVyIDxBY3Rpb25Hcm91cCwgUkVUVVJOQUJMRT4KCgotIF9JX1VzaW5nOwoKLSAodm9p
ZClhZGRMYXN0OiBtZXJnZUFjdGlvbjsKCgoKLSByZW1vdmU6IG1lcmdlQWN0aW9uOwoKQGVuZAoK
CmV4dGVybiBpZCA8RXJyb3I+IEludmFsaWRTd2FybVpvbmU7CgoKCmV4dGVybiBpZCBfYWN0aXZp
dHlfem9uZTsKIyA5ODUgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpleHRl
cm4gQk9PTCAoKl9hY3Rpdml0eV90cmFjZSkgKGlkKTsKIyA5OTggIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9hY3Rpdml0eS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0
eS90eXBlcy5oIiAxCmV4dGVybiB2b2lkICpfYWN0aXZpdHlfW107CgpleHRlcm4gaWQgRGVmYXVs
dE9yZGVyOwpleHRlcm4gaWQgQWN0aXZpdHk7CmV4dGVybiBpZCBBY3Rpb247CmV4dGVybiBpZCBB
Y3Rpb25BcmdzOwpleHRlcm4gaWQgRkFjdGlvbjsKZXh0ZXJuIGlkIEFjdGlvblRhcmdldDsKZXh0
ZXJuIGlkIEFjdGlvblNlbGVjdG9yOwpleHRlcm4gaWQgQWN0aW9uVG87CmV4dGVybiBpZCBBY3Rp
b25Gb3JFYWNoOwpleHRlcm4gaWQgQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQg
RkFjdGlvbkZvckVhY2g7CmV4dGVybiBpZCBGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM7CmV4
dGVybiBpZCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDgw
CgoKZXh0ZXJuIGlkIEFjdGlvbkNhbGw7CmV4dGVybiBpZCBBY3Rpb25DaGFuZ2VkOwpleHRlcm4g
aWQgRkFjdGlvbkNyZWF0aW5nOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRpbmdDYWxsOwpleHRlcm4g
aWQgQWN0aW9uQ3JlYXRpbmdUbzsKZXh0ZXJuIGlkIEFjdGlvbkNyZWF0aW5nRm9yRWFjaDsKZXh0
ZXJuIGlkIEZBY3Rpb25DcmVhdGluZ0ZvckVhY2hIZXRlcm9nZW5lb3VzOwpleHRlcm4gaWQgRkFj
dGlvbkNyZWF0aW5nRm9yRWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRpbmc7
CmV4dGVybiBpZCBBY3Rpdml0eUluZGV4OwpleHRlcm4gaWQgQWN0aW9uVHlwZTsKZXh0ZXJuIGlk
IFN5bmNocm9uaXphdGlvblR5cGU7CmV4dGVybiBpZCBBdXRvRHJvcDsKZXh0ZXJuIGlkIENvbXBv
dW5kQWN0aW9uOwpleHRlcm4gaWQgQWN0aW9uR3JvdXA7CmV4dGVybiBpZCBBY3Rpb25Db25jdXJy
ZW50OwpleHRlcm4gaWQgUmVsYXRpdmVUaW1lOwpleHRlcm4gaWQgUmVwZWF0SW50ZXJ2YWw7CmV4
dGVybiBpZCBDb25jdXJyZW50R3JvdXBUeXBlOwpleHRlcm4gaWQgU2luZ2xldG9uR3JvdXBzOwpl
eHRlcm4gaWQgU2NoZWR1bGU7CmV4dGVybiBpZCBTY2hlZHVsZUFjdGl2aXR5OwpleHRlcm4gaWQg
U3dhcm1BY3Rpdml0eTsKZXh0ZXJuIGlkIEZvckVhY2hBY3Rpdml0eTsKZXh0ZXJuIGlkIFN3YXJt
UHJvY2VzczsKZXh0ZXJuIGlkIEdldFN1YmFjdGl2aXR5QWN0aW9uOwpleHRlcm4gaWQgQ29uY3Vy
cmVudEdyb3VwOwpleHRlcm4gaWQgQ29uY3VycmVudFNjaGVkdWxlOwpleHRlcm4gaWQgQWN0aXZh
dGlvbk9yZGVyOwojIDk5OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIK
IyAyMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMgojIDEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDIzICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAyCgpAcHJvdG9jb2wgU3dhcm1PYmplY3QgPENyZWF0ZSwg
RHJvcCwgQ1JFQVRBQkxFPgojIDM5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgotIF9JX1VzaW5nOwoKCgotIGdldFByb2JlTWFwOwoKCgotIGdldENvbXBsZXRlUHJvYmVN
YXA7CgoKCi0gZ2V0UHJvYmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoK
Ci0gZ2V0UHJvYmVGb3JNZXNzYWdlOiAoY29uc3QgY2hhciAqKWFNZXNzYWdlOwpAZW5kCgpAcHJv
dG9jb2wgUHJvYmVDb25maWcKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQ
cGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA4MQoKCgoKCgoKLSBfSV9Vc2lu
ZzsKLSBzZXRPYmplY3RUb05vdGlmeTogYW5PYmplY3Q7Ci0gZ2V0T2JqZWN0VG9Ob3RpZnk7CkBl
bmQKCkBwcm90b2NvbCBQcm9iZSA8U3dhcm1PYmplY3QsIFByb2JlQ29uZmlnPgojIDgxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0
UHJvYmVkQ2xhc3M6IChDbGFzcyljbGFzczsKCi0gc2V0UHJvYmVkT2JqZWN0OiBvYmplY3Q7Ci0g
X0lfU2V0dGluZzsKCgoKLSBzZXRTYWZldHk7CgoKCgotIHVuc2V0U2FmZXR5OwoKLSBfSV9Vc2lu
ZzsKCgoKCgotIGNsb25lOiAoaWQgPFpvbmU+KWFab25lOwoKCgotIChDbGFzcylnZXRQcm9iZWRD
bGFzczsKCgoKCi0gKGNvbnN0IGNoYXIgKilnZXRQcm9iZWRUeXBlOwpAZW5kCgpAcHJvdG9jb2wg
VmFyUHJvYmUgPFByb2JlLCBDUkVBVEFCTEU+CgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAg
ICAgICAgUGFnZSAgIDgyCgoKCgoKLSBzZXRQcm9iZWRWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilh
VmFyaWFibGU7CgotIF9JX1NldHRpbmc7CgoKCgoKCgotIHNldE5vbkludGVyYWN0aXZlOwoKCgoK
CgotIHNldFN0cmluZ1JldHVyblR5cGU6IHJldHVyblR5cGU7CgoKCi0gc2V0RmxvYXRGb3JtYXQ6
IChjb25zdCBjaGFyICopZm9ybWF0OwoKLSBfSV9Vc2luZzsKCgotIChjb25zdCBjaGFyICopZ2V0
UHJvYmVkVmFyaWFibGU7CgoKCi0gKEJPT0wpZ2V0SW50ZXJhY3RpdmVGbGFnOwoKCi0gKHZvaWQg
Kilwcm9iZVJhdzogYW5PYmplY3Q7CgoKCi0gKHZvaWQgKilwcm9iZUFzUG9pbnRlcjogYW5PYmpl
Y3Q7CgoKLSBwcm9iZU9iamVjdDogYW5PYmplY3Q7CgoKCi0gKGludClwcm9iZUFzSW50OiBhbk9i
amVjdDsKCgoKLSAoZG91YmxlKXByb2JlQXNEb3VibGU6IGFuT2JqZWN0OwoKCgotIChjb25zdCBj
aGFyICopcHJvYmVBc1N0cmluZzogYW5PYmplY3QgQnVmZmVyOiAoY2hhciAqKWJ1ZmZlcjsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAg
ICAgICAgICAgIFBhZ2UgICA4MwoKCgoKCi0gKGlkIDxTdHJpbmc+KXByb2JlQXNTdHJpbmc6IGFu
T2JqZWN0OwoKCgoKCgotIChjb25zdCBjaGFyICopcHJvYmVBc1N0cmluZzogYW5PYmplY3QKICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXI6IChjaGFyICopYnVmCiAgICAgICAgICAgIHdpdGhG
dWxsUHJlY2lzaW9uOiAoQk9PTClwcmVjaXNpb247CgoKLSAodW5zaWduZWQpZ2V0UmFuazsKCgot
IChjb25zdCBjaGFyICopZ2V0QmFzZVR5cGU7CgoKCi0gKHVuc2lnbmVkICopZ2V0RGltczsKCgoK
LSBpdGVyYXRlQXNEb3VibGU6IGFuT2JqZWN0IHVzaW5nOiAodm9pZCAoKikgKHVuc2lnbmVkIHJh
bmssIHVuc2lnbmVkICp2ZWMsIGRvdWJsZSB2YWwpKWZ1bmM7CgoKCi0gaXRlcmF0ZUFzSW50ZWdl
cjogYW5PYmplY3QgdXNpbmc6ICh2b2lkICgqKSAodW5zaWduZWQgcmFuaywgdW5zaWduZWQgKnZl
YywgaW50IHZhbCkpZnVuYzsKCgoKLSAodm9pZClzZXREYXRhOiBhbk9iamVjdCBUbzogKHZvaWQg
KiluZXdWYWx1ZTsKCgoKCgoKCi0gKEJPT0wpc2V0RGF0YTogYW5PYmplY3QgVG9TdHJpbmc6IChj
b25zdCBjaGFyICopczsKCgoKLSAodm9pZClzZXREYXRhOiBhbk9iamVjdCBUb0RvdWJsZTogKGRv
dWJsZSl2YWw7CgpleHRlcm4gaWQgPFN5bWJvbD4gRGVmYXVsdFN0cmluZywgQ2hhclN0cmluZywg
SW50U3RyaW5nOwpAZW5kCgpAcHJvdG9jb2wgTWVzc2FnZVByb2JlIDxQcm9iZSwgQ1JFQVRBQkxF
PgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJt
Lm1pICAgICAgICAgICAgICAgIFBhZ2UgICA4NAoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKLSBzZXRQ
cm9iZWRTZWxlY3RvcjogKFNFTClhU2VsOwoKCgoKCi0gc2V0UHJvYmVkTWV0aG9kTmFtZTogKGNv
bnN0IGNoYXIgKiltZXRob2ROYW1lOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFBy
b2JlZFNlbGVjdG9yOiAoU0VMKWFTZWw7CgotIF9JX1NldHRpbmc7CgoKCgotIHNldEhpZGVSZXN1
bHQ6IChCT09MKXZhbDsKCi0gX0lfVXNpbmc7CgoKLSAoQk9PTClpc1Jlc3VsdElkOwoKCgotIChC
T09MKWlzQXJndW1lbnRJZDogKHVuc2lnbmVkKXdoaWNoOwoKCgotIChjb25zdCBjaGFyICopZ2V0
UHJvYmVkTWVzc2FnZTsKCi0gKHVuc2lnbmVkKWdldEFyZ0NvdW50OwoKCi0gKHZhbF90KWdldEFy
ZzogKHVuc2lnbmVkKXdoaWNoOwoKCgotIChjb25zdCBjaGFyICopZ2V0QXJnTmFtZTogKHVuc2ln
bmVkKXdoaWNoOwoKCi0gKEJPT0wpZ2V0SGlkZVJlc3VsdDsKCgoKLSBzZXRBcmc6ICh1bnNpZ25l
ZCl3aGljaCBUb1N0cmluZzogKGNvbnN0IGNoYXIgKil3aGF0OwoKCgoKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBh
Z2UgICA4NQoKCgotIHNldEFyZzogKHVuc2lnbmVkKXdoaWNoIFRvVW5zaWduZWQ6ICh1bnNpZ25l
ZCl4OwoKCgotICh2YWxfdClkeW5hbWljQ2FsbE9uOiB0YXJnZXQ7CgoKCgotIChkb3VibGUpZG91
YmxlRHluYW1pY0NhbGxPbjogdGFyZ2V0OwoKCgoKLSAobG9uZylsb25nRHluYW1pY0NhbGxPbjog
dGFyZ2V0OwoKCgoKLSAoY29uc3QgY2hhciAqKXN0cmluZ0R5bmFtaWNDYWxsT246IHRhcmdldDsK
CgoKCi0gb2JqZWN0RHluYW1pY0NhbGxPbjogdGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVN
YXAgPFN3YXJtT2JqZWN0LCBQcm9iZUNvbmZpZywgQ1JFQVRBQkxFPgojIDMzMSAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIKLSBfSV9DcmVhdGluZzsKCgoKLSBzZXRQcm9i
ZWRDbGFzczogKENsYXNzKWNsYXNzOwoKLSBzZXRQcm9iZWRPYmplY3Q6IG9iamVjdDsKLSBfSV9V
c2luZzsKCi0gKHVuc2lnbmVkKWdldENvdW50OwoKCgotIChDbGFzcylnZXRQcm9iZWRDbGFzczsK
CgoKCi0gYWRkUHJvYmU6IChpZCA8UHJvYmU+KWFQcm9iZTsKCgoKCi0gYWRkUHJvYmVNYXA6IGFQ
cm9iZU1hcDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVs
U3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDg2CgoKCgoKLSBkcm9wUHJvYmVGb3JWYXJp
YWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoKCgotIGRyb3BQcm9iZUZvck1lc3NhZ2U6
IChjb25zdCBjaGFyICopYU1lc3NhZ2U7CgoKCgoKLSBkcm9wUHJvYmVNYXA6IGFQcm9iZU1hcDsK
CgoKLSAoaWQgPEluZGV4PiliZWdpbjogKGlkIDxab25lPilhWm9uZTsKCgoKCgoKLSBjbG9uZTog
KGlkIDxab25lPilhWm9uZTsKCkBlbmQKCkBwcm90b2NvbCBTd2FybSA8U3dhcm1Qcm9jZXNzLCBD
UkVBVEFCTEU+CgoKCgoKLSBfSV9Vc2luZzsKCgotIGJ1aWxkT2JqZWN0czsKCgotIGJ1aWxkQWN0
aW9uczsKIyA0MDggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gKGlk
IDxBY3Rpdml0eT4pYWN0aXZhdGVJbjogc3dhcm1Db250ZXh0OwoKCgotIChpZCA8UHJvYmVNYXA+
KWdldFByb2JlTWFwOwoKCi0gKGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVQcm9iZU1hcDsKCgot
IChpZCA8VmFyUHJvYmU+KWdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlh
YmxlOwpAZW5kCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVs
U3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDg3CgoKQHByb3RvY29sIERlZmF1bHRQcm9i
ZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4KCgoKCgoKCkBlbmQKCkBwcm90b2NvbCBDdXN0b21Q
cm9iZU1hcCA8UHJvYmVNYXAsIENSRUFUQUJMRT4KIyA0NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgoKCgoKKyBjcmVhdGU6IChpZCA8Wm9u
ZT4pYVpvbmUgZm9yQ2xhc3M6IChDbGFzcylhQ2xhc3Mgd2l0aElkZW50aWZpZXJzOiAoY29uc3Qg
Y2hhciAqKXZhcnMsIC4uLjsKLSBfSV9TZXR0aW5nOwoKCi0gYWRkUHJvYmVzRm9yQ2xhc3M6IChD
bGFzcykgYUNsYXNzCiAgICB3aXRoSWRlbnRpZmllcnM6IChjb25zdCBjaGFyICopdmFycywgLi4u
OwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgRW1wdHlQcm9iZU1hcCA8Q3VzdG9tUHJvYmVN
YXAsIENSRUFUQUJMRT4KCgoKCi0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZTogKGlkIDxab25lPilh
Wm9uZSBmb3JDbGFzczogKENsYXNzKWFDbGFzczsKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlUHJv
YmVNYXAgPFByb2JlTWFwLCBDUkVBVEFCTEU+CgoKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQ29tcGxl
dGVWYXJNYXAgPFByb2JlTWFwLCBDUkVBVEFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29sIFByb2Jl
TGlicmFyeSA8Q3JlYXRlLCBEcm9wLCBQcm9iZUNvbmZpZywgQ1JFQVRBQkxFPgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAg
ICAgUGFnZSAgIDg4CgoKIyA0OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNl
LmgiCi0gX0lfVXNpbmc7CiMgNTA3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIgotIHNldERpc3BsYXlQcmVjaXNpb246ICh1bnNpZ25lZCluU2lnRGlzcGxheTsKCgoKLSAo
dW5zaWduZWQpZ2V0RGlzcGxheVByZWNpc2lvbjsKCgoKCgoKCi0gc2V0U2F2ZWRQcmVjaXNpb246
ICh1bnNpZ25lZCluU2lnU2F2ZWQ7CgoKCi0gKHVuc2lnbmVkKWdldFNhdmVkUHJlY2lzaW9uOwoK
CgotIChCT09MKWlzUHJvYmVNYXBEZWZpbmVkRm9yOiAoQ2xhc3MpYUNsYXNzOwotIChCT09MKWlz
UHJvYmVNYXBEZWZpbmVkRm9yT2JqZWN0OiBhbk9iamVjdDsKCgoKCgoKLSAoaWQgPFByb2JlTWFw
PilnZXRQcm9iZU1hcEZvcjogKENsYXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9i
ZU1hcEZvck9iamVjdDogYW5PYmplY3Q7CgoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0
ZVByb2JlTWFwRm9yOiAoQ2xhc3MpYUNsYXNzOwotIChpZCA8UHJvYmVNYXA+KWdldENvbXBsZXRl
UHJvYmVNYXBGb3JPYmplY3Q6IGFuT2JqZWN0OwoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRDb21w
bGV0ZVZhck1hcEZvcjogKENsYXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0
ZVZhck1hcEZvck9iamVjdDogYW5PYmplY3Q7CgoKCgoKCi0gKGlkIDxWYXJQcm9iZT4pZ2V0UHJv
YmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyIGluQ2xhc3M6IChDbGFzcylhQ2xhc3M7
Ci0gKGlkIDxWYXJQcm9iZT4pZ2V0UHJvYmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFy
IGluT2JqZWN0OiBhbk9iamVjdDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDg5CgoKCgoKCi0gKGlk
IDxNZXNzYWdlUHJvYmU+KWdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2Fn
ZSBpbkNsYXNzOiAoQ2xhc3MpYUNsYXNzOwotIChpZCA8TWVzc2FnZVByb2JlPilnZXRQcm9iZUZv
ck1lc3NhZ2U6IChjb25zdCBjaGFyICopYU1lc3NhZ2UgaW5PYmplY3Q6IGFuT2JqZWN0OwoKCgoK
LSBzZXRQcm9iZU1hcDogKGlkIDxQcm9iZU1hcD4pYU1hcCBGb3I6IChDbGFzcylhQ2xhc3M7Ci0g
c2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+KWFNYXAgRm9yT2JqZWN0OiBhbk9iamVjdDsKCkBl
bmQKCgpleHRlcm4gaWQgPFByb2JlTGlicmFyeT4gcHJvYmVMaWJyYXJ5OwoKQHByb3RvY29sIEFj
dGl2aXR5Q29udHJvbCA8U3dhcm1PYmplY3QsIENSRUFUQUJMRT4KIyA1OTIgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwoK
CgoKCi0gKHZvaWQpYXR0YWNoVG9BY3Rpdml0eTogKGlkIDxTY2hlZHVsZUFjdGl2aXR5PilhbkFj
dGl2aXR5OwoKCgoKCgoKLSAoaWQgPFN5bWJvbD4pcnVuQWN0aXZpdHk7CgoKCgoKCi0gKGlkIDxT
eW1ib2w+KXN0b3BBY3Rpdml0eTsKCgoKCgoKCi0gKGlkIDxTeW1ib2w+KW5leHRBY3Rpb247CgoK
Ci0gKGlkIDxTeW1ib2w+KXN0ZXBBY3Rpb247CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgOTAKCgoKCgoK
Ci0gKGlkIDxTeW1ib2w+KXN0ZXBVbnRpbDogKHRpbWV2YWxfdClzdG9wVGltZTsKCgoKCgotICh2
b2lkKXVwZGF0ZVN0YXRlVmFyOwoKCi0gKGlkIDxTeW1ib2w+KWdldFN0YXR1czsKCgotICh2b2lk
KXRlcm1pbmF0ZTsKCgotIChpZCA8U2NoZWR1bGVBY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQK
CkBjbGFzcyBQcm9iZTsKQGNsYXNzIFZhclByb2JlOwpAY2xhc3MgTWVzc2FnZVByb2JlOwpAY2xh
c3MgUHJvYmVNYXA7CkBjbGFzcyBEZWZhdWx0UHJvYmVNYXA7CkBjbGFzcyBDdXN0b21Qcm9iZU1h
cDsKQGNsYXNzIEVtcHR5UHJvYmVNYXA7CkBjbGFzcyBDb21wbGV0ZVByb2JlTWFwOwpAY2xhc3Mg
Q29tcGxldGVWYXJNYXA7CkBjbGFzcyBQcm9iZUxpYnJhcnk7CkBjbGFzcyBBY3Rpdml0eUNvbnRy
b2w7CkBjbGFzcyBTd2FybTsKQGNsYXNzIFN3YXJtT2JqZWN0OwoKCmV4dGVybiBjb25zdCBjaGFy
ICpzd2FybV92ZXJzaW9uOwojIDcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNl
L1N3YXJtLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvU3dhcm1Q
cm9jZXNzLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5L1N3YXJt
UHJvY2Vzcy5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS9YQWN0aXZp
dHkuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvWEFjdGl2aXR5
LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DcmVhdGUuaCIgMQojIDEy
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIgojIDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDEKIyAxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai9EZWZDbGFzcy5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09i
amVjdC5oIiAxCiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmQ2xhc3Mu
aCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDEKIyAz
NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKIyAxICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzNSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDkxCgoKIyAxICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiIDEKIyAzNiAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL3Roci5oIiAxCiMgNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Ro
ci5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDQyICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90aHIuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9vYmpjL2V4dGVybnZhci5oIiAxCiMgNDMgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL3Roci5oIiAyCgoKCgpleHRlcm4gaW50IF9fb2JqY190aHJlYWRfZXhpdF9zdGF0
dXM7CiMgNTkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3Roci5oIgp0eXBlZGVmIHZv
aWQgKiBvYmpjX3RocmVhZF90OwoKCnN0cnVjdCBvYmpjX211dGV4CnsKICB2b2xhdGlsZSBvYmpj
X3RocmVhZF90IG93bmVyOwogIHZvbGF0aWxlIGludCBkZXB0aDsKICB2b2lkICogYmFja2VuZDsK
fTsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19tdXRleCAqb2JqY19tdXRleF90OwoKCnN0cnVjdCBvYmpj
X2NvbmRpdGlvbgp7CiAgdm9pZCAqIGJhY2tlbmQ7Cn07CnR5cGVkZWYgc3RydWN0IG9iamNfY29u
ZGl0aW9uICpvYmpjX2NvbmRpdGlvbl90OwoKCm9iamNfbXV0ZXhfdCBvYmpjX211dGV4X2FsbG9j
YXRlKHZvaWQpOwppbnQgb2JqY19tdXRleF9kZWFsbG9jYXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7
CmludCBvYmpjX211dGV4X2xvY2sob2JqY19tdXRleF90IG11dGV4KTsKaW50IG9iamNfbXV0ZXhf
dW5sb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBvYmpjX211dGV4X3RyeWxvY2sob2JqY19t
dXRleF90IG11dGV4KTsKCgpvYmpjX2NvbmRpdGlvbl90IG9iamNfY29uZGl0aW9uX2FsbG9jYXRl
KHZvaWQpOwppbnQgb2JqY19jb25kaXRpb25fZGVhbGxvY2F0ZShvYmpjX2NvbmRpdGlvbl90IGNv
bmRpdGlvbik7CmludCBvYmpjX2NvbmRpdGlvbl93YWl0KG9iamNfY29uZGl0aW9uX3QgY29uZGl0
aW9uLCBvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgb2JqY19jb25kaXRpb25fc2lnbmFsKG9iamNf
Y29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IG9iamNfY29uZGl0aW9uX2Jyb2FkY2FzdChvYmpj
X2NvbmRpdGlvbl90IGNvbmRpdGlvbik7CgoKb2JqY190aHJlYWRfdCBvYmpjX3RocmVhZF9kZXRh
Y2goU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QsIGlkIGFyZ3VtZW50KTsKdm9pZCBvYmpjX3RocmVh
ZF95aWVsZCh2b2lkKTsKaW50IG9iamNfdGhyZWFkX2V4aXQodm9pZCk7CmludCBvYmpjX3RocmVh
ZF9zZXRfcHJpb3JpdHkoaW50IHByaW9yaXR5KTsKaW50IG9iamNfdGhyZWFkX2dldF9wcmlvcml0
eSh2b2lkKTsKdm9pZCAqIG9iamNfdGhyZWFkX2dldF9kYXRhKHZvaWQpOwppbnQgb2JqY190aHJl
YWRfc2V0X2RhdGEodm9pZCAqdmFsdWUpOwpvYmpjX3RocmVhZF90IG9iamNfdGhyZWFkX2lkKHZv
aWQpOwojIDExMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAgOTIKCgp0eXBlZGVmIHZvaWQgKCpvYmpjX3RocmVhZF9jYWxsYmFjaykoKTsK
b2JqY190aHJlYWRfY2FsbGJhY2sgb2JqY19zZXRfdGhyZWFkX2NhbGxiYWNrKG9iamNfdGhyZWFk
X2NhbGxiYWNrIGZ1bmMpOwoKCmludCBfX29iamNfaW5pdF90aHJlYWRfc3lzdGVtKHZvaWQpOwpp
bnQgX19vYmpjX2ZpbmlfdGhyZWFkX3N5c3RlbSh2b2lkKTsKCgppbnQgX19vYmpjX211dGV4X2Fs
bG9jYXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBfX29iamNfbXV0ZXhfZGVhbGxvY2F0ZShv
YmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX211dGV4X2xvY2sob2JqY19tdXRleF90IG11
dGV4KTsKaW50IF9fb2JqY19tdXRleF90cnlsb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBf
X29iamNfbXV0ZXhfdW5sb2NrKG9iamNfbXV0ZXhfdCBtdXRleCk7CgoKaW50IF9fb2JqY19jb25k
aXRpb25fYWxsb2NhdGUob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgX19vYmpjX2Nv
bmRpdGlvbl9kZWFsbG9jYXRlKG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IF9fb2Jq
Y19jb25kaXRpb25fd2FpdChvYmpjX2NvbmRpdGlvbl90IGNvbmRpdGlvbiwgb2JqY19tdXRleF90
IG11dGV4KTsKaW50IF9fb2JqY19jb25kaXRpb25fYnJvYWRjYXN0KG9iamNfY29uZGl0aW9uX3Qg
Y29uZGl0aW9uKTsKaW50IF9fb2JqY19jb25kaXRpb25fc2lnbmFsKG9iamNfY29uZGl0aW9uX3Qg
Y29uZGl0aW9uKTsKCgpvYmpjX3RocmVhZF90IF9fb2JqY190aHJlYWRfZGV0YWNoKHZvaWQgKCpm
dW5jKSh2b2lkICphcmcpLCB2b2lkICphcmcpOwppbnQgX19vYmpjX3RocmVhZF9zZXRfcHJpb3Jp
dHkoaW50IHByaW9yaXR5KTsKaW50IF9fb2JqY190aHJlYWRfZ2V0X3ByaW9yaXR5KHZvaWQpOwp2
b2lkIF9fb2JqY190aHJlYWRfeWllbGQodm9pZCk7CmludCBfX29iamNfdGhyZWFkX2V4aXQodm9p
ZCk7Cm9iamNfdGhyZWFkX3QgX19vYmpjX3RocmVhZF9pZCh2b2lkKTsKaW50IF9fb2JqY190aHJl
YWRfc2V0X2RhdGEodm9pZCAqdmFsdWUpOwp2b2lkICogX19vYmpjX3RocmVhZF9nZXRfZGF0YSh2
b2lkKTsKIyAzNyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgoj
IDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9p
bmNsdWRlL3N0ZGlvLmgiIDEgMwojIDM4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9v
YmpjLWFwaS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDExMCAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkYXJnLmgiIDMK
dHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDM5ICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvb2JqYy9vYmpjLWFwaS5oIiAyCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9v
YmpjL2V4dGVybnZhci5oIiAxCiMgNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29i
amMtYXBpLmgiIDIKIyA1MCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGku
aCIKc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uCnsKICAgIFNFTCBuYW1lOwogICAgY2hh
ciAqdHlwZXM7Cn07CiMgMTA2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFw
aS5oIgpleHRlcm4gdm9pZCBvYmpjX2Vycm9yIChpZCBvYmplY3QsIGludCBjb2RlLCBjb25zdCBj
aGFyKiBmbXQsIC4uLik7CmV4dGVybiB2b2lkIG9iamNfdmVycm9yIChpZCBvYmplY3QsIGludCBj
b2RlLCBjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApOwp0eXBlZGVmIEJPT0wgKCpvYmpjX2Vy
cm9yX2hhbmRsZXIpIChpZCwgaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCk7
Cm9iamNfZXJyb3JfaGFuZGxlciBvYmpjX3NldF9lcnJvcl9oYW5kbGVyIChvYmpjX2Vycm9yX2hh
bmRsZXIgZnVuYyk7CiMgMTQ3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFw
aS5oIgpzdHJ1Y3Qgb2JqY19zdGF0aWNfaW5zdGFuY2VzCnsKICBjaGFyICpjbGFzc19uYW1lOwog
IGlkIGluc3RhbmNlc1swXTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQ
cGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgICA5MwoKCn07CiMgMTYyICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpj
X3N5bXRhYiB7CiAgdW5zaWduZWQgbG9uZyBzZWxfcmVmX2NudDsKICBTRUwgcmVmczsKICB1bnNp
Z25lZCBzaG9ydCBjbHNfZGVmX2NudDsKCiAgdW5zaWduZWQgc2hvcnQgY2F0X2RlZl9jbnQ7CgoK
CiAgdm9pZCAqZGVmc1sxXTsKCgoKCgp9IFN5bXRhYiwgKlN5bXRhYl90OwojIDE4OSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19t
b2R1bGUgewogIHVuc2lnbmVkIGxvbmcgdmVyc2lvbjsKICB1bnNpZ25lZCBsb25nIHNpemU7CiAg
Y29uc3QgY2hhciogbmFtZTsKCgoKICBTeW10YWJfdCBzeW10YWI7CgoKCgoKfSBNb2R1bGUsICpN
b2R1bGVfdDsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19pdmFyKiBJdmFyX3Q7CnR5cGVkZWYg
c3RydWN0IG9iamNfaXZhcl9saXN0IHsKICBpbnQgaXZhcl9jb3VudDsKCgoKCiAgc3RydWN0IG9i
amNfaXZhciB7CiAgICBjb25zdCBjaGFyKiBpdmFyX25hbWU7CgoKICAgIGNvbnN0IGNoYXIqIGl2
YXJfdHlwZTsKCgogICAgaW50IGl2YXJfb2Zmc2V0OwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAgOTQK
CgoKICB9IGl2YXJfbGlzdFsxXTsKCn0gSXZhckxpc3QsICpJdmFyTGlzdF90OwojIDI0MCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIKc3RydWN0IG9iamNfbWV0aG9k
IHsKICBTRUwgbWV0aG9kX25hbWU7CgoKCgoKICBjb25zdCBjaGFyKiBtZXRob2RfdHlwZXM7CgoK
ICBJTVAgbWV0aG9kX2ltcDsKCn07Cgp0eXBlZGVmIHN0cnVjdCBvYmpjX21ldGhvZCBNZXRob2Q7
Cgp0eXBlZGVmIE1ldGhvZCogTWV0aG9kX3Q7CnR5cGVkZWYgc3RydWN0IG9iamNfbWV0aG9kX2xp
c3QgewogIHN0cnVjdCBvYmpjX21ldGhvZF9saXN0KiBtZXRob2RfbmV4dDsKCgogIGludCBtZXRo
b2RfY291bnQ7CgogIHN0cnVjdCBvYmpjX21ldGhvZCBtZXRob2RfbGlzdFsxXTsKCn0gTWV0aG9k
TGlzdCwgKk1ldGhvZExpc3RfdDsKCnN0cnVjdCBvYmpjX3Byb3RvY29sX2xpc3QgewogIHN0cnVj
dCBvYmpjX3Byb3RvY29sX2xpc3QgKm5leHQ7CiAgaW50IGNvdW50OwogIFByb3RvY29sICpsaXN0
WzFdOwp9OwojIDMyNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIK
dHlwZWRlZiBzdHJ1Y3Qgb2JqY19jYXRlZ29yeSB7CiAgY29uc3QgY2hhciogY2F0ZWdvcnlfbmFt
ZTsKCgogIGNvbnN0IGNoYXIqIGNsYXNzX25hbWU7CgogIE1ldGhvZExpc3RfdCBpbnN0YW5jZV9t
ZXRob2RzOwoKCgogIE1ldGhvZExpc3RfdCBjbGFzc19tZXRob2RzOwoKCgogIHN0cnVjdCBvYmpj
X3Byb3RvY29sX2xpc3QgKnByb3RvY29sczsKCn0gQ2F0ZWdvcnksICpDYXRlZ29yeV90OwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAg
ICAgICAgICAgIFBhZ2UgICA5NQoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19zdXBlciB7CiAg
aWQgc2VsZjsKCiAgQ2xhc3MgY2xhc3M7Cn0gU3VwZXIsICpTdXBlcl90OwoKSU1QIG9iamNfbXNn
X2xvb2t1cF9zdXBlcihTdXBlcl90IHN1cGVyLCBTRUwgc2VsKTsKCgpyZXR2YWxfdCBvYmpjX21z
Z19zZW5kdihpZCwgU0VMLCBhcmdsaXN0X3QpOwojIDM2NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamMvb2JqYy1hcGkuaCIKZXh0ZXJuIENsYXNzICgqX29iamNfbG9va3VwX2NsYXNzKSAo
Y29uc3QgY2hhciAqbmFtZSk7CgoKCgoKCgpleHRlcm4gdm9pZCAoKl9vYmpjX2xvYWRfY2FsbGJh
Y2spIChDbGFzcyBjbGFzcywgQ2F0ZWdvcnkqIGNhdGVnb3J5KTsKCgoKCmV4dGVybiBpZCAoKl9v
YmpjX29iamVjdF9hbGxvYykgKENsYXNzIGNsYXNzKTsKZXh0ZXJuIGlkICgqX29iamNfb2JqZWN0
X2NvcHkpIChpZCBvYmplY3QpOwpleHRlcm4gaWQgKCpfb2JqY19vYmplY3RfZGlzcG9zZSkgKGlk
IG9iamVjdCk7CgoKCgoKCgp2b2lkICpvYmpjX21hbGxvYyAoc2l6ZV90IHNpemUpOwoKdm9pZCAq
b2JqY19hdG9taWNfbWFsbG9jIChzaXplX3Qgc2l6ZSk7Cgp2b2lkICpvYmpjX3ZhbGxvYyAoc2l6
ZV90IHNpemUpOwoKdm9pZCAqb2JqY19yZWFsbG9jICh2b2lkICptZW0sIHNpemVfdCBzaXplKTsK
CnZvaWQgKm9iamNfY2FsbG9jIChzaXplX3QgbmVsZW0sIHNpemVfdCBzaXplKTsKCnZvaWQgb2Jq
Y19mcmVlICh2b2lkICptZW0pOwojIDQxMiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMv
b2JqYy1hcGkuaCIKZXh0ZXJuIHZvaWQgKigqX29iamNfbWFsbG9jKSAoc2l6ZV90KTsKZXh0ZXJu
IHZvaWQgKigqX29iamNfYXRvbWljX21hbGxvYykgKHNpemVfdCk7CmV4dGVybiB2b2lkICooKl9v
YmpjX3ZhbGxvYykgKHNpemVfdCk7CmV4dGVybiB2b2lkICooKl9vYmpjX3JlYWxsb2MpICh2b2lk
ICosIHNpemVfdCk7CmV4dGVybiB2b2lkICooKl9vYmpjX2NhbGxvYykgKHNpemVfdCwgc2l6ZV90
KTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1p
ICAgICAgICAgICAgICAgIFBhZ2UgICA5NgoKCmV4dGVybiB2b2lkICgqX29iamNfZnJlZSkgKHZv
aWQgKik7CgpNZXRob2RfdCBjbGFzc19nZXRfY2xhc3NfbWV0aG9kIChNZXRhQ2xhc3MgY2xhc3Ms
IFNFTCBhU2VsKTsKCk1ldGhvZF90IGNsYXNzX2dldF9pbnN0YW5jZV9tZXRob2QgKENsYXNzIGNs
YXNzLCBTRUwgYVNlbCk7CgpDbGFzcyBjbGFzc19wb3NlX2FzIChDbGFzcyBpbXBvc3RvciwgQ2xh
c3Mgc3VwZXJjbGFzcyk7CgpDbGFzcyBvYmpjX2dldF9jbGFzcyAoY29uc3QgY2hhciAqbmFtZSk7
CgpDbGFzcyBvYmpjX2xvb2t1cF9jbGFzcyAoY29uc3QgY2hhciAqbmFtZSk7CgpDbGFzcyBvYmpj
X25leHRfY2xhc3MgKHZvaWQgKiplbnVtX3N0YXRlKTsKCmNvbnN0IGNoYXIgKnNlbF9nZXRfbmFt
ZSAoU0VMIHNlbGVjdG9yKTsKCmNvbnN0IGNoYXIgKnNlbF9nZXRfdHlwZSAoU0VMIHNlbGVjdG9y
KTsKClNFTCBzZWxfZ2V0X3VpZCAoY29uc3QgY2hhciAqbmFtZSk7CgpTRUwgc2VsX2dldF9hbnlf
dWlkIChjb25zdCBjaGFyICpuYW1lKTsKClNFTCBzZWxfZ2V0X2FueV90eXBlZF91aWQgKGNvbnN0
IGNoYXIgKm5hbWUpOwoKU0VMIHNlbF9nZXRfdHlwZWRfdWlkIChjb25zdCBjaGFyICpuYW1lLCBj
b25zdCBjaGFyKik7CgpTRUwgc2VsX3JlZ2lzdGVyX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOwoK
U0VMIHNlbF9yZWdpc3Rlcl90eXBlZF9uYW1lIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy
KnR5cGUpOwoKCkJPT0wgc2VsX2lzX21hcHBlZCAoU0VMIGFTZWwpOwoKZXh0ZXJuIGlkIGNsYXNz
X2NyZWF0ZV9pbnN0YW5jZSAoQ2xhc3MgY2xhc3MpOwoKc3RhdGljIGlubGluZSBjb25zdCBjaGFy
ICoKY2xhc3NfZ2V0X2NsYXNzX25hbWUgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3Mp
JiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKT9jbGFzcy0+bmFtZTooKGNsYXNz
PT0oQ2xhc3MpMCk/Ik5pbCI6MCk7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZwpjbGFzc19nZXRfaW5z
dGFuY2Vfc2l6ZSAoQ2xhc3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcykt
PmluZm8pICYgMHgxTCkgPT0gMHgxTCkpID8gY2xhc3MtPmluc3RhbmNlX3NpemUgOiAwOwp9Cgpz
dGF0aWMgaW5saW5lIE1ldGFDbGFzcwpjbGFzc19nZXRfbWV0YV9jbGFzcyAoQ2xhc3MgY2xhc3Mp
CnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkp
ID8gY2xhc3MtPmNsYXNzX3BvaW50ZXIgOiAoQ2xhc3MpMDsKfQoKc3RhdGljIGlubGluZSBDbGFz
cwpjbGFzc19nZXRfc3VwZXJfY2xhc3MgKENsYXNzIGNsYXNzKQp7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdl
ICAgOTcKCgogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAw
eDFMKSkgPyBjbGFzcy0+c3VwZXJfY2xhc3MgOiAoQ2xhc3MpMDsKfQoKc3RhdGljIGlubGluZSBp
bnQKY2xhc3NfZ2V0X3ZlcnNpb24gKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYo
KCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT52ZXJzaW9uIDogLTE7
Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApjbGFzc19pc19jbGFzcyAoQ2xhc3MgY2xhc3MpCnsKICBy
ZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpOwp9Cgpz
dGF0aWMgaW5saW5lIEJPT0wKY2xhc3NfaXNfbWV0YV9jbGFzcyAoQ2xhc3MgY2xhc3MpCnsKICBy
ZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpOwp9CgoK
c3RhdGljIGlubGluZSB2b2lkCmNsYXNzX3NldF92ZXJzaW9uIChDbGFzcyBjbGFzcywgbG9uZyB2
ZXJzaW9uKQp7CiAgaWYgKCgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4
MUwpKSkKICAgIGNsYXNzLT52ZXJzaW9uID0gdmVyc2lvbjsKfQoKc3RhdGljIGlubGluZSB2b2lk
ICoKY2xhc3NfZ2V0X2djX29iamVjdF90eXBlIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNs
YXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkgPyBjbGFzcy0+Z2Nfb2Jq
ZWN0X3R5cGUgOiAoKHZvaWQgKikwKTsKfQoKCmV4dGVybiB2b2lkIGNsYXNzX2l2YXJfc2V0X2dj
aW52aXNpYmxlIChDbGFzcyBjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGl2YXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQk9PTCBnY0ludmlzaWJsZSk7CgpzdGF0aWMgaW5saW5lIElNUAptZXRob2Rf
Z2V0X2ltcCAoTWV0aG9kX3QgbWV0aG9kKQp7CiAgcmV0dXJuIChtZXRob2QgIT0gKE1ldGhvZF90
KTApID8gbWV0aG9kLT5tZXRob2RfaW1wIDogKElNUCkgMDsKfQoKSU1QIGdldF9pbXAgKENsYXNz
IGNsYXNzLCBTRUwgc2VsKTsKCgoKCgoKCmlkIG9iamVjdF9jb3B5IChpZCBvYmplY3QpOwoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAg
ICAgICAgICAgIFBhZ2UgICA5OAoKCmlkIG9iamVjdF9kaXNwb3NlIChpZCBvYmplY3QpOwoKc3Rh
dGljIGlubGluZSBDbGFzcwpvYmplY3RfZ2V0X2NsYXNzIChpZCBvYmplY3QpCnsKICByZXR1cm4g
KChvYmplY3QgIT0gKGlkKTApCiAgICAgICAgICA/ICgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikm
JigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKQogICAg
ICAgICAgICAgPyBvYmplY3QtPmNsYXNzX3BvaW50ZXIKICAgICAgICAgICAgIDogKCgob2JqZWN0
LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgy
TCkgPT0gMHgyTCkpCiAgICAgICAgICAgICAgICA/IChDbGFzcykgb2JqZWN0CiAgICAgICAgICAg
ICAgICA6IChDbGFzcykwKSkKICAgICAgICAgIDogKENsYXNzKTApOwp9CgpzdGF0aWMgaW5saW5l
IGNvbnN0IGNoYXIgKgpvYmplY3RfZ2V0X2NsYXNzX25hbWUgKGlkIG9iamVjdCkKewogIHJldHVy
biAoKG9iamVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVj
dC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRlci0+bmFtZQogICAgICAgICAgICAgICAg
ICAgICAgICAgOiAoKENsYXNzKSBvYmplY3QpLT5uYW1lKQogICAgICAgICAgICAgICAgICAgICAg
IDoiTmlsIik7Cn0KCnN0YXRpYyBpbmxpbmUgTWV0YUNsYXNzCm9iamVjdF9nZXRfbWV0YV9jbGFz
cyhpZCBvYmplY3QpCnsKICByZXR1cm4gKChvYmplY3QhPShpZCkwKSA/ICgoKG9iamVjdC0+Y2xh
c3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09
IDB4MUwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRl
ci0+Y2xhc3NfcG9pbnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoKG9iamVjdC0+
Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4Mkwp
ID09IDB4MkwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3Nf
cG9pbnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6KENsYXNzKTApKQogICAgICAg
ICAgOiAoQ2xhc3MpMCk7Cn0KCnN0YXRpYyBpbmxpbmUgQ2xhc3MKb2JqZWN0X2dldF9zdXBlcl9j
bGFzcyAoaWQgb2JqZWN0KQp7CiAgcmV0dXJuICgob2JqZWN0IT0oaWQpMCkgPyAoKChvYmplY3Qt
PmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDFM
KSA9PSAweDFMKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBvYmplY3QtPmNsYXNzX3Bv
aW50ZXItPnN1cGVyX2NsYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCgob2JqZWN0
LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgy
TCkgPT0gMHgyTCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgID8oKENsYXNzKSBvYmplY3Qp
LT5zdXBlcl9jbGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChDbGFzcykwKSkK
ICAgICAgICAgIDogKENsYXNzKTApOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKb2JqZWN0X2lzX2Ns
YXNzIChpZCBvYmplY3QpCnsKICByZXR1cm4gKCgoQ2xhc3MpIG9iamVjdCkmJigoKCgoQ2xhc3Mp
IG9iamVjdCktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wK
b2JqZWN0X2lzX2luc3RhbmNlKGlkIG9iamVjdCkKewogIHJldHVybiAob2JqZWN0ICE9IChpZCkw
KSAmJiAoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIp
LT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKTsKfQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgIDk5CgoKCnN0
YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfbWV0YV9jbGFzcyAoaWQgb2JqZWN0KQp7CiAgcmV0
dXJuICgoKENsYXNzKSBvYmplY3QpJiYoKCgoKENsYXNzKSBvYmplY3QpLT5pbmZvKSAmIDB4Mkwp
ID09IDB4MkwpKTsKfQoKc3RydWN0IHNhcnJheSogb2JqY19nZXRfdW5pbnN0YWxsZWRfZHRhYmxl
ICh2b2lkKTsKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5o
IiAyCgoKCgp0eXBlZGVmIHN0cnVjdCBjbGFzc0RhdGEgKmNsYXNzRGF0YV90Owp0eXBlZGVmIHN0
cnVjdCBtZXRob2REZWZzICptZXRob2REZWZzX3Q7CgoKCgpAaW50ZXJmYWNlIENsYXNzX3M6IE9i
amVjdAp7CkBwdWJsaWMKICBDbGFzc19zICpzdXBlcmNsYXNzOwogIGNvbnN0IGNoYXIgKm5hbWU7
CiAgbG9uZyB2ZXJzaW9uOwogIHVuc2lnbmVkIGxvbmcgaW5mbzsKICBsb25nIGluc3RhbmNlU2l6
ZTsKICB2b2lkICppdmFyTGlzdDsKICB2b2lkICptZXRob2RMaXN0OwogIHN0cnVjdCBzYXJyYXkg
KmR0YWJsZTsKfQoKCkBlbmQKCgoKCmV4dGVybiBjbGFzc0RhdGFfdCBfb2JqX2dldENsYXNzRGF0
YSAoQ2xhc3NfcyAqY2xhc3MpOwoKCgoKdm9pZCBfb2JqX2luaXRNZXRob2RJbnRlcmZhY2VzIChD
bGFzc19zICpjbGFzcyk7CgoKCgoKCgpAaW50ZXJmYWNlIENyZWF0ZWRDbGFzc19zOiBDbGFzc19z
CnsKQHB1YmxpYwogIENsYXNzX3MgKmRlZmluaW5nQ2xhc3M7CiAgaWQgbWV0YW9iamVjdHM7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAxMDAKCgp9CgorIGNyZWF0ZUJlZ2luOiBhWm9uZTsKLSBzZXROYW1l
OiAoY29uc3QgY2hhciAqKWNsYXNzTmFtZTsKLSBzZXRDbGFzczogYUNsYXNzOwotIHNldFN1cGVy
Y2xhc3M6IGFDbGFzczsKLSBzZXREZWZpbmluZ0NsYXNzOiBhQ2xhc3M7Ci0gYXQ6IChTRUwpYVNl
bCBhZGRNZXRob2Q6IChJTVApYU1ldGhvZDsKLSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUlu
Q3JlYXRlOiBleHByOwotIGNyZWF0ZUVuZDsKLSAodm9pZCloZGY1T3V0U2hhbGxvdzogc3RyZWFt
OwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiBzdHJlYW07CkBlbmQKCkBpbnRlcmZhY2UgQmVoYXZp
b3JQaGFzZV9zOiBDcmVhdGVkQ2xhc3Nfcwp7CkBwdWJsaWMKICBDbGFzc19zICpuZXh0UGhhc2U7
CiAgaWQgZmlsbGVyOwogIGlkIG1vcmVmaWxsZXI7Cn0KCi0gKHZvaWQpc2V0TmV4dFBoYXNlOiBh
QmVoYXZpb3JQaGFzZTsKQGVuZAoKCgoKCgoKc3RydWN0IGNsYXNzRGF0YSB7CiAgaWQgKmNsYXNz
SUQ7CiAgaWQgb3duZXI7CiAgaWQgdHlwZUltcGxlbWVudGVkOwogIEJlaGF2aW9yUGhhc2VfcyAq
aW5pdGlhbFBoYXNlOwogIGlkIG1ldGFvYmplY3RzOwp9OwoKCgoKc3RydWN0IG1ldGhvZERlZnMg
ewogIG1ldGhvZERlZnNfdCBuZXh0OwogIGlkIGludGVyZmFjZUlEOwogIE1ldGhvZF90IGZpcnN0
RW50cnk7CiAgaW50IGNvdW50Owp9OwojIDEzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVm
b2JqL0N1c3RvbWl6ZS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9E
ZWZPYmplY3QuaCIgMQojIDEzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9i
amVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMQojIDE0ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIiAyCgojIDEgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9zd2FybWNvbmZpZy5oIiAxCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAx
MDEKCgojIDE2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIiAy
CgpAY2xhc3MgT2JqZWN0RW50cnk7CgoKQGludGVyZmFjZSBPYmplY3RfczogT2JqZWN0IDxEZWZp
bmVkQ2xhc3MsIFNlcmlhbGl6YXRpb24sIEdldE5hbWU+CnsKQHB1YmxpYwoKCiAgdW5zaWduZWQg
emJpdHM7CiAgT2JqZWN0RW50cnkgKmZvcmVpZ25FbnRyeTsKfQojIDQxICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIgotIChjb25zdCBjaGFyICopZ2V0TmFtZTsK
KyAoQk9PTClyZXNwb25kc1RvOiAoU0VMKWFTZWw7Ci0gKEJPT0wpcmVzcG9uZHNUbzogKFNFTClh
U2VsOworIChCT09MKWNvbmZvcm1zVG86IChQcm90b2NvbCAqKWFQcm90b2NvbDsKKyBnZXRDbGFz
czsKLSBnZXRDbGFzczsKLSBnZXRab25lOwotICh2b2lkKWRyb3BBbGxvY2F0aW9uczogKEJPT0wp
Y29tcG9uZW50QWxsb2M7Ci0gKHZvaWQpZHJvcDsKLSAocmVmX3QpYWRkUmVmOiAobm90aWZ5X3Qp
bm90aWZ5RnVuY3Rpb24gd2l0aEFyZ3VtZW50OiAodm9pZCAqKWFyZzs7Ci0gKHZvaWQpcmVtb3Zl
UmVmOiAocmVmX3QpcmVmVmFsOworIGdldFN1cGVyY2xhc3M7CisgKEJPT0wpaXNTdWJjbGFzczog
YUNsYXNzOworICh2b2lkKXNldFR5cGVJbXBsZW1lbnRlZDogYVR5cGU7CisgZ2V0VHlwZUltcGxl
bWVudGVkOworIGdldE93bmVyOworIChJTVApZ2V0TWV0aG9kRm9yOiAoU0VMKWFTZWw7CisgZ2V0
RGVmaW5pbmdDbGFzczsKKyBnZXROZXh0UGhhc2U7Cisgc2VsZjsKLSBnZXRUeXBlOwotIChpbnQp
Y29tcGFyZTogYW5PYmplY3Q7Ci0gcGVyZm9ybTogKFNFTClhU2VsOwotIHBlcmZvcm06IChTRUwp
YVNlbCB3aXRoOiBhbk9iamVjdDE7Ci0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0
MSB3aXRoOiBhbk9iamVjdDI7Ci0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0MSB3
aXRoOiBhbk9iamVjdDIgd2l0aDogYW5PYmplY3QzOwotICh2b2lkKXNldERpc3BsYXlOYW1lOiAo
Y29uc3QgY2hhciAqKWFOYW1lOwotIChjb25zdCBjaGFyICopZ2V0RGlzcGxheU5hbWU7Ci0gKGNv
bnN0IGNoYXIgKilnZXRPYmplY3ROYW1lOwotIChjb25zdCBjaGFyICopZ2V0VHlwZU5hbWU7Ci0g
KHZvaWQpZGVzY3JpYmU6IG91dHB1dENoYXJTdHJlYW07Ci0gKHZvaWQpZGVzY3JpYmVJRDogb3V0
cHV0Q2hhclN0cmVhbTsKLSAodm9pZCl4cHJpbnQ7Ci0gKHZvaWQpeHByaW50aWQ7Ci0gKHZvaWQp
eGZwcmludDsKLSAodm9pZCl4ZnByaW50aWQ7Ci0gbGlzcEluQ3JlYXRlOiBleHByOwotIGxpc3BJ
bjogZXhwcjsKLSBoZGY1SW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUluOiBleHByOwotICh2b2lkKWxp
c3BPdXRWYXJzOiBzdHJlYW0gZGVlcDogKEJPT0wpZGVlcEZsYWc7Ci0gKHZvaWQpbGlzcE91dERl
ZXA6IHN0cmVhbTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEwMgoKCi0gKHZvaWQpbGlzcE91dFNoYWxs
b3c6IHN0cmVhbTsKLSAodm9pZCloZGY1T3V0RGVlcDogaGRmNW9iajsKLSAodm9pZCloZGY1T3V0
U2hhbGxvdzogaGRmNW9iajsKLSAodm9pZCl1cGRhdGVBcmNoaXZlcjogYXJjaGl2ZXI7CkBlbmQK
CmV4dGVybiBpZCBsaXNwSW4gKGlkIGFab25lLCBpZCBleHByKTsKCmV4dGVybiBCT09MIGxpc3BJ
bkJvb2xlYW4gKGlkIGluZGV4KTsKZXh0ZXJuIGludCBsaXNwSW5JbnRlZ2VyIChpZCBpbmRleCk7
CmV4dGVybiBjb25zdCBjaGFyICpsaXNwSW5TdHJpbmcgKGlkIGluZGV4KTsKZXh0ZXJuIGlkIGxp
c3BJbktleXdvcmQgKGlkIGluZGV4KTsKIyAxMjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9k
ZWZvYmovRGVmT2JqZWN0LmgiCmV4dGVybiBJTVAgZ2V0X2ltcCAoQ2xhc3MgY2xhc3MsIFNFTCBz
ZWwpOwoKCgoKZXh0ZXJuIEJPT0wgcmVzcG9uZHNUbyAoaWQgYW5PYmplY3QsIFNFTCBhU2VsKTsK
CgoKCgpleHRlcm4gSU1QIGdldE1ldGhvZEZvciAoaWQgYW5PYmplY3QsIFNFTCBhU2VsKTsKIyAx
NTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiCnR5cGVkZWYg
c3RydWN0IG1hcGFsbG9jICptYXBhbGxvY190OwoKc3RydWN0IG1hcGFsbG9jIHsKICB2b2lkICgq
bWFwcGluZ0Z1bmN0aW9uKSAobWFwYWxsb2NfdCBtYXBhbGxvYywgQk9PTCBvYmplY3RBbGxvY2F0
aW9uKTsKICB2b2lkICphbGxvYzsKICBpZCA8U3ltYm9sPiBkZXNjcmlwdG9yOwogIGlkIHpvbmU7
CiAgc2l6ZV90IHNpemU7Cn07CiMgMTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmov
Q3VzdG9taXplLmgiIDIKIyAyNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0
b21pemUuaCIKZXh0ZXJuIGlkIENyZWF0aW5nLCBTZXR0aW5nLCBVc2luZywgQ3JlYXRpbmdPbmx5
LCBVc2luZ09ubHk7CgoKCgpAaW50ZXJmYWNlIEN1c3RvbWl6ZV9zOiBPYmplY3RfcwoKKyBjdXN0
b21pemVCZWdpbjogYVpvbmU7Ci0gY3VzdG9taXplRW5kOwotIGN1c3RvbWl6ZUNvcHk6IGFab25l
OworIGN1c3RvbWl6ZUJlZ2luRW5kOiBhWm9uZTsKLSBfc2V0Q3JlYXRlQnlfOiAoQ2xhc3Mpc3Vi
Y2xhc3MgbWVzc2FnZTogKFNFTCltZXNzYWdlU2VsZWN0b3IgdG86IGFuT2JqZWN0OwotICh2b2lk
KV9zZXRDcmVhdGVCeUNvcHlfOwotICh2b2lkKV9zZXRDcmVhdGVCeU1lc3NhZ2VfOiAoU0VMKW1l
c3NhZ2VTZWxlY3RvciB0bzogYW5PYmplY3Q7Ci0gKHZvaWQpX3NldENyZWF0ZUJ5TWVzc2FnZV86
IChTRUwpbWVzc2FnZVNlbGVjdG9yIHRvQ29weTogYW5PYmplY3Q7Ci0gKHZvaWQpX3NldFJlY3Vz
dG9taXplXzogYW5PYmplY3Q7CisgKHZvaWQpc2V0VHlwZUltcGxlbWVudGVkOiBhVHlwZTsKQGVu
ZAojIDU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAg
ICAgICAgICAgUGFnZSAgMTAzCgoKZXh0ZXJuIGlubGluZSBCT09MCl9vYmpfY3VzdG9taXplIChp
ZCBhbk9iamVjdCkKewogIHJldHVybiAoKCooQ2xhc3MgKikoYW5PYmplY3QpKS0+aW5mbyAmIDB4
MjAwKSAhPSAwOwp9CiMgODIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9t
aXplLmgiCkBpbnRlcmZhY2UgQ3JlYXRlQnlfYzogT2JqZWN0X3MKewpAcHVibGljCiAgaWQgaW1w
bGVtZW50ZWRUeXBlOwogIGlkIGNyZWF0ZVJlY2VpdmVyOwogIFNFTCBjcmVhdGVNZXNzYWdlOwog
IElNUCBjcmVhdGVNZXRob2Q7CiAgaWQgcmVjdXN0b21pemU7Cn0KCi0gY3JlYXRlQmVnaW46IGFa
b25lOwotIGN1c3RvbWl6ZUJlZ2luOiBhWm9uZTsKLSAodm9pZCltYXBBbGxvY2F0aW9uczogKG1h
cGFsbG9jX3QpbWFwYWxsb2M7CkBlbmQKCkBpbnRlcmZhY2UgQ3JlYXRlX2J5Y29weTogQ3JlYXRl
QnlfYwoKLSBjcmVhdGU6IGFab25lOwpAZW5kCgpAaW50ZXJmYWNlIENyZWF0ZV9ieXNlbmQ6IENy
ZWF0ZUJ5X2MKCi0gY3JlYXRlOiBhWm9uZTsKQGVuZAoKQGludGVyZmFjZSBDcmVhdGVfYnlib3Ro
OiBDcmVhdGVCeV9jCgotIGNyZWF0ZTogYVpvbmU7CkBlbmQKCgoKCmV4dGVybiBpbmxpbmUgQ2xh
c3MKZ2V0TmV4dFBoYXNlIChpZCBhQ2xhc3MpCnsKICByZXR1cm4gKENsYXNzKSAoKEJlaGF2aW9y
UGhhc2VfcyAqKSBhQ2xhc3MpLT5uZXh0UGhhc2U7Cn0KCgoKCmV4dGVybiBpbmxpbmUgdm9pZApz
ZXROZXh0UGhhc2UgKGlkIGFuT2JqZWN0KQp7CiAgKihDbGFzcyAqKSBhbk9iamVjdCA9IChDbGFz
cykgKCooQmVoYXZpb3JQaGFzZV9zICoqKSBhbk9iamVjdCktPm5leHRQaGFzZTsKfQojIDEzICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIiAyCgoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAg
IFBhZ2UgIDEwNAoKCgoKQGludGVyZmFjZSBDcmVhdGVEcm9wX3M6IEN1c3RvbWl6ZV9zCgorIGNy
ZWF0ZTogYVpvbmU7CisgY3JlYXRlQmVnaW46IGFab25lOwotIGNyZWF0ZUVuZDsKQGVuZAoKQGlu
dGVyZmFjZSBDcmVhdGVEcm9wOiBDcmVhdGVEcm9wX3MKCi0gY3JlYXRlRW5kOwpAZW5kCiMgMTMg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS9YQWN0aXZpdHkuaCIgMgojIDEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIiAxCiMgMTQgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9hY3Rpdml0eS9YQWN0aXZpdHkuaCIgMgoKCgoKQGludGVyZmFjZSBBY3Rpdml0
eV9jOiBPYmplY3RfcyA8QWN0aXZpdHk+CnsKQHB1YmxpYwogIEFjdGl2aXR5X2MgKm93bmVyQWN0
aXZpdHk7CiAgaWQgPEFjdGlvbj4gdG9wTGV2ZWxBY3Rpb247CiAgaWQgPFN5bWJvbD4gc3RhdHVz
OwogIG1lbWJlcl90IGFjdGl2aXR5UmVmczsKCiAgQWN0aXZpdHlfYyAqcmVnaXN0ZXJlZE93bmVy
QWN0aXZpdHk7CiAgaWQgYWN0aXZpdHlTZXQ7CiAgbWVtYmVyX3QgYWN0aXZpdHlTZXRSZWZzOwoK
ICBpZCA8QWN0aXZpdHlJbmRleD4gY3VycmVudEluZGV4OwoKICBBY3Rpdml0eV9jICpjdXJyZW50
U3ViYWN0aXZpdHk7CiAgQk9PTCAoKmJyZWFrRnVuY3Rpb24pIChpZCk7CiAgQk9PTCBrZWVwRW1w
dHlGbGFnOwp9CgotIChpZCA8U3ltYm9sPilydW47Ci0gKGlkIDxTeW1ib2w+KV9ydW5fOwotICh2
b2lkKXRlcm1pbmF0ZTsKLSAodm9pZClzdG9wOwotIChpZCA8U3ltYm9sPiluZXh0QWN0aW9uOwot
IChpZCA8U3ltYm9sPilzdGVwQWN0aW9uOwotIChpZCA8U3ltYm9sPilnZXRTdGF0dXM7Ci0gKGlk
IDxTeW1ib2w+KWdldEhvbGRUeXBlOwotIGdldEFjdGlvblR5cGU7Ci0gKGlkIDxBY3Rpb24+KWdl
dEFjdGlvbjsKLSBfZ2V0U3ViYWN0aXZpdHlBY3Rpb25fOwotICh2b2lkKXNldE93bmVyQWN0aXZp
dHk6IChpZCA8U3dhcm1BY3Rpdml0eT4pYVN3YXJtQWN0aXZpdHk7Ci0gKGlkIDxBY3Rpdml0eT4p
Z2V0T3duZXJBY3Rpdml0eTsKLSAoaWQgPEFjdGl2aXR5PilnZXRDb250cm9sbGluZ0FjdGl2aXR5
OwotIChpZCA8QWN0aXZpdHk+KWdldFRvcExldmVsQWN0aXZpdHk7Ci0gKGlkIDxTd2FybUFjdGl2
aXR5PilnZXRTd2FybUFjdGl2aXR5OwotIChpZCA8U2NoZWR1bGVBY3Rpdml0eT4pZ2V0U2NoZWR1
bGVBY3Rpdml0eTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEwNQoKCi0gZ2V0U3ViYWN0aXZpdGllczsK
LSAodm9pZClzZXRTZXJpYWxNb2RlOiAoQk9PTClzZXJpYWxNb2RlOwotIChCT09MKWdldFNlcmlh
bE1vZGU7Ci0gc2V0S2VlcEVtcHR5RmxhZzogKEJPT0wpa2VlcEVtcHR5RmxhZzsKLSAoaWQgPEFj
dGl2aXR5PilnZXRDdXJyZW50U3ViYWN0aXZpdHk7Ci0gKHZvaWQpbWFwQWxsb2NhdGlvbnM6ICht
YXBhbGxvY190KW1hcGFsbG9jOwotICh2b2lkKWRyb3A7Ci0gKHZvaWQpZGVzY3JpYmU6IG91dHB1
dENoYXJTdHJlYW07CkBlbmQKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5
L1N3YXJtUHJvY2Vzcy5oIiAyCgpAY2xhc3MgU3dhcm1BY3Rpdml0eV9jLCBTY2hlZHVsZUFjdGl2
aXR5X2M7CgpAaW50ZXJmYWNlIENTd2FybVByb2Nlc3M6IENyZWF0ZURyb3BfcyA8U3dhcm1Qcm9j
ZXNzPgp7CkBwdWJsaWMKICBpZCBpbnRlcm5hbFpvbmU7CiAgaWQgc3luY1R5cGU7CiAgU3dhcm1B
Y3Rpdml0eV9jICphY3Rpdml0eTsKfQoKLSAoc2l6ZV90KWdldFBhZ2VTaXplOwotIGFsbG9jSVZh
cnM6IGFDbGFzczsKLSBjb3B5SVZhcnM6IGFuT2JqZWN0OwotICh2b2lkKWZyZWVJVmFyczogYW5P
YmplY3Q7Ci0gYWxsb2NJVmFyc0NvbXBvbmVudDogYUNsYXNzOwotIGNvcHlJVmFyc0NvbXBvbmVu
dDogYW5PYmplY3Q7Ci0gKHZvaWQpZnJlZUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKLSBnZXRD
b21wb25lbnRab25lOwotICh2b2lkICopYWxsb2M6IChzaXplX3Qpc2l6ZTsKLSAodm9pZClmcmVl
OiAodm9pZCAqKSBhQmxvY2s7Ci0gKHZvaWQgKilhbGxvY0Jsb2NrOiAoc2l6ZV90KXNpemU7Ci0g
KHZvaWQpZnJlZUJsb2NrOiAodm9pZCAqKWFCbG9jayBibG9ja1NpemU6IChzaXplX3Qpc2l6ZTsK
LSBnZXRQb3B1bGF0aW9uOwotICh2b2lkKSBkZXNjcmliZUZvckVhY2hJRDogKGlkKSBvdXRwdXRD
aGFyU3RyZWFtOwotICh2b2lkKSBkZXNjcmliZUZvckVhY2g6IChpZCkgb3V0cHV0Q2hhclN0cmVh
bTsKLSAoQk9PTClnZXRTdGFja2VkU3Viem9uZXM7Ci0gZ2V0UmVjbGFpbVBvbGljeTsKCgorIGNy
ZWF0ZUJlZ2luOiBhWm9uZTsKLSAodm9pZClzZXRTeW5jaHJvbml6YXRpb25UeXBlOiBhU2NoZWR1
bGVUeXBlOwotICh2b2lkKXNldEludGVybmFsWm9uZVR5cGU6IGludGVybmFsWm9uZVR5cGU7Ci0g
KHZvaWQpc2V0SW50ZXJuYWxUaW1lTXVsdGlwbGllcjogKHRpbWV2YWxfdClpbnRlcm5hbFRpbWVN
dWx0aXBsaWVyOwotICh2b2lkKXNldFBhZ2VTaXplOiAoc2l6ZV90KXBhZ2VTaXplOwotIGNyZWF0
ZUVuZDsKLSAodGltZXZhbF90KWdldEludGVybmFsVGltZU11bHRpcGxpZXI7Ci0gZ2V0SW50ZXJu
YWxab25lOwotIChpZCA8U3dhcm1BY3Rpdml0eT4pZ2V0QWN0aXZpdHk7Ci0gKGlkIDxTd2FybUFj
dGl2aXR5PilnZXRTd2FybUFjdGl2aXR5OwotIGdldFN5bmNocm9uaXphdGlvblR5cGU7Ci0gYWN0
aXZhdGU7Ci0gYWN0aXZhdGU6IGFuQWN0aW9uVHlwZTsKLSBhdDogKHRpbWV2YWxfdCl0VmFsIGFj
dGl2YXRlOiBhbkFjdGlvblR5cGU7Ci0gYXQ6IChpbnQpdGltZWJhc2UgOiAodGltZXZhbF90KXRW
YWwgYWN0aXZhdGU6IGFuQWN0aW9uVHlwZTsKLSAoaWQgPEFjdGl2aXR5PilhY3RpdmF0ZUluOiBz
d2FybUNvbnRleHQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9k
ZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxMDYKCgotICh2b2lkKW1hcEFsbG9jYXRp
b25zOiAobWFwYWxsb2NfdCltYXBhbGxvYzsKLSAodm9pZClfcGVyZm9ybVBsYW5fOwpAZW5kCiMg
OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm0uaCIgMgoKQGludGVy
ZmFjZSBTd2FybTogQ1N3YXJtUHJvY2VzcyA8U3dhcm0+CnsKfQoKCi0gYnVpbGRPYmplY3RzOwot
IGJ1aWxkQWN0aW9uczsKLSBhY3RpdmF0ZUluOiBzd2FybUNvbnRleHQ7CgoKCi0gZ2V0UHJvYmVN
YXA7Ci0gZ2V0Q29tcGxldGVQcm9iZU1hcDsKLSBnZXRQcm9iZUZvclZhcmlhYmxlOiAoY29uc3Qg
Y2hhciAqKWFWYXJpYWJsZTsKCkBlbmQKIyA3ICJQcGxNb2RlbFN3YXJtLmgiIDIKIyAxICJDb3Vu
dGVyLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlL1N3
YXJtT2JqZWN0LmgiIDEKIyA5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9T
d2FybU9iamVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3JlYXRl
LmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm1PYmpl
Y3QuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiIDEKIyAx
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm1PYmplY3QuaCIgMgoK
QGludGVyZmFjZSBTd2FybU9iamVjdDogQ3JlYXRlRHJvcCA8U3dhcm1PYmplY3Q+CnsKfQoKLSBn
ZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwotIGdldFByb2JlRm9yVmFyaWFibGU6
IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwotIGdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNo
YXIgKilhTWVzc2FnZTsKLSAodm9pZClldmVudE9jY3VycmVkT246IGFuT2JqZWN0CiAgICAgICAg
ICAgICAgICAgICAgdmlhOiBhUHJvYmUKICAgICAgICAgIHdpdGhQcm9iZVR5cGU6IChjb25zdCBj
aGFyICopYVByb2JlVHlwZQogICAgICAgICAgICAgICAgICAgICBvbjogKGNvbnN0IGNoYXIgKilw
cm9iZWRFbGVtZW50CiAgICAgICAgICAgICAgICAgb2ZUeXBlOiAoY2hhcilkYXRhVHlwZQogICAg
ICAgICAgICAgICB3aXRoRGF0YTogKHZvaWQgKilkYXRhOwpAZW5kCiMgNyAiQ291bnRlci5oIiAy
CgoKCkBpbnRlcmZhY2UgQ291bnRlcjogU3dhcm1PYmplY3QKewoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAg
MTA3CgoKICBpbnQgdmFsdWU7CiAgaW50IGluY3I7Cn0KCi0gc3RlcDsKLSBzZXRJbmNyOiAoaW50
KSBuOwotIHByaW50OwoKQGVuZAojIDggIlBwbE1vZGVsU3dhcm0uaCIgMgojIDEgIlBlcnNvbi5o
IiAxCiMgOSAiUGVyc29uLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJh
c2UvU3dhcm1PYmplY3QuaCIgMQojIDEwICJQZXJzb24uaCIgMgoKCnR5cGVkZWYgZW51bSB7CiAg
bnVsbCA9IDAsCiAgaGVsbG8gPSAxLAp9IHRvcGljX3R5cGU7CgoKCgpAaW50ZXJmYWNlIFBlcnNv
bjogU3dhcm1PYmplY3QKewogIGlkIHdvcmxkOwogIGZsb2F0IHRvcGljc1syXTsKICBpbnQgdmFs
dWU7CiAgaWQgbmFtZTsKfQoKCi0gc3RlcDsKCgotIHNldFdvcmxkOiBsOwoKCi0gc2V0UGVyc29u
OiBuIFRvcGljX2FycmF5OiAoZmxvYXQgKil0OwoKCi0gKGNvbnN0IGNoYXIgKilnZXROYW1lOwoK
Ci0gcHJpbnQ7CgoKLSBzcGVhazogKHRvcGljX3R5cGUpIHRvcGljIFRvUGVyc29uOiAoaWQpdGFy
Z2V0OwoKCi0gbG9vazsKCkBlbmQKIyA5ICJQcGxNb2RlbFN3YXJtLmgiIDIKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAxMDgKCgpAaW50ZXJmYWNlIFBwbE1vZGVsU3dhcm06IFN3YXJtCnsKCiAgaW50IGlu
Y3JlbWVudDsKCgoKICBpbnQgbnVtUHBsOwoKICBpZCBwcGxMaXN0OwoKICBpZCBtb2RlbEFjdGlv
bnM7CiAgaWQgbW9kZWxTY2hlZHVsZTsKCgogIENvdW50ZXIgKmNvdW50ZXI7Cn0KCgotIChDb3Vu
dGVyICopZ2V0Q291bnRlcjsKCisgY3JlYXRlQmVnaW46IGFab25lOwotIGNyZWF0ZUVuZDsKLSBi
dWlsZE9iamVjdHM7Ci0gYnVpbGRBY3Rpb25zOwotIGFjdGl2YXRlSW46IChpZCkgc3dhcm1Db250
ZXh0OwoKQGVuZAojIDcgIlBwbE1vZGVsU3dhcm0ubSIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9yYW5kb20uaCIgMQojIDI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9t
LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMQojIDI1ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tLmgiIDIKCgpAcHJvdG9jb2wgSW50ZXJuYWxT
dGF0ZQojIDQwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tLmgiCi0gX0lfVXNpbmc7
CgotICh1bnNpZ25lZClnZXRTdGF0ZVNpemU7Ci0gKHZvaWQpcHV0U3RhdGVJbnRvOiAodm9pZCAq
KWJ1ZmZlcjsKLSAodm9pZClzZXRTdGF0ZUZyb206ICh2b2lkICopYnVmZmVyOwotICh1bnNpZ25l
ZClnZXRNYWdpYzsKQGVuZAoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dl
bmVyYXRvcnMuaCIgMQojIDI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVy
YXRvcnMuaCIKQHByb3RvY29sIENvbW1vbkdlbmVyYXRvcgoKLSBfSV9DcmVhdGluZzsKKyBjcmVh
dGVXaXRoRGVmYXVsdHM6IChpZCA8Wm9uZT4pYVpvbmU7CgotIF9JX1NldHRpbmc7CgoKLSBzZXRT
dGF0ZUZyb21TZWVkOiAodW5zaWduZWQpc2VlZDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEwOQoKCgoK
Ci0gc2V0U3RhdGVGcm9tU2VlZHM6ICh1bnNpZ25lZCAqKXNlZWRzOwoKCgotIHNldEFudGl0aGV0
aWM6IChCT09MKSBhbnRpVDsKCi0gX0lfVXNpbmc7CgotIChCT09MKWdldEFudGl0aGV0aWM7CgoK
Ci0gKHVuc2lnbmVkKWdldE1heFNlZWRWYWx1ZTsKCgoKLSAodW5zaWduZWQgKilnZXRNYXhTZWVk
VmFsdWVzOwoKCgotICh1bnNpZ25lZClnZXRJbml0aWFsU2VlZDsKCgoKLSAodW5zaWduZWQgKiln
ZXRJbml0aWFsU2VlZHM7CgoKCi0gKHVuc2lnbmVkKWxlbmd0aE9mU2VlZFZlY3RvcjsKCgoKLSBy
ZXNldDsKCgoKLSAodW5zaWduZWQpZ2V0VW5zaWduZWRNYXg7CkBlbmQKCkBwcm90b2NvbCBTaW1w
bGVHZW5lcmF0b3IKCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNl
dFN0YXRlRnJvbVNlZWQ6ICh1bnNpZ25lZClzZWVkOwoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpv
bmUgc2V0U3RhdGVGcm9tU2VlZHM6ICh1bnNpZ25lZCAqKXNlZWRzOwoKLSBfSV9Vc2luZzsKCgot
ICh1bnNpZ25lZClnZXRVbnNpZ25lZFNhbXBsZTsKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDExMAoK
CgotIChmbG9hdClnZXRGbG9hdFNhbXBsZTsKCgoKCi0gKGRvdWJsZSlnZXRUaGluRG91YmxlU2Ft
cGxlOwoKCgoKLSAoZG91YmxlKWdldERvdWJsZVNhbXBsZTsKCgoKCgotIChsb25nIGRvdWJsZSln
ZXRMb25nRG91YmxlU2FtcGxlOwoKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpZ2V0Q3VycmVu
dENvdW50OwpAZW5kCgpAcHJvdG9jb2wgU3BsaXRHZW5lcmF0b3IKCi0gX0lfQ3JlYXRpbmc7Cisg
Y3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgICAgICAgIHNldEE6ICh1bnNpZ25lZClB
CiAgICAgICAgICAgICAgc2V0VjogKHVuc2lnbmVkKXYKICAgICAgICAgICAgICBzZXRXOiAodW5z
aWduZWQpdwogIHNldFN0YXRlRnJvbVNlZWQ6ICh1bnNpZ25lZClzZWVkOwoKKyBjcmVhdGUgOiAo
aWQgPFpvbmU+KWFab25lCiAgICAgICAgICAgICAgc2V0QTogKHVuc2lnbmVkKUEKICAgICAgICAg
ICAgICBzZXRWOiAodW5zaWduZWQpdgogICAgICAgICAgICAgIHNldFc6ICh1bnNpZ25lZCl3CiBz
ZXRTdGF0ZUZyb21TZWVkczogKHVuc2lnbmVkICopc2VlZHM7CgotIF9JX1NldHRpbmc7CgoKLSBp
bml0R2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbjsKCgoKLSBpbml0QWxsOwoKLSBfSV9Vc2luZzsK
CgoKCi0gKHVuc2lnbmVkKWdldE51bUdlbmVyYXRvcnM7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAx
MTEKCgotICh1bnNpZ25lZClnZXROdW1TZWdtZW50czsKCgoKLSAodW5zaWduZWQpZ2V0U2VnbWVu
dExlbmd0aDsKCgoKLSByZXN0YXJ0R2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbjsKCgoKLSBhZHZh
bmNlR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbjsKCgoKLSBqdW1wR2VuZXJhdG9yOiAodW5zaWdu
ZWQpdkdlbiB0b1NlZ21lbnQ6ICh1bnNpZ25lZCBsb25nIGxvbmcgaW50KXNlZzsKCgoKLSByZXN0
YXJ0QWxsOwoKCgotIGFkdmFuY2VBbGw7CgoKCi0ganVtcEFsbFRvU2VnbWVudDogKHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQpc2VnOwoKCgoKLSAodW5zaWduZWQpZ2V0VW5zaWduZWRTYW1wbGU6ICh1
bnNpZ25lZCl2R2VuOwoKCgoKCi0gKGZsb2F0KWdldEZsb2F0U2FtcGxlOiAodW5zaWduZWQpdkdl
bjsKCgoKCgotIChkb3VibGUpZ2V0VGhpbkRvdWJsZVNhbXBsZTogKHVuc2lnbmVkKXZHZW47CgoK
CgoKLSAoZG91YmxlKWdldERvdWJsZVNhbXBsZTogKHVuc2lnbmVkKXZHZW47CgoKCgoKCgoKCgoK
MjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAg
ICAgICAgUGFnZSAgMTEyCgoKCgotIChsb25nIGRvdWJsZSlnZXRMb25nRG91YmxlU2FtcGxlOiAo
dW5zaWduZWQpdkdlbjsKCgoKLSAodW5zaWduZWQgbG9uZyBsb25nIGludClnZXRDdXJyZW50U2Vn
bWVudDogKHVuc2lnbmVkKXZHZW47CgoKCi0gKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpZ2V0Q3Vy
cmVudENvdW50OiAodW5zaWduZWQpdkdlbjsKQGVuZAojIDIyOCAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBwcm90b2NvbCBCYXNpY1JhbmRvbUdlbmVyYXRv
ciA8U3dhcm1PYmplY3QsIEludGVybmFsU3RhdGUsIENvbW1vbkdlbmVyYXRvcj4KCgoKQGVuZAoK
QHByb3RvY29sIFNpbXBsZVJhbmRvbUdlbmVyYXRvciA8QmFzaWNSYW5kb21HZW5lcmF0b3IsIFNp
bXBsZUdlbmVyYXRvcj4KCgoKCkBlbmQKCkBwcm90b2NvbCBTcGxpdFJhbmRvbUdlbmVyYXRvciA8
QmFzaWNSYW5kb21HZW5lcmF0b3IsIFNwbGl0R2VuZXJhdG9yPgoKCgoKCgpAZW5kCiMgMjU5ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQHByb3RvY29sIExD
R2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPgojIDI2OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL3JhbmRvbS9nZW5lcmF0b3JzLmgiCkBlbmQKCkBwcm90b2NvbCBMQ0cxZ2VuIDxMQ0dnZW4s
IENSRUFUQUJMRT4KCgoKCkBlbmQKCkBwcm90b2NvbCBMQ0cyZ2VuIDxMQ0dnZW4sIENSRUFUQUJM
RT4KCgoKCkBlbmQKCkBwcm90b2NvbCBMQ0czZ2VuIDxMQ0dnZW4sIENSRUFUQUJMRT4KCgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAg
ICAgICAgICAgUGFnZSAgMTEzCgoKCgpAZW5kCiMgMzAzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQHByb3RvY29sIFBNTUxDR2dlbiA8U2ltcGxlUmFuZG9t
R2VuZXJhdG9yPgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHMWdlbiA8UE1NTENHZ2VuLCBDUkVB
VEFCTEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHMmdlbiA8UE1NTENHZ2VuLCBDUkVBVEFC
TEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHM2dlbiA8UE1NTENHZ2VuLCBDUkVBVEFCTEU+
CgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHNGdlbiA8UE1NTENHZ2VuLCBDUkVBVEFCTEU+CgoK
CgoKQGVuZAoKQHByb3RvY29sIFBNTUxDRzVnZW4gPFBNTUxDR2dlbiwgQ1JFQVRBQkxFPgoKCgoK
CkBlbmQKCkBwcm90b2NvbCBQTU1MQ0c2Z2VuIDxQTU1MQ0dnZW4sIENSRUFUQUJMRT4KCgoKCgpA
ZW5kCgpAcHJvdG9jb2wgUE1NTENHN2dlbiA8UE1NTENHZ2VuLCBDUkVBVEFCTEU+CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAxMTQKCgoKCgoKCkBlbmQKCkBwcm90b2NvbCBQTU1MQ0c4Z2VuIDxQTU1MQ0dn
ZW4sIENSRUFUQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgUE1NTENHOWdlbiA8UE1NTENHZ2Vu
LCBDUkVBVEFCTEU+CgoKCgoKQGVuZAoKCgpAcHJvdG9jb2wgQUNHZ2VuIDxTaW1wbGVSYW5kb21H
ZW5lcmF0b3IsIENSRUFUQUJMRT4KIyAzOTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5k
b20vZ2VuZXJhdG9ycy5oIgpAZW5kCgpAcHJvdG9jb2wgU0NHZ2VuIDxTaW1wbGVSYW5kb21HZW5l
cmF0b3IsIENSRUFUQUJMRT4KIyA0MDQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20v
Z2VuZXJhdG9ycy5oIgpAZW5kCgoKCkBwcm90b2NvbCBTV0JnZW4gPFNpbXBsZVJhbmRvbUdlbmVy
YXRvcj4KCgoKCgoKCkBlbmQKCkBwcm90b2NvbCBTV0IxZ2VuIDxTV0JnZW4sIENSRUFUQUJMRT4K
CgoKCkBlbmQKCkBwcm90b2NvbCBTV0IyZ2VuIDxTV0JnZW4sIENSRUFUQUJMRT4KCgoKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAg
ICAgICAgIFBhZ2UgIDExNQoKCgpAZW5kCgpAcHJvdG9jb2wgU1dCM2dlbiA8U1dCZ2VuLCBDUkVB
VEFCTEU+CgoKCgpAZW5kCgoKQHByb3RvY29sIFBTV0JnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRv
ciwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKCgpAcHJvdG9jb2wgTVdDQWdlbiA8U2ltcGxlUmFuZG9t
R2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgpAZW5kCgpAcHJvdG9jb2wgTVdDQmdlbiA8U2ltcGxl
UmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgoKQGVuZAoKCkBwcm90b2NvbCBSV0MyZ2Vu
IDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKQGVuZAoKCkBwcm90b2NvbCBS
V0M4Z2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKCkBlbmQKCgpAcHJv
dG9jb2wgVEdGU1JnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvcj4KCgoKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQ
YWdlICAxMTYKCgpAZW5kCgpAcHJvdG9jb2wgVFQ0MDNnZW4gPFRHRlNSZ2VuLCBDUkVBVEFCTEU+
CgoKCkBlbmQKCkBwcm90b2NvbCBUVDc3NWdlbiA8VEdGU1JnZW4sIENSRUFUQUJMRT4KCgoKQGVu
ZAoKQHByb3RvY29sIFRUODAwZ2VuIDxUR0ZTUmdlbiwgQ1JFQVRBQkxFPgoKCgpAZW5kCgoKQHBy
b3RvY29sIE1UMTk5MzdnZW4gPFNpbXBsZVJhbmRvbUdlbmVyYXRvciwgQ1JFQVRBQkxFPgoKCgpA
ZW5kCgoKQHByb3RvY29sIE1SR2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPgoKCgoKCgoKQGVu
ZAoKQHByb3RvY29sIE1SRzVnZW4gPE1SR2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3Rv
Y29sIE1SRzZnZW4gPE1SR2dlbiwgQ1JFQVRBQkxFPgoKCgoKQGVuZAoKQHByb3RvY29sIE1SRzdn
ZW4gPE1SR2dlbiwgQ1JFQVRBQkxFPgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTE3CgoKCkBlbmQK
CgpAcHJvdG9jb2wgQzJUQVVTZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+CgoKCgpAZW5kCgpA
cHJvdG9jb2wgQzJUQVVTMWdlbiA8QzJUQVVTZ2VuLCBDUkVBVEFCTEU+CgoKCgoKCkBlbmQKCkBw
cm90b2NvbCBDMlRBVVMyZ2VuIDxDMlRBVVNnZW4sIENSRUFUQUJMRT4KCgoKCgoKQGVuZAoKQHBy
b3RvY29sIEMyVEFVUzNnZW4gPEMyVEFVU2dlbiwgQ1JFQVRBQkxFPgoKCgoKCgpAZW5kCgoKQHBy
b3RvY29sIEMyTVJHM2dlbiA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yLCBDUkVBVEFCTEU+CgoKCgoK
CgpAZW5kCgoKQHByb3RvY29sIEMzTVdDZ2VuIDxTaW1wbGVSYW5kb21HZW5lcmF0b3IsIENSRUFU
QUJMRT4KCgoKCkBlbmQKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxN
b2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDExOAoKCiMgNjE0ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQHByb3RvY29sIEMyTENHWGdlbiA8
U3BsaXRSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KIyA2MjQgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9yYW5kb20vZ2VuZXJhdG9ycy5oIgpAZW5kCgoKQHByb3RvY29sIEM0TENHWGdlbiA8
U3BsaXRSYW5kb21HZW5lcmF0b3IsIENSRUFUQUJMRT4KCgoKCgpAZW5kCiMgNjUyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2dlbmVyYXRvcnMuaCIKQGNsYXNzIExDRzFnZW47CkBj
bGFzcyBMQ0cyZ2VuOwpAY2xhc3MgTENHM2dlbjsKQGNsYXNzIFBNTUxDRzFnZW47CkBjbGFzcyBQ
TU1MQ0cyZ2VuOwpAY2xhc3MgUE1NTENHM2dlbjsKQGNsYXNzIFBNTUxDRzRnZW47CkBjbGFzcyBQ
TU1MQ0c1Z2VuOwpAY2xhc3MgUE1NTENHNmdlbjsKQGNsYXNzIFBNTUxDRzdnZW47CkBjbGFzcyBQ
TU1MQ0c4Z2VuOwpAY2xhc3MgUE1NTENHOWdlbjsKCgoKQGNsYXNzIEFDR2dlbjsKQGNsYXNzIFND
R2dlbjsKQGNsYXNzIFNXQjFnZW47CkBjbGFzcyBTV0IyZ2VuOwpAY2xhc3MgU1dCM2dlbjsKQGNs
YXNzIFBTV0JnZW47CkBjbGFzcyBUVDQwM2dlbjsKQGNsYXNzIFRUNzc1Z2VuOwpAY2xhc3MgVFQ4
MDBnZW47CkBjbGFzcyBNVDE5OTM3Z2VuOwpAY2xhc3MgTVJHNWdlbjsKQGNsYXNzIE1SRzZnZW47
CkBjbGFzcyBNUkc3Z2VuOwpAY2xhc3MgTVdDQWdlbjsKQGNsYXNzIE1XQ0JnZW47CkBjbGFzcyBS
V0MyZ2VuOwpAY2xhc3MgUldDOGdlbjsKCgoKQGNsYXNzIEMyVEFVUzFnZW47CkBjbGFzcyBDMlRB
VVMyZ2VuOwpAY2xhc3MgQzJUQVVTM2dlbjsKCgoKQGNsYXNzIEMyTVJHM2dlbjsKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAg
ICAgIFBhZ2UgIDExOQoKCkBjbGFzcyBDM01XQ2dlbjsKIyA3MDggIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9yYW5kb20vZ2VuZXJhdG9ycy5oIgpAY2xhc3MgQzJMQ0dYZ2VuOwpAY2xhc3MgQzRM
Q0dYZ2VuOwojIDQ5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tLmgiIDIKIyAxICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaCIgMQojIDI1ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL2Rpc3RyaWJ1dGlvbnMuaCIKQHByb3RvY29s
IFByb2JhYmlsaXR5RGlzdHJpYnV0aW9uIDxTd2FybU9iamVjdCwgSW50ZXJuYWxTdGF0ZT4KCgoK
CgoKLSBfSV9DcmVhdGluZzsKCgorIGNyZWF0ZVdpdGhEZWZhdWx0czogKGlkIDxab25lPilhWm9u
ZTsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICBzZXRHZW5lcmF0b3I6IChpZCA8U2lt
cGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3I7CgoKKyBjcmVhdGUgOiAoaWQgPFpv
bmU+KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRv
cj4pc3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpIHZHZW47
CgotIF9JX1NldHRpbmc7CgotIHNldEdlbmVyYXRvcjogKGlkIDxTaW1wbGVSYW5kb21HZW5lcmF0
b3I+KXNpbXBsZUdlbmVyYXRvcjsKCgotIHNldEdlbmVyYXRvciA6IChpZCA8U3BsaXRSYW5kb21H
ZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVk
KXZHZW47CgoKLSByZXNldDsKCi0gX0lfVXNpbmc7CgotIChpZCA8QmFzaWNSYW5kb21HZW5lcmF0
b3I+KSBnZXRHZW5lcmF0b3I7CgoKLSAodW5zaWduZWQpZ2V0VmlydHVhbEdlbmVyYXRvcjsKCgot
IChCT09MKWdldE9wdGlvbnNJbml0aWFsaXplZDsKCgotICh1bnNpZ25lZCBsb25nIGxvbmcgaW50
KWdldEN1cnJlbnRDb3VudDsKQGVuZAoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAg
ICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEyMAoKCgpAcHJv
dG9jb2wgQm9vbGVhbkRpc3RyaWJ1dGlvbiA8UHJvYmFiaWxpdHlEaXN0cmlidXRpb24+CgoKCgot
IF9JX1VzaW5nOwoKLSAoQk9PTClnZXRCb29sZWFuU2FtcGxlOwotIChpbnQpZ2V0SW50ZWdlclNh
bXBsZTsKQGVuZAoKQHByb3RvY29sIEludGVnZXJEaXN0cmlidXRpb24gPFByb2JhYmlsaXR5RGlz
dHJpYnV0aW9uPgoKCgoKLSBfSV9Vc2luZzsKCi0gKGludClnZXRJbnRlZ2VyU2FtcGxlOwpAZW5k
CgpAcHJvdG9jb2wgVW5zaWduZWREaXN0cmlidXRpb24gPFByb2JhYmlsaXR5RGlzdHJpYnV0aW9u
PgoKCgoKCi0gX0lfVXNpbmc7CgotICh1bnNpZ25lZClnZXRVbnNpZ25lZFNhbXBsZTsKQGVuZAoK
QHByb3RvY29sIERvdWJsZURpc3RyaWJ1dGlvbiA8UHJvYmFiaWxpdHlEaXN0cmlidXRpb24+CgoK
CgoKLSBfSV9Vc2luZzsKCgotIChkb3VibGUpZ2V0RG91YmxlU2FtcGxlOwpAZW5kCgoKCgoKCkBw
cm90b2NvbCBSYW5kb21CaXREaXN0IDxCb29sZWFuRGlzdHJpYnV0aW9uLCBDUkVBVEFCTEU+CgoK
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1p
ICAgICAgICAgICAgICAgIFBhZ2UgIDEyMQoKCi0gX0lfVXNpbmc7CgotIChCT09MKWdldENvaW5U
b3NzOwpAZW5kCgpAcHJvdG9jb2wgQmVybm91bGxpRGlzdCA8Qm9vbGVhbkRpc3RyaWJ1dGlvbiwg
Q1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25l
CiAgICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5l
cmF0b3IKICBzZXRQcm9iYWJpbGl0eTogKGRvdWJsZSlwOwoKCisgY3JlYXRlIDogKGlkIDxab25l
PilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+
KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW4KICAg
ICAgIHNldFByb2JhYmlsaXR5OiAoZG91YmxlKXA7CgotIF9JX1NldHRpbmc7CgotIHNldFByb2Jh
YmlsaXR5OiAoZG91YmxlKXA7CgotIF9JX1VzaW5nOwoKLSAoZG91YmxlKWdldFByb2JhYmlsaXR5
OwoKCi0gKEJPT0wpZ2V0U2FtcGxlV2l0aFByb2JhYmlsaXR5OiAoZG91YmxlKXA7CkBlbmQKCgpA
cHJvdG9jb2wgVW5pZm9ybUludGVnZXJEaXN0IDxJbnRlZ2VyRGlzdHJpYnV0aW9uLCBDUkVBVEFC
TEU+CgoKCgoKLSBfSV9DcmVhdGluZzsKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogIHNl
dEdlbmVyYXRvcjogKGlkIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+KXNpbXBsZUdlbmVyYXRvcgog
c2V0SW50ZWdlck1pbjogKGludCltaW5WYWx1ZQogICAgICAgIHNldE1heDogKGludCltYXhWYWx1
ZTsKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgIHNldEdlbmVyYXRvcjogKGlk
IDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pc3BsaXRHZW5lcmF0b3IKc2V0VmlydHVhbEdlbmVyYXRv
cjogKHVuc2lnbmVkKSB2R2VuCiAgICAgIHNldEludGVnZXJNaW46IChpbnQpbWluVmFsdWUKICAg
ICAgICAgICAgIHNldE1heDogKGludCltYXhWYWx1ZTsKCi0gX0lfU2V0dGluZzsKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAxMjIKCgoKLSBzZXRJbnRlZ2VyTWluOiAoaW50KW1pblZhbHVlIHNldE1heDog
KGludCltYXhWYWx1ZTsKCi0gX0lfVXNpbmc7CgotIChpbnQpZ2V0SW50ZWdlck1pbjsKCgotIChp
bnQpZ2V0SW50ZWdlck1heDsKCgoKLSAoaW50KWdldEludGVnZXJXaXRoTWluOiAoaW50KW1pblZh
bHVlIHdpdGhNYXg6IChpbnQpbWF4VmFsdWU7CkBlbmQKCkBwcm90b2NvbCBVbmlmb3JtVW5zaWdu
ZWREaXN0IDxVbnNpZ25lZERpc3RyaWJ1dGlvbiwgQ1JFQVRBQkxFPgoKCgoKCi0gX0lfQ3JlYXRp
bmc7CgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgIHNldEdlbmVyYXRvcjogKGlkIDxT
aW1wbGVSYW5kb21HZW5lcmF0b3I+KXNpbXBsZUdlbmVyYXRvcgogIHNldFVuc2lnbmVkTWluOiAo
dW5zaWduZWQpbWluVmFsdWUKICAgICAgICAgIHNldE1heDogKHVuc2lnbmVkKW1heFZhbHVlOwoK
CisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgICBzZXRHZW5lcmF0b3I6IChpZCA8
U3BsaXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAgc2V0VmlydHVhbEdlbmVyYXRv
cjogKHVuc2lnbmVkKXZHZW4KICAgICAgIHNldFVuc2lnbmVkTWluOiAodW5zaWduZWQpbWluVmFs
dWUKICAgICAgICAgICAgICAgc2V0TWF4OiAodW5zaWduZWQpbWF4VmFsdWU7CgotIF9JX1NldHRp
bmc7CgoKLSBzZXRVbnNpZ25lZE1pbjogKHVuc2lnbmVkKW1pblZhbHVlCiAgICAgICAgICBzZXRN
YXg6ICh1bnNpZ25lZCltYXhWYWx1ZTsKCi0gX0lfVXNpbmc7CgotICh1bnNpZ25lZClnZXRVbnNp
Z25lZE1pbjsKCgotICh1bnNpZ25lZClnZXRVbnNpZ25lZE1heDsKCgoKLSAodW5zaWduZWQpZ2V0
VW5zaWduZWRXaXRoTWluOiAodW5zaWduZWQpbWluVmFsCiAgICAgICAgICAgICAgICAgICAgICAg
d2l0aE1heDogKHVuc2lnbmVkKW1heFZhbDsKQGVuZAoKQHByb3RvY29sIFVuaWZvcm1Eb3VibGVE
aXN0IDxEb3VibGVEaXN0cmlidXRpb24sIENSRUFUQUJMRT4KCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAx
MjMKCgoKCgoKCgotIF9JX0NyZWF0aW5nOwoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAg
ICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0
b3IKICAgIHNldERvdWJsZU1pbjogKGRvdWJsZSltaW5WYWx1ZQogICAgICAgICAgc2V0TWF4OiAo
ZG91YmxlKW1heFZhbHVlOwoKCisgY3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogICAgICAgICBz
ZXRHZW5lcmF0b3I6IChpZCA8U3BsaXRSYW5kb21HZW5lcmF0b3I+KXNwbGl0R2VuZXJhdG9yCiAg
c2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW4KICAgICAgICAgc2V0RG91YmxlTWlu
OiAoZG91YmxlKW1pblZhbHVlCiAgICAgICAgICAgICAgIHNldE1heDogKGRvdWJsZSltYXhWYWx1
ZTsKCi0gX0lfU2V0dGluZzsKCgotIHNldERvdWJsZU1pbjogKGRvdWJsZSltaW5WYWx1ZSBzZXRN
YXg6IChkb3VibGUpbWF4VmFsdWU7CgotIF9JX1VzaW5nOwoKCi0gKGRvdWJsZSlnZXREb3VibGVN
aW47CgoKCi0gKGRvdWJsZSlnZXREb3VibGVNYXg7CgoKCi0gKGRvdWJsZSlnZXREb3VibGVXaXRo
TWluOiAoZG91YmxlKW1pblZhbHVlIHdpdGhNYXg6IChkb3VibGUpbWF4VmFsdWU7CkBlbmQKCkBw
cm90b2NvbCBOb3JtYWwgPERvdWJsZURpc3RyaWJ1dGlvbj4KCi0gX0lfQ3JlYXRpbmc7CgoKKyBj
cmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAgICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFu
ZG9tR2VuZXJhdG9yPilzaW1wbGVHZW5lcmF0b3IKICAgICAgICAgc2V0TWVhbjogKGRvdWJsZSlt
ZWFuCiAgICAgc2V0VmFyaWFuY2U6IChkb3VibGUpdmFyaWFuY2U7CgoKCisgY3JlYXRlIDogKGlk
IDxab25lPilhWm9uZQogICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRvbUdlbmVyYXRv
cj4pc2ltcGxlR2VuZXJhdG9yCiAgICAgICAgIHNldE1lYW46IChkb3VibGUpbWVhbgogICAgICAg
c2V0U3RkRGV2OiAoZG91YmxlKXNkZXY7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTI0CgoKCgorIGNy
ZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0
UmFuZG9tR2VuZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1
bnNpZ25lZCl2R2VuCiAgICAgICAgICAgICAgc2V0TWVhbjogKGRvdWJsZSltZWFuCiAgICAgICAg
ICBzZXRWYXJpYW5jZTogKGRvdWJsZSl2YXJpYW5jZTsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+
KWFab25lCiAgICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4p
c3BsaXRHZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2VuZXJhdG9yOiAodW5zaWduZWQpdkdlbgogICAg
ICAgICAgICAgIHNldE1lYW46IChkb3VibGUpbWVhbgogICAgICAgICAgICBzZXRTdGREZXY6IChk
b3VibGUpc2RldjsKCi0gX0lfU2V0dGluZzsKCgotIHNldE1lYW46IChkb3VibGUpbWVhbiBzZXRW
YXJpYW5jZTogKGRvdWJsZSl2YXJpYW5jZTsKCgoKLSBzZXRNZWFuOiAoZG91YmxlKW1lYW4gc2V0
U3RkRGV2OiAoZG91YmxlKXNkZXY7CgotIF9JX1VzaW5nOwoKLSAoZG91YmxlKWdldE1lYW47CgoK
LSAoZG91YmxlKWdldFZhcmlhbmNlOwoKCi0gKGRvdWJsZSlnZXRTdGREZXY7CgoKCi0gKGRvdWJs
ZSlnZXRTYW1wbGVXaXRoTWVhbjogKGRvdWJsZSltZWFuCiAgICAgICAgICAgICAgIHdpdGhWYXJp
YW5jZTogKGRvdWJsZSl2YXJpYW5jZTsKCgoKLSAoZG91YmxlKWdldFNhbXBsZVdpdGhNZWFuOiAo
ZG91YmxlKW1lYW4KICAgICAgICAgICAgICAgICB3aXRoU3RkRGV2OiAoZG91YmxlKXNkZXY7CkBl
bmQKCkBwcm90b2NvbCBOb3JtYWxEaXN0IDxOb3JtYWwsIENSRUFUQUJMRT4KCgoKQGVuZAoKQHBy
b3RvY29sIExvZ05vcm1hbERpc3QgPE5vcm1hbCwgQ1JFQVRBQkxFPgoKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAg
UGFnZSAgMTI1CgoKQGVuZAoKQHByb3RvY29sIEV4cG9uZW50aWFsRGlzdCA8RG91YmxlRGlzdHJp
YnV0aW9uLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZSA6IChpZCA8Wm9u
ZT4pYVpvbmUKICBzZXRHZW5lcmF0b3I6IChpZCA8U2ltcGxlUmFuZG9tR2VuZXJhdG9yPilzaW1w
bGVHZW5lcmF0b3IKICAgICAgIHNldE1lYW46IChkb3VibGUpbWVhbjsKCgorIGNyZWF0ZSA6IChp
ZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2Vu
ZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2
R2VuCiAgICAgICAgICAgICAgc2V0TWVhbjogKGRvdWJsZSltZWFuOwoKCi0gX0lfU2V0dGluZzsK
Ci0gc2V0TWVhbjogKGRvdWJsZSltZWFuOwoKLSBfSV9Vc2luZzsKCi0gKGRvdWJsZSlnZXRNZWFu
OwoKCgotIChkb3VibGUpZ2V0U2FtcGxlV2l0aE1lYW46IChkb3VibGUpbWVhbjsKQGVuZAoKQHBy
b3RvY29sIEdhbW1hRGlzdCA8RG91YmxlRGlzdHJpYnV0aW9uLCBDUkVBVEFCTEU+CgoKCi0gX0lf
Q3JlYXRpbmc7CgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKIHNldEdlbmVyYXRvcjogKGlk
IDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+KXNpbXBsZUdlbmVyYXRvcgogICAgIHNldEFscGhhOiAo
ZG91YmxlKWFscGhhCiAgICAgIHNldEJldGE6IChkb3VibGUpYmV0YTsKCgorIGNyZWF0ZSA6IChp
ZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJhdG9yOiAoaWQgPFNwbGl0UmFuZG9tR2Vu
ZXJhdG9yPilzcGxpdEdlbmVyYXRvcgogIHNldFZpcnR1YWxHZW5lcmF0b3I6ICh1bnNpZ25lZCl2
R2VuCiAgICAgICAgICAgICBzZXRBbHBoYTogKGRvdWJsZSlhbHBoYQogICAgICAgICAgICAgIHNl
dEJldGE6IChkb3VibGUpYmV0YTsKCi0gX0lfU2V0dGluZzsKCgotIHNldEFscGhhOiAoZG91Ymxl
KWFscGhhIHNldEJldGE6IChkb3VibGUpYmV0YTsKCi0gX0lfVXNpbmc7CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQ
YWdlICAxMjYKCgoKLSAoZG91YmxlKWdldEFscGhhOwoKCi0gKGRvdWJsZSlnZXRCZXRhOwoKCgot
IChkb3VibGUpZ2V0U2FtcGxlV2l0aEFscGhhOiAoZG91YmxlKWFscGhhCiAgICAgICAgICAgICAg
ICAgICAgd2l0aEJldGE6IChkb3VibGUpYmV0YTsKQGVuZAoKQHByb3RvY29sIFBvaXNzb25EaXN0
IDxVbnNpZ25lZERpc3RyaWJ1dGlvbiwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKCisg
Y3JlYXRlIDogKGlkIDxab25lPilhWm9uZQogc2V0R2VuZXJhdG9yOiAoaWQgPFNpbXBsZVJhbmRv
bUdlbmVyYXRvcj4pZ2VuZXJhdG9yOwoKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKIHNl
dEdlbmVyYXRvcjogKGlkIDxTaW1wbGVSYW5kb21HZW5lcmF0b3I+KWdlbmVyYXRvcgogc2V0T2Nj
dXJSYXRlOiAoZG91YmxlKSBhbk9jY3VyUmF0ZQogIHNldEludGVydmFsOiAoZG91YmxlKSBhbklu
dGVydmFsOwoKCgorIGNyZWF0ZSA6IChpZCA8Wm9uZT4pYVpvbmUKICAgICAgICAgc2V0R2VuZXJh
dG9yOiAoaWQgPFNwbGl0UmFuZG9tR2VuZXJhdG9yPilnZW5lcmF0b3IKICBzZXRWaXJ0dWFsR2Vu
ZXJhdG9yOiAodW5zaWduZWQpdkdlbjsKCgoKKyBjcmVhdGUgOiAoaWQgPFpvbmU+KWFab25lCiAg
ICAgICAgIHNldEdlbmVyYXRvcjogKGlkIDxTcGxpdFJhbmRvbUdlbmVyYXRvcj4pZ2VuZXJhdG9y
CiAgc2V0VmlydHVhbEdlbmVyYXRvcjogKHVuc2lnbmVkKXZHZW4KICAgICAgICAgc2V0T2NjdXJS
YXRlOiAoZG91YmxlKSBhbk9jY3VyUmF0ZQogICAgICAgICAgc2V0SW50ZXJ2YWw6IChkb3VibGUp
IGFuSW50ZXJ2YWw7CgotIF9JX1NldHRpbmc7CgoKCi0gc2V0SW50ZXJ2YWw6IChkb3VibGUpIGFu
SW50ZXJ2YWw7CgoKCi0gc2V0T2NjdXJSYXRlOiAoZG91YmxlKSBhbk9jY3VyUmF0ZTsKCgoKLSBz
ZXRPY2N1clJhdGU6IChkb3VibGUpIGFuT2NjdXJSYXRlCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxMjcK
CgogICBzZXRJbnRlcnZhbDogKGRvdWJsZSkgYW5JbnRlcnZhbDsKCi0gX0lfVXNpbmc7CgoKLSAo
ZG91YmxlKSBnZXRPY2N1clJhdGU7CgoKLSAoZG91YmxlKSBnZXRJbnRlcnZhbDsKCgoKCi0gKHVu
c2lnbmVkKSBnZXRVbnNpZ25lZFNhbXBsZTsKCgoKCi0gKHVuc2lnbmVkKSBnZXRVbnNpZ25lZFNh
bXBsZVdpdGhJbnRlcnZhbDogKGRvdWJsZSkgYW5JbnRlcnZhbDsKCgoKCgotICh1bnNpZ25lZCkg
Z2V0VW5zaWduZWRTYW1wbGVXaXRoT2NjdXJSYXRlOiAoZG91YmxlKSBhbk9jY3VyUmF0ZQogICAg
ICAgICAgICAgICAgICAgICAgICAgd2l0aEludGVydmFsOiAoZG91YmxlKSBhbkludGVydmFsOwoK
QGVuZAoKCgoKCkBjbGFzcyBSYW5kb21CaXREaXN0OwpAY2xhc3MgQmVybm91bGxpRGlzdDsKCgpA
Y2xhc3MgVW5pZm9ybUludGVnZXJEaXN0OwoKCkBjbGFzcyBVbmlmb3JtVW5zaWduZWREaXN0OwoK
CkBjbGFzcyBVbmlmb3JtRG91YmxlRGlzdDsKQGNsYXNzIE5vcm1hbERpc3Q7CkBjbGFzcyBMb2dO
b3JtYWxEaXN0OwpAY2xhc3MgRXhwb25lbnRpYWxEaXN0OwpAY2xhc3MgR2FtbWFEaXN0OwpAY2xh
c3MgUG9pc3NvbkRpc3Q7CiMgNTAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20uaCIg
MgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tdmFycy5oIiAxCiMg
MjIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9yYW5kb20vcmFuZG9tdmFycy5oIgojIDEgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDIzICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvcmFuZG9tL3JhbmRvbXZhcnMuaCIgMgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAx
MjgKCgoKZXh0ZXJuIGlkIDxNVDE5OTM3Z2VuPiByYW5kb21HZW5lcmF0b3I7CgoKZXh0ZXJuIGlk
IDxVbmlmb3JtSW50ZWdlckRpc3Q+IHVuaWZvcm1JbnRSYW5kOwpleHRlcm4gaWQgPFVuaWZvcm1V
bnNpZ25lZERpc3Q+IHVuaWZvcm1VbnNSYW5kOwpleHRlcm4gaWQgPFVuaWZvcm1Eb3VibGVEaXN0
PiB1bmlmb3JtRGJsUmFuZDsKCgoKCmV4dGVybiBCT09MIF91c2VGaXhlZFNlZWQ7CmV4dGVybiB1
bnNpZ25lZCBpbnQgX2ZpcnN0U2VlZDsKCgoKCgoKCmV4dGVybiB2b2lkIGluaXRSYW5kb20gKGlk
IGFyZ3VtZW50cyk7CmV4dGVybiB1bnNpZ25lZCBpbnQgdGVtcHVzRnVnaXQgKHZvaWQpOwpleHRl
cm4gdW5zaWduZWQgaW50IG5leHRTZWVkICh2b2lkKTsKIyA1MSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL3JhbmRvbS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9y
YW5kb21kZWZzLmgiIDEKIyAyOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3JhbmRvbS9yYW5k
b21kZWZzLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMQojIDkgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL3N3YXJtY29uZmlnLmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2Mu
aCIgMgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
My4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9taXNjLmgiIDIKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAxNiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL21pc2MuaCIgMgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyAxNyAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAz
CiMgMTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKCiMgMSAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIg
MwojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
cG9zaXhfb3B0LmgiIDEgMwojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVk
ZS9iaXRzL2Vudmlyb25tZW50cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUu
aCIgMSAzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2Fy
bS5taSAgICAgICAgICAgICAgICBQYWdlICAxMjkKCgojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9l
bnZpcm9ubWVudHMuaCIgMiAzCiMgMTgwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDE5
MCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu
aCIgMSAzCiMgMTkxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCnR5cGVkZWYgX19zc2l6
ZV90IHNzaXplX3Q7CgoKCgoKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjAwICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYg
X191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYg
X19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoK
CgoKdHlwZWRlZiBfX3BpZF90IHBpZF90OwoKCgoKCgp0eXBlZGVmIF9faW50cHRyX3QgaW50cHRy
X3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5t
aSAgICAgICAgICAgICAgICBQYWdlICAxMzAKCgoKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNv
Y2tsZW5fdDsKIyAyNjAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2Vz
cyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKCgoKCmV4dGVybiBpbnQgZXVp
ZGFjY2VzcyAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpIDsKIyAyOTAgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2Zm
X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgOwojIDMwMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCAoaW50IF9fZmQsIF9fb2ZmNjRfdCBfX29mZnNl
dCwgaW50IF9fd2hlbmNlKSA7CgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKSA7CgoKCmV4
dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVz
KSA7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVm
LCBzaXplX3QgX19uKSA7CgoKCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq
X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmZfdCBfX29mZnNldCkKICAgICAgICAgICAgOwpl
eHRlcm4gc3NpemVfdCBwd3JpdGUgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXpl
X3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmX3QgX19vZmZzZXQpIDsKIyAzNDAg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gc3NpemVfdCBwcmVhZDY0IChpbnQgX19m
ZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywKICAgICAgICAgICAgICAgICAgICAgICAg
X19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKZXh0ZXJuIHNzaXplX3QgcHdyaXRlNjQgKGludCBfX2Zk
LCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgX19vZmY2NF90IF9fb2Zmc2V0KSA7CgoKCgoKCgpleHRlcm4gaW50IHBpcGUgKGludCBfX3Bp
cGVkZXNbMl0pIDsKIyAzNjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gdW5zaWdu
ZWQgaW50IGFsYXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSA7CiMgMzcxICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50IF9f
c2Vjb25kcykgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEzMQoKCgoKCgoKZXh0ZXJuIF9fdXNlY29u
ZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRlcnZh
bCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50IHVzbGVlcCAoX191c2Vjb25kc190IF9fdXNl
Y29uZHMpIDsKCgoKCgpleHRlcm4gaW50IHBhdXNlICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgY2hv
d24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91
cCkKICAgICAgICAgICAgOwoKCgpleHRlcm4gaW50IGZjaG93biAoaW50IF9fZmQsIF9fdWlkX3Qg
X19vd25lciwgX19naWRfdCBfX2dyb3VwKSA7CgoKCgpleHRlcm4gaW50IGxjaG93biAoX19jb25z
dCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgICAg
ICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpl
eHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIDsKIyA0MjMgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoK
CgoKCmV4dGVybiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSAodm9pZCkgOwoKCgoKCgpleHRl
cm4gY2hhciAqZ2V0d2QgKGNoYXIgKl9fYnVmKSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxMzIKCgoK
CgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2ZkKSA7CgoKZXh0ZXJuIGludCBkdXAyIChpbnQgX19m
ZCwgaW50IF9fZmQyKSA7CgoKZXh0ZXJuIGNoYXIgKipfX2Vudmlyb247CgpleHRlcm4gY2hhciAq
KmVudmlyb247CgoKCgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBj
aGFyICpfX2NvbnN0IF9fYXJndltdLAogICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCBf
X2VudnBbXSkgOwoKCgoKZXh0ZXJuIGludCBmZXhlY3ZlIChpbnQgX19mZCwgY2hhciAqX19jb25z
dCBfX2FyZ3ZbXSwgY2hhciAqX19jb25zdCBfX2VudnBbXSkKICAgICAgICAgICAgOwoKCgoKZXh0
ZXJuIGludCBleGVjdiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKl9fY29uc3QgX19hcmd2
W10pIDsKCgoKZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0
IGNoYXIgKl9fYXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVjbCAoX19jb25zdCBjaGFyICpf
X3BhdGgsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgpleHRlcm4gaW50IGV4ZWN2cCAo
X19jb25zdCBjaGFyICpfX2ZpbGUsIGNoYXIgKl9fY29uc3QgX19hcmd2W10pIDsKCgoKCmV4dGVy
biBpbnQgZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywg
Li4uKSA7CgoKCgpleHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgOwoKCgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAg
UGFnZSAgMTMzCgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRl
X18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1l
LmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVudW0KICB7CiAg
ICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lOUFVULAoK
ICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVfQlVGLAoK
ICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBfUENfVkRJ
U0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9QQ19QUklP
X0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTLAoKICAgIF9Q
Q19SRUNfSU5DUl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAoKICAgIF9Q
Q19SRUNfTUlOX1hGRVJfU0laRSwKCiAgICBfUENfUkVDX1hGRVJfQUxJR04KCiAgfTsKCgplbnVt
CiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQ
YWdlICAxMzQKCgogICAgX1NDX0NMS19UQ0ssCgogICAgX1NDX05HUk9VUFNfTUFYLAoKICAgIF9T
Q19PUEVOX01BWCwKCiAgICBfU0NfU1RSRUFNX01BWCwKCiAgICBfU0NfVFpOQU1FX01BWCwKCiAg
ICBfU0NfSk9CX0NPTlRST0wsCgogICAgX1NDX1NBVkVEX0lEUywKCiAgICBfU0NfUkVBTFRJTUVf
U0lHTkFMUywKCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywKCiAgICBfU0NfVElNRVJTLAoK
ICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCgogICAgX1NDX1BSSU9SSVRJWkVEX0lPLAoKICAgIF9T
Q19TWU5DSFJPTklaRURfSU8sCgogICAgX1NDX0ZTWU5DLAoKICAgIF9TQ19NQVBQRURfRklMRVMs
CgogICAgX1NDX01FTUxPQ0ssCgogICAgX1NDX01FTUxPQ0tfUkFOR0UsCgogICAgX1NDX01FTU9S
WV9QUk9URUNUSU9OLAoKICAgIF9TQ19NRVNTQUdFX1BBU1NJTkcsCgogICAgX1NDX1NFTUFQSE9S
RVMsCgogICAgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfQUlPX0xJU1RJT19N
QVgsCgogICAgX1NDX0FJT19NQVgsCgogICAgX1NDX0FJT19QUklPX0RFTFRBX01BWCwKCiAgICBf
U0NfREVMQVlUSU1FUl9NQVgsCgogICAgX1NDX01RX09QRU5fTUFYLAoKICAgIF9TQ19NUV9QUklP
X01BWCwKCiAgICBfU0NfVkVSU0lPTiwKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxMzUKCgogICAgX1ND
X1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoK
ICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJ
TUVSX01BWCwKCgoKCiAgICBfU0NfQkNfQkFTRV9NQVgsCgogICAgX1NDX0JDX0RJTV9NQVgsCgog
ICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKCiAgICBfU0NfQ09M
TF9XRUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAoKICAgIF9TQ19FWFBSX05F
U1RfTUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBfU0NfUkVfRFVQX01BWCwKCiAgICBfU0Nf
Q0hBUkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9WRVJTSU9OLAoKICAgIF9TQ18yX0NfQklO
RCwKCiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9GT1JUX0RFViwKCiAgICBfU0NfMl9GT1JU
X1JVTiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1NDXzJfTE9DQUxFREVGLAoKCiAgICBfU0Nf
UElJLAoKICAgIF9TQ19QSUlfWFRJLAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEzNgoKCiAgICBfU0Nf
UElJX1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAg
IF9TQ19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1ND
X0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwK
CiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAg
X1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgs
CgoKCiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAg
IF9TQ19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9T
Q19MT0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURf
REVTVFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19USFJFQURfS0VZU19NQVgsCgogICAgX1ND
X1RIUkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwKCiAgICBfU0Nf
VEhSRUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgog
ICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19J
TkhFUklULAoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3
YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEzNwoKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJP
VEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NP
UlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywK
CiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNT
X01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9O
LAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9Q
RU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoK
ICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcy
LAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hB
Ul9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5U
X01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQ
YWdlICAxMzgKCgoKICAgIF9TQ19XT1JEX0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBf
U0NfTlpFUk8sCgogICAgX1NDX1NTSVpFX01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9T
Q19TQ0hBUl9NSU4sCgogICAgX1NDX1NIUlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBf
U0NfVUNIQVJfTUFYLAoKICAgIF9TQ19VSU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAg
IF9TQ19VU0hSVF9NQVgsCgoKICAgIF9TQ19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgs
CgogICAgX1NDX05MX01TR01BWCwKCiAgICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFY
LAoKICAgIF9TQ19OTF9URVhUTUFYLAoKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBf
U0NfWEJTNV9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0Nf
WEJTNV9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVO
X1JFQUxUSU1FLAoKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLAoKCiAgICBfU0NfQURW
SVNPUllfSU5GTywKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDEzOQoKCgogICAgX1NDX0JBUlJJRVJTLAoK
ICAgIF9TQ19CQVNFLAoKICAgIF9TQ19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19MQU5HX1NV
UFBPUlRfUiwKCiAgICBfU0NfQ0xPQ0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1FLAoKICAg
IF9TQ19USFJFQURfQ1BVVElNRSwKCiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19ERVZJQ0Vf
U1BFQ0lGSUMsCgogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9NR01ULAoK
ICAgIF9TQ19GSUZPLAoKICAgIF9TQ19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVURVMsCgog
ICAgX1NDX0ZJTEVfTE9DS0lORywKCiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1NDX01PTk9U
T05JQ19DTE9DSywKCiAgICBfU0NfTVVMVElQTEVfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xFX1BS
T0NFU1MsCgogICAgX1NDX05FVFdPUktJTkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1Ms
CgogICAgX1NDX1NQSU5fTE9DS1MsCgogICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhfVkVS
U0lPTiwKCiAgICBfU0NfU0hFTEwsCgogICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdOLAoK
ICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNDAKCgoKICAgIF9T
Q19USFJFQURfU1BPUkFESUNfU0VSVkVSLAoKICAgIF9TQ19TWVNURU1fREFUQUJBU0UsCgogICAg
X1NDX1NZU1RFTV9EQVRBQkFTRV9SLAoKICAgIF9TQ19USU1FT1VUUywKCiAgICBfU0NfVFlQRURf
TUVNT1JZX09CSkVDVFMsCgogICAgX1NDX1VTRVJfR1JPVVBTLAoKICAgIF9TQ19VU0VSX0dST1VQ
U19SLAoKICAgIF9TQ18yX1BCUywKCiAgICBfU0NfMl9QQlNfQUNDT1VOVElORywKCiAgICBfU0Nf
Ml9QQlNfTE9DQVRFLAoKICAgIF9TQ18yX1BCU19NRVNTQUdFLAoKICAgIF9TQ18yX1BCU19UUkFD
SywKCiAgICBfU0NfU1lNTE9PUCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBfU0NfMl9QQlNfQ0hF
Q0tQT0lOVAoKICB9OwoKCgoKCmVudW0KICB7CiAgICBfQ1NfUEFUSAoKCgoKICAgICwKICAgIF9D
U19MRlNfQ0ZMQUdTID0gMTAwMCwKCiAgICBfQ1NfTEZTX0xERkxBR1MsCgogICAgX0NTX0xGU19M
SUJTLAoKICAgIF9DU19MRlNfTElOVEZMQUdTLAoKICAgIF9DU19MRlM2NF9DRkxBR1MsCgogICAg
X0NTX0xGUzY0X0xERkxBR1MsCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
UHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNDEKCgoKICAgIF9DU19MRlM2
NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MKCgoKCiAgICAsCiAgICBfQ1NfWEJTNV9J
TFAzMl9PRkYzMl9DRkxBR1MgPSAxMTAwLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxB
R1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9P
RkYzMl9MSU5URkxBR1MsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUywKCiAgICBf
Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdf
TElCUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoKICAgIF9DU19YQlM1
X0xQNjRfT0ZGNjRfQ0ZMQUdTLAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKCiAg
ICBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5U
RkxBR1MsCgogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUywKCiAgICBfQ1NfWEJTNV9M
UEJJR19PRkZCSUdfTERGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUywKCiAg
ICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTCgoKICB9OwojIDUwMSAiL3Vzci9pbmNs
dWRlL3VuaXN0ZC5oIiAyIDMKCgpleHRlcm4gbG9uZyBpbnQgcGF0aGNvbmYgKF9fY29uc3QgY2hh
ciAqX19wYXRoLCBpbnQgX19uYW1lKSA7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50
IF9fZmQsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgc3lzY29uZiAoaW50IF9fbmFt
ZSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTQy
CgoKZXh0ZXJuIHNpemVfdCBjb25mc3RyIChpbnQgX19uYW1lLCBjaGFyICpfX2J1Ziwgc2l6ZV90
IF9fbGVuKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIDsKCgpleHRlcm4gX19w
aWRfdCBnZXRwcGlkICh2b2lkKSA7CgoKCgpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSA7
CiMgNTM2ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lk
IChfX3BpZF90IF9fcGlkKSA7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lkIChfX3BpZF90IF9fcGlk
KSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3Bn
aWQpIDsKIyA1NjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBncnAg
KHZvaWQpIDsKIyA1ODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gX19waWRfdCBz
ZXRzaWQgKHZvaWQpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0c2lkIChfX3BpZF90IF9fcGlkKSA7
CgoKCmV4dGVybiBfX3VpZF90IGdldHVpZCAodm9pZCkgOwoKCmV4dGVybiBfX3VpZF90IGdldGV1
aWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIDsKCgpleHRlcm4gX19n
aWRfdCBnZXRlZ2lkICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6
ZSwgX19naWRfdCBfX2xpc3RbXSkgOwoKCgpleHRlcm4gaW50IGdyb3VwX21lbWJlciAoX19naWRf
dCBfX2dpZCkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE0MwoKCgoKCgoKZXh0ZXJuIGludCBzZXR1
aWQgKF9fdWlkX3QgX191aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19y
dWlkLCBfX3VpZF90IF9fZXVpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90IF9f
dWlkKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0Z2lkIChfX2dpZF90IF9fZ2lkKSA7CgoKCgpleHRl
cm4gaW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIDsKCgoKCmV4
dGVybiBpbnQgc2V0ZWdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBm
b3JrICh2b2lkKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICh2b2lkKSA7CgoKCgoKZXh0
ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSA7CgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNDQK
CgpleHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSA7CgoKCgoKZXh0ZXJuIGlu
dCB0dHlzbG90ICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGxpbmsgKF9fY29uc3QgY2hhciAqX19m
cm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKZXh0ZXJuIGludCBzeW1saW5rIChfX2NvbnN0
IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7CgoKCgpleHRlcm4gaW50IHJlYWRs
aW5rIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCB1
bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0ZXJuIGludCBybWRpciAoX19jb25z
dCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19mZCkg
OwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpIDsK
CgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldGxvZ2lu
X3IgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbmFtZV9sZW4pIDsKCgoKCmV4dGVybiBpbnQgc2V0
bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CiMgNzI2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAg
MTQ1CgoKIyA0NyAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBjaGFyICpvcHRhcmc7
CiMgNjEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4
dGVybiBpbnQgb3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyAxNDUgIi91c3IvaW5jbHVk
ZS9nZXRvcHQuaCIgMwpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3Qg
Kl9fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpOwojIDcyNyAiL3Vzci9pbmNsdWRlL3Vu
aXN0ZC5oIiAyIDMKCgoKCgoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNoYXIgKl9fbmFtZSwg
c2l6ZV90IF9fbGVuKSA7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKF9fY29uc3QgY2hh
ciAqX19uYW1lLCBzaXplX3QgX19sZW4pIDsKCgoKZXh0ZXJuIGludCBzZXRob3N0aWQgKGxvbmcg
aW50IF9faWQpIDsKCgoKCgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwg
c2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpf
X25hbWUsIHNpemVfdCBfX2xlbikgOwoKCgoKCmV4dGVybiBpbnQgdmhhbmd1cCAodm9pZCkgOwoK
CmV4dGVybiBpbnQgcmV2b2tlIChfX2NvbnN0IGNoYXIgKl9fZmlsZSkgOwoKCgoKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAxNDYKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1bnNpZ25lZCBzaG9ydCBpbnQg
Kl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpIDsKCgoKCgpleHRlcm4gaW50IGFjY3Qg
KF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZv
aWQpIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSA7CmV4dGVybiB2b2lkIHNldHVz
ZXJzaGVsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9uIChpbnQgX19ub2NoZGlyLCBp
bnQgX19ub2Nsb3NlKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hyb290IChfX2NvbnN0IGNoYXIgKl9f
cGF0aCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25zdCBjaGFyICpfX3Byb21wdCkg
OwoKCgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSA7CgoKCgoKCmV4dGVybiBsb25nIGlu
dCBnZXRob3N0aWQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBzeW5jICh2b2lkKSA7CgoKCgpleHRl
cm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAg
ICAgICAgICAgICAgIFBhZ2UgIDE0NwoKCgoKZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgpIDsKIyA4MzYgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwpleHRlcm4gaW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29m
ZjY0X3QgX19sZW5ndGgpIDsKCgoKCmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19v
ZmZfdCBfX2xlbmd0aCkgOwojIDg1MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBp
bnQgZnRydW5jYXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgpIDsKCgoKCgpleHRl
cm4gaW50IGdldGR0YWJsZXNpemUgKHZvaWQpIDsKIyA4NjYgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gaW50IGJyayAodm9pZCAqX19hZGRyKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKnNi
cmsgKGludHB0cl90IF9fZGVsdGEpIDsKIyA4ODcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSA7CiMgOTA3ICIv
dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQsIGludCBf
X2NtZCwgX19vZmZfdCBfX2xlbikgOwojIDkxNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4
dGVybiBpbnQgbG9ja2Y2NCAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSA7
CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGlu
dCBfX2ZpbGRlcykgOwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmNyeXB0IChfX2NvbnN0IGNoYXIgKl9f
a2V5LCBfX2NvbnN0IGNoYXIgKl9fc2FsdCkgOwoKCgpleHRlcm4gdm9pZCBlbmNyeXB0IChjaGFy
ICpfX2Jsb2NrLCBpbnQgX19lZGZsYWcpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgc3dhYiAoX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAqX19yZXN0cmljdCBfX3RvLAogICAgICAg
ICAgICAgICAgICBzc2l6ZV90IF9fbikgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNDgKCgoKCgoK
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIDsKIyA5ODMgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lkICgqX19wcmVwYXJlKSAo
dm9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSA7CiMg
MjAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUv
dGltZS5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgMzggIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzkgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMg
NDMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDU2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNTcgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMK
Cgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAyIDMKCgp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRfdDsKIyA5MSAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEw
NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3QgdGltZXNwZWMKICB7CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAxNDkKCgogICAgbG9uZyBpbnQgdHZfc2VjOwogICAgbG9uZyBpbnQgdHZfbnNlYzsK
ICB9OwoKCgoKCgoKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50
IHRtX2hvdXI7CiAgaW50IHRtX21kYXk7CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBp
bnQgdG1fd2RheTsKICBpbnQgdG1feWRheTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0
bV9nbXRvZmY7CiAgX19jb25zdCBjaGFyICp0bV96b25lOwoKCgoKfTsKCgoKCnN0cnVjdCBpdGlt
ZXJzcGVjCiAgewogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRp
bWVzcGVjIGl0X3ZhbHVlOwogIH07CgoKc3RydWN0IHNpZ2V2ZW50OwojIDE2MyAiL3Vzci9pbmNs
dWRlL3RpbWUuaCIgMwpleHRlcm4gY2xvY2tfdCBjbG9jayAodm9pZCkgOwoKCmV4dGVybiB0aW1l
X3QgdGltZSAodGltZV90ICpfX3RpbWVyKSA7CgoKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGlt
ZV90IF9fdGltZTEsIHRpbWVfdCBfX3RpbWUwKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiB0aW1lX3QgbWt0aW1lIChzdHJ1Y3QgdG0gKl9fdHApIDsK
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkg
ICAgICAgICAgICAgICAgUGFnZSAgMTUwCgoKCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgOwoKCgoKZXh0ZXJuIGNo
YXIgKnN0cnB0aW1lIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0IHRtICpfX3Rw
KQogICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRp
bWVfdCAqX190aW1lcikgOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUgKF9fY29uc3Qg
dGltZV90ICpfX3RpbWVyKSA7CgoKCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAoX19jb25z
dCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2Fs
dGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVy
biBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgOwoKCmV4dGVybiBjaGFy
ICpjdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGltZXIpIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmFz
Y3RpbWVfciAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCwKICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCmV4dGVybiBjaGFyICpjdGlt
ZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNTEK
CgoKCmV4dGVybiBjaGFyICpfX3R6bmFtZVsyXTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRl
cm4gbG9uZyBpbnQgX190aW1lem9uZTsKCgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4
dGVybiB2b2lkIHR6c2V0ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVybiBs
b25nIGludCB0aW1lem9uZTsKCgoKCgpleHRlcm4gaW50IHN0aW1lIChfX2NvbnN0IHRpbWVfdCAq
X193aGVuKSA7CiMgMjcxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiB0aW1lX3QgdGlt
ZWdtIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0
IHRtICpfX3RwKSA7CgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IG5hbm9zbGVlcCAoX19jb25zdCBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSA7CgoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzIChj
bG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3JlcykgOwoKCmV4dGVybiBp
bnQgY2xvY2tfZ2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAq
X190cCkgOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQs
IF9fY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgICAgICAgICA7CgoKCmV4dGVybiBp
bnQgY2xvY2tfbmFub3NsZWVwIChjbG9ja2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEs
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAg
ICAgICAgICAgICAgICBQYWdlICAxNTIKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHRpbWVzcGVjICpfX3JlbSkgOwoKCmV4dGVybiBpbnQgY2xvY2tfZ2V0Y3B1Y2xvY2tpZCAo
cGlkX3QgX19waWQsIGNsb2NraWRfdCAqX19jbG9ja19pZCkgOwoKCgoKZXh0ZXJuIGludCB0aW1l
cl9jcmVhdGUgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAg
c3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZXJfdCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRpbWVyX2Rl
bGV0ZSAodGltZXJfdCBfX3RpbWVyaWQpIDsKCgpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUgKHRp
bWVyX3QgX190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIDsK
CgpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRp
bWVyc3BlYyAqX192YWx1ZSkKICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0b3Zl
cnJ1biAodGltZXJfdCBfX3RpbWVyaWQpIDsKIyAzNDIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMK
ZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlIChf
X2NvbnN0IGNoYXIgKl9fc3RyaW5nKSA7CiMgMzU3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4
dGVybiBpbnQgZ2V0ZGF0ZV9yIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKSA7CiMg
MjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUv
c3lzL3RpbWUuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1
ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDI3ICIv
dXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUu
aCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDEgMwojIDY0ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDIgMwoK
CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkg
ICAgICAgICAgICAgICAgUGFnZSAgMTUzCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVf
dCB0dl9zZWM7CiAgICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyAyOSAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMK
IyAyNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiMgMzIgIi91
c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2ln
c2V0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwp0eXBlZGVmIGlu
dCBfX3NpZ19hdG9taWNfdDsKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQgbG9u
ZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwog
IH0gX19zaWdzZXRfdDsKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKCnR5
cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg
MSAzCiMgNDQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy90aW1lLmgiIDEgMwojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMK
CgoKdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7CgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAx
NTQKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAv
ICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlwZWRl
ZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwpl
eHRlcm4gaW50IHNlbGVjdCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZk
cywKICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAg
ICAgICAgICAgICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICAgICAg
ICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KSA7CgoKCgoKZXh0
ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRz
LAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLAogICAg
ICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAog
ICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJpY3QgX19zaWdtYXNr
KSA7CiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9fc3VzZWNv
bmRzX3Qgc3VzZWNvbmRzX3Q7CiMgNTYgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVj
dCB0aW1lem9uZQogIHsKICAgIGludCB0el9taW51dGVzd2VzdDsKICAgIGludCB0el9kc3R0aW1l
OwogIH07Cgp0eXBlZGVmIHN0cnVjdCB0aW1lem9uZSAqX19yZXN0cmljdCBfX3RpbWV6b25lX3B0
cl90OwojIDcyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwpleHRlcm4gaW50IGdldHRpbWVv
ZmRheSAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190diwKICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdGltZXpvbmVfcHRyX3QgX190eikgOwoKCgoKZXh0ZXJuIGludCBzZXR0aW1lb2Zk
YXkgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fdHYsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eikgOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTU1
CgoKCgoKCgpleHRlcm4gaW50IGFkanRpbWUgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fZGVs
dGEsCiAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKl9fb2xkZGVsdGEpIDsKCgoK
CmVudW0gX19pdGltZXJfd2hpY2gKICB7CgogICAgSVRJTUVSX1JFQUwgPSAwLAoKCiAgICBJVElN
RVJfVklSVFVBTCA9IDEsCgoKCiAgICBJVElNRVJfUFJPRiA9IDIKCiAgfTsKCgoKc3RydWN0IGl0
aW1lcnZhbAogIHsKCiAgICBzdHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsKCiAgICBzdHJ1Y3Qg
dGltZXZhbCBpdF92YWx1ZTsKICB9OwoKCnR5cGVkZWYgZW51bSBfX2l0aW1lcl93aGljaCBfX2l0
aW1lcl93aGljaF90OwoKCgoKCgpleHRlcm4gaW50IGdldGl0aW1lciAoX19pdGltZXJfd2hpY2hf
dCBfX3doaWNoLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGl0aW1lcnZhbCAqX192YWx1
ZSkgOwoKCgoKZXh0ZXJuIGludCBzZXRpdGltZXIgKF9faXRpbWVyX3doaWNoX3QgX193aGljaCwK
ICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqX19yZXN0cmlj
dCBfX25ldywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJ2YWwgKl9fcmVzdHJp
Y3QgX19vbGQpIDsKCgoKZXh0ZXJuIGludCB1dGltZXMgKF9fY29uc3QgY2hhciAqX19maWxlLCBf
X2NvbnN0IHN0cnVjdCB0aW1ldmFsIF9fdHZwWzJdKQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTU2CgoK
ICAgICAgICAgICAgOwojIDIyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAyCiMg
MSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2Vy
cm5vLmgiIDIgMwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDEgMwojIDI1
ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vy
cm5vLmgiIDEgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMSAzCiMgNSAiL3Vz
ci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDIgMwojIDI2ICIvdXNyL2luY2x1ZGUvYml0cy9lcnJu
by5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMwpleHRlcm4gaW50IGVy
cm5vOwoKCmV4dGVybiBpbnQgKl9fZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKIyAzNyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMwojIDU1ICIvdXNy
L2luY2x1ZGUvZXJybm8uaCIgMwpleHRlcm4gY2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUs
ICpwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZTsKIyA2OSAiL3Vzci9pbmNsdWRlL2Vycm5v
LmgiIDMKdHlwZWRlZiBpbnQgZXJyb3JfdDsKIyAyMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L21pc2MuaCIgMgojIDEgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMKIyAyNiAiL3Vzci9pbmNs
dWRlL2N0eXBlLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91
c3IvaW5jbHVkZS9jdHlwZS5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAyOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDQwICIvdXNyL2luY2x1ZGUvY3R5
cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNDEgIi91c3IvaW5jbHVk
ZS9jdHlwZS5oIiAyIDMKCgoKCgoKZW51bQp7CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8
PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkgPj4gOCkpLAogIF9JU2xvd2VyID0gKCgxKSA8IDgg
PyAoKDEgPDwgKDEpKSA8PCA4KSA6ICgoMSA8PCAoMSkpID4+IDgpKSwKICBfSVNhbHBoYSA9ICgo
MikgPCA4ID8gKCgxIDw8ICgyKSkgPDwgOCkgOiAoKDEgPDwgKDIpKSA+PiA4KSksCiAgX0lTZGln
aXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAoMykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLAog
IF9JU3hkaWdpdCA9ICgoNCkgPCA4ID8gKCgxIDw8ICg0KSkgPDwgOCkgOiAoKDEgPDwgKDQpKSA+
PiA4KSksCiAgX0lTc3BhY2UgPSAoKDUpIDwgOCA/ICgoMSA8PCAoNSkpIDw8IDgpIDogKCgxIDw8
ICg1KSkgPj4gOCkpLAogIF9JU3ByaW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6
ICgoMSA8PCAoNikpID4+IDgpKSwKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
ICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE1NwoKCiAgX0lTZ3JhcGgg
PSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgpIDogKCgxIDw8ICg3KSkgPj4gOCkpLAogIF9J
U2JsYW5rID0gKCg4KSA8IDggPyAoKDEgPDwgKDgpKSA8PCA4KSA6ICgoMSA8PCAoOCkpID4+IDgp
KSwKICBfSVNjbnRybCA9ICgoOSkgPCA4ID8gKCgxIDw8ICg5KSkgPDwgOCkgOiAoKDEgPDwgKDkp
KSA+PiA4KSksCiAgX0lTcHVuY3QgPSAoKDEwKSA8IDggPyAoKDEgPDwgKDEwKSkgPDwgOCkgOiAo
KDEgPDwgKDEwKSkgPj4gOCkpLAogIF9JU2FsbnVtID0gKCgxMSkgPCA4ID8gKCgxIDw8ICgxMSkp
IDw8IDgpIDogKCgxIDw8ICgxMSkpID4+IDgpKQp9OwojIDc1ICIvdXNyL2luY2x1ZGUvY3R5cGUu
aCIgMwpleHRlcm4gX19jb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKZXh0ZXJu
IF9fY29uc3QgX19pbnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7CmV4dGVybiBfX2NvbnN0IF9faW50
MzJfdCAqX19jdHlwZV90b3VwcGVyOwojIDkxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMwpleHRl
cm4gaW50IGlzYWxudW0gKGludCkgOwpleHRlcm4gaW50IGlzYWxwaGEgKGludCkgOwpleHRlcm4g
aW50IGlzY250cmwgKGludCkgOwpleHRlcm4gaW50IGlzZGlnaXQgKGludCkgOwpleHRlcm4gaW50
IGlzbG93ZXIgKGludCkgOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgOwpleHRlcm4gaW50IGlz
cHJpbnQgKGludCkgOwpleHRlcm4gaW50IGlzcHVuY3QgKGludCkgOwpleHRlcm4gaW50IGlzc3Bh
Y2UgKGludCkgOwpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgOwpleHRlcm4gaW50IGlzeGRpZ2l0
IChpbnQpIDsKCgpleHRlcm4gaW50IGlzYmxhbmsgKGludCkgOwoKCgoKZXh0ZXJuIGludCB0b2xv
d2VyIChpbnQgX19jKSA7CgoKZXh0ZXJuIGludCB0b3VwcGVyIChpbnQgX19jKSA7CgoKCgoKCmV4
dGVybiBpbnQgaXNhc2NpaSAoaW50IF9fYykgOwoKCgpleHRlcm4gaW50IHRvYXNjaWkgKGludCBf
X2MpIDsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSA7CmV4dGVybiBpbnQgX3RvbG93ZXIg
KGludCkgOwojIDE2OCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMKZXh0ZXJuIF9faW5saW5lIGlu
dAp0b2xvd2VyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1NiA/
IF9fY3R5cGVfdG9sb3dlcltfX2NdIDogX19jOwp9CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTU4CgoK
ZXh0ZXJuIF9faW5saW5lIGludAp0b3VwcGVyIChpbnQgX19jKQp7CiAgcmV0dXJuIF9fYyA+PSAt
MTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDogX19jOwp9CiMgMjExICIv
dXNyL2luY2x1ZGUvY3R5cGUuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDEgMwoj
IDIxMiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwojIDIyNCAiL3Vzci9pbmNsdWRlL2N0eXBl
LmgiIDMKZXh0ZXJuIGludCBfX2lzYWxudW1fbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBp
bnQgX19pc2FscGhhX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4gaW50IF9faXNjbnRybF9s
IChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzZGlnaXRfbCAoaW50LCBfX2xvY2Fs
ZV90KSA7CmV4dGVybiBpbnQgX19pc2xvd2VyX2wgKGludCwgX19sb2NhbGVfdCkgOwpleHRlcm4g
aW50IF9faXNncmFwaF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJuIGludCBfX2lzcHJpbnRf
bCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3B1bmN0X2wgKGludCwgX19sb2Nh
bGVfdCkgOwpleHRlcm4gaW50IF9faXNzcGFjZV9sIChpbnQsIF9fbG9jYWxlX3QpIDsKZXh0ZXJu
IGludCBfX2lzdXBwZXJfbCAoaW50LCBfX2xvY2FsZV90KSA7CmV4dGVybiBpbnQgX19pc3hkaWdp
dF9sIChpbnQsIF9fbG9jYWxlX3QpIDsKCmV4dGVybiBpbnQgX19pc2JsYW5rX2wgKGludCwgX19s
b2NhbGVfdCkgOwoKCgpleHRlcm4gaW50IF9fdG9sb3dlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90
IF9fbCkgOwoKCmV4dGVybiBpbnQgX190b3VwcGVyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19s
KSA7CiMgMjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMzEg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7
CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRl
ZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19xdWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9x
dWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lkX3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2Zm
X3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3QgaW5vX3Q7CgoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAg
MTU5CgoKCgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwoKCgoKdHlwZWRlZiBfX2Rldl90
IGRldl90OwojIDY4ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX21vZGVf
dCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwojIDEwMSAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19pZF90IGlkX3Q7CiMgMTExICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2Nh
ZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojIDEyNiAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMgMTI3ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDE0MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNp
Z25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE4NCAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0
ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhf
dCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9f
bW9kZV9fIChfX3dvcmRfXykpKTsKIyAyMDYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoj
IDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgMjA3ICIvdXNyL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDIgMwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2Rl
bFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE2MAoKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDEgMwojIDIxMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoj
IDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwojIDIxMyAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMKCgoKCnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwoKCgoK
Cgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZz
YmxrY250X3Q7CgoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiMgMjUxICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsK
dHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0
X3QgZnNmaWxjbnQ2NF90OwojIDI1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvbWlzYy5oIiAy
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lz
L3N0YXQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAx
IDMKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMiAzCiMgOTggIi91
c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAx
IDMKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0CiAgewogICAg
X19kZXZfdCBzdF9kZXY7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5v
X3Qgc3RfaW5vOwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1v
ZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTYxCgoKICAgIF9fbW9kZV90IHN0X21v
ZGU7CiAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICBfX3VpZF90IHN0X3VpZDsKICAgIF9fZ2lk
X3Qgc3RfZ2lkOwogICAgX19kZXZfdCBzdF9yZGV2OwogICAgdW5zaWduZWQgc2hvcnQgaW50IF9f
cGFkMjsKCiAgICBfX29mZl90IHN0X3NpemU7CgoKCiAgICBfX2Jsa3NpemVfdCBzdF9ibGtzaXpl
OwoKCiAgICBfX2Jsa2NudF90IHN0X2Jsb2NrczsKCgoKICAgIF9fdGltZV90IHN0X2F0aW1lOwog
ICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAg
ICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAg
IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3Vu
dXNlZDQ7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNlZDU7CgoKCiAgfTsKCgpzdHJ1Y3Qg
c3RhdDY0CiAgewogICAgX19kZXZfdCBzdF9kZXY7CiAgICB1bnNpZ25lZCBpbnQgX19wYWQxOwoK
ICAgIF9faW5vX3QgX19zdF9pbm87CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190
IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAgIF9f
ZGV2X3Qgc3RfcmRldjsKICAgIHVuc2lnbmVkIGludCBfX3BhZDI7CiAgICBfX29mZjY0X3Qgc3Rf
c2l6ZTsKICAgIF9fYmxrc2l6ZV90IHN0X2Jsa3NpemU7CgogICAgX19ibGtjbnQ2NF90IHN0X2Js
b2NrczsKICAgIF9fdGltZV90IHN0X2F0aW1lOwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVz
ZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CiAgICB1bnNpZ25lZCBsb25nIGludCBfX3VudXNl
ZDI7CiAgICBfX3RpbWVfdCBzdF9jdGltZTsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2Vk
MzsKICAgIF9faW5vNjRfdCBzdF9pbm87CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNjIKCgogIH07CiMg
OTkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMDAgIi91c3IvaW5jbHVkZS9zeXMv
c3RhdC5oIiAzCmV4dGVybiBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmls
ZSwKICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgOwoKCgpl
eHRlcm4gaW50IGZzdGF0IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSA7CiMgMjE5ICIv
dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IHN0YXQ2NCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0NjQgKl9f
cmVzdHJpY3QgX19idWYpIDsKZXh0ZXJuIGludCBmc3RhdDY0IChpbnQgX19mZCwgc3RydWN0IHN0
YXQ2NCAqX19idWYpIDsKCgoKCgoKZXh0ZXJuIGludCBsc3RhdCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fcmVzdHJpY3Qg
X19idWYpIDsKIyAyNDEgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzCmV4dGVybiBpbnQgbHN0
YXQ2NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCgoKCmV4dGVybiBpbnQgY2ht
b2QgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpIDsKCgoKZXh0ZXJuIGlu
dCBmY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21vZGUpIDsKCgoKCgpleHRlcm4gX19tb2Rl
X3QgdW1hc2sgKF9fbW9kZV90IF9fbWFzaykgOwoKCgoKZXh0ZXJuIF9fbW9kZV90IGdldHVtYXNr
ICh2b2lkKSA7CgoKCmV4dGVybiBpbnQgbWtkaXIgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21v
ZGVfdCBfX21vZGUpIDsKCgoKCgpleHRlcm4gaW50IG1rbm9kIChfX2NvbnN0IGNoYXIgKl9fcGF0
aCwgX19tb2RlX3QgX19tb2RlLCBfX2Rldl90IF9fZGV2KQoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTYz
CgoKICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCBta2ZpZm8gKF9fY29uc3QgY2hhciAqX19w
YXRoLCBfX21vZGVfdCBfX21vZGUpIDsKIyAzMDYgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAz
CmV4dGVybiBpbnQgX19meHN0YXQgKGludCBfX3ZlciwgaW50IF9fZmlsZGVzLCBzdHJ1Y3Qgc3Rh
dCAqX19zdGF0X2J1ZikgOwpleHRlcm4gaW50IF9feHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBj
aGFyICpfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRf
YnVmKSA7CmV4dGVybiBpbnQgX19seHN0YXQgKGludCBfX3ZlciwgX19jb25zdCBjaGFyICpfX2Zp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgOwoj
IDMzMCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKZXh0ZXJuIGludCBfX2Z4c3RhdDY0IChp
bnQgX192ZXIsIGludCBfX2ZpbGRlcywgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1ZikKICAgICAg
ICAgICAgOwpleHRlcm4gaW50IF9feHN0YXQ2NCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3N0YXRfYnVm
KSA7CmV4dGVybiBpbnQgX19seHN0YXQ2NCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fZmls
ZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQ2NCAqX19zdGF0X2J1Zikg
OwoKZXh0ZXJuIGludCBfX3hta25vZCAoaW50IF9fdmVyLCBfX2NvbnN0IGNoYXIgKl9fcGF0aCwg
X19tb2RlX3QgX19tb2RlLAogICAgICAgICAgICAgICAgICAgICBfX2Rldl90ICpfX2RldikgOwoK
CgoKZXh0ZXJuIF9faW5saW5lX18gaW50IHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgKl9fc3RhdGJ1ZikKewogIHJldHVy
biBfX3hzdGF0ICgzLCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBp
bnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19seHN0YXQgKDMsIF9fcGF0
aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBmc3RhdCAoaW50IF9fZmQs
IHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpCnsKICByZXR1cm4gX19meHN0YXQgKDMsIF9fZmQsIF9f
c3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbWtub2QgKF9fY29uc3QgY2hhciAq
X19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19k
ZXZfdCBfX2RldikKewogIHJldHVybiBfX3hta25vZCAoMSwgX19wYXRoLCBfX21vZGUsICZfX2Rl
dik7Cn0KCgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVs
U3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTY0CgoKZXh0ZXJuIF9faW5saW5lX18gaW50
IHN0YXQ2NCAoX19jb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX3hzdGF0NjQgKDMsIF9f
cGF0aCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBsc3RhdDY0IChfX2Nv
bnN0IGNoYXIgKl9fcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
dGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2x4c3RhdDY0ICgzLCBfX3BhdGgsIF9fc3Rh
dGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQ2NCAoaW50IF9fZmQsIHN0cnVj
dCBzdGF0NjQgKl9fc3RhdGJ1ZikKewogIHJldHVybiBfX2Z4c3RhdDY0ICgzLCBfX2ZkLCBfX3N0
YXRidWYpOwp9CiMgMjYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MiAzCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIyAyNSAiL3Vz
ci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5o
IiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMiAzCiMgMzQgIi91c3Iv
aW5jbHVkZS9tYXRoLmgiIDIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL25hbi5oIiAxIDMK
IyAzOCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t
YXRoZGVmLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMKdHlwZWRl
ZiBsb25nIGRvdWJsZSBmbG9hdF90OwoKdHlwZWRlZiBsb25nIGRvdWJsZSBkb3VibGVfdDsKIyA0
MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgNjMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMK
IyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiMgNTQgIi91c3IvaW5jbHVk
ZS9iaXRzL21hdGhjYWxscy5oIiAzCmV4dGVybiBkb3VibGUgYWNvcyAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fYWNvcyAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBhc2luIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19hc2luIChkb3VibGUgX194KSA7CgpleHRlcm4g
ZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2F0YW4gKGRvdWJsZSBf
X3gpIDsKCmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSBfX3ksIGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2F0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSA7CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAxNjUKCgoKCmV4dGVybiBkb3VibGUgY29zIChkb3VibGUgX194KSA7IGV4dGVybiBk
b3VibGUgX19jb3MgKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgc2luIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19zaW4gKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgdGFu
IChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX190YW4gKGRvdWJsZSBfX3gpIDsKCgoKZXh0
ZXJuIHZvaWQgc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91YmxlICpfX2Nv
c3gpIDsgZXh0ZXJuIHZvaWQgX19zaW5jb3MgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBk
b3VibGUgKl9fY29zeCkgOwoKCgoKCgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGRvdWJsZSBfX2Nvc2ggKGRvdWJsZSBfX3gpIDsKCmV4dGVybiBkb3VibGUgc2luaCAo
ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2luaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJu
IGRvdWJsZSB0YW5oIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX190YW5oIChkb3VibGUg
X194KSA7CgoKCmV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJs
ZSBfX2Fjb3NoIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIGFzaW5oIChkb3VibGUgX194
KSA7IGV4dGVybiBkb3VibGUgX19hc2luaCAoZG91YmxlIF9feCkgOwoKZXh0ZXJuIGRvdWJsZSBh
dGFuaCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fYXRhbmggKGRvdWJsZSBfX3gpIDsK
CgoKCgpleHRlcm4gZG91YmxlIGV4cCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fZXhw
IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBkb3VibGUgZXhwMTAgKGRvdWJsZSBfX3gpIDsgZXh0
ZXJuIGRvdWJsZSBfX2V4cDEwIChkb3VibGUgX194KSA7CgpleHRlcm4gZG91YmxlIHBvdzEwIChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19wb3cxMCAoZG91YmxlIF9feCkgOwoKCgpleHRl
cm4gZG91YmxlIGZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsgZXh0ZXJuIGRv
dWJsZSBfX2ZyZXhwIChkb3VibGUgX194LCBpbnQgKl9fZXhwb25lbnQpIDsKCgpleHRlcm4gZG91
YmxlIGxkZXhwIChkb3VibGUgX194LCBpbnQgX19leHBvbmVudCkgOyBleHRlcm4gZG91YmxlIF9f
bGRleHAgKGRvdWJsZSBfX3gsIGludCBfX2V4cG9uZW50KSA7CgoKZXh0ZXJuIGRvdWJsZSBsb2cg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZyAoZG91YmxlIF9feCkgOwoKCmV4dGVy
biBkb3VibGUgbG9nMTAgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwIChkb3Vi
bGUgX194KSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVs
U3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTY2CgoKCmV4dGVybiBkb3VibGUgbW9kZiAo
ZG91YmxlIF9feCwgZG91YmxlICpfX2lwdHIpIDsgZXh0ZXJuIGRvdWJsZSBfX21vZGYgKGRvdWJs
ZSBfX3gsIGRvdWJsZSAqX19pcHRyKSA7CgoKCmV4dGVybiBkb3VibGUgZXhwbTEgKGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJs
ZSBsb2cxcCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMXAgKGRvdWJsZSBfX3gp
IDsKCgpleHRlcm4gZG91YmxlIGxvZ2IgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2xv
Z2IgKGRvdWJsZSBfX3gpIDsKCgoKCmV4dGVybiBkb3VibGUgZXhwMiAoZG91YmxlIF9feCkgOyBl
eHRlcm4gZG91YmxlIF9fZXhwMiAoZG91YmxlIF9feCkgOwoKCmV4dGVybiBkb3VibGUgbG9nMiAo
ZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fbG9nMiAoZG91YmxlIF9feCkgOwoKCgoKCgpl
eHRlcm4gZG91YmxlIHBvdyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91Ymxl
IF9fcG93IChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGRvdWJsZSBzcXJ0IChk
b3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19zcXJ0IChkb3VibGUgX194KSA7CgoKCmV4dGVy
biBkb3VibGUgaHlwb3QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBf
X2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSA7CgoKCgpleHRlcm4gZG91YmxlIGNicnQg
KGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX2NicnQgKGRvdWJsZSBfX3gpIDsKCgoKCgoK
ZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19jZWlsIChk
b3VibGUgX194KSA7CgoKZXh0ZXJuIGRvdWJsZSBmYWJzIChkb3VibGUgX194KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91YmxlIF9f
eCkgOyBleHRlcm4gZG91YmxlIF9fZmxvb3IgKGRvdWJsZSBfX3gpIDsKCgpleHRlcm4gZG91Ymxl
IGZtb2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX2Ztb2QgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNjcKCgoKCgpleHRl
cm4gaW50IF9faXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZSAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmYgKGRvdWJsZSBfX3ZhbHVlKSBfX2F0
dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBmaW5pdGUgKGRvdWJsZSBfX3Zh
bHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgpleHRlcm4gZG91YmxlIGlu
Zm5hbiAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRv
dWJsZSBfX2luZm5hbiAoaW50IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gZG91YmxlIGRyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRv
dWJsZSBfX2RyZW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsKCgoKZXh0ZXJuIGRvdWJsZSBz
aWduaWZpY2FuZCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fc2lnbmlmaWNhbmQgKGRv
dWJsZSBfX3gpIDsKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBfX3gsIGRvdWJs
ZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2NvcHlz
aWduIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CgoKCgpleHRlcm4gZG91YmxlIG5hbiAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX25hbiAoX19jb25zdCBjaGFyICpfX3Rh
Z2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbiAo
ZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGlu
dCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl
eHRlcm4gZG91YmxlIGowIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2owIChkb3VibGUpIDsK
ZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qMSAoZG91YmxlKSA7
CmV4dGVybiBkb3VibGUgam4gKGludCwgZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19qbiAoaW50
LCBkb3VibGUpIDsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX195
MCAoZG91YmxlKSA7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9f
eTEgKGRvdWJsZSkgOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1v
ZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTY4CgoKZXh0ZXJuIGRvdWJsZSB5biAo
aW50LCBkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX3luIChpbnQsIGRvdWJsZSkgOwoKCgoKCmV4
dGVybiBkb3VibGUgZXJmIChkb3VibGUpIDsgZXh0ZXJuIGRvdWJsZSBfX2VyZiAoZG91YmxlKSA7
CmV4dGVybiBkb3VibGUgZXJmYyAoZG91YmxlKSA7IGV4dGVybiBkb3VibGUgX19lcmZjIChkb3Vi
bGUpIDsKZXh0ZXJuIGRvdWJsZSBsZ2FtbWEgKGRvdWJsZSkgOyBleHRlcm4gZG91YmxlIF9fbGdh
bW1hIChkb3VibGUpIDsKCgoKZXh0ZXJuIGRvdWJsZSB0Z2FtbWEgKGRvdWJsZSkgOyBleHRlcm4g
ZG91YmxlIF9fdGdhbW1hIChkb3VibGUpIDsKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRvdWJs
ZSkgOyBleHRlcm4gZG91YmxlIF9fZ2FtbWEgKGRvdWJsZSkgOwoKCgoKCgpleHRlcm4gZG91Ymxl
IGxnYW1tYV9yIChkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gZG91YmxlIF9fbGdh
bW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSA7CgoKCgoKCmV4dGVybiBkb3VibGUgcmlu
dCAoZG91YmxlIF9feCkgOyBleHRlcm4gZG91YmxlIF9fcmludCAoZG91YmxlIF9feCkgOwoKCmV4
dGVybiBkb3VibGUgbmV4dGFmdGVyIChkb3VibGUgX194LCBkb3VibGUgX195KSBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gs
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBkb3VibGUg
bmV4dHRvd2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19uZXh0dG93YXJkIChkb3VibGUgX194LCBsb25n
IGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGRvdWJs
ZSByZW1haW5kZXIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGRvdWJsZSBfX3Jl
bWFpbmRlciAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRlcm4gZG91YmxlIHNjYWxi
IChkb3VibGUgX194LCBkb3VibGUgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2FsYiAoZG91Ymxl
IF9feCwgZG91YmxlIF9fbikgOwoKCgoKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSBfX3gs
IGludCBfX24pIDsgZXh0ZXJuIGRvdWJsZSBfX3NjYWxibiAoZG91YmxlIF9feCwgaW50IF9fbikg
OwoKCgpleHRlcm4gaW50IGlsb2diIChkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYiAo
ZG91YmxlIF9feCkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBs
TW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNjkKCgoKCmV4dGVybiBkb3VibGUg
c2NhbGJsbiAoZG91YmxlIF9feCwgbG9uZyBpbnQgX19uKSA7IGV4dGVybiBkb3VibGUgX19zY2Fs
YmxuIChkb3VibGUgX194LCBsb25nIGludCBfX24pIDsKCgoKZXh0ZXJuIGRvdWJsZSBuZWFyYnlp
bnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGRvdWJsZSBfX25lYXJieWludCAoZG91YmxlIF9feCkg
OwoKCgpleHRlcm4gZG91YmxlIHJvdW5kIChkb3VibGUgX194KSA7IGV4dGVybiBkb3VibGUgX19y
b3VuZCAoZG91YmxlIF9feCkgOwoKCgpleHRlcm4gZG91YmxlIHRydW5jIChkb3VibGUgX194KSBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91Ymxl
IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSByZW1x
dW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIDsgZXh0ZXJuIGRvdWJsZSBf
X3JlbXF1byAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgaW50ICpfX3F1bykgOwoKCgoKCgpleHRl
cm4gbG9uZyBpbnQgbHJpbnQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQg
KGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50IChkb3VibGUgX194KSA7
IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50IChkb3VibGUgX194KSA7CgoKCmV4dGVybiBs
b25nIGludCBscm91bmQgKGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kIChk
b3VibGUgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscm91bmQgKGRvdWJsZSBfX3gpIDsg
ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kIChkb3VibGUgX194KSA7CgoKCmV4dGVybiBk
b3VibGUgZmRpbSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fZmRp
bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUgZm1heCAoZG91Ymxl
IF9feCwgZG91YmxlIF9feSkgOyBleHRlcm4gZG91YmxlIF9fZm1heCAoZG91YmxlIF9feCwgZG91
YmxlIF9feSkgOwoKCmV4dGVybiBkb3VibGUgZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg
OyBleHRlcm4gZG91YmxlIF9fZm1pbiAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgOwoKCgpleHRl
cm4gaW50IF9fZnBjbGFzc2lmeSAoZG91YmxlIF9fdmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0IChkb3VibGUgX192YWx1ZSkKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgZm1hIChkb3Vi
bGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSA7IGV4dGVybiBkb3VibGUgX19mbWEgKGRv
dWJsZSBfX3gsIGRvdWJsZSBfX3ksIGRvdWJsZSBfX3opIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE3
MAoKCiMgNjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDgyICIvdXNyL2luY2x1ZGUvbWF0
aC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwojIDU0ICIvdXNy
L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMwpleHRlcm4gZmxvYXQgYWNvc2YgKGZsb2F0IF9f
eCkgOyBleHRlcm4gZmxvYXQgX19hY29zZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgYXNp
bmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hc2luZiAoZmxvYXQgX194KSA7CgpleHRl
cm4gZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hdGFuZiAoZmxvYXQg
X194KSA7CgpleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9hdCBfX3ksIGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19hdGFuMmYgKGZsb2F0IF9feSwgZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0
IGNvc2YgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19jb3NmIChmbG9hdCBfX3gpIDsKCmV4
dGVybiBmbG9hdCBzaW5mIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luZiAoZmxvYXQg
X194KSA7CgpleHRlcm4gZmxvYXQgdGFuZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX3Rh
bmYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gdm9pZCBzaW5jb3NmIChmbG9hdCBfX3gsIGZsb2F0
ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIDsgZXh0ZXJuIHZvaWQgX19zaW5jb3NmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX3NpbngsIGZsb2F0ICpfX2Nvc3gpIDsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNv
c2hmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fY29zaGYgKGZsb2F0IF9feCkgOwoKZXh0
ZXJuIGZsb2F0IHNpbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fc2luaGYgKGZsb2F0
IF9feCkgOwoKZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9f
dGFuaGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIDsg
ZXh0ZXJuIGZsb2F0IF9fYWNvc2hmIChmbG9hdCBfX3gpIDsKCmV4dGVybiBmbG9hdCBhc2luaGYg
KGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19hc2luaGYgKGZsb2F0IF9feCkgOwoKZXh0ZXJu
IGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQg
X194KSA7CgoKCgoKZXh0ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQg
X19leHBmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IGV4cDEwZiAoZmxvYXQgX194KSA7
IGV4dGVybiBmbG9hdCBfX2V4cDEwZiAoZmxvYXQgX194KSA7CgpleHRlcm4gZmxvYXQgcG93MTBm
IChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fcG93MTBmIChmbG9hdCBfX3gpIDsKCgoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAg
ICAgICAgICAgIFBhZ2UgIDE3MQoKCmV4dGVybiBmbG9hdCBmcmV4cGYgKGZsb2F0IF9feCwgaW50
ICpfX2V4cG9uZW50KSA7IGV4dGVybiBmbG9hdCBfX2ZyZXhwZiAoZmxvYXQgX194LCBpbnQgKl9f
ZXhwb25lbnQpIDsKCgpleHRlcm4gZmxvYXQgbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9u
ZW50KSA7IGV4dGVybiBmbG9hdCBfX2xkZXhwZiAoZmxvYXQgX194LCBpbnQgX19leHBvbmVudCkg
OwoKCmV4dGVybiBmbG9hdCBsb2dmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nZiAo
ZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzEwZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IG1vZGZmIChmbG9hdCBf
X3gsIGZsb2F0ICpfX2lwdHIpIDsgZXh0ZXJuIGZsb2F0IF9fbW9kZmYgKGZsb2F0IF9feCwgZmxv
YXQgKl9faXB0cikgOwoKCgpleHRlcm4gZmxvYXQgZXhwbTFmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fZXhwbTFmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxvYXQgbG9nMXBmIChmbG9h
dCBfX3gpIDsgZXh0ZXJuIGZsb2F0IF9fbG9nMXBmIChmbG9hdCBfX3gpIDsKCgpleHRlcm4gZmxv
YXQgbG9nYmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19sb2diZiAoZmxvYXQgX194KSA7
CgoKCgpleHRlcm4gZmxvYXQgZXhwMmYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19leHAy
ZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGxvZzJmIChmbG9hdCBfX3gpIDsgZXh0ZXJu
IGZsb2F0IF9fbG9nMmYgKGZsb2F0IF9feCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgcG93ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcG93ZiAoZmxvYXQgX194LCBmbG9h
dCBfX3kpIDsKCgpleHRlcm4gZmxvYXQgc3FydGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQg
X19zcXJ0ZiAoZmxvYXQgX194KSA7CgoKCmV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0IF9feCwg
ZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBfX2h5cG90ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsKCgoKCmV4dGVybiBmbG9hdCBjYnJ0ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2Ni
cnRmIChmbG9hdCBfX3gpIDsKCgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE3MgoKCmV4dGVybiBm
bG9hdCBjZWlsZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX2NlaWxmIChmbG9hdCBfX3gp
IDsKCgpleHRlcm4gZmxvYXQgZmFic2YgKGZsb2F0IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gZmxvYXQgX19mYWJzZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGZsb2F0IGZsb29yZiAoZmxvYXQgX194KSA7IGV4dGVybiBm
bG9hdCBfX2Zsb29yZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IGZtb2RmIChmbG9hdCBf
X3gsIGZsb2F0IF9feSkgOyBleHRlcm4gZmxvYXQgX19mbW9kZiAoZmxvYXQgX194LCBmbG9hdCBf
X3kpIDsKCgoKCmV4dGVybiBpbnQgX19pc2luZmYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBpc2luZmYgKGZsb2F0
IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IGZpbml0
ZWYgKGZsb2F0IF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4
dGVybiBmbG9hdCBpbmZuYW5mIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOyBleHRlcm4gZmxvYXQgX19pbmZuYW5mIChpbnQgX19lcnJvcikgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBkcmVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsgZXh0ZXJuIGZsb2F0IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7CgoKCmV4dGVy
biBmbG9hdCBzaWduaWZpY2FuZGYgKGZsb2F0IF9feCkgOyBleHRlcm4gZmxvYXQgX19zaWduaWZp
Y2FuZGYgKGZsb2F0IF9feCkgOwoKCgoKZXh0ZXJuIGZsb2F0IGNvcHlzaWduZiAoZmxvYXQgX194
LCBmbG9hdCBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9f
Y29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKCgoKZXh0ZXJuIGZsb2F0IG5hbmYgKF9fY29uc3QgY2hhciAqX190YWdiKSBfX2F0dHJp
YnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX25hbmYgKF9fY29uc3QgY2hhciAq
X190YWdiKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IF9faXNu
YW5mIChmbG9hdCBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAxNzMKCgoKCgpleHRlcm4gaW50IGlzbmFuZiAoZmxvYXQgX192YWx1ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSA7IGV4
dGVybiBmbG9hdCBfX2owZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IGoxZiAoZmxvYXQpIDsgZXh0
ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgOwpleHRlcm4gZmxvYXQgam5mIChpbnQsIGZsb2F0KSA7
IGV4dGVybiBmbG9hdCBfX2puZiAoaW50LCBmbG9hdCkgOwpleHRlcm4gZmxvYXQgeTBmIChmbG9h
dCkgOyBleHRlcm4gZmxvYXQgX195MGYgKGZsb2F0KSA7CmV4dGVybiBmbG9hdCB5MWYgKGZsb2F0
KSA7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIDsKZXh0ZXJuIGZsb2F0IHluZiAoaW50LCBm
bG9hdCkgOyBleHRlcm4gZmxvYXQgX195bmYgKGludCwgZmxvYXQpIDsKCgoKCgpleHRlcm4gZmxv
YXQgZXJmZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIDsKZXh0ZXJuIGZs
b2F0IGVyZmNmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX19lcmZjZiAoZmxvYXQpIDsKZXh0ZXJu
IGZsb2F0IGxnYW1tYWYgKGZsb2F0KSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0KSA7
CgoKCmV4dGVybiBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgOyBleHRlcm4gZmxvYXQgX190Z2FtbWFm
IChmbG9hdCkgOwoKCgoKZXh0ZXJuIGZsb2F0IGdhbW1hZiAoZmxvYXQpIDsgZXh0ZXJuIGZsb2F0
IF9fZ2FtbWFmIChmbG9hdCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgbGdhbW1hZl9yIChmbG9hdCwg
aW50ICpfX3NpZ25nYW1wKSA7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWZfciAoZmxvYXQsIGludCAq
X19zaWduZ2FtcCkgOwoKCgoKCgpleHRlcm4gZmxvYXQgcmludGYgKGZsb2F0IF9feCkgOyBleHRl
cm4gZmxvYXQgX19yaW50ZiAoZmxvYXQgX194KSA7CgoKZXh0ZXJuIGZsb2F0IG5leHRhZnRlcmYg
KGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy
biBmbG9hdCBfX25leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgpleHRlcm4gZmxvYXQgbmV4dHRvd2FyZGYgKGZsb2F0IF9feCwgbG9u
ZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBf
X25leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAo
KF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9h
dCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kp
IDsKCgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIDsgZXh0ZXJu
IGZsb2F0IF9fc2NhbGJmIChmbG9hdCBfX3gsIGZsb2F0IF9fbikgOwoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFn
ZSAgMTc0CgoKCgoKCmV4dGVybiBmbG9hdCBzY2FsYm5mIChmbG9hdCBfX3gsIGludCBfX24pIDsg
ZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSA7CgoKCmV4dGVybiBp
bnQgaWxvZ2JmIChmbG9hdCBfX3gpIDsgZXh0ZXJuIGludCBfX2lsb2diZiAoZmxvYXQgX194KSA7
CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSA7IGV4
dGVybiBmbG9hdCBfX3NjYWxibG5mIChmbG9hdCBfX3gsIGxvbmcgaW50IF9fbikgOwoKCgpleHRl
cm4gZmxvYXQgbmVhcmJ5aW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBmbG9hdCBfX25lYXJieWlu
dGYgKGZsb2F0IF9feCkgOwoKCgpleHRlcm4gZmxvYXQgcm91bmRmIChmbG9hdCBfX3gpIDsgZXh0
ZXJuIGZsb2F0IF9fcm91bmRmIChmbG9hdCBfX3gpIDsKCgoKZXh0ZXJuIGZsb2F0IHRydW5jZiAo
ZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3Ry
dW5jZiAoZmxvYXQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4g
ZmxvYXQgcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIDsgZXh0ZXJu
IGZsb2F0IF9fcmVtcXVvZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGludCAqX19xdW8pIDsKCgoK
CgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50ZiAoZmxvYXQgX194KSA7IGV4dGVybiBsb25nIGludCBf
X2xyaW50ZiAoZmxvYXQgX194KSA7CmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGYgKGZsb2F0
IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludGYgKGZsb2F0IF9feCkgOwoKCgpl
eHRlcm4gbG9uZyBpbnQgbHJvdW5kZiAoZmxvYXQgX194KSA7IGV4dGVybiBsb25nIGludCBfX2xy
b3VuZGYgKGZsb2F0IF9feCkgOwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kZiAoZmxvYXQg
X194KSA7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGYgKGZsb2F0IF9feCkgOwoKCgpl
eHRlcm4gZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSA7IGV4dGVybiBmbG9hdCBf
X2ZkaW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOwoKCmV4dGVybiBmbG9hdCBmbWF4ZiAoZmxv
YXQgX194LCBmbG9hdCBfX3kpIDsgZXh0ZXJuIGZsb2F0IF9fZm1heGYgKGZsb2F0IF9feCwgZmxv
YXQgX195KSA7CgoKZXh0ZXJuIGZsb2F0IGZtaW5mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgOyBl
eHRlcm4gZmxvYXQgX19mbWluZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIDsKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAg
ICAgUGFnZSAgMTc1CgoKCmV4dGVybiBpbnQgX19mcGNsYXNzaWZ5ZiAoZmxvYXQgX192YWx1ZSkK
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX3NpZ25iaXRm
IChmbG9hdCBfX3ZhbHVlKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0
ZXJuIGZsb2F0IGZtYWYgKGZsb2F0IF9feCwgZmxvYXQgX195LCBmbG9hdCBfX3opIDsgZXh0ZXJu
IGZsb2F0IF9fZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgOwojIDgzICIv
dXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL2Jp
dHMvbWF0aGNhbGxzLmgiIDMKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NsIChsb25nIGRvdWJsZSBf
X3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0
ZXJuIGxvbmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fYXNpbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5s
IChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmwgKGxvbmcgZG91
YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW4ybCAobG9uZyBkb3VibGUgX195LCBs
b25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJs
ZSBfX3ksIGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3NsIChsb25n
IGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fY29zbCAobG9uZyBkb3VibGUgX194
KSA7CgpleHRlcm4gbG9uZyBkb3VibGUgc2lubCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3NpbmwgKGxvbmcgZG91YmxlIF9feCkgOwoKZXh0ZXJuIGxvbmcgZG91Ymxl
IHRhbmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX190YW5sIChsb25n
IGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIHZvaWQgc2luY29zbCAobG9uZyBkb3VibGUgX194LCBs
b25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJsZSAqX19jb3N4KSA7IGV4dGVybiB2b2lkIF9f
c2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25nIGRvdWJs
ZSAqX19jb3N4KSA7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3NobCAobG9uZyBkb3VibGUg
X194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Nvc2hsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4
dGVybiBsb25nIGRvdWJsZSBzaW5obCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX3NpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSB0YW5o
bCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3RhbmhsIChsb25nIGRv
dWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGFjb3NobCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBkb3VibGUgX194KSA7CgpleHRl
cm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fYXNpbmhsIChsb25nIGRvdWJsZSBfX3gpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBhdGFu
aGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19hdGFuaGwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQ
cGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE3NgoKCgpleHRlcm4gbG9uZyBk
b3VibGUgZXhwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2V4cGwg
KGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgZXhwMTBsIChsb25nIGRv
dWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXhwMTBsIChsb25nIGRvdWJsZSBfX3gp
IDsKCmV4dGVybiBsb25nIGRvdWJsZSBwb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19wb3cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBk
b3VibGUgZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mcmV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50ICpfX2V4cG9uZW50KSA7
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxkZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgX19leHBv
bmVudCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50
IF9fZXhwb25lbnQpIDsKCgpleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194
KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZ2wgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVy
biBsb25nIGRvdWJsZSBsb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19sb2cxMGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2Rm
bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19pcHRyKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX21vZGZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX2lwdHIpIDsKCgoK
ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cG0xbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91Ymxl
IGxvZzFwbCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzFwbCAo
bG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxvZ2JsIChsb25nIGRvdWJs
ZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fZXhwMmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBsb2cybCAobG9uZyBkb3VibGUgX194KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2xvZzJsIChs
b25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHBvd2wgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxv
bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNx
cnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3FydGwgKGxvbmcg
ZG91YmxlIF9feCkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgaHlwb3RsIChsb25nIGRvdWJsZSBf
X3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcg
ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNzcKCgoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGNicnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxv
bmcgZG91YmxlIF9fY2JydGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCgpleHRlcm4gbG9uZyBk
b3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19jZWls
bCAobG9uZyBkb3VibGUgX194KSA7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRv
dWJsZSBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fZmFic2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK
CmV4dGVybiBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9u
ZyBkb3VibGUgX19mbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgOwoKCmV4dGVybiBsb25nIGRvdWJs
ZSBmbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcg
ZG91YmxlIF9fZm1vZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKCgpl
eHRlcm4gaW50IF9faXNpbmZsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2Zpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUp
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgaXNpbmZsIChsb25n
IGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu
dCBmaW5pdGVsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CgoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgaW5mbmFubCAoaW50IF9fZXJyb3IpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9faW5mbmFubCAoaW50
IF9fZXJyb3IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgZHJlbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7IGV4dGVybiBsb25n
IGRvdWJsZSBfX2RyZW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOwoKCgpl
eHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJu
IGxvbmcgZG91YmxlIF9fc2lnbmlmaWNhbmRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKCgoKCgoK
CgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAg
ICAgICAgICBQYWdlICAxNzgKCgpleHRlcm4gbG9uZyBkb3VibGUgY29weXNpZ25sIChsb25nIGRv
dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19jb3B5c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi
bGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gbG9uZyBkb3Vi
bGUgbmFubCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmFubCAoX19jb25zdCBjaGFyICpfX3RhZ2IpIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgX19pc25hbmwgKGxvbmcgZG91
YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBp
c25hbmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgpleHRlcm4gbG9uZyBkb3VibGUgajBsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19qMGwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBqMWwgKGxvbmcgZG91
YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2oxbCAobG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxv
bmcgZG91YmxlIGpubCAoaW50LCBsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19q
bmwgKGludCwgbG9uZyBkb3VibGUpIDsKZXh0ZXJuIGxvbmcgZG91YmxlIHkwbCAobG9uZyBkb3Vi
bGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkgOwpleHRlcm4gbG9u
ZyBkb3VibGUgeTFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX195MWwgKGxv
bmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIDsg
ZXh0ZXJuIGxvbmcgZG91YmxlIF9feW5sIChpbnQsIGxvbmcgZG91YmxlKSA7CgoKCgoKZXh0ZXJu
IGxvbmcgZG91YmxlIGVyZmwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Vy
ZmwgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25nIGRvdWJsZSBlcmZjbCAobG9uZyBkb3VibGUp
IDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZXJmY2wgKGxvbmcgZG91YmxlKSA7CmV4dGVybiBsb25n
IGRvdWJsZSBsZ2FtbWFsIChsb25nIGRvdWJsZSkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19sZ2Ft
bWFsIChsb25nIGRvdWJsZSkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgdGdhbW1hbCAobG9uZyBk
b3VibGUpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fdGdhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoK
CmV4dGVybiBsb25nIGRvdWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKSA7IGV4dGVybiBsb25nIGRv
dWJsZSBfX2dhbW1hbCAobG9uZyBkb3VibGUpIDsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGxn
YW1tYWxfciAobG9uZyBkb3VibGUsIGludCAqX19zaWduZ2FtcCkgOyBleHRlcm4gbG9uZyBkb3Vi
bGUgX19sZ2FtbWFsX3IgKGxvbmcgZG91YmxlLCBpbnQgKl9fc2lnbmdhbXApIDsKCgoKCgoKZXh0
ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgZG91
YmxlIF9fcmludGwgKGxvbmcgZG91YmxlIF9feCkgOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxNzkK
CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRv
dWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91Ymxl
IF9fbmV4dGFmdGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dG93YXJkbCAobG9u
ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUgX195KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25n
IGRvdWJsZSByZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBl
eHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91
YmxlIF9feSkgOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gs
IGxvbmcgZG91YmxlIF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX19uKSA7CgoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2NhbGJu
bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19uKSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxi
bmwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fbikgOwoKCgpleHRlcm4gaW50IGlsb2dibCAobG9u
ZyBkb3VibGUgX194KSA7IGV4dGVybiBpbnQgX19pbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgOwoK
CgoKZXh0ZXJuIGxvbmcgZG91YmxlIHNjYWxibG5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgaW50
IF9fbikgOyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBs
b25nIGludCBfX24pIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIG5lYXJieWludGwgKGxvbmcgZG91
YmxlIF9feCkgOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZWFyYnlpbnRsIChsb25nIGRvdWJsZSBf
X3gpIDsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJvdW5kbCAobG9uZyBkb3VibGUgX194KSA7IGV4
dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194KSA7CgoKCmV4dGVybiBs
b25nIGRvdWJsZSB0cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX190cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJlbXF1b2wg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBpbnQgKl9fcXVvKSA7IGV4dGVybiBs
b25nIGRvdWJsZSBfX3JlbXF1b2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBp
bnQgKl9fcXVvKSA7CgoKCgoKCmV4dGVybiBsb25nIGludCBscmludGwgKGxvbmcgZG91YmxlIF9f
eCkgOyBleHRlcm4gbG9uZyBpbnQgX19scmludGwgKGxvbmcgZG91YmxlIF9feCkgOwpleHRlcm4g
bG9uZyBsb25nIGludCBsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsgZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgX19sbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IGxy
b3VuZGwgKGxvbmcgZG91YmxlIF9feCkgOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmRsIChsb25n
IGRvdWJsZSBfX3gpIDsKZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGwgKGxvbmcgZG91Ymxl
IF9feCkgOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRsIChsb25nIGRvdWJsZSBfX3gp
IDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5t
aSAgICAgICAgICAgICAgICBQYWdlICAxODAKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBmZGltbCAo
bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f
ZmRpbWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSA7CgoKZXh0ZXJuIGxvbmcg
ZG91YmxlIGZtYXhsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgOyBleHRlcm4g
bG9uZyBkb3VibGUgX19mbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIDsK
CgpleHRlcm4gbG9uZyBkb3VibGUgZm1pbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg
X195KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtaW5sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgOwoKCgpleHRlcm4gaW50IF9fZnBjbGFzc2lmeWwgKGxvbmcgZG91YmxlIF9f
dmFsdWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19z
aWduYml0bCAobG9uZyBkb3VibGUgX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg
ZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX196KSA7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYWwg
KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIDsKIyAx
MDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwojIDExMyAiL3Vzci9pbmNsdWRlL21hdGguaCIg
MwpleHRlcm4gaW50IHNpZ25nYW07CiMgMTU0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCmVudW0K
ICB7CiAgICBGUF9OQU4sCgogICAgRlBfSU5GSU5JVEUsCgogICAgRlBfWkVSTywKCiAgICBGUF9T
VUJOT1JNQUwsCgogICAgRlBfTk9STUFMCgogIH07CiMgMjQwICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAzCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCiAgX1NWSURfLAogIF9YT1BFTl8sCiAg
X1BPU0lYXywKICBfSVNPQ18KfSBfTElCX1ZFUlNJT05fVFlQRTsKCgoKCmV4dGVybiBfTElCX1ZF
UlNJT05fVFlQRSBfTElCX1ZFUlNJT047CiMgMjY1ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCnN0
cnVjdCBleGNlcHRpb24KCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBs
TW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxODEKCgogIHsKICAgIGludCB0eXBl
OwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7CiAgICBk
b3VibGUgcmV0dmFsOwogIH07CgoKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBleGNlcHRp
b24gKl9fZXhjKTsKIyAzNTAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlu
bGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKX19zaWduYml0ZiAoZmxvYXQgX194KQp7CiAg
X19leHRlbnNpb25fXyB1bmlvbiB7IGZsb2F0IF9fZjsgaW50IF9faTsgfSBfX3UgPSB7IF9fZjog
X194IH07CiAgcmV0dXJuIF9fdS5fX2kgPCAwOwp9CmV4dGVybiBfX2lubGluZSBpbnQKX19zaWdu
Yml0IChkb3VibGUgX194KQp7CiAgX19leHRlbnNpb25fXyB1bmlvbiB7IGRvdWJsZSBfX2Q7IGlu
dCBfX2lbMl07IH0gX191ID0geyBfX2Q6IF9feCB9OwogIHJldHVybiBfX3UuX19pWzFdIDwgMDsK
fQpleHRlcm4gX19pbmxpbmUgaW50Cl9fc2lnbmJpdGwgKGxvbmcgZG91YmxlIF9feCkKewogIF9f
ZXh0ZW5zaW9uX18gdW5pb24geyBsb25nIGRvdWJsZSBfX2w7IGludCBfX2lbM107IH0gX191ID0g
eyBfX2w6IF9feCB9OwogIHJldHVybiAoX191Ll9faVsyXSAmIDB4ODAwMCkgIT0gMDsKfQojIDI5
MSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3Vi
bGUgX19zZ24gKGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgZG91YmxlIF9fc2duIChkb3VibGUg
X194KSB7IHJldHVybiBfX3ggPT0gMC4wID8gMC4wIDogKF9feCA+IDAuMCA/IDEuMCA6IC0xLjAp
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBfX3NnbmYgKGZsb2F0KSA7IGV4dGVybiBfX2lubGlu
ZSBmbG9hdCBfX3NnbmYgKGZsb2F0IF9feCkgeyByZXR1cm4gX194ID09IDAuMCA/IDAuMCA6IChf
X3ggPiAwLjAgPyAxLjAgOiAtMS4wKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19z
Z25sIChsb25nIGRvdWJsZSkgOyBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ25sIChs
b25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9feCA9PSAwLjAgPyAwLjAgOiAoX194ID4gMC4wID8g
MS4wIDogLTEuMCk7IH0KIyA0MjYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpl
eHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIg
OiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVy
biBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBhdGFuMmYgKGZsb2F0IF9feSwgZmxv
YXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVf
XyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0
KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFu
MmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91
YmxlIF9fdmFsdWU7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZwYXRhbiIgOiAiPXQiIChfX3ZhbHVl
KSA6ICIwIiAoX194KSwgInUiIChfX3kpIDogInN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9CmV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBfX2F0YW4ybCAobG9uZyBkb3VibGUgX195LCBsb25n
IGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xh
dGlsZV9fICgiZnBhdGFuIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpLCAidSIgKF9feSkg
OiAic3QoMSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlIGZt
b2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAi
c2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBm
bW9kZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1
ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAiZm5zdHN3CSUlYXhcblx0IiAi
c2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSwgInUiIChfX3kp
IDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRv
dWJsZSBmbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiMToJZnByZW1cblx0IiAi
Zm5zdHN3CSUlYXhcblx0IiAic2FoZlxuXHQiICJqcAkxYiIgOiAiPXQiIChfX3ZhbHVlKSA6ICIw
IiAoX194KSwgInUiIChfX3kpIDogImF4IiwgImNjIik7IHJldHVybiBfX3ZhbHVlOyB9CiMgNDQx
ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5saW5lIGRvdWJs
ZSBzcXJ0IChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3Jlc3VsdDsgX19hc20gX192
b2xhdGlsZV9fICgiZnNxcnQiIDogIj10IiAoX19yZXN1bHQpIDogIjAiIChfX3gpKTsgcmV0dXJu
IF9fcmVzdWx0OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBzcXJ0ZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGZsb2F0IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQi
IChfX3Jlc3VsdCkgOiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5s
aW5lIGxvbmcgZG91YmxlIHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZzcXJ0IiA6ICI9dCIgKF9fcmVz
dWx0KSA6ICIwIiAoX194KSk7IHJldHVybiBfX3Jlc3VsdDsgfQpleHRlcm4gX19pbmxpbmUgbG9u
ZyBkb3VibGUgX19zcXJ0bCAobG9uZyBkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc3FydCIgOiAiPXQiIChfX3Jlc3VsdCkg
OiAiMCIgKF9feCkpOyByZXR1cm4gX19yZXN1bHQ7IH0KCgpleHRlcm4gX19pbmxpbmUgZG91Ymxl
IGZhYnMgKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzIChfX3gpOyB9CmV4dGVy
biBfX2lubGluZSBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFi
c2YgKF9feCk7IH0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJs
ZSBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbCAoX194KTsgfQpleHRlcm4gX19pbmxpbmUg
bG9uZyBkb3VibGUgX19mYWJzbCAobG9uZyBkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5f
ZmFic2wgKF9feCk7IH0KIyA0NjcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpl
eHRlcm4gX19pbmxpbmUgZG91YmxlIGF0YW4gKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgZG91Ymxl
IF9fcmVzdWx0OyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGQxOyBmcGF0YW4iIDogIj10IiAoX19y
ZXN1bHQpIDogIjAiIChfX3gpIDogInN0KDEpIik7IHJldHVybiBfX3Jlc3VsdDsgfSBleHRlcm4g
X19pbmxpbmUgZmxvYXQgYXRhbmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBmbG9hdCBfX3Jlc3Vs
dDsgX19hc20gX192b2xhdGlsZV9fICgiZmxkMTsgZnBhdGFuIiA6ICI9dCIgKF9fcmVzdWx0KSA6
ICIwIiAoX194KSA6ICJzdCgxKSIpOyByZXR1cm4gX19yZXN1bHQ7IH0gZXh0ZXJuIF9faW5saW5l
IGxvbmcgZG91YmxlIGF0YW5sIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgX19yZXN1bHQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZDE7IGZwYXRhbiIgOiAiPXQiIChf
X3Jlc3VsdCkgOiAiMCIgKF9feCkgOiAic3QoMSkiKTsgcmV0dXJuIF9fcmVzdWx0OyB9CgpleHRl
cm4gX19pbmxpbmUgbG9uZyBkb3VibGUgX19zZ24xbCAobG9uZyBkb3VibGUpIDsgZXh0ZXJuIF9f
aW5saW5lIGxvbmcgZG91YmxlIF9fc2duMWwgKGxvbmcgZG91YmxlIF9feCkgeyBfX2V4dGVuc2lv
bl9fIHVuaW9uIHsgbG9uZyBkb3VibGUgX194bGQ7IHVuc2lnbmVkIGludCBfX3hpWzNdOyB9IF9f
biA9IHsgX194bGQ6IF9feCB9OyBfX24uX194aVsyXSA9IChfX24uX194aVsyXSAmIDB4ODAwMCkg
fCAweDNmZmY7IF9fbi5fX3hpWzFdID0gMHg4MDAwMDAwMDsgX19uLl9feGlbMF0gPSAwOyByZXR1
cm4gX19uLl9feGxkOyB9CiMgNDkzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMK
ZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBmbG9vciAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25n
IGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3Zv
bGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5z
dGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDQw
MDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNt
IF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19h
c20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVl
OyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBmbG9vcmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBs
b25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBf
X3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgi
Zm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4
MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9f
YXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsg
X19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3Zh
bHVlOyB9IGV4dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9f
eCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNo
b3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBfX2N3dG1wOyBfX2Fz
bSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19jd3RtcCA9IChfX2N3
ICYgMHhmM2ZmKSB8IDB4MDQwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0i
IChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9dCIgKF9fdmFsdWUp
IDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6IDogIm0iIChfX2N3
KSk7IHJldHVybiBfX3ZhbHVlOyB9CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxODIKCgojIDUwNCAiL3Vz
ci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUgY2Vp
bCAoZG91YmxlIF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX3ZvbGF0aWxl
IHVuc2lnbmVkIHNob3J0IGludCBfX2N3OyBfX3ZvbGF0aWxlIHVuc2lnbmVkIHNob3J0IGludCBf
X2N3dG1wOyBfX2FzbSBfX3ZvbGF0aWxlICgiZm5zdGN3ICUwIiA6ICI9bSIgKF9fY3cpKTsgX19j
d3RtcCA9IChfX2N3ICYgMHhmM2ZmKSB8IDB4MDgwMDsgX19hc20gX192b2xhdGlsZSAoImZsZGN3
ICUwIiA6IDogIm0iIChfX2N3dG1wKSk7IF9fYXNtIF9fdm9sYXRpbGUgKCJmcm5kaW50IiA6ICI9
dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpKTsgX19hc20gX192b2xhdGlsZSAoImZsZGN3ICUwIiA6
IDogIm0iIChfX2N3KSk7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBj
ZWlsZiAoZmxvYXQgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IF9fdm9sYXRp
bGUgdW5zaWduZWQgc2hvcnQgaW50IF9fY3c7IF9fdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgaW50
IF9fY3d0bXA7IF9fYXNtIF9fdm9sYXRpbGUgKCJmbnN0Y3cgJTAiIDogIj1tIiAoX19jdykpOyBf
X2N3dG1wID0gKF9fY3cgJiAweGYzZmYpIHwgMHgwODAwOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxk
Y3cgJTAiIDogOiAibSIgKF9fY3d0bXApKTsgX19hc20gX192b2xhdGlsZSAoImZybmRpbnQiIDog
Ij10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyBfX2FzbSBfX3ZvbGF0aWxlICgiZmxkY3cgJTAi
IDogOiAibSIgKF9fY3cpKTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcg
ZG91YmxlIGNlaWxsIChsb25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192
YWx1ZTsgX192b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCBpbnQgX19jdzsgX192b2xhdGlsZSB1bnNp
Z25lZCBzaG9ydCBpbnQgX19jd3RtcDsgX19hc20gX192b2xhdGlsZSAoImZuc3RjdyAlMCIgOiAi
PW0iIChfX2N3KSk7IF9fY3d0bXAgPSAoX19jdyAmIDB4ZjNmZikgfCAweDA4MDA7IF9fYXNtIF9f
dm9sYXRpbGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jd3RtcCkpOyBfX2FzbSBfX3ZvbGF0aWxl
ICgiZnJuZGludCIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IF9fYXNtIF9fdm9sYXRp
bGUgKCJmbGRjdyAlMCIgOiA6ICJtIiAoX19jdykpOyByZXR1cm4gX192YWx1ZTsgfQojIDUyMiAi
L3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVybiBfX2lubGluZSBkb3VibGUK
bGRleHAgKGRvdWJsZSBfX3gsIGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3Zh
bHVlOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIg
KF9feCksICJ1IiAoKGxvbmcgZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KIyA1NDAg
Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91Ymxl
IGxvZzFwIChkb3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IGlmIChf
X2ZhYnNsIChfX3gpID49IDEuMCAtIDAuNSAqIDEuNDE0MjEzNTYyMzczMDk1MDQ4ODBMKSBfX3Zh
bHVlID0gbG9nbCAoMS4wICsgX194KTsgZWxzZSBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmbGRsbjJc
blx0IiAiZnhjaFxuXHQiICJmeWwyeHAxIiA6ICI9dCIgKF9fdmFsdWUpIDogIjAiIChfX3gpIDog
InN0KDEpIik7IHJldHVybiBfX3ZhbHVlOyB9IGV4dGVybiBfX2lubGluZSBmbG9hdCBsb2cxcGYg
KGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBpZiAoX19mYWJzbCAo
X194KSA+PSAxLjAgLSAwLjUgKiAxLjQxNDIxMzU2MjM3MzA5NTA0ODgwTCkgX192YWx1ZSA9IGxv
Z2wgKDEuMCArIF9feCk7IGVsc2UgX19hc20gX192b2xhdGlsZV9fICgiZmxkbG4yXG5cdCIgImZ4
Y2hcblx0IiAiZnlsMnhwMSIgOiAiPXQiIChfX3ZhbHVlKSA6ICIwIiAoX194KSA6ICJzdCgxKSIp
OyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgbG9nMXBsIChs
b25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgaWYgKF9fZmFi
c2wgKF9feCkgPj0gMS4wIC0gMC41ICogMS40MTQyMTM1NjIzNzMwOTUwNDg4MEwpIF9fdmFsdWUg
PSBsb2dsICgxLjAgKyBfX3gpOyBlbHNlIF9fYXNtIF9fdm9sYXRpbGVfXyAoImZsZGxuMlxuXHQi
ICJmeGNoXG5cdCIgImZ5bDJ4cDEiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCkgOiAic3Qo
MSkiKTsgcmV0dXJuIF9fdmFsdWU7IH0KIyA1NTQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxp
bmUuaCIgMwpleHRlcm4gX19pbmxpbmUgZG91YmxlIGFzaW5oIChkb3VibGUgX194KSB7IHJlZ2lz
dGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChfX3kg
KiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19zZ24x
bCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGFzaW5oZiAoZmxvYXQgX194KSB7IHJl
Z2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAobG9nMXBsIChf
X3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEuMCkgKyBfX3kpICogX19z
Z24xbCAoX194KSk7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGFzaW5obCAobG9uZyBk
b3VibGUgX194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJl
dHVybiAobG9nMXBsIChfX3kgKiBfX3kgLyAoX19zcXJ0bCAoX195ICogX195ICsgMS4wKSArIDEu
MCkgKyBfX3kpICogX19zZ24xbCAoX194KSk7IH0KCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUg
YWNvc2ggKGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEu
MCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQgYWNvc2hm
IChmbG9hdCBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEuMCkgKiBf
X3NxcnRsIChfX3ggKyAxLjApKTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgYWNvc2hs
IChsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIGxvZ2wgKF9feCArIF9fc3FydGwgKF9feCAtIDEu
MCkgKiBfX3NxcnRsIChfX3ggKyAxLjApKTsgfQoKCmV4dGVybiBfX2lubGluZSBkb3VibGUgYXRh
bmggKGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX195ID0gX19mYWJzbCAoX194
KTsgcmV0dXJuIC0wLjUgKiBsb2cxcGwgKC0oX195ICsgX195KSAvICgxLjAgKyBfX3kpKSAqIF9f
c2duMWwgKF9feCk7IH0gZXh0ZXJuIF9faW5saW5lIGZsb2F0IGF0YW5oZiAoZmxvYXQgX194KSB7
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9feSA9IF9fZmFic2wgKF9feCk7IHJldHVybiAtMC41ICog
bG9nMXBsICgtKF9feSArIF9feSkgLyAoMS4wICsgX195KSkgKiBfX3NnbjFsIChfX3gpOyB9IGV4
dGVybiBfX2lubGluZSBsb25nIGRvdWJsZSBhdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgeyByZWdp
c3RlciBsb25nIGRvdWJsZSBfX3kgPSBfX2ZhYnNsIChfX3gpOyByZXR1cm4gLTAuNSAqIGxvZzFw
bCAoLShfX3kgKyBfX3kpIC8gKDEuMCArIF9feSkpICogX19zZ24xbCAoX194KTsgfQoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBoeXBvdCAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgeyByZXR1
cm4gX19zcXJ0bCAoX194ICogX194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgZmxv
YXQgaHlwb3RmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICog
X194ICsgX195ICogX195KTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgaHlwb3RsIChs
b25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgeyByZXR1cm4gX19zcXJ0bCAoX194ICog
X194ICsgX195ICogX195KTsgfQoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZSBsb2diIChkb3VibGUg
X194KSB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIF9fdmFsdWU7IHJlZ2lzdGVyIGxvbmcgZG91Ymxl
IF9fanVuazsgX19hc20gX192b2xhdGlsZV9fICgiZnh0cmFjdFxuXHQiIDogIj10IiAoX19qdW5r
KSwgIj11IiAoX192YWx1ZSkgOiAiMCIgKF9feCkpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4g
X19pbmxpbmUgZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgeyByZWdpc3RlciBsb25nIGRvdWJsZSBf
X3ZhbHVlOyByZWdpc3RlciBsb25nIGRvdWJsZSBfX2p1bms7IF9fYXNtIF9fdm9sYXRpbGVfXyAo
ImZ4dHJhY3Rcblx0IiA6ICI9dCIgKF9fanVuayksICI9dSIgKF9fdmFsdWUpIDogIjAiIChfX3gp
KTsgcmV0dXJuIF9fdmFsdWU7IH0gZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIGxvZ2JsIChs
b25nIGRvdWJsZSBfX3gpIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUgX192YWx1ZTsgcmVnaXN0ZXIg
bG9uZyBkb3VibGUgX19qdW5rOyBfX2FzbSBfX3ZvbGF0aWxlX18gKCJmeHRyYWN0XG5cdCIgOiAi
PXQiIChfX2p1bmspLCAiPXUiIChfX3ZhbHVlKSA6ICIwIiAoX194KSk7IHJldHVybiBfX3ZhbHVl
OyB9CiMgNTg0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDMKZXh0ZXJuIF9faW5s
aW5lIGZsb2F0CmxkZXhwZiAoZmxvYXQgX194LCBpbnQgX195KQp7CiAgcmVnaXN0ZXIgbG9uZyBk
b3VibGUgX192YWx1ZTsgX19hc20gX192b2xhdGlsZV9fICgiZnNjYWxlIiA6ICI9dCIgKF9fdmFs
dWUpIDogIjAiIChfX3gpLCAidSIgKChsb25nIGRvdWJsZSkgX195KSk7IHJldHVybiBfX3ZhbHVl
Owp9CgpleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUKbGRleHBsIChsb25nIGRvdWJsZSBfX3gs
IGludCBfX3kpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSBfX3ZhbHVlOyBfX2FzbSBfX3ZvbGF0
aWxlX18gKCJmc2NhbGUiIDogIj10IiAoX192YWx1ZSkgOiAiMCIgKF9feCksICJ1IiAoKGxvbmcg
ZG91YmxlKSBfX3kpKTsgcmV0dXJuIF9fdmFsdWU7Cn0KIyA2MDggIi91c3IvaW5jbHVkZS9iaXRz
L21hdGhpbmxpbmUuaCIgMwpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKbHJpbnRmIChmbG9hdCBf
X3gpCnsKICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3Rw
bCAlMCIgOiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19s
cmludHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKbHJpbnQgKGRvdWJsZSBfX3gpCnsK
ICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbCAlMCIg
OiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19scmludHJl
czsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBpbnQKbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpCnsK
ICBsb25nIGludCBfX2xyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbCAlMCIg
OiAiPW0iIChfX2xyaW50cmVzKSA6ICJ0IiAoX194KSA6ICJzdCIpOyByZXR1cm4gX19scmludHJl
czsKfQojIDYzMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAxODMKCgpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJpbnRmIChmbG9h
dCBfX3gpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVf
XyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gpIDogInN0Iik7
IHJldHVybiBfX2xscmludHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApsbHJp
bnQgKGRvdWJsZSBfX3gpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50cmVzOyBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRyZXMpIDogInQiIChfX3gp
IDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBsb25n
IGludApsbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpCnsKICBsb25nIGxvbmcgaW50IF9fbGxyaW50
cmVzOyBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZpc3RwbGwgJTAiIDogIj1tIiAoX19sbHJpbnRy
ZXMpIDogInQiIChfX3gpIDogInN0Iik7IHJldHVybiBfX2xscmludHJlczsKfQoKCgoKCgoKZXh0
ZXJuIF9faW5saW5lIGRvdWJsZSBkcmVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB7IHJlZ2lz
dGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9s
YXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJ
MWIiIDogIj10IiAoX192YWx1ZSksICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1
IiAoX195KSA6ICJjYyIpOyByZXR1cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgZmxvYXQg
ZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyBy
ZWdpc3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxu
XHQiICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSks
ICI9JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1
cm4gX192YWx1ZTsgfSBleHRlcm4gX19pbmxpbmUgbG9uZyBkb3VibGUgZHJlbWwgKGxvbmcgZG91
YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB7IHJlZ2lzdGVyIGRvdWJsZSBfX3ZhbHVlOyByZWdp
c3RlciBpbnQgX19jbG9iYmVyZWQ7IF9fYXNtIF9fdm9sYXRpbGVfXyAoIjE6CWZwcmVtMVxuXHQi
ICJmc3RzdwklJWF4XG5cdCIgInNhaGZcblx0IiAianAJMWIiIDogIj10IiAoX192YWx1ZSksICI9
JmEiIChfX2Nsb2JiZXJlZCkgOiAiMCIgKF9feCksICJ1IiAoX195KSA6ICJjYyIpOyByZXR1cm4g
X192YWx1ZTsgfQojIDY2NiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGlubGluZS5oIiAzCmV4dGVy
biBfX2lubGluZSBpbnQKX19maW5pdGUgKGRvdWJsZSBfX3gpCnsKICByZXR1cm4gKF9fZXh0ZW5z
aW9uX18KICAgICAgICAgICgoKCgodW5pb24geyBkb3VibGUgX19kOyBpbnQgX19pWzJdOyB9KSB7
X19kOiBfX3h9KS5fX2lbMV0KICAgICAgICAgICAgIHwgMHg4MDBmZmZmZnUpICsgMSkgPj4gMzEp
KTsKfQojIDM1MSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCiMgMjcgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9taXNjLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9v
YmpjLmgiIDEKIyAyOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2MuaCIgMgoKIyAxICIv
dXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9saW1pdHMuaCIgMSAzCiMgMTEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3lzbGltaXRzLmgi
IDEgMwoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMjUgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL2xpbWl0cy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2xpbWl0cy5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUv
bGltaXRzLmgiIDIgMwojIDE0NCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIyAxMjYgIi91c3IvaW5jbHVkZS9iaXRzL3Bv
c2l4MV9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5oIiAxIDMKIyAz
NiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE4
NAoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpbnV4L2xpbWl0cy5oIiAxIDMKIyAzNyAiL3Vzci9pbmNs
dWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMwojIDEyNyAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgx
X2xpbS5oIiAyIDMKIyAxNDUgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXgyX2xpbS5oIiAxIDMKIyAxNDkgIi91c3IvaW5jbHVkZS9saW1p
dHMuaCIgMiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMwojIDM0
ICIvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3N0ZGlvX2xpbS5oIiAxIDMKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDIg
MwojIDEzNiAiL3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMKIyAxMzcgIi91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xp
bS5oIiAyIDMKIyAxNTMgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzCiMgMTI2ICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9saW1p
dHMuaCIgMiAzCiMgOCAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEyICIvdXNyL2xvY2FsL2djYzMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9saW1pdHMuaCIgMiAz
CiMgMzAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiIDIKIyA0NCAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL21pc2MuaCIKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMwoj
IDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCgojIDEgIi91c3Iv
bG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyA0MiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEg
MwojIDQzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3dhaXRzdGF0dXMuaCIgMSAzCiMgNjMgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIg
MwojIDEgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMSAzCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRz
L3dhaXRzdGF0dXMuaCIgMiAzCgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAg
c3RydWN0CiAgICAgIHsKCiAgICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAg
ICAgdW5zaWduZWQgaW50IF9fd19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3df
cmV0Y29kZTo4OwogICAgICAgIHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE4
NQoKCgoKCgoKCgogICAgICB9IF9fd2FpdF90ZXJtaW5hdGVkOwogICAgc3RydWN0CiAgICAgIHsK
CiAgICAgICAgdW5zaWduZWQgaW50IF9fd19zdG9wdmFsOjg7CiAgICAgICAgdW5zaWduZWQgaW50
IF9fd19zdG9wc2lnOjg7CiAgICAgICAgdW5zaWduZWQgaW50OjE2OwoKCgoKCgogICAgICB9IF9f
d2FpdF9zdG9wcGVkOwogIH07CiMgNDQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCiMgNjgg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwp0eXBlZGVmIHVuaW9uCiAgewogICAgdW5pb24gd2Fp
dCAqX191cHRyOwogICAgaW50ICpfX2lwdHI7CiAgfSBfX1dBSVRfU1RBVFVTIF9fYXR0cmlidXRl
X18gKChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsKIyA5NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVtOwogIH0gZGl2
X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50
IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgc3RydWN0CiAgewog
ICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25nIGludCByZW07CiAgfSBsbGRpdl90
OwojIDEzMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBzaXplX3QgX19jdHlwZV9n
ZXRfbWJfY3VyX21heCAodm9pZCkgOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE4NgoKCgoKZXh0ZXJu
IGRvdWJsZSBhdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9f
bnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgYXRvbGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIpIDsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIpIDsKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq
Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBsb25n
IGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf
X2Jhc2UpCiAgICAgICAgICAgIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGlu
dCBzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAg
ICAgICAgIDsKCgoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xs
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19leHRl
bnNpb25fXwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dh
cm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTg3CgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0
ciwgaW50IF9fYmFzZSkKICAgICAgICAgICAgOwojIDIxMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjEyICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfbCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19sb2NhbGVfdCBfX2xvYykgOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91
bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2Mp
IDsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2wgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIDsKCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9sIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpCiAgICAg
ICAgICAgIDsKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGZsb2F0IF9f
c3RydG9mX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykg
OwoKZXh0ZXJuIGxvbmcgZG91YmxlIF9fc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3Qg
X19sb2MpIDsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgICAgICAgICA7CmV4
dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwgaW50IF9fZ3JvdXApCiAgICAgICAgICAgIDsKZXh0ZXJuIGxvbmcgZG91YmxlIF9f
c3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2dyb3VwKSA7
CgpleHRlcm4gbG9uZyBpbnQgX19zdHJ0b2xfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAg
UHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxODgKCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CgoKCmV4dGVy
biB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwoKCgoKX19leHRl
bnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIDsKCgoKX19leHRl
bnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFs
IChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2Us
IGludCBfX2dyb3VwKQogICAgICAgICAgICA7CiMgMjk0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9k
X2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCAwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBp
bnQKc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1
bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgaW50IF9fYmFzZSkKewogIHJl
dHVybiBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0K
CgpleHRlcm4gX19pbmxpbmUgZmxvYXQKc3RydG9mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKewogIHJldHVybiBfX3N0cnRvZl9p
bnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgZG91
YmxlCnN0cnRvbGQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyKQp7CiAgcmV0dXJuIF9fc3RydG9sZF9pbnRlcm5hbCAoX19ucHRyLCBf
X2VuZHB0ciwgMCk7Cn0KCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBw
bE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTg5CgoKCl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19i
YXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19i
YXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxv
bmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3Ry
dG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgoKX19leHRl
bnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b2xsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg
ICAgaW50IF9fYmFzZSkKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19l
bmRwdHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWdu
ZWQgbG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25w
dHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvdWxsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDAp
Owp9CgoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikK
ewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsKfQpleHRl
cm4gX19pbmxpbmUgaW50CmF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChp
bnQpIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4g
X19pbmxpbmUgbG9uZyBpbnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4g
c3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19leHRlbnNp
b25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpf
X25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCks
IDEwKTsKfQojIDM4NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpsNjRh
IChsb25nIGludCBfX24pIDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
IFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTkwCgoKZXh0ZXJuIGxvbmcg
aW50IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMzkyICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSA7CgoKZXh0
ZXJuIHZvaWQgc3JhbmRvbSAodW5zaWduZWQgaW50IF9fc2VlZCkgOwoKCgoKCmV4dGVybiBjaGFy
ICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSA7CgoKCmV4dGVybiBjaGFyICpz
ZXRzdGF0ZSAoY2hhciAqX19zdGF0ZWJ1ZikgOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAg
ewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQzMl90ICpzdGF0
ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBpbnQgcmFuZF9zZXA7
CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25l
ZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSA7CgpleHRlcm4gaW50IGlu
aXRzdGF0ZV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVi
dWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3N0YXRlbGVuLAogICAgICAgICAg
ICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCmV4
dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgOwoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAg
ICAgICAgICAgICAgIFBhZ2UgIDE5MQoKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpIDsKCmV4
dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCmV4dGVybiBpbnQgcmFu
ZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgOwoKCgoKCgoKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4
ICh2b2lkKSA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9uZyBp
bnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9u
ZyBpbnQgbXJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBf
X3NlZWR2YWwpIDsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBz
aG9ydCBpbnQgX19zZWVkMTZ2WzNdKSA7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNo
b3J0IGludCBfX3BhcmFtWzddKSA7CgoKCgoKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVu
c2lnbmVkIHNob3J0IGludCBfX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19vbGRfeFsz
XTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2M7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19p
bml0OwogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2E7CiAgfTsKCgpleHRlcm4gaW50IGRy
YW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50
IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGlu
dCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAg
ICAgICAgICAgICBQYWdlICAxOTIKCgogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9f
cmVzdHJpY3QgX19yZXN1bHQpIDsKZXh0ZXJuIGludCBucmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0
IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0
YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpf
X3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFu
ZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25n
IGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpleHRlcm4gaW50IGpyYW5kNDhfciAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJh
bmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpIDsKCgpleHRlcm4gaW50IHNyYW5kNDhfciAobG9u
ZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICAgICAg
ICAgOwoKZXh0ZXJuIGludCBzZWVkNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlsz
XSwKICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIDsK
CmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CiMgNTM3
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9f
cHRyLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0ZXJu
IHZvaWQgZnJlZSAodm9pZCAqX19wdHIpIDsKCgoKZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9f
cHRyKSA7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNs
dWRlL2FsbG9jYS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIzICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDI2ICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCgoKCgoKZXh0ZXJuIHZvaWQgKmFsbG9jYSAoc2l6
ZV90IF9fc2l6ZSkgOwojIDU0OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCmV4dGVy
biB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f
KSk7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgICBQcGxNb2RlbFN3YXJt
Lm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE5MwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGln
biAodm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAg
ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBh
Ym9ydCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgpleHRlcm4gaW50
IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSA7CgoKCgpleHRlcm4gaW50IG9uX2V4aXQg
KHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKl9fYXJnKSwgdm9pZCAqX19hcmcp
CiAgICAgICAgICAgIDsKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0
cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19z
dGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCmV4dGVybiBjaGFyICpn
ZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9n
ZXRlbnYgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYgKGNo
YXIgKl9fc3RyaW5nKSA7CgoKCgoKZXh0ZXJuIGludCBzZXRlbnYgKF9fY29uc3QgY2hhciAqX19u
YW1lLCBfX2NvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgICAgICAgIDsK
CgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgOwoKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAxOTQKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyNCAi
L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVt
cGxhdGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwoj
IDY0MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBpbnQgbWtzdGVtcDY0IChjaGFy
ICpfX3RlbXBsYXRlKSA7CiMgNjUxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNo
YXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCmV4dGVybiBpbnQgc3lzdGVtIChf
X2NvbnN0IGNoYXIgKl9fY29tbWFuZCkgOwoKCgoKCgpleHRlcm4gY2hhciAqY2Fub25pY2FsaXpl
X2ZpbGVfbmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKIyA2NzMgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29s
dmVkKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKF9fY29uc3Qgdm9pZCAq
LCBfX2NvbnN0IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5f
dDsKCgoKCgpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lkICpfX2tleSwgX19jb25z
dCB2b2lkICpfX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19ubWVtYiwgc2l6
ZV90IF9fc2l6ZSwgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCmV4dGVybiB2b2lkIHFzb3J0
ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLAogICAgICAgICAg
ICAgICAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcik7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxOTUK
CgoKCgpleHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwpleHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzIChsb25n
IGxvbmcgaW50IF9feCkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAgICAg
ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgKGxv
bmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgICAgICAgICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2IChs
b25nIGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKIyA3MjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqZWN2
dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs
CiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoKCgpleHRlcm4g
Y2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0
IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CgoK
CgpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAq
X19idWYpIDsKCgoKCmV4dGVybiBjaGFyICpxZWN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50
IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBp
bnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUg
X192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmlj
dCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSA7CmV4dGVybiBjaGFyICpxZ2N2dCAo
bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgOwoKCgoKZXh0
ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX2xlbikg
OwpleHRlcm4gaW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19z
aWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6ZV90IF9f
bGVuKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgIFBwbE1vZGVsU3dh
cm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTk2CgoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25n
IGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpf
X3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAg
ICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQg
cWZjdnRfciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAg
ICAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAog
ICAgICAgICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikg
OwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikg
OwoKCmV4dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAg
ICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoK
CmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRl
cm4gc2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg
OwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVf
dCBfX24pCiAgICAgICAgICAgIDsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBj
aGFyICpfX3Jlc3BvbnNlKSA7CiMgODA5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkgOwoKCgoKCmV4dGVybiB2b2lk
IHNldGtleSAoX19jb25zdCBjaGFyICpfX2tleSkgOwoKCgoKCgoKZXh0ZXJuIGludCBwb3NpeF9v
cGVucHQgKGludCBfX29mbGFnKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgIFBwbE1vZGVsU3dhcm0ubWkgICAgICAgICAgICAgICAgUGFnZSAgMTk3CgoKCgoKCgoKZXh0
ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHVubG9ja3B0IChpbnQg
X19mZCkgOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSA7CgoKCgoKCmV4dGVy
biBpbnQgcHRzbmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg
OwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZvaWQpIDsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZn
IChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVtKSA7CiMgNDUgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9taXNjLmgiIDIKIyA1NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL21pc2Mu
aCIKdm9pZCAqeG1hbGxvYyAoc2l6ZV90IHNpemUpOwp2b2lkICp4bWFsbG9jX2F0b21pYyAoc2l6
ZV90IHNpemUpOwp2b2lkICp4Y2FsbG9jIChzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKdm9p
ZCAqeHJlYWxsb2MgKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpOwp2b2lkIHhmcmVlICh2b2lkICpi
dWYpOwoKCmNoYXIgKmRyb3BkaXIgKGNoYXIgKnBhdGgpOwoKY2hhciAqeHN0cmR1cCAoY29uc3Qg
Y2hhciAqc3RyaW5nKTsKIyAxNDQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9taXNjLmgiCmNv
bnN0IGNoYXIgKmZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lKTsKCnZv
aWQgZGVidWdhYm9ydCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVkIGxpbmVubywgY29u
c3QgY2hhciAqZnVuY3Rpb24pIF9fYXR0cmlidXRlX18gKChub3JldHVybikpOwoKdHlwZWRlZiBp
bnQgKCpxdWlja3NvcnRfY29tcGFyX2ZuX3QpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7
CgpleHRlcm4gdm9pZCBxdWlja3NvcnQgKHZvaWQgKmNvbnN0IHBiYXNlLCBzaXplX3QgdG90YWxf
ZWxlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsIHF1aWNrc29ydF9jb21w
YXJfZm5fdCBjbXApOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBs
TW9kZWxTd2FybS5taSAgICAgICAgICAgICAgICBQYWdlICAxOTgKCgoKCgoKc3RhdGljIGlubGlu
ZSBCT09MCmlzRGlnaXQgKGNoYXIgY2gpCnsKICByZXR1cm4gY2ggPj0gJzAnICYmIGNoIDw9ICc5
JzsKfQoKc3RhdGljIGlubGluZSBCT09MCmlzU3BhY2UgKGNoYXIgY2gpCnsKICByZXR1cm4gY2gg
PT0gJyAnIHx8IGNoID09ICdcdCcgfHwgY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInIHx8IGNoID09
ICdcZic7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTAppc1VwcGVyIChjaGFyIGNoKQp7CiAgcmV0dXJu
IGNoID49ICdBJyAmJiBjaCA8PSAnWic7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTAppc0xvd2VyIChj
aGFyIGNoKQp7CiAgcmV0dXJuIGNoID49ICdhJyAmJiBjaCA8PSAneic7Cn0KCnN0YXRpYyBpbmxp
bmUgQk9PTAppc0FscGhhIChjaGFyIGNoKQp7CiAgcmV0dXJuIGlzVXBwZXIgKGNoKSB8fCBpc0xv
d2VyIChjaCk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTAppc0FsbnVtIChjaGFyIGNoKQp7CiAgcmV0
dXJuIGlzQWxwaGEgKGNoKSB8fCBpc0RpZ2l0IChjaCk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApp
c1B1bmN0IChjaGFyIGNoKQp7CiAgcmV0dXJuICgoKGNoID4gJyAnKSAmJiAoY2ggPCAnMCcpKQog
ICAgICAgICAgfHwgKChjaCA+ICc5JykgJiYgKGNoIDwgJ0EnKSkKICAgICAgICAgIHx8ICgoY2gg
PiAnWicpICYmIChjaCA8ICdhJykpCiAgICAgICAgICB8fCAoKGNoID4gJ3onKSAmJiAoY2ggPD0g
J34nKSkpOwp9CgpzdGF0aWMgaW5saW5lIEJPT0wKaXNQcmludCAoY2hhciBjaCkKewogIHJldHVy
biBpc1B1bmN0IChjaCkgfHwgaXNBbG51bSAoY2gpIHx8IGNoID09ICcgJzsKfQojIDI5ICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tL3JhbmRvbWRlZnMuaCIgMgojIDUyICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvcmFuZG9tLmgiIDIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgICBQcGxNb2RlbFN3YXJtLm1pICAgICAgICAgICAgICAgIFBhZ2UgIDE5OQoKCiMg
OCAiUHBsTW9kZWxTd2FybS5tIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVj
dGJhc2UuaCIgMQojIDkgIlBwbE1vZGVsU3dhcm0ubSIgMgoKCgpAaW1wbGVtZW50YXRpb24gUHBs
TW9kZWxTd2FybQoKLSAoQ291bnRlciAqKWdldENvdW50ZXIKewogIHJldHVybiBjb3VudGVyOwp9
CgorIGNyZWF0ZUJlZ2luOiBhWm9uZQp7CiAgUHBsTW9kZWxTd2FybSAqb2JqOwogIGlkIDxQcm9i
ZU1hcD4gcHJvYmVNYXA7CgogIG9iaiA9IFtzdXBlciBjcmVhdGVCZWdpbjogYVpvbmVdOwoKCiAg
b2JqLT5pbmNyZW1lbnQgPSAxOwoKCiAgb2JqLT5udW1QcGwgPSAxMDsKCiAgcHJvYmVNYXAgPSBb
RW1wdHlQcm9iZU1hcCBjcmVhdGVCZWdpbjogYVpvbmVdOwogIFtwcm9iZU1hcCBzZXRQcm9iZWRD
bGFzczogW3NlbGYgY2xhc3NdXTsKICBwcm9iZU1hcCA9IFtwcm9iZU1hcCBjcmVhdGVFbmRdOwoK
CiAgW3Byb2JlTWFwIGFkZFByb2JlOiBbcHJvYmVMaWJyYXJ5IGdldFByb2JlRm9yVmFyaWFibGU6
ICJpbmNyZW1lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluQ2xhc3M6
IFtzZWxmIGNsYXNzXV1dOwoKICBbcHJvYmVNYXAgYWRkUHJvYmU6IFtwcm9iZUxpYnJhcnkgZ2V0
UHJvYmVGb3JWYXJpYWJsZTogIm51bVBwbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5DbGFzczogW3NlbGYgY2xhc3NdXV07CgoKICBbcHJvYmVMaWJyYXJ5IHNldFByb2Jl
TWFwOiBwcm9iZU1hcCBGb3I6IFtzZWxmIGNsYXNzXV07CgogIHJldHVybiBvYmo7Cn0KCgotIGNy
ZWF0ZUVuZAp7CiAgcmV0dXJuIFtzdXBlciBjcmVhdGVFbmRdOwp9CgotIGJ1aWxkT2JqZWN0cwp7
CiAgaW50IGluY2ksIGluY2o7CgogIFtzdXBlciBidWlsZE9iamVjdHNdOwoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAgICAg
ICBQYWdlICAyMDAKCgoKICBjb3VudGVyID0gW0NvdW50ZXIgY3JlYXRlOiBbc2VsZiBnZXRab25l
XV07CiAgW2NvdW50ZXIgc2V0SW5jcjogaW5jcmVtZW50XTsKCgogIHBwbExpc3QgPSBbTGlzdCBj
cmVhdGU6IFtzZWxmIGdldFpvbmVdXTsKCgogIGZvciAoaW5jaSA9IDA7IGluY2kgPCBudW1QcGw7
IGluY2krKyl7CiAgICBQZXJzb24gKiBwZXJzb247CiAgICBpZCBuYW1lOwogICAgZmxvYXQgdG9w
aWNzWzJdOwogICAgaW50IG5hbWVzaXplOwogICAgY2hhciB0ZW1wX2NoYXJbMl07CiMgODcgIlBw
bE1vZGVsU3dhcm0ubSIKICAgIHBlcnNvbiA9IFtQZXJzb24gY3JlYXRlQmVnaW46IFtzZWxmIGdl
dFpvbmVdXTsKCgogICAgbmFtZXNpemUgPSBbdW5pZm9ybUludFJhbmQgZ2V0SW50ZWdlcldpdGhN
aW46IDJMIHdpdGhNYXg6IDRMXTsKCgogICAgdGVtcF9jaGFyWzBdID0gW3VuaWZvcm1JbnRSYW5k
IGdldEludGVnZXJXaXRoTWluOiAnQScgd2l0aE1heDonWiddOwogICAgdGVtcF9jaGFyWzFdID0g
J1wwJzsKICAgIG5hbWUgPSBbU3RyaW5nIGNyZWF0ZUJlZ2luOiBbcGVyc29uIGdldFpvbmVdIF07
CiAgICBbbmFtZSBzZXRDOiAoY2hhciAqKSAmdGVtcF9jaGFyXTsKICAgIG5hbWUgPSBbbmFtZSBj
cmVhdGVFbmRdOwoKCiAgICBmb3IgKGluY2ogPSAxOyBpbmNqIDw9IG5hbWVzaXplOyBpbmNqKysp
IHsKICAgICAgdGVtcF9jaGFyWzBdID0gW3VuaWZvcm1JbnRSYW5kIGdldEludGVnZXJXaXRoTWlu
OidhJyB3aXRoTWF4Oid6J107CiAgICAgIFtuYW1lIGNhdEM6IChjaGFyICopICZ0ZW1wX2NoYXJd
OwogICAgfQoKCiAgICB0b3BpY3NbbnVsbF0gPSAwLjA7CgogICAgdG9waWNzW2hlbGxvXSA9IDEu
MDsKCiAgICBbcGVyc29uIHNldFBlcnNvbjogbmFtZSBUb3BpY19hcnJheTogdG9waWNzXTsKCiAg
ICBbcGVyc29uIHNldFdvcmxkOiBwcGxMaXN0XTsKCgogICAgcGVyc29uID0gW3BlcnNvbiBjcmVh
dGVFbmRdOwoKCiAgICBbcHBsTGlzdCBhZGRMYXN0OiBwZXJzb25dOwoKICB9CiAgcmV0dXJuIHNl
bGY7Cn0KCi0gYnVpbGRBY3Rpb25zCnsKICBbc3VwZXIgYnVpbGRBY3Rpb25zXTsKCgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICAgUHBsTW9kZWxTd2FybS5taSAgICAgICAgICAg
ICAgICBQYWdlICAyMDEKCgoKICBtb2RlbEFjdGlvbnMgPSBbQWN0aW9uR3JvdXAgY3JlYXRlOiBb
c2VsZiBnZXRab25lXV07CgoKICBbbW9kZWxBY3Rpb25zIGNyZWF0ZUFjdGlvblRvOiBjb3VudGVy
IG1lc3NhZ2U6IEBzZWxlY3RvciAoc3RlcCldOwoKCiAgW21vZGVsQWN0aW9ucyBjcmVhdGVBY3Rp
b25Gb3JFYWNoOiBwcGxMaXN0IG1lc3NhZ2U6IEBzZWxlY3RvciAoc3RlcCldOwoKCiAgbW9kZWxT
Y2hlZHVsZSA9IFtTY2hlZHVsZSBjcmVhdGVCZWdpbjogW3NlbGYgZ2V0Wm9uZV1dOwoKICBbbW9k
ZWxTY2hlZHVsZSBzZXRSZXBlYXRJbnRlcnZhbDogMV07CgogIG1vZGVsU2NoZWR1bGUgPSBbbW9k
ZWxTY2hlZHVsZSBjcmVhdGVFbmRdOwoKCgogIFttb2RlbFNjaGVkdWxlIGF0OiAwIGNyZWF0ZUFj
dGlvbjogbW9kZWxBY3Rpb25zXTsKCiAgcmV0dXJuIHNlbGY7Cn0KCi0gYWN0aXZhdGVJbjogc3dh
cm1Db250ZXh0CnsKCiAgW3N1cGVyIGFjdGl2YXRlSW46IHN3YXJtQ29udGV4dF07CgogIFttb2Rl
bFNjaGVkdWxlIGFjdGl2YXRlSW46IHNlbGZdOwoKICByZXR1cm4gW3NlbGYgZ2V0U3dhcm1BY3Rp
dml0eV07Cn0KCkBlbmQKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAg
IDEKCgojIDYgIlBwbE9ic2VydmVyU3dhcm0ubSIKIyAxICJQcGxPYnNlcnZlclN3YXJtLmgiIDEK
CgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiIDEKIyAyMCAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIKIyAxICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDEKIyAxOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Rl
Zm9iai5oIgp0eXBlZGVmIGVudW0ge2ZjYWxsX3R5cGVfdm9pZCA9IDAsCiAgICAgICAgICAgICAg
ZmNhbGxfdHlwZV9ib29sZWFuLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWNoYXIsIGZjYWxs
X3R5cGVfc2NoYXIsCiAgICAgICAgICAgICAgZmNhbGxfdHlwZV91c2hvcnQsIGZjYWxsX3R5cGVf
c3Nob3J0LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWludCwgZmNhbGxfdHlwZV9zaW50LAog
ICAgICAgICAgICAgIGZjYWxsX3R5cGVfdWxvbmcsIGZjYWxsX3R5cGVfc2xvbmcsCiAgICAgICAg
ICAgICAgZmNhbGxfdHlwZV91bG9uZ2xvbmcsIGZjYWxsX3R5cGVfc2xvbmdsb25nLAogICAgICAg
ICAgICAgIGZjYWxsX3R5cGVfZmxvYXQsIGZjYWxsX3R5cGVfZG91YmxlLCBmY2FsbF90eXBlX2xv
bmdfZG91YmxlLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfb2JqZWN0LCBmY2FsbF90eXBlX2Ns
YXNzLAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfc3RyaW5nLCBmY2FsbF90eXBlX3NlbGVjdG9y
LAogICAgICAgICAgICAgIGZjYWxsX3R5cGVfam9iamVjdCwgZmNhbGxfdHlwZV9qc3RyaW5nLCBm
Y2FsbF90eXBlX2pzZWxlY3RvciwKICAgICAgICAgICAgICBmY2FsbF90eXBlX2lpZAogICAgICAg
ICAgICAgIH0gZmNhbGxfdHlwZV90OwoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2Jq
Yy9vYmpjLmgiIDEKIyAzNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIgoj
IDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9p
bmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxNDcgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0
cmRpZmZfdDsKIyAxOTkgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVf
dDsKIyAyODcgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKIyAzNSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAyCgoKCgoKCgp0eXBlZGVmIHVu
c2lnbmVkIGNoYXIgQk9PTDsKIyA1MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2Jq
Yy5oIgp0eXBlZGVmIGNvbnN0IHN0cnVjdCBvYmpjX3NlbGVjdG9yCnsKICB2b2lkICpzZWxfaWQ7
CiAgY29uc3QgY2hhciAqc2VsX3R5cGVzOwp9ICpTRUw7CgppbmxpbmUgc3RhdGljIEJPT0wKc2Vs
X2VxIChTRUwgczEsIFNFTCBzMikKewogIGlmIChzMSA9PSAwIHx8IHMyID09IDApCiAgICByZXR1
cm4gczEgPT0gczI7CiAgZWxzZQoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
UHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgICAyCgoKICAgIHJldHVybiBz
MS0+c2VsX2lkID09IHMyLT5zZWxfaWQ7Cn0KCgoKCgp0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVj
dCB7CiAgc3RydWN0IG9iamNfY2xhc3MqIGNsYXNzX3BvaW50ZXI7Cn0gKmlkOwoKCgoKCnR5cGVk
ZWYgaWQgKCpJTVApKGlkLCBTRUwsIC4uLik7CgoKCgoKCnR5cGVkZWYgY2hhciAqU1RSOwojIDk3
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiCnR5cGVkZWYgc3RydWN0IG9i
amNfY2xhc3MgKk1ldGFDbGFzczsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19jbGFzcyAqQ2xhc3M7CnN0
cnVjdCBvYmpjX2NsYXNzIHsKICBNZXRhQ2xhc3MgY2xhc3NfcG9pbnRlcjsKCiAgc3RydWN0IG9i
amNfY2xhc3MqIHN1cGVyX2NsYXNzOwoKCiAgY29uc3QgY2hhciogbmFtZTsKICBsb25nIHZlcnNp
b247CiAgdW5zaWduZWQgbG9uZyBpbmZvOwoKICBsb25nIGluc3RhbmNlX3NpemU7CgoKCiAgc3Ry
dWN0IG9iamNfaXZhcl9saXN0KiBpdmFyczsKCgoKCgoKICBzdHJ1Y3Qgb2JqY19tZXRob2RfbGlz
dCogbWV0aG9kczsKCgogIHN0cnVjdCBzYXJyYXkgKiBkdGFibGU7CgogIHN0cnVjdCBvYmpjX2Ns
YXNzKiBzdWJjbGFzc19saXN0OwogIHN0cnVjdCBvYmpjX2NsYXNzKiBzaWJsaW5nX2NsYXNzOwoK
ICBzdHJ1Y3Qgb2JqY19wcm90b2NvbF9saXN0ICpwcm90b2NvbHM7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdl
ICAgIDMKCgogIHZvaWQqIGdjX29iamVjdF90eXBlOwp9OwojIDE0MSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL29iamMvb2JqYy5oIgpAY2xhc3MgUHJvdG9jb2w7CgoKdHlwZWRlZiB2b2lkKiBy
ZXR2YWxfdDsKdHlwZWRlZiB2b2lkKCphcHBseV90KSh2b2lkKTsKdHlwZWRlZiB1bmlvbiB7CiAg
Y2hhciAqYXJnX3B0cjsKICBjaGFyIGFyZ19yZWdzW3NpemVvZiAoY2hhciopXTsKfSAqYXJnbGlz
dF90OwoKCklNUCBvYmpjX21zZ19sb29rdXAgKGlkIHJlY2VpdmVyLCBTRUwgb3ApOwojIDMzICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKCnR5cGVkZWYgdW5pb24gewogIGlk
IG9iamVjdDsKICBTRUwgc2VsZWN0b3I7CiAgQ2xhc3MgX2NsYXNzOwogIGNvbnN0IGNoYXIgKnN0
cmluZzsKICBCT09MIGJvb2xlYW47CiAgY2hhciBzY2hhcjsKICB1bnNpZ25lZCBjaGFyIHVjaGFy
OwogIHNob3J0IHNzaG9ydDsKICB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CiAgaW50IHNpbnQ7CiAg
dW5zaWduZWQgaW50IHVpbnQ7CiAgbG9uZyBzbG9uZzsKICB1bnNpZ25lZCBsb25nIHVsb25nOwog
IGxvbmcgbG9uZyBzbG9uZ2xvbmc7CiAgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nbG9uZzsKICBm
bG9hdCBfZmxvYXQ7CiAgZG91YmxlIF9kb3VibGU7CiAgbG9uZyBkb3VibGUgX2xvbmdfZG91Ymxl
OwogIHZvaWQgKmlpZDsKfSB0eXBlc190OwoKdHlwZWRlZiBzdHJ1Y3QgewogIGZjYWxsX3R5cGVf
dCB0eXBlOwogIHR5cGVzX3QgdmFsOwp9IHZhbF90OwoKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9kZWZvYmovZGVmdHlwZS5oIiAxCiMgMjEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9kZWZvYmovZGVmdHlwZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpj
L09iamVjdC5oIiAxCiMgMzAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL09iamVjdC5o
IgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMuaCIgMQojIDMxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9PYmplY3QuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiIDEKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEg
ICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICAgNAoK
CiMgMzAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiCiMgMSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy5oIiAxCiMgMzEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqYy9oYXNoLmgiIDEKIyAzMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amMvaGFzaC5oIgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMiAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvaGFzaC5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMv
b2JqYy5oIiAxCiMgMzMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgoj
IDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2V4dGVybnZhci5oIiAxCiMgMzQgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2guaCIgMgojIDEgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0
dXJlcy5oIiAyIDMKIyAzMTEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiMgMSAiL3Vzci9p
bmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIyAzMTIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAy
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCgoKIyAxICIvdXNyL2xvY2Fs
L2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYu
aCIgMSAzCiMgMzQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCmV4dGVybiB2b2lkICpt
ZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCAq
bWVtbW92ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQog
ICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3Qg
X19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsCiAgICAgICAgICAgICAgICAg
ICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICA7CgoKCgpleHRlcm4gdm9pZCAq
bWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1l
bWNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24p
CiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQ
YWdlICAgIDUKCgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpfX3MsIGludCBf
X2MsIHNpemVfdCBfX24pCiAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgpleHRlcm4gdm9pZCAqcmF3bWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50IF9fYykg
X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbXJjaHIgKF9fY29u
c3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0
cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAg
OwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u
KSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwoKZXh0ZXJuIGNoYXIgKnN0
cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zcmMsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBz
dHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IHN0cm5jbXAgKF9fY29u
c3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3Ry
aWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zcmMsIHNpemVfdCBfX24pIDsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgi
IDEgMwojIDI4ICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAzCnR5cGVkZWYgc3RydWN0IF9fbG9j
YWxlX3N0cnVjdAp7CgogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNv
bnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToy
MSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgICA2
CgoKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG91
cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAxMDkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoK
ZXh0ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIg
Kl9fczIsIF9fbG9jYWxlX3QgX19sKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIF9fY29uc3Qg
Y2hhciAqX19zcmMsIHNpemVfdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9j
YWxlX3QgX19sKSA7CgoKCgpleHRlcm4gY2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykg
X19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAg
KF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJp
YnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDE1NSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4
dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJyY2hyIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAq
c3RyY2hybnVsIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBf
X2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0
IGNoYXIgKl9fYWNjZXB0KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgpleHRlcm4gY2hhciAqc3RycGJyayAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAq
X19hY2NlcHQpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVy
biBjaGFyICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpf
X25lZWRsZSkKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRl
cm4gY2hhciAqc3RyY2FzZXN0ciAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLCBfX2NvbnN0IGNo
YXIgKl9fbmVlZGxlKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkg
ICAgICAgICAgICAgIFBhZ2UgICAgNwoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgICAgICAg
IDsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSA7Cgpl
eHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX3NhdmVfcHRyKSA7CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9p
ZCAqX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3Qgdm9pZCAqX19uZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICAgICAgICAg
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gdm9pZCAqX19tZW1wY3B5ICh2
b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CmV4dGVybiB2b2lkICptZW1wY3B5
ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
dm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHNpemVfdCBz
dHJsZW4gKF9fY29uc3QgY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoK
CmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9f
bWF4bGVuKQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpleHRl
cm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgOwoKCgpleHRlcm4gY2hhciAqc3RyZXJy
b3JfciAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSA7CgoKCgpl
eHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIDsKCgoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAg
ICAgIFBhZ2UgICAgOAoKCmV4dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2
b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19z
LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQgKl9fczEsIF9f
Y29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18g
KChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICppbmRleCAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpyaW5kZXgg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKCgoK
ZXh0ZXJuIGludCBmZnNsIChsb25nIGludCBfX2wpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
X19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9fbGwpCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVybiBpbnQgc3RyY2FzZWNt
cCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgICAgICAgICBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAgICAgICAg
ICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBpbnQgX19zdHJjYXNl
Y21wX2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCmV4dGVybiBpbnQgX19zdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX24s
IF9fbG9jYWxlX3QgX19sb2MpCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCgoKCgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3As
CiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKSA7
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0u
bWkgICAgICAgICAgICAgIFBhZ2UgICAgOQoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBjaGFyICpzdHJzaWduYWwgKGludCBfX3NpZykg
OwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICAgICAgICAgOwpleHRlcm4gY2hhciAqc3Rw
Y3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
c3JjKQogICAgICAgICAgICA7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zcmMsIHNpemVfdCBfX24pIDsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9f
cmVzdHJpY3QgX19kZXN0LAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAq
X19zdHJpbmcpIDsKCgpleHRlcm4gdm9pZCAqbWVtZnJvYiAodm9pZCAqX19zLCBzaXplX3QgX19u
KSA7CgoKCgoKCmV4dGVybiBjaGFyICpiYXNlbmFtZSAoX19jb25zdCBjaGFyICpfX2ZpbGVuYW1l
KSA7CiMgMzU2ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcuaCIgMSAzCiMgMzU3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAxIDMKIyA1MiAiL3Vzci9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIyAyMiAiL3Vzci9p
bmNsdWRlL2VuZGlhbi5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIz
ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMwojIDM3ICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgi
IDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiMgMzggIi91c3IvaW5jbHVk
ZS9lbmRpYW4uaCIgMiAzCiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMwICIv
dXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAg
ICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICAxMAoKCgoK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
dV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFk
X3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hh
ciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWdu
ZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50
MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBf
X2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9f
dWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFk
X3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dp
ZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsK
dHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBf
X3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBf
X3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg
ICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5
cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tf
dDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAg
ICAgICAgICAgICBQYWdlICAgMTEKCgoKCgoKCgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9f
Ymxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVh
ZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRfdDsKdHlwZWRl
ZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNu
dF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVh
ZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxv
bmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxh
cl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19z
b2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMK
IyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1
ZGUvYml0cy9zY2hlZC5oIiAxIDMKIyA2OCAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwpz
dHJ1Y3QgX19zY2hlZF9wYXJhbQogIHsKICAgIGludCBfX3NjaGVkX3ByaW9yaXR5OwogIH07CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAg
ICAgICAgICAgICBQYWdlICAgMTIKCgojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw
ZXMuaCIgMiAzCgoKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1
czsKICBpbnQgX19zcGlubG9jazsKCn07CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2Rlc2Ny
X3N0cnVjdCAqX3B0aHJlYWRfZGVzY3I7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2F0
dHJfcwp7CiAgaW50IF9fZGV0YWNoc3RhdGU7CiAgaW50IF9fc2NoZWRwb2xpY3k7CiAgc3RydWN0
IF9fc2NoZWRfcGFyYW0gX19zY2hlZHBhcmFtOwogIGludCBfX2luaGVyaXRzY2hlZDsKICBpbnQg
X19zY29wZTsKICBzaXplX3QgX19ndWFyZHNpemU7CiAgaW50IF9fc3RhY2thZGRyX3NldDsKICB2
b2lkICpfX3N0YWNrYWRkcjsKICBzaXplX3QgX19zdGFja3NpemU7Cn0gcHRocmVhZF9hdHRyX3Q7
CgoKCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7
CiAgX3B0aHJlYWRfZGVzY3IgX19jX3dhaXRpbmc7Cn0gcHRocmVhZF9jb25kX3Q7CgoKCnR5cGVk
ZWYgc3RydWN0CnsKICBpbnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50
IF9fbV9yZXNlcnZlZDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9i
c2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICAxMwoKCiAgaW50IF9fbV9jb3VudDsK
ICBfcHRocmVhZF9kZXNjciBfX21fb3duZXI7CiAgaW50IF9fbV9raW5kOwogIHN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jayBfX21fbG9jazsKfSBwdGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgc3Ry
dWN0CnsKICBpbnQgX19tdXRleGtpbmQ7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKdHlwZWRl
ZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2tf
dAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fcndfbG9jazsKICBpbnQgX19yd19yZWFk
ZXJzOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVyOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndf
cmVhZF93YWl0aW5nOwogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsKICBpbnQg
X19yd19raW5kOwogIGludCBfX3J3X3BzaGFyZWQ7Cn0gcHRocmVhZF9yd2xvY2tfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIGludCBfX2xvY2traW5kOwogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVh
ZF9yd2xvY2thdHRyX3Q7CgoKCgp0eXBlZGVmIHZvbGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2Nr
X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2JhX2xv
Y2s7CiAgaW50IF9fYmFfcmVxdWlyZWQ7CiAgaW50IF9fYmFfcHJlc2VudDsKICBfcHRocmVhZF9k
ZXNjciBfX2JhX3dhaXRpbmc7Cn0gcHRocmVhZF9iYXJyaWVyX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogIGludCBfX3BzaGFyZWQ7Cn0gcHRocmVhZF9iYXJyaWVyYXR0cl90OwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDE0CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKIyAx
NDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDU0ICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcyLmgiIDIgMwojIDIxNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSB2b2lkICpfX21lbXBjcHlfc21hbGwgKHZvaWQgKiwgY2hhciwgY2hhciwg
Y2hhciwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX191aW50
MTZfdCwgX191aW50MTZfdCwgX191aW50MzJfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lIHZvaWQgKgpf
X21lbXBjcHlfc21hbGwgKHZvaWQgKl9fZGVzdDEsCiAgICAgICAgICAgICAgICAgY2hhciBfX3Ny
YzBfMSwgY2hhciBfX3NyYzJfMSwgY2hhciBfX3NyYzRfMSwgY2hhciBfX3NyYzZfMSwKICAgICAg
ICAgICAgICAgICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAg
ICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAg
ICAgICAgICAgICAgICAgc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJf
dCBfX3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICAg
IHVuc2lnbmVkIGNoYXIgX19jOwogIH0gKl9fdSA9IF9fZGVzdDE7CiAgc3dpdGNoICgodW5zaWdu
ZWQgaW50KSBfX3NyY2xlbikKICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX2MgPSBfX3Ny
YzBfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAg
IGJyZWFrOwogICAgY2FzZSAyOgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9f
dSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBicmVhazsKICAgIGNh
c2UgMzoKICAgICAgX191LT5fX3VzaSA9IF9fc3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lv
bl9fICgodm9pZCAqKSBfX3UgKyAyKTsKICAgICAgX191LT5fX2MgPSBfX3NyYzJfMTsKICAgICAg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAg
Y2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNp
b25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA1OgogICAgICBf
X3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikg
X191ICsgNCk7CiAgICAgIF9fdS0+X19jID0gX19zcmM0XzE7CiAgICAgIF9fdSA9IF9fZXh0ZW5z
aW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAgICAg
X191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDE1CgoKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDc6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf
X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9
IF9fc3JjNF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAyKTsK
ICAgICAgX191LT5fX2MgPSBfX3NyYzZfMTsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZv
aWQgKikgX191ICsgMSk7CiAgICAgIGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7
CiAgICAgIF9fdS0+X191aSA9IF9fc3JjNF80OwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgo
dm9pZCAqKSBfX3UgKyA0KTsKICAgICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuICh2b2lkICopIF9f
dTsKfQojIDM3MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiB2b2lkICpf
X3Jhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKTsKIyAzOTUgIi91c3IvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJjcHlfc21hbGwg
KGNoYXIgKiwgX191aW50MTZfdCwgX191aW50MTZfdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfX3VpbnQzMl90LCBfX3VpbnQzMl90LCBzaXplX3QpOwpleHRlcm4gX19p
bmxpbmUgY2hhciAqCl9fc3RyY3B5X3NtYWxsIChjaGFyICpfX2Rlc3QsCiAgICAgICAgICAgICAg
ICBfX3VpbnQxNl90IF9fc3JjMF8yLCBfX3VpbnQxNl90IF9fc3JjNF8yLAogICAgICAgICAgICAg
ICAgX191aW50MzJfdCBfX3NyYzBfNCwgX191aW50MzJfdCBfX3NyYzRfNCwKICAgICAgICAgICAg
ICAgIHNpemVfdCBfX3NyY2xlbikKewogIHVuaW9uIHsKICAgIF9fdWludDMyX3QgX191aTsKICAg
IF9fdWludDE2X3QgX191c2k7CiAgICB1bnNpZ25lZCBjaGFyIF9fdWM7CiAgfSAqX191ID0gKHZv
aWQgKikgX19kZXN0OwogIHN3aXRjaCAoKHVuc2lnbmVkIGludCkgX19zcmNsZW4pCiAgICB7CiAg
ICBjYXNlIDE6CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSAy
OgogICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAzOgog
ICAgICBfX3UtPl9fdXNpID0gX19zcmMwXzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2
b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAg
IGNhc2UgNDoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIGJyZWFrOwogICAgY2Fz
ZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25f
XyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJyZWFr
OwogICAgY2FzZSA2OgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2Jz
ZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDE2CgoKICAgICAgX191LT5fX3VpID0g
X19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwog
ICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIGJyZWFrOwogICAgY2FzZSA3OgogICAg
ICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQg
KikgX191ICsgNCk7CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzRfMjsKICAgICAgX191ID0gX19l
eHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAg
ICAgIGJyZWFrOwogICAgY2FzZSA4OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191aSA9
IF9fc3JjNF80OwogICAgICBicmVhazsKICAgIH0KICByZXR1cm4gX19kZXN0Owp9CiMgNTU0ICIv
dXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9faW5saW5lIGNoYXIgKl9fc3Rw
Y3B5X3NtYWxsIChjaGFyICosIF9fdWludDE2X3QsIF9fdWludDE2X3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cGNweV9zbWFsbCAoY2hhciAqX19kZXN0LAogICAg
ICAgICAgICAgICAgX191aW50MTZfdCBfX3NyYzBfMiwgX191aW50MTZfdCBfX3NyYzRfMiwKICAg
ICAgICAgICAgICAgIF9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3QgX19zcmM0XzQsCiAg
ICAgICAgICAgICAgICBzaXplX3QgX19zcmNsZW4pCnsKICB1bmlvbiB7CiAgICB1bnNpZ25lZCBp
bnQgX191aTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIg
X191YzsKICAgIGNoYXIgX19jOwogIH0gKl9fdSA9ICh2b2lkICopIF9fZGVzdDsKICBzd2l0Y2gg
KCh1bnNpZ25lZCBpbnQpIF9fc3JjbGVuKQogICAgewogICAgY2FzZSAxOgogICAgICBfX3UtPl9f
dWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNhc2UgMjoKICAgICAgX191LT5fX3VzaSA9IF9f
c3JjMF8yOwogICAgICBfX3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyAxKTsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAg
X191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9
ICdcMCc7CiAgICAgIGJyZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBf
NDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMyk7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSA1OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgX191ID0g
X19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgNCk7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1p
ICAgICAgICAgICAgICBQYWdlICAgMTcKCgogICAgICBicmVhazsKICAgIGNhc2UgNjoKICAgICAg
X191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICop
IF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0
ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDEpOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAg
ICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk
ICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwog
ICAgICBicmVhazsKICAgIGNhc2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAg
IF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkg
PSBfX3NyYzRfNDsKICAgICAgX191ID0gX19leHRlbnNpb25fXyAoKHZvaWQgKikgX191ICsgMyk7
CiAgICAgIGJyZWFrOwogICAgfQogIHJldHVybiAmX191LT5fX2M7Cn0KIyA4NzMgIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9j
MSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgc2l6
ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJu
IF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25z
dCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBfX3JlamVjdDIpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3RyY3Nw
bl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikK
ewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0g
IT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19y
ZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3Ms
IGNoYXIgX19yZWplY3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciBfX3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0
cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj
dDIsCiAgICAgICAgICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19y
ZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0
XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDIgJiYg
X19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICArK19fcmVzdWx0OwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDE4CgoKICByZXR1cm4gX19yZXN1bHQ7Cn0KIyA5MjggIi91c3IvaW5jbHVkZS9iaXRz
L3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJz
cG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KQp7CiAgcmVnaXN0ZXIgc2l6
ZV90IF9fcmVzdWx0ID0gMDsKCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAg
ICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVf
dCBfX3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lu
bGluZSBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
MSwgY2hhciBfX2FjY2VwdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3
aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2Fj
Y2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5s
aW5lIHNpemVfdCBfX3N0cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fYWNjZXB0MiwgY2hh
ciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsIGNoYXIgX19hY2NlcHQyLCBjaGFyIF9fYWNjZXB0
MykKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1
bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8
fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CiMgOTgzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2Vw
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsK
ZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19hY2NlcHQxLCBpbnQgX19hY2NlcHQyKQp7CgogIHdoaWxlICgqX19zICE9ICdcMCcgJiYg
Kl9fcyAhPSBfX2FjY2VwdDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIpCiAgICArK19fczsKICByZXR1
cm4gKl9fcyA9PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7Cn0K
CmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9f
YWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19zdHJwYnJr
X2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0MiwKICAg
ICAgICAgICAgICBpbnQgX19hY2NlcHQzKQp7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgMTkKCgoKICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0gX19hY2Nl
cHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpf
X3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CiMgMTAy
NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBzaXplX3QK
c3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQp7CiAgX19j
b25zdCBjaGFyICpfX2VuZCA9IChfX2NvbnN0IGNoYXIgKikgbWVtY2hyIChfX3N0cmluZywgJ1ww
JywgX19tYXhsZW4pOwogIHJldHVybiBfX2VuZCA/IChzaXplX3QpIChfX2VuZCAtIF9fc3RyaW5n
KSA6IF9fbWF4bGVuOwp9CiMgMTA0NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAs
IGNoYXIgKipfX25leHRwKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChj
aGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7
CiAgaWYgKF9fcyA9PSAoKHZvaWQgKikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgq
X19zID09IF9fc2VwKQogICAgKytfX3M7CiAgaWYgKCpfX3MgPT0gJ1wwJykKICAgIF9fcmVzdWx0
ID0gKCh2b2lkICopMCk7CiAgZWxzZQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAg
d2hpbGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fc2VwKQogICAgICAgICsrX19zOwogICAg
ICBpZiAoKl9fcyA9PSAnXDAnKQogICAgICAgICpfX25leHRwID0gX19zOwogICAgICBlbHNlCiAg
ICAgICAgewogICAgICAgICAgKl9fcyA9ICdcMCc7CiAgICAgICAgICAqX19uZXh0cCA9IF9fcyAr
IDE7CiAgICAgICAgfQogICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQojIDEwOTUgIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMg
KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ry
c2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19y
ZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSkKICAgIHJldHVybiAq
X19zID0gKCh2b2lkICopMCk7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdCkKICAgICooKl9f
cykrKyA9ICdcMCc7CiAgZWxzZQogICAgaWYgKCgqX19zID0gKF9fZXh0ZW5zaW9uX18gKF9fYnVp
bHRpbl9jb25zdGFudF9wIChfX3JlamVjdCkgJiYgKF9fcmVqZWN0KSA9PSAnXDAnID8gKGNoYXIg
KikgX19yYXdtZW1jaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkgOiBzdHJjaHIgKF9fcmV0dmFsLCBf
X3JlamVjdCkpKSkgIT0gKCh2b2lkICopMCkpCiAgICAgICooKl9fcykrKyA9ICdcMCc7CiAgICBl
bHNlCiAgICAgICpfX3MgPSAoKHZvaWQgKikwKTsKICByZXR1cm4gX19yZXR2YWw7CgoKCgoKCgoy
MDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAg
ICAgICBQYWdlICAgMjAKCgp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMmMgKGNo
YXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGlu
ZSBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9f
cmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2
YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApOwogIGlmICgq
X19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAgICAqKCpf
X3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9f
cmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEg
JiYgKl9fY3AgIT0gX19yZWplY3QyKQogICAgICAgICsrX19jcDsKICAgICAgaWYgKCpfX2NwICE9
ICdcMCcpCiAgICAgICAgewogICAgICAgICAgKl9fcyA9IF9fY3A7CiAgICAgICAgICAqKCpfX3Mp
KysgPSAnXDAnOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgICpfX3MgPSAoKHZvaWQgKikw
KTsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0
cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9f
aW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNo
YXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFs
ID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkpCiAgICByZXR1cm4gKl9fcyA9
ICgodm9pZCAqKTApOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9
PSBfX3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykKICAgICooKl9fcykr
KyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpfX2NwID0gX19yZXR2
YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9fcmVqZWN0MSAmJiAq
X19jcCAhPSBfX3JlamVjdDIKICAgICAgICAgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKICAg
ICAgICArK19fY3A7CiAgICAgIGlmICgqX19jcCAhPSAnXDAnKQogICAgICAgIHsKICAgICAgICAg
ICpfX3MgPSBfX2NwOwogICAgICAgICAgKigqX19zKSsrID0gJ1wwJzsKICAgICAgICB9CiAgICAg
IGVsc2UKICAgICAgICAqX19zID0gKCh2b2lkICopMCk7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFs
Owp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfZyAoY2hhciAqKl9fcywgX19jb25z
dCBjaGFyICpfX3JlamVjdCk7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQ
cGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgMjEKCgpleHRlcm4gX19pbmxp
bmUgY2hhciAqCl9fc3Ryc2VwX2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3Qp
CnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgo
dm9pZCAqKTApKQogICAgcmV0dXJuICgodm9pZCAqKTApOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5z
aW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9f
cmVqZWN0KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoX19yZWplY3QpICsgMSkgLSAoc2l6
ZV90KShjb25zdCB2b2lkICopKF9fcmVqZWN0KSA9PSAxKSA/ICgoX19hMCA9ICgoX19jb25zdCBj
aGFyICopIChfX3JlamVjdCkpWzBdLCBfX2EwID09ICdcMCcpID8gKCh2b2lkKSAoX19yZXR2YWwp
LCAoKHZvaWQgKikwKSkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoX19yZWplY3QpKVsx
XSwgX19hMSA9PSAnXDAnKSA/IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAo
X19hMCkgJiYgKF9fYTApID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWws
IF9fYTApIDogc3RyY2hyIChfX3JldHZhbCwgX19hMCkpKSA6ICgoX19hMiA9ICgoX19jb25zdCBj
aGFyICopIChfX3JlamVjdCkpWzJdLCBfX2EyID09ICdcMCcpID8gX19zdHJwYnJrX2MyIChfX3Jl
dHZhbCwgX19hMCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKF9fcmVqZWN0KSlbM10gPT0g
J1wwJyA/IF9fc3RycGJya19jMyAoX19yZXR2YWwsIF9fYTAsIF9fYTEsIF9fYTIpIDogc3RycGJy
ayAoX19yZXR2YWwsIF9fcmVqZWN0KSkpKSkgOiBzdHJwYnJrIChfX3JldHZhbCwgX19yZWplY3Qp
KTsgfSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KIyAxMTg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMiAzCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAyIDMKIyA1MjggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gdm9pZCAq
bWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKZXh0
ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgICAg
ICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwojIDExODkgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMiAzCgoKCgpleHRlcm4gY2hhciAqX19zdHJkdXAgKF9fY29uc3QgY2hh
ciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTIxMiAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3Qg
Y2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgo
X19tYWxsb2NfXykpOwojIDM2MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyAzNSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIiAyCiMgNDMgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9vYmpjL2hhc2guaCIKdHlwZWRlZiBzdHJ1Y3QgY2FjaGVfbm9kZQp7CiAgc3Ry
dWN0IGNhY2hlX25vZGUgKm5leHQ7CgogIGNvbnN0IHZvaWQgKmtleTsKCgoKICB2b2lkICp2YWx1
ZTsKfSAqbm9kZV9wdHI7CiMgNjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL2hhc2gu
aCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgKCpoYXNoX2Z1bmNfdHlwZSkodm9pZCAqLCBjb25zdCB2
b2lkICopOwojIDczICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9oYXNoLmgiCnR5cGVk
ZWYgaW50ICgqY29tcGFyZV9mdW5jX3R5cGUpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsK
IyA4MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDIyCgoKdHlwZWRlZiBzdHJ1Y3QKewoKICBub2RlX3B0ciAqbm9kZV90YWJsZTsKCgog
IHVuc2lnbmVkIGludCBzaXplOwoKCiAgdW5zaWduZWQgaW50IHVzZWQ7CiAgdW5zaWduZWQgaW50
IG1hc2s7CgoKCiAgdW5zaWduZWQgaW50IGxhc3RfYnVja2V0OwoKCgogIGhhc2hfZnVuY190eXBl
IGhhc2hfZnVuYzsKCiAgY29tcGFyZV9mdW5jX3R5cGUgY29tcGFyZV9mdW5jOwp9IGNhY2hlX3Q7
Cgp0eXBlZGVmIGNhY2hlX3QgKmNhY2hlX3B0cjsKCgoKZXh0ZXJuIGNhY2hlX3B0ciBtb2R1bGVf
aGFzaF90YWJsZSwgY2xhc3NfaGFzaF90YWJsZTsKCgoKY2FjaGVfcHRyIGhhc2hfbmV3ICh1bnNp
Z25lZCBpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICBoYXNoX2Z1bmNfdHlwZSBoYXNoX2Z1
bmMsCiAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9mdW5jX3R5cGUgY29tcGFyZV9mdW5jKTsK
CgoKdm9pZCBoYXNoX2RlbGV0ZSAoY2FjaGVfcHRyIGNhY2hlKTsKCgoKCgoKdm9pZCBoYXNoX2Fk
ZCAoY2FjaGVfcHRyICpjYWNoZXAsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqdmFsdWUpOwoKCgoK
dm9pZCBoYXNoX3JlbW92ZSAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lkICprZXkpOwojIDE0
MiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvaGFzaC5oIgpub2RlX3B0ciBoYXNoX25l
eHQgKGNhY2hlX3B0ciBjYWNoZSwgbm9kZV9wdHIgbm9kZSk7CgoKCnZvaWQgKmhhc2hfdmFsdWVf
Zm9yX2tleSAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lkICprZXkpOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDIzCgoKCgoKQk9PTCBoYXNoX2lzX2tleV9pbl9oYXNoIChjYWNoZV9wdHIgY2FjaGUs
IGNvbnN0IHZvaWQgKmtleSk7CiMgMTY0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9o
YXNoLmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cmhhc2hfcHRyIChjYWNoZV9wdHIgY2Fj
aGUsIGNvbnN0IHZvaWQgKmtleSkKewogIHJldHVybiAoKHNpemVfdClrZXkgLyBzaXplb2YgKHZv
aWQgKikpICYgY2FjaGUtPm1hc2s7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludApo
YXNoX3N0cmluZyAoY2FjaGVfcHRyIGNhY2hlLCBjb25zdCB2b2lkICprZXkpCnsKICB1bnNpZ25l
ZCBpbnQgcmV0ID0gMDsKICB1bnNpZ25lZCBpbnQgY3RyID0gMDsKCgogIHdoaWxlICgqKGNoYXIq
KWtleSkgewogICAgcmV0IF49ICooY2hhciopa2V5KysgPDwgY3RyOwogICAgY3RyID0gKGN0ciAr
IDEpICUgc2l6ZW9mICh2b2lkICopOwogIH0KCiAgcmV0dXJuIHJldCAmIGNhY2hlLT5tYXNrOwp9
CgoKCnN0YXRpYyBpbmxpbmUgaW50CmNvbXBhcmVfcHRycyAoY29uc3Qgdm9pZCAqazEsIGNvbnN0
IHZvaWQgKmsyKQp7CiAgcmV0dXJuICEoazEgLSBrMik7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQK
Y29tcGFyZV9zdHJpbmdzIChjb25zdCB2b2lkICprMSwgY29uc3Qgdm9pZCAqazIpCnsKICBpZiAo
azEgPT0gazIpCiAgICByZXR1cm4gMTsKICBlbHNlIGlmIChrMSA9PSAwIHx8IGsyID09IDApCiAg
ICByZXR1cm4gMDsKICBlbHNlCiAgICByZXR1cm4gIV9fZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9f
czFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChrMSkgJiYgX19idWlsdGlu
X2NvbnN0YW50X3AgKGsyKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKGsxKSwgX19zMl9sZW4gPSBz
dHJsZW4gKGsyKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoazEpICsgMSkgLSAoc2l6ZV90
KShjb25zdCB2b2lkICopKGsxKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90
KShjb25zdCB2b2lkICopKChrMikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoazIpID09
IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IG1lbWNtcCAoKF9fY29uc3QgY2hhciAqKSAoazEpLCAo
X19jb25zdCBjaGFyICopIChrMiksIChfX3MxX2xlbiA8IF9fczJfbGVuID8gX19zMV9sZW4gOiBf
X3MyX2xlbikgKyAxKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoazEpICYmICgoc2l6ZV90KShj
b25zdCB2b2lkICopKChrMSkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoazEpID09IDEp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoazEpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChrMikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsyKSArIDEpIC0gKHNp
emVfdCkoY29uc3Qgdm9pZCAqKShrMikgPT0gMSkgPyAoX19leHRlbnNpb25fXyAoeyByZWdpc3Rl
ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoazEpKVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikoazIpKVswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs
dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzFd
IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVsxXSk7
IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzJdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVsyXSk7IGlmIChfX3MxX2xl
biA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVszXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFy
ICopIChfX2NvbnN0IGNoYXIgKikgKGsyKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSA6IChfX2V4
dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2ln
bmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVswXSAt
IF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsxXSAt
IF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazEpKVsyXSAt
IF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g
KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlbM10gLSBf
X3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChrMikg
JiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKGsyKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p
ZCAqKShrMikgPT0gMSkgJiYgKF9fczJfbGVuID0gc3RybGVuIChrMiksIF9fczJfbGVuIDwgNCkg
PyAoX19idWlsdGluX2NvbnN0YW50X3AgKGsxKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo
azEpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKGsxKSA9PSAxKSA/IChfX2V4dGVuc2lv
bl9fICh7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq
KSAoX19jb25zdCBjaGFyICopIChrMSkpWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKShrMikpWzBdKTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9
PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKGsxKSlbMV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy
ICopIChrMikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz
dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKGsxKSlb
Ml0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMikpWzJd
KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29u
c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSkpWzNdIC0gKChfX2NvbnN0
IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoazIpKVszXSk7IH0gfSBfX3Jlc3Vs
dDsgfSkpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0g
KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChrMSk7IHJlZ2lzdGVy
IGludCBfX3Jlc3VsdCA9IF9fczFbMF0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j
b25zdCBjaGFyICopIChrMikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGsyKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDAp
IHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv
bnN0IGNoYXIgKikgKGsyKSlbMl0pOyBpZiAoX19zMl9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDAp
IF9fcmVzdWx0ID0gKF9fczFbM10gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z
dCBjaGFyICopIChrMikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogc3RyY21wIChrMSwgazIp
KSkpOyB9KTsKfQojIDMyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVh
bS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMzYgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzcgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAg
ICAgIFBhZ2UgICAyNAoKCgoKCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyA0MyAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8u
aCIgMiAzCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDQ1ICIvdXNyL2xv
Y2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRp
by5oIiAyIDMKIyA1MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxF
OwojIDYzICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsKIyA3
MyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2lu
Y2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwoj
IDkgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDEgMwojIDEwICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKCgoKIyAxICIv
dXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzEyICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB3aW50X3Q7CiMgMTUgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjQgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0
OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgNDkgIi91
c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIg
MSAzCiMgNTEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NyAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50OwogIHVuaW9uCiAgewogICAg
d2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBfX3ZhbHVlOwp9IF9fbWJzdGF0
ZV90OwojIDI1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiBzdHJ1Y3QK
ewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfR19mcG9zX3Q7CnR5
cGVkZWYgc3RydWN0CnsKICBfX29mZjY0X3QgX19wb3M7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgMjUK
CgogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiMgNDQgIi91c3IvaW5jbHVk
ZS9fR19jb25maWcuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNiAiL3Vz
ci9pbmNsdWRlL2djb252LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMg
MjcgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgi
IDEgMwojIDQ4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojIDEgIi91c3IvbG9jYWwvZ2NjMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
IyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93
Y2hhci5oIiAxIDMKIyA1MSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDI5ICIvdXNyL2lu
Y2x1ZGUvZ2NvbnYuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMSAiL3Vzci9pbmNs
dWRlL2djb252LmgiIDIgMwoKCgoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZf
Tk9DT05WLAogIF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZ
X0lOUFVULAogIF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAog
IF9fR0NPTlZfSU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1Is
CiAgX19HQ09OVl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1Qg
PSAweDAwMDEsCiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBf
X2djb252X3N0ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9h
ZGVkX29iamVjdDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKCgoKCgoKMjAwMS0wOC0y
NCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFn
ZSAgIDI2CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVw
ICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQs
IGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2luaXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZf
c3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9lbmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZf
c3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2dj
b252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfX2dj
b252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICoqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19n
Y29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwgX19jb25zdCB1bnNpZ25lZCBjaGFyICos
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3Ry
YW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBfX2NvbnN0IGNoYXIgKioqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOwoKCnR5cGVkZWYgaW50
ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0IGNoYXIgKik7CnR5cGVk
ZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7CgpzdHJ1Y3QgX19nY29u
dl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19mY3QgX190cmFuc19mY3Q7CiAgX19nY29u
dl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNf
ZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRhOwogIHN0cnVjdCBfX2djb252
X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0
IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9oYW5kbGU7CiAgX19jb25zdCBjaGFyICpf
X21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNoYXIgKl9fZnJvbV9uYW1lOwogIGNoYXIg
Kl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7CiAgX19nY29udl9pbml0X2ZjdCBfX2lu
aXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9mY3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAg
MjcKCgoKCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207
CiAgaW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKCiAgaW50IF9f
c3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsKfTsKCgoKc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRh
CnsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZjsKICB1bnNpZ25lZCBjaGFyICpfX291dGJ1ZmVu
ZDsKCgoKICBpbnQgX19mbGFnczsKCgoKICBpbnQgX19pbnZvY2F0aW9uX2NvdW50ZXI7CgoKCiAg
aW50IF9faW50ZXJuYWxfdXNlOwoKICBfX21ic3RhdGVfdCAqX19zdGF0ZXA7CiAgX19tYnN0YXRl
X3QgX19zdGF0ZTsKCgoKICBzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhICpfX3RyYW5zOwp9OwoK
Cgp0eXBlZGVmIHN0cnVjdCBfX2djb252X2luZm8KewogIHNpemVfdCBfX25zdGVwczsKICBzdHJ1
Y3QgX19nY29udl9zdGVwICpfX3N0ZXBzOwogIF9fZXh0ZW5zaW9uX18gc3RydWN0IF9fZ2NvbnZf
c3RlcF9kYXRhIF9fZGF0YSBbXTsKfSAqX19nY29udl90OwojIDQ1ICIvdXNyL2luY2x1ZGUvX0df
Y29uZmlnLmgiIDIgMwp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7
CiAgc3RydWN0CiAgewogICAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDI4CgoKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2Nv
bWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CiMg
MzEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKIyA1MSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgi
IDMKIyAxICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCnR5cGVkZWYgX19i
dWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTIgIi91c3IvaW5jbHVkZS9saWJpby5o
IiAyIDMKIyAxNTggIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCnN0cnVjdCBfSU9fanVtcF90OyBz
dHJ1Y3QgX0lPX0ZJTEU7CiMgMTY4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZv
aWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9JT19tYXJr
ZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7CiMgMTkx
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAg
X19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJvciwKICBf
X2NvZGVjdnRfbm9jb252Cn07CiMgMjU5ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3Qg
X0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CgoKCgogIGNoYXIqIF9JT19yZWFkX3B0cjsKICBjaGFy
KiBfSU9fcmVhZF9lbmQ7CiAgY2hhciogX0lPX3JlYWRfYmFzZTsKICBjaGFyKiBfSU9fd3JpdGVf
YmFzZTsKICBjaGFyKiBfSU9fd3JpdGVfcHRyOwogIGNoYXIqIF9JT193cml0ZV9lbmQ7CiAgY2hh
ciogX0lPX2J1Zl9iYXNlOwogIGNoYXIqIF9JT19idWZfZW5kOwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAg
IDI5CgoKCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAg
Y2hhciAqX0lPX3NhdmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0
cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAg
X19vZmZfdCBfb2xkX29mZnNldDsKCgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBz
aWduZWQgY2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCgoKICBfSU9f
bG9ja190ICpfbG9jazsKIyAzMDMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCiAgX19vZmY2NF90
IF9vZmZzZXQ7CgoKCgoKICB2b2lkICpfX3BhZDE7CiAgdm9pZCAqX19wYWQyOwoKICBpbnQgX21v
ZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2YgKGludCkgLSAyICogc2l6ZW9mICh2b2lk
ICopXTsKCn07CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9J
T19GSUxFX3BsdXM7CgpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRpbl87
CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBzdHJ1
Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CiMgMzQyICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBj
aGFyICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAg
MzAKCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19j
b25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IF9fbik7CgoKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBf
X29mZjY0X3QgKl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2
b2lkICpfX2Nvb2tpZSk7CgoKCgp0eXBlZGVmIF9faW9fcmVhZF9mbiBjb29raWVfcmVhZF9mdW5j
dGlvbl90Owp0eXBlZGVmIF9faW9fd3JpdGVfZm4gY29va2llX3dyaXRlX2Z1bmN0aW9uX3Q7CnR5
cGVkZWYgX19pb19zZWVrX2ZuIGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb19j
bG9zZV9mbiBjb29raWVfY2xvc2VfZnVuY3Rpb25fdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19p
b19yZWFkX2ZuICpyZWFkOwogIF9faW9fd3JpdGVfZm4gKndyaXRlOwogIF9faW9fc2Vla19mbiAq
c2VlazsKICBfX2lvX2Nsb3NlX2ZuICpjbG9zZTsKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190
Owp0eXBlZGVmIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190
OwoKc3RydWN0IF9JT19jb29raWVfZmlsZTsKCgpleHRlcm4gdm9pZCBfSU9fY29va2llX2luaXQg
KHN0cnVjdCBfSU9fY29va2llX2ZpbGUgKl9fY2ZpbGUsIGludCBfX3JlYWRfd3JpdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19jb29raWUsIF9JT19jb29raWVfaW9fZnVu
Y3Rpb25zX3QgX19mbnMpOwoKCgoKCgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAoX0lPX0ZJTEUg
KikgOwpleHRlcm4gaW50IF9fdWZsb3cgKF9JT19GSUxFICopIDsKZXh0ZXJuIGludCBfX292ZXJm
bG93IChfSU9fRklMRSAqLCBpbnQpIDsKZXh0ZXJuIHdpbnRfdCBfX3d1bmRlcmZsb3cgKF9JT19G
SUxFICopIDsKZXh0ZXJuIHdpbnRfdCBfX3d1ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2lu
dF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50X3QpIDsKIyA0MjQgIi91c3IvaW5jbHVk
ZS9saWJpby5oIiAzCmV4dGVybiBpbnQgX0lPX2dldGMgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVy
biBpbnQgX0lPX3B1dGMgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lP
X2Zlb2YgKF9JT19GSUxFICpfX2ZwKSA7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUg
Kl9fZnApIDsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZl
clN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgMzEKCgpleHRlcm4gaW50IF9JT19wZWVrY19s
b2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7CgoKCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmlsZSAo
X0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICopIDsK
ZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDU0ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICBf
X2dudWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRm
IChfSU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lPX3Bh
ZG4gKF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRu
IChfSU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vl
a29mZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2NF90
IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQg
X0lPX2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA3NCAiL3Vzci9sb2NhbC9nY2Mz
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMiAz
CgoKCgp0eXBlZGVmIF9fZ251Y192YV9saXN0IF9fbm90X3ZhX2xpc3RfXzsKIyA4OCAiL3Vzci9s
b2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3Rk
aW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9HX2Zwb3M2NF90
IGZwb3M2NF90OwojIDEzNyAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0
ZGlvX2xpbS5oIiAxIDMKIyAxMzggIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgpleHRlcm4gRklMRSAqc3Rk
aW47CmV4dGVybiBGSUxFICpzdGRvdXQ7CmV4dGVybiBGSUxFICpzdGRlcnI7CiMgMTUyICIvdXNy
L2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9z
dGRpby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsK
CmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9f
bmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE2OCAiL3Vzci9sb2Nh
bC9nY2MzL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSA7CgoKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2Ug
ICAzMgoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGNoYXIg
KnRtcG5hbV9yIChjaGFyICpfX3MpIDsKIyAxODggIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIg
KnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19wZngpCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgoKZXh0ZXJuIGludCBmY2xv
c2UgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0p
IDsKCgoKZXh0ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpl
eHRlcm4gaW50IGZjbG9zZWFsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIDsKCmV4dGVybiBGSUxFICpmcmVvcGVuIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwojIDIzMiAiL3Vzci9sb2NhbC9nY2MzL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4g
RklMRSAqZm9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykgOwpleHRl
cm4gRklMRSAqZnJlb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoK
CmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsK
CgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29raWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19j
b29raWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0lPX2Nvb2tpZV9pb19mdW5jdGlv
bnNfdCBfX2lvX2Z1bmNzKSA7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
UHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDMzCgoKCmV4dGVybiBGSUxF
ICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9fY29uc3QgY2hhciAqX19tb2Rl
cykgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoqX19yZXN0cmljdCBf
X2J1ZmxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3Qg
X19zaXplbG9jKSA7CgoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAo
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAg
ICAgICAgICAgICAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9fbikgOwoKCgoKZXh0ZXJuIHZvaWQg
c2V0YnVmZmVyIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9f
YnVmLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX3NpemUpIDsKCgpleHRlcm4gdm9p
ZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmcHJpbnRmIChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHByaW50ZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgc3ByaW50ZiAo
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpf
X3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKZXh0ZXJuIGludCB2cHJpbnRm
IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgICAgICAgICA7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAg
ICBfX2dudWNfdmFfbGlzdCBfX2FyZykgOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpf
X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKCgoKCgoKCjIwMDEtMDgt
MjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBh
Z2UgICAzNAoKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6
ZV90IF9fbWF4bGVuLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQg
dmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAg
ICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7
CmV4dGVybiBpbnQgX19hc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAg
ICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAg
ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsK
ZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgICAgICAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0
ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zt
dCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKZXh0ZXJu
IGludCBkcHJpbnRmIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAu
Li4pCiAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MiwgMykpKTsKCgoKCmV4dGVybiBpbnQgZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt
LAogICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAu
Li4pIDsKCmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h
dCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
Li4uKSA7CgoKCmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICBfX2dudWNf
dmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICBfX2F0
dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpOwoKCmV4dGVybiBpbnQg
dnNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJn
KQogICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMiwg
MCkpKTsKCgoKCmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQg
Z2V0YyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICAzNQoKCgoKZXh0ZXJu
IGludCBnZXRjaGFyICh2b2lkKSA7CgoKCgoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJ
TEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgOwoKCgoK
ZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBp
bnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgcHV0YyAoaW50
IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dGNoYXIgKGludCBfX2MpIDsK
CgoKCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFt
KSA7CgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFt
KSA7CmV4dGVybiBpbnQgcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgOwoKCgoKCmV4dGVybiBp
bnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4gaW50IHB1dHcgKGludCBfX3csIEZJ
TEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgICAgICAgICA7CgoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAg
ICAgICAgICAgICAgUGFnZSAgIDM2CgoKCgpleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNo
YXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFy
ICpfX3MpIDsKIyA0MzYgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGlt
IChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4dGVybiBf
X3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSkgOwoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5l
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsK
CgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUg
Kl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGludCBmcHV0c191
bmxvY2tlZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgpleHRlcm4gaW50IHB1dHMg
KF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5nZXRjIChpbnQgX19jLCBGSUxF
ICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2b2lkICpfX3Jlc3RyaWN0IF9f
cHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxF
ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsKCgoKZXh0ZXJuIHNpemVfdCBm
cmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAg
ICAgIFBhZ2UgICAzNwoKCgoKCmV4dGVybiBpbnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25n
IGludCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gbG9uZyBpbnQgZnRlbGwgKEZJTEUg
Kl9fc3RyZWFtKSA7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFtKSA7CiMgNDk5
ICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5j
bHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNlZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZf
dCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CgpleHRlcm4gX19vZmZfdCBmdGVsbG8gKEZJTEUgKl9f
c3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVh
bSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKQogICAgICAgICAgICA7CgpleHRlcm4gaW50IGZz
ZXRwb3MgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpIDsKIyA1MzMgIi91
c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRl
L3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmc2Vla282NCAoRklMRSAqX19zdHJlYW0sIF9fb2ZmNjRf
dCBfX29mZiwgaW50IF9fd2hlbmNlKSA7CmV4dGVybiBfX29mZjY0X3QgZnRlbGxvNjQgKEZJTEUg
Kl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICAgICAgICAgOwpleHRlcm4gaW50
IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIF9fY29uc3QgZnBvczY0X3QgKl9fcG9zKSA7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZW9m
IChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSA7
CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwpleHRl
cm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVycm9y
X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChfX2Nv
bnN0IGNoYXIgKl9fcykgOwoKCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3Qg
Y2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJyOwpleHRl
cm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQ
YWdlICAgMzgKCgoKCgpleHRlcm4gaW50IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4
dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4g
RklMRSAqcG9wZW4gKF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9k
ZXMpIDsKCgpleHRlcm4gaW50IHBjbG9zZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4g
Y2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmN1c2VyaWQgKGNo
YXIgKl9fcykgOwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGludCBvYnN0YWNrX3ByaW50
ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwpleHRl
cm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0
YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19h
cmdzKSA7CgoKCgoKCgpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoK
CmV4dGVybiBpbnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgoKCjIwMDEt
MDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAg
IFBhZ2UgICAzOQoKCgpleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIDsK
IyA2NDAgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
MS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMK
IyAzOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwpleHRlcm4gX19pbmxpbmUgaW50CnZw
cmludGYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgX19h
cmcpCnsKICByZXR1cm4gdmZwcmludGYgKHN0ZG91dCwgX19mbXQsIF9fYXJnKTsKfQoKCmV4dGVy
biBfX2lubGluZSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBfSU9fZ2V0YyAoc3RkaW4p
Owp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsK
ICByZXR1cm4gKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kID8g
X191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIr
Kyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICBy
ZXR1cm4gKChzdGRpbiktPl9JT19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQgPyBf
X3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+X0lPX3JlYWRfcHRy
KyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1
cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0KTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIGludApmcHV0
Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJl
YW0pLT5fSU9fd3JpdGVfcHRyID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikg
KCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKCgoKCgoKCjIw
MDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAg
ICAgIFBhZ2UgICA0MAoKCmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y191bmxvY2tlZCAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRy
ID49IChfX3N0cmVhbSktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1
bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9f
d3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIGludApwdXRjaGFyX3Vu
bG9ja2VkIChpbnQgX19jKQp7CiAgcmV0dXJuICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIgPj0g
KHN0ZG91dCktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQg
Y2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIr
KyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19zc2l6ZV90CmdldGxpbmUgKGNo
YXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiBf
X2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwgJ1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJu
IF9faW5saW5lIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAo
KChfX3N0cmVhbSktPl9mbGFncyAmIDB4MTApICE9IDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGlu
dApmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9fc3RyZWFt
KS0+X2ZsYWdzICYgMHgyMCkgIT0gMCk7Cn0KIyA2NDEgIi91c3IvbG9jYWwvZ2NjMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDMzICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0cmVhbS5oIiAyCgp0eXBlZGVmIGlu
dCAoKm9iamNfdHlwZWRfcmVhZF9mdW5jKSh2b2lkKiwgY2hhciosIGludCk7CnR5cGVkZWYgaW50
ICgqb2JqY190eXBlZF93cml0ZV9mdW5jKSh2b2lkKiwgY29uc3QgY2hhciosIGludCk7CnR5cGVk
ZWYgaW50ICgqb2JqY190eXBlZF9mbHVzaF9mdW5jKSh2b2lkKik7CnR5cGVkZWYgaW50ICgqb2Jq
Y190eXBlZF9lb2ZfZnVuYykodm9pZCopOwojIDQ4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy90eXBlZHN0cmVhbS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX3R5cGVkX3N0cmVhbSB7CiAg
dm9pZCogcGh5c2ljYWw7CiAgY2FjaGVfcHRyIG9iamVjdF90YWJsZTsKICBjYWNoZV9wdHIgc3Ry
ZWFtX3RhYmxlOwogIGNhY2hlX3B0ciBjbGFzc190YWJsZTsKICBjYWNoZV9wdHIgb2JqZWN0X3Jl
ZnM7CiAgaW50IG1vZGU7CiAgaW50IHR5cGU7CiAgaW50IHZlcnNpb247CgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQ
YWdlICAgNDEKCgogIGludCB3cml0aW5nX3Jvb3RfcDsKICBvYmpjX3R5cGVkX3JlYWRfZnVuYyBy
ZWFkOwogIG9iamNfdHlwZWRfd3JpdGVfZnVuYyB3cml0ZTsKICBvYmpjX3R5cGVkX2VvZl9mdW5j
IGVvZjsKICBvYmpjX3R5cGVkX2ZsdXNoX2Z1bmMgZmx1c2g7Cn0gVHlwZWRTdHJlYW07CiMgOTMg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL3R5cGVkc3RyZWFtLmgiCmludCBvYmpjX3dy
aXRlX3R5cGUgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsIGNvbnN0IHZv
aWQqIGRhdGEpOwppbnQgb2JqY19yZWFkX3R5cGUgKFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0
IGNoYXIqIHR5cGUsIHZvaWQqIGRhdGEpOwoKaW50IG9iamNfd3JpdGVfdHlwZXMgKFR5cGVkU3Ry
ZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsIC4uLik7CmludCBvYmpjX3JlYWRfdHlwZXMg
KFR5cGVkU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsIC4uLik7CgppbnQgb2JqY193
cml0ZV9vYmplY3RfcmVmZXJlbmNlIChUeXBlZFN0cmVhbSogc3RyZWFtLCBpZCBvYmplY3QpOwpp
bnQgb2JqY193cml0ZV9yb290X29iamVjdCAoVHlwZWRTdHJlYW0qIHN0cmVhbSwgaWQgb2JqZWN0
KTsKCmxvbmcgb2JqY19nZXRfc3RyZWFtX2NsYXNzX3ZlcnNpb24gKFR5cGVkU3RyZWFtKiBzdHJl
YW0sIENsYXNzIGNsYXNzKTsKCgoKCgoKaW50IG9iamNfd3JpdGVfYXJyYXkgKFR5cGVkU3RyZWFt
KiBzdHJlYW0sIGNvbnN0IGNoYXIqIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICBpbnQgY291
bnQsIGNvbnN0IHZvaWQqIGRhdGEpOwppbnQgb2JqY19yZWFkX2FycmF5IChUeXBlZFN0cmVhbSog
c3RyZWFtLCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQs
IHZvaWQqIGRhdGEpOwoKaW50IG9iamNfd3JpdGVfb2JqZWN0IChUeXBlZFN0cmVhbSogc3RyZWFt
LCBpZCBvYmplY3QpOwppbnQgb2JqY19yZWFkX29iamVjdCAoVHlwZWRTdHJlYW0qIHN0cmVhbSwg
aWQqIG9iamVjdCk7CiMgMTI0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy90eXBlZHN0
cmVhbS5oIgpUeXBlZFN0cmVhbSogb2JqY19vcGVuX3R5cGVkX3N0cmVhbSAoRklMRSogcGh5c2lj
YWwsIGludCBtb2RlKTsKVHlwZWRTdHJlYW0qIG9iamNfb3Blbl90eXBlZF9zdHJlYW1fZm9yX2Zp
bGUgKGNvbnN0IGNoYXIqIGZpbGVfbmFtZSwgaW50IG1vZGUpOwoKdm9pZCBvYmpjX2Nsb3NlX3R5
cGVkX3N0cmVhbSAoVHlwZWRTdHJlYW0qIHN0cmVhbSk7CgpCT09MIG9iamNfZW5kX29mX3R5cGVk
X3N0cmVhbSAoVHlwZWRTdHJlYW0qIHN0cmVhbSk7CnZvaWQgb2JqY19mbHVzaF90eXBlZF9zdHJl
YW0gKFR5cGVkU3RyZWFtKiBzdHJlYW0pOwojIDMyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy9PYmplY3QuaCIgMgoKCgoKCkBpbnRlcmZhY2UgT2JqZWN0CnsKICAgIENsYXNzIGlzYTsK
fQoKCisgaW5pdGlhbGl6ZTsKLSBpbml0OwoKCisgbmV3OworIGFsbG9jOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDQyCgoKLSBmcmVlOwotIGNvcHk7Ci0gc2hhbGxvd0NvcHk7Ci0gZGVlcGVuOwotIGRl
ZXBDb3B5OwoKCi0gKENsYXNzKWNsYXNzOwotIChDbGFzcylzdXBlckNsYXNzOwotIChNZXRhQ2xh
c3MpbWV0YUNsYXNzOwotIChjb25zdCBjaGFyICopbmFtZTsKCgotIHNlbGY7Ci0gKHVuc2lnbmVk
IGludCloYXNoOwotIChCT09MKWlzRXF1YWw6YW5PYmplY3Q7Ci0gKGludCljb21wYXJlOmFub3Ro
ZXJPYmplY3Q7CgoKLSAoQk9PTClpc01ldGFDbGFzczsKLSAoQk9PTClpc0NsYXNzOwotIChCT09M
KWlzSW5zdGFuY2U7CgoKLSAoQk9PTClpc0tpbmRPZjooQ2xhc3MpYUNsYXNzT2JqZWN0OwotIChC
T09MKWlzTWVtYmVyT2Y6KENsYXNzKWFDbGFzc09iamVjdDsKLSAoQk9PTClpc0tpbmRPZkNsYXNz
TmFtZWQ6KGNvbnN0IGNoYXIgKilhQ2xhc3NOYW1lOwotIChCT09MKWlzTWVtYmVyT2ZDbGFzc05h
bWVkOihjb25zdCBjaGFyICopYUNsYXNzTmFtZTsKCgorIChCT09MKWluc3RhbmNlc1Jlc3BvbmRU
bzooU0VMKWFTZWw7Ci0gKEJPT0wpcmVzcG9uZHNUbzooU0VMKWFTZWw7CgoKLSAoQk9PTCljb25m
b3Jtc1RvOihQcm90b2NvbCopYVByb3RvY29sOwoKCisgKElNUClpbnN0YW5jZU1ldGhvZEZvcjoo
U0VMKWFTZWw7Ci0gKElNUCltZXRob2RGb3I6KFNFTClhU2VsOworIChzdHJ1Y3Qgb2JqY19tZXRo
b2RfZGVzY3JpcHRpb24gKilkZXNjcmlwdGlvbkZvckluc3RhbmNlTWV0aG9kOihTRUwpYVNlbDsK
LSAoc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uICopZGVzY3JpcHRpb25Gb3JNZXRob2Q6
KFNFTClhU2VsOwoKCi0gcGVyZm9ybTooU0VMKWFTZWw7Ci0gcGVyZm9ybTooU0VMKWFTZWwgd2l0
aDphbk9iamVjdDsKLSBwZXJmb3JtOihTRUwpYVNlbCB3aXRoOmFuT2JqZWN0MSB3aXRoOmFuT2Jq
ZWN0MjsKCgotIChyZXR2YWxfdClmb3J3YXJkOihTRUwpYVNlbCA6KGFyZ2xpc3RfdClhcmdGcmFt
ZTsKLSAocmV0dmFsX3QpcGVyZm9ybXY6KFNFTClhU2VsIDooYXJnbGlzdF90KWFyZ0ZyYW1lOwoK
CisgcG9zZUFzOihDbGFzcylhQ2xhc3NPYmplY3Q7Ci0gKENsYXNzKXRyYW5zbXV0ZUNsYXNzVG86
KENsYXNzKWFDbGFzc09iamVjdDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDQzCgoKLSBzdWJjbGFz
c1Jlc3BvbnNpYmlsaXR5OihTRUwpYVNlbDsKLSBub3RJbXBsZW1lbnRlZDooU0VMKWFTZWw7Ci0g
c2hvdWxkTm90SW1wbGVtZW50OihTRUwpYVNlbDsKCgotIGRvZXNOb3RSZWNvZ25pemU6KFNFTClh
U2VsOwotIGVycm9yOihjb25zdCBjaGFyICopYVN0cmluZywgLi4uOwoKCisgKGludCl2ZXJzaW9u
OworIHNldFZlcnNpb246KGludClhVmVyc2lvbjsKKyAoaW50KXN0cmVhbVZlcnNpb246IChUeXBl
ZFN0cmVhbSopYVN0cmVhbTsKCi0gcmVhZDogKFR5cGVkU3RyZWFtKilhU3RyZWFtOwotIHdyaXRl
OiAoVHlwZWRTdHJlYW0qKWFTdHJlYW07Ci0gYXdha2U7CgpAZW5kCiMgMjIgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9kZWZvYmovZGVmdHlwZS5oIiAyCgoKCgoKCkBwcm90b2NvbCBDUkVBVEFC
TEUKQGVuZAoKCkBwcm90b2NvbCBSRVRVUk5BQkxFCkBlbmQKIyA0NiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai9kZWZ0eXBlLmgiCnR5cGVkZWYgdm9pZCAoKm5vdGlmeV90KSggaWQg
b2JqZWN0LCBpZCByZWFsbG9jQWRkcmVzcywgdm9pZCAqYXJnICk7CgoKCgoKCnR5cGVkZWYgdm9p
ZCAqcmVmX3Q7CgoKCgp0eXBlZGVmIHZvaWQgKCpmdW5jX3QpKCB2b2lkICk7CgoKCgp0eXBlZGVm
IGlkICgqZml4dXBSb3V0aW5lX3QpKCB2b2lkICpmaXh1cENvbnRleHQsIGlkIGZpeHVwT2JqZWN0
ICk7CnR5cGVkZWYgdm9pZCAoKmZpeHVwX3QpKCBmaXh1cFJvdXRpbmVfdCBmaXh1cFJvdXRpbmUs
IHZvaWQgKmZpeHVwQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZCBmaXh1cEFy
Z3VtZW50ICk7CiMgNjcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIgMgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDY4ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiIDIKIyA3NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai5oIgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2
ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDQ0CgoKQHByb3RvY29sIEdldE5hbWUKIyA4
OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX1VzaW5nOwotIChjb25z
dCBjaGFyICopZ2V0TmFtZTsKQGVuZAoKQHByb3RvY29sIERlZmluZWRPYmplY3QgPEdldE5hbWU+
CiMgMTA4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7CiMg
MTE3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gKEJPT0wpcmVzcG9uZHNU
bzogKFNFTClhU2VsOwoKKyAoQk9PTCljb25mb3Jtc1RvOiAoUHJvdG9jb2wgKilwcm90b2NvbDsK
LSAoQk9PTCljb25mb3Jtc1RvOiAoUHJvdG9jb2wgKilwcm90b2NvbDsKCgoKLSBnZXRDbGFzczsK
CgotIChjb25zdCBjaGFyICopZ2V0VHlwZU5hbWU7CgoKCi0gKHJlZl90KWFkZFJlZjogKG5vdGlm
eV90KW5vdGlmeUZ1bmN0aW9uIHdpdGhBcmd1bWVudDogKHZvaWQgKilhcmc7CgoKLSAodm9pZCly
ZW1vdmVSZWY6IChyZWZfdClyZWZWYWw7CgoKLSAoaW50KWNvbXBhcmU6IGFuT2JqZWN0OwoKCi0g
cGVyZm9ybTogKFNFTClhU2VsOwoKCi0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0
MTsKCgotIHBlcmZvcm06IChTRUwpYVNlbCB3aXRoOiBhbk9iamVjdDEgd2l0aDogYW5PYmoyOwoK
Ci0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0MSB3aXRoOiBhbk9iajIgd2l0aDog
YW5PYmozOwoKCgotICh2b2lkKXNldERpc3BsYXlOYW1lOiAoY29uc3QgY2hhciAqKWRpc3BsYXlO
YW1lOwoKCgoKLSAoY29uc3QgY2hhciAqKWdldERpc3BsYXlOYW1lOwojIDE2OCAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotICh2b2lkKWRlc2NyaWJlOiBvdXRwdXRDaGFyU3Ry
ZWFtOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3
YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNDUKCgoKLSAodm9pZClkZXNjcmliZUlEOiBvdXRw
dXRDaGFyU3RyZWFtOwoKCi0gKHZvaWQpeHByaW50OwoKCi0gKHZvaWQpeHByaW50aWQ7CgoKLSAo
dm9pZCl4ZnByaW50OwoKCi0gKHZvaWQpeGZwcmludGlkOwoKCi0gZ2V0Wm9uZTsKQGVuZAoKQHBy
b3RvY29sIEN1c3RvbWl6ZQojIDIyMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgotIF9JX0NyZWF0aW5nOwojIDIzOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5o
IgorIGN1c3RvbWl6ZUJlZ2luOiBhWm9uZTsKCgotIGN1c3RvbWl6ZUVuZDsKIyAyNjUgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBjdXN0b21pemVDb3B5OiBhWm9uZTsKQGVu
ZAoKQHByb3RvY29sIENyZWF0ZSA8RGVmaW5lZE9iamVjdCwgQ3VzdG9taXplPgojIDMxOSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0NyZWF0aW5nOwojIDMzNSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgorIGNyZWF0ZTogYVpvbmU7CgoKCgoKCgor
IGNyZWF0ZUJlZ2luOiBhWm9uZTsKIyAzNzEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmouaCIKLSBjcmVhdGVFbmQ7CkBlbmQKCkBwcm90b2NvbCBEcm9wCiMgNDAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gX0lfVXNpbmc7Ci0gKHZvaWQpZHJvcDsKQGVuZAoK
QHByb3RvY29sIFpvbmUgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgojIDQ1NiAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDQ2CgoKLSBfSV9D
cmVhdGluZzsKCgoKCgoKCi0gKHZvaWQpc2V0UGFnZVNpemU6IChzaXplX3QpcGFnZVNpemU7Cgot
IF9JX1VzaW5nOwotIChzaXplX3QpZ2V0UGFnZVNpemU7CgoKCgoKCi0gYWxsb2NJVmFyczogKENs
YXNzKWFDbGFzczsKCgoKCgoKLSBjb3B5SVZhcnM6IGFuT2JqZWN0OwoKCgoKCgoKLSAodm9pZClm
cmVlSVZhcnM6IGFuT2JqZWN0OwojIDQ5OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9i
ai5oIgotIGFsbG9jSVZhcnNDb21wb25lbnQ6IChDbGFzcylhQ2xhc3M7CgoKCi0gY29weUlWYXJz
Q29tcG9uZW50OiBhbk9iamVjdDsKCgotICh2b2lkKWZyZWVJVmFyc0NvbXBvbmVudDogYW5PYmpl
Y3Q7CgoKCgoKCi0gZ2V0Q29tcG9uZW50Wm9uZTsKCgoKCgotICh2b2lkICopYWxsb2M6IChzaXpl
X3Qpc2l6ZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVy
U3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA0NwoKCgoKCgoKCi0gKHZvaWQpZnJlZTogKHZv
aWQgKilhQmxvY2s7CgoKCgotICh2b2lkICopYWxsb2NCbG9jazogKHNpemVfdClzaXplOwoKCgot
ICh2b2lkKWZyZWVCbG9jazogKHZvaWQgKilhQmxvY2sgYmxvY2tTaXplOiAoc2l6ZV90KXNpemU7
CiMgNTQ1ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCi0gZ2V0UG9wdWxhdGlv
bjsKCgotICh2b2lkKWRlc2NyaWJlRm9yRWFjaDogb3V0cHV0Q2hhclN0cmVhbTsKCgotICh2b2lk
KWRlc2NyaWJlRm9yRWFjaElEOiBvdXRwdXRDaGFyU3RyZWFtOwpAZW5kCgpAcHJvdG9jb2wgRGVm
aW5lZENsYXNzIDxEZWZpbmVkT2JqZWN0PgoKCgotIF9JX1VzaW5nOworIGdldFN1cGVyY2xhc3M7
CisgKEJPT0wpaXNTdWJjbGFzczogYUNsYXNzOwoKKyAodm9pZClzZXRUeXBlSW1wbGVtZW50ZWQ6
IGFUeXBlOworIGdldFR5cGVJbXBsZW1lbnRlZDsKCisgKElNUClnZXRNZXRob2RGb3I6IChTRUwp
YVNlbDsKQGVuZAoKQHByb3RvY29sIENyZWF0ZWRDbGFzcyA8Q3JlYXRlLCBEZWZpbmVkQ2xhc3M+
CgoKCgotIF9JX0NyZWF0aW5nOwotIHNldE5hbWU6IChjb25zdCBjaGFyICopbmFtZTsKLSBzZXRD
bGFzczogYUNsYXNzOwotIHNldFN1cGVyY2xhc3M6IGFDbGFzczsKLSBzZXREZWZpbmluZ0NsYXNz
OiBhQ2xhc3M7Ci0gYXQ6IChTRUwpYVNlbCBhZGRNZXRob2Q6IChJTVApYU1ldGhvZDsKLSBsaXNw
SW5DcmVhdGU6IGV4cHI7Ci0gaGRmNUluQ3JlYXRlOiBoZGY1T2JqOwotICh2b2lkKWxpc3BPdXRT
aGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpaGRmNU91dFNoYWxsb3c6IGhkZjVPYmo7Ci0gKHZvaWQp
dXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDQ4CgoKLSBfSV9V
c2luZzsKLSBnZXREZWZpbmluZ0NsYXNzOwpAZW5kCgpAcHJvdG9jb2wgQmVoYXZpb3JQaGFzZSA8
Q3JlYXRlZENsYXNzPgoKCgoKLSBfSV9DcmVhdGluZzsKLSAodm9pZClzZXROZXh0UGhhc2U6IGFD
bGFzczsKCi0gX0lfVXNpbmc7Ci0gZ2V0TmV4dFBoYXNlOwpAZW5kCgpAcHJvdG9jb2wgQ29weQoj
IDYyMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX1VzaW5nOwotIGNv
cHk6IChpZCA8Wm9uZT4pYVpvbmU7CkBlbmQKCgoKCgpAcHJvdG9jb2wgR2V0T3duZXIKIyA2NDcg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSBfSV9Vc2luZzsKLSBnZXRPd25l
cjsKQGVuZAoKQHByb3RvY29sIFNldEluaXRpYWxWYWx1ZQojIDY3MiAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai5oIgotIF9JX0NyZWF0aW5nOwoKCgoKCgoKLSAodm9pZClzZXRJbml0
aWFsVmFsdWU6IGluaXRpYWxWYWx1ZTsKQGVuZAoKQHByb3RvY29sIFN5bWJvbCA8Q3JlYXRlLCBH
ZXROYW1lLCBDUkVBVEFCTEU+CiMgNzA2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2Jq
LmgiCi0gX0lfQ3JlYXRpbmc7CgoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldE5hbWU6
IChjb25zdCBjaGFyICopbmFtZTsKCgoKQGVuZAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDQ5CgoKCkBw
cm90b2NvbCBFdmVudFR5cGUgPFN5bWJvbD4KCgoKCi0gX0lfVXNpbmc7CgotICh2b2lkKXJhaXNl
RXZlbnQ7CgoKCi0gKHZvaWQpcmFpc2VFdmVudDogKGNvbnN0IHZvaWQgKilldmVudERhdGEsIC4u
LjsKCgoKCgpAZW5kCgoKQHByb3RvY29sIFdhcm5pbmcgPEV2ZW50VHlwZSwgQ1JFQVRBQkxFPgoK
CgoKLSBfSV9Vc2luZzsKCi0gKHZvaWQpc2V0TWVzc2FnZVN0cmluZzogKGNvbnN0IGNoYXIgKilt
ZXNzYWdlU3RyaW5nOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRNZXNzYWdlU3RyaW5nOwoKZXh0ZXJu
IGlkIDxXYXJuaW5nPgogIFdhcm5pbmdNZXNzYWdlLAogIFJlc291cmNlQXZhaWxhYmlsaXR5LAog
IExpYnJhcnlVc2FnZSwKICBEZWZhdWx0QXNzdW1lZCwKICBPYnNvbGV0ZUZlYXR1cmUsCiAgT2Jz
b2xldGVNZXNzYWdlLAogIFNhdmVXYXJuaW5nOwoKCgoKCkBlbmQKCkBwcm90b2NvbCBFcnJvciA8
V2FybmluZywgQ1JFQVRBQkxFPgoKCgoKZXh0ZXJuIGlkIDxFcnJvcj4KICBTb3VyY2VNZXNzYWdl
LAogIE5vdEltcGxlbWVudGVkLAoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
UHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDUwCgoKICBTdWJjbGFzc011
c3RJbXBsZW1lbnQsCiAgSW52YWxpZENvbWJpbmF0aW9uLAogIEludmFsaWRPcGVyYXRpb24sCiAg
SW52YWxpZEFyZ3VtZW50LAogIENyZWF0ZVN1YmNsYXNzaW5nLAogIENyZWF0ZVVzYWdlLAogIE91
dE9mTWVtb3J5LAogIEludmFsaWRBbGxvY1NpemUsCiAgSW50ZXJuYWxFcnJvciwKICBCbG9ja2Vk
T2JqZWN0QWxsb2MsCiAgQmxvY2tlZE9iamVjdFVzYWdlLAogIFByb3RvY29sVmlvbGF0aW9uLAog
IExvYWRFcnJvciwKICBTYXZlRXJyb3I7CgoKCgoKQGVuZAoKQHByb3RvY29sIEFyZ3VtZW50cyA8
Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CiMgODc2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0QXJnYzogKHVuc2lnbmVkKWNvdW50IEFyZ3Y6
IChjb25zdCBjaGFyICoqKXRoZUFyZ3Y7Ci0gc2V0QXBwTmFtZTogKGNvbnN0IGNoYXIgKilhcHBO
YW1lOwotIHNldEFwcE1vZGVTdHJpbmc6IChjb25zdCBjaGFyICopYXBwTW9kZVN0cmluZzsKLSBz
ZXRPcHRpb25GdW5jOiAoaW50ICgqKSAoaW50LCBjb25zdCBjaGFyICopKW9wdGlvbkZ1bmM7Ci0g
c2V0QnVnQWRkcmVzczogKGNvbnN0IGNoYXIgKilidWdBZGRyZXNzOwotIHNldFZlcnNpb246IChj
b25zdCBjaGFyICopdmVyc2lvbjsKLSBhZGRPcHRpb25zOiAoc3RydWN0IGFyZ3Bfb3B0aW9uICop
b3B0aW9uczsKIyA5MDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmouaCIKLSAodm9p
ZClhZGRPcHRpb246IChjb25zdCBjaGFyICopbmFtZSBrZXk6IChpbnQpa2V5IGFyZzogKGNvbnN0
IGNoYXIgKilhcmcgZmxhZ3M6IChpbnQpZmxhZ3MgZG9jOiAoY29uc3QgY2hhciAqKWRvYyBncm91
cDogKGludClncm91cDsKCisgY3JlYXRlQXJnYzogKGludClhcmdjIEFyZ3Y6IChjb25zdCBjaGFy
ICoqKWFyZ3YgYXBwTmFtZTogKGNvbnN0IGNoYXIgKilhcHBOYW1lIHZlcnNpb246IChjb25zdCBj
aGFyICopdmVyc2lvbiBidWdBZGRyZXNzOiAoY29uc3QgY2hhciAqKWJ1Z0FkZHJlc3Mgb3B0aW9u
czogKHN0cnVjdCBhcmdwX29wdGlvbiAqKW9wdGlvbnMgb3B0aW9uRnVuYzogKGludCAoKikgKGlu
dCwgY29uc3QgY2hhciAqKSlvcHRpb25GdW5jIGluaGliaXRFeGVjdXRhYmxlU2VhcmNoRmxhZzog
KEJPT0wpaW5oaWJpdEV4ZWN1dGFibGVTZWFyY2hGbGFnOwoKCi0gKGludClwYXJzZUtleTogKGlu
dClrZXkgYXJnOiAoY29uc3QgY2hhciAqKWFyZzsKLSBfSV9TZXR0aW5nOwotIHNldEluaGliaXRB
cmNoaXZlckxvYWRGbGFnOiAoQk9PTClpbmhpYml0QXJjaGl2ZXJMb2FkRmxhZzsKLSBzZXRJbmhp
Yml0RXhlY3V0YWJsZVNlYXJjaEZsYWc6IChCT09MKXRoZUluaGliaXRFeGVjdXRhYmxlU2VhcmNo
RmxhZzsKLSBzZXRCYXRjaE1vZGVGbGFnOiAoQk9PTCliYXRjaE1vZGVGbGFnOwotIHNldFZhcnlT
ZWVkRmxhZzogKEJPT0wpdmFyeVNlZWRGbGFnOwotIHNldFZlcmJvc2VGbGFnOiAoQk9PTCl2ZXJi
b3NlRmxhZzsKCgoKLSBzZXREZWZhdWx0QXBwQ29uZmlnUGF0aDogKGNvbnN0IGNoYXIgKilwYXRo
OwoKCi0gc2V0RGVmYXVsdEFwcERhdGFQYXRoOiAoY29uc3QgY2hhciAqKXBhdGg7Ci0gc2V0Rml4
ZWRTZWVkOiAodW5zaWduZWQpc2VlZDsKCgotIF9JX1VzaW5nOwotIChCT09MKWdldEJhdGNoTW9k
ZUZsYWc7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3
YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNTEKCgotIChCT09MKWdldFZhcnlTZWVkRmxhZzsK
LSAoQk9PTClnZXRGaXhlZFNlZWRGbGFnOwotICh1bnNpZ25lZClnZXRGaXhlZFNlZWQ7Ci0gKEJP
T0wpZ2V0VmVyYm9zZUZsYWc7Ci0gKGNvbnN0IGNoYXIgKilnZXRBcHBOYW1lOwotIChjb25zdCBj
aGFyICopZ2V0QXBwTW9kZVN0cmluZzsKLSAoaW50KWdldEFyZ2M7Ci0gKGludClnZXRMYXN0QXJn
SW5kZXg7Ci0gKGNvbnN0IGNoYXIgKiopZ2V0QXJndjsKLSAoY29uc3QgY2hhciAqKWdldEV4ZWN1
dGFibGVQYXRoOwotIChjb25zdCBjaGFyICopZ2V0U3dhcm1Ib21lOwotIChjb25zdCBjaGFyICop
Z2V0Q29uZmlnUGF0aDsKLSAoY29uc3QgY2hhciAqKWdldERhdGFQYXRoOwoKLSAoY29uc3QgY2hh
ciAqKWdldEFwcERhdGFQYXRoOwoKCi0gKGNvbnN0IGNoYXIgKilnZXRBcHBDb25maWdQYXRoOwot
IChCT09MKWdldFNob3dDdXJyZW50VGltZUZsYWc7Ci0gKEJPT0wpZ2V0SW5oaWJpdEFyY2hpdmVy
TG9hZEZsYWc7CgpAZW5kCgpAcHJvdG9jb2wgQXJjaGl2ZXIgPENyZWF0ZSwgRHJvcCwgUkVUVVJO
QUJMRT4KCgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0SW5oaWJpdExvYWRGbGFnOiAoQk9PTClpbmhp
Yml0TG9hZEZsYWc7CgoKLSBzZXRQYXRoOiAoY29uc3QgY2hhciAqKXBhdGg7CgoKCi0gc2V0U3lz
dGVtQXJjaGl2ZXJGbGFnOiAoQk9PTClzeXN0ZW1BcmNoaXZlckZsYWc7CgoKLSBzZXREZWZhdWx0
UGF0aDsKCgotIHNldERlZmF1bHRBcHBQYXRoOwotIF9JX1VzaW5nOwotICh2b2lkKXJlZ2lzdGVy
Q2xpZW50OiBjbGllbnQ7Ci0gKHZvaWQpdW5yZWdpc3RlckNsaWVudDogY2xpZW50OwoKCgotICh2
b2lkKXB1dERlZXA6IChjb25zdCBjaGFyICopa2V5IG9iamVjdDogb2JqZWN0OwoKCi0gKHZvaWQp
cHV0U2hhbGxvdzogKGNvbnN0IGNoYXIgKilrZXkgb2JqZWN0OiBvYmplY3Q7CgoKLSBnZXRPYmpl
Y3Q6IChjb25zdCBjaGFyICopa2V5OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDUyCgoKCgotIGdldFdp
dGhab25lOiAoaWQgPFpvbmU+KWFab25lIGtleTogKGNvbnN0IGNoYXIgKilrZXk7CgoKCi0gKHZv
aWQpc3luYzsKQGVuZAoKQHByb3RvY29sIExpc3BBcmNoaXZlciA8QXJjaGl2ZXIsIENSRUFUQUJM
RT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFBh
dGg6IChjb25zdCBjaGFyICopcGF0aDsKCi0gX0lfU2V0dGluZzsKLSBfSV9Vc2luZzsKQGVuZAoK
QHByb3RvY29sIEhERjVBcmNoaXZlciA8QXJjaGl2ZXIsIENSRUFUQUJMRT4KCgoKCgotIF9JX0Ny
ZWF0aW5nOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFBhdGg6IChjb25zdCBjaGFy
ICopcGF0aDsKCi0gX0lfU2V0dGluZzsKLSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIEhERjUg
PENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0V3JpdGVGbGFn
OiAoQk9PTCl3cml0ZUZsYWc7Ci0gc2V0RGF0YXNldEZsYWc6IChCT09MKWRhdGFzZXRGbGFnOwot
IHNldEV4dGVuc2libGVWZWN0b3JUeXBlOiAoZmNhbGxfdHlwZV90KXR5cGU7Ci0gc2V0RXh0ZW5z
aWJsZURvdWJsZVZlY3RvcjsKLSBzZXRQYXJlbnQ6IHBhcmVudDsKLSBzZXRDb21wb3VuZFR5cGU6
IGNvbXBvdW5kVHlwZTsKLSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwotIF9JX1NldHRpbmc7
CgoKCi0gc2V0TmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIHNldEJhc2VUeXBlT2JqZWN0OiBi
YXNlVHlwZU9iamVjdDsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9i
c2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA1MwoKCi0gX0lfVXNpbmc7Ci0gKHZv
aWQpaXRlcmF0ZTogKGludCAoKikgKGlkIDxIREY1PmhkZjVPYmopKWl0ZXJhdGVGdW5jOwotICh2
b2lkKWl0ZXJhdGU6IChpbnQgKCopIChpZCA8SERGNT5oZGY1T2JqKSlpdGVyYXRlRnVuYyBkcm9w
OiAoQk9PTClkcm9wRmxhZzsKLSAoQk9PTClnZXREYXRhc2V0RmxhZzsKLSAoQk9PTClnZXRXcml0
ZUZsYWc7Ci0gKHNpemVfdClnZXREYXRhc2V0UmFuazsKLSAoc2l6ZV90KWdldERhdGFzZXREaW1l
bnNpb246ICh1bnNpZ25lZClkaW1OdW1iZXI7Ci0gKHVuc2lnbmVkKWdldENvdW50OwotIGdldENv
bXBvdW5kVHlwZTsKLSBnZXRDbGFzczsKLSAodm9pZClhc3NpZ25JdmFyOiBvYmo7CgotIChCT09M
KWNoZWNrTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwotIChCT09MKWNoZWNrRGF0YXNldE5hbWU6
IChjb25zdCBjaGFyICopZGF0YXNldE5hbWU7CgotICh2b2lkKWxvYWREYXRhc2V0OiAodm9pZCAq
KXB0cjsKLSAodm9pZClzdG9yZUFzRGF0YXNldDogKGNvbnN0IGNoYXIgKiluYW1lIHR5cGVOYW1l
OiAoY29uc3QgY2hhciAqKXR5cGVOYW1lIHR5cGU6IChmY2FsbF90eXBlX3QpdHlwZSByYW5rOiAo
dW5zaWduZWQpcmFuayBkaW1zOiAodW5zaWduZWQgKilkaW1zIHB0cjogKHZvaWQgKilwdHI7Cgot
ICh2b2lkKWFkZERvdWJsZVRvVmVjdG9yOiAoZG91YmxlKXZhbDsKCi0gKHZvaWQpc3RvcmVUeXBl
TmFtZTogKGNvbnN0IGNoYXIgKil0eXBlTmFtZTsKLSAodm9pZClzdG9yZUNvbXBvbmVudFR5cGVO
YW1lOiAoY29uc3QgY2hhciAqKXR5cGVOYW1lOwotICh2b2lkKXNoYWxsb3dMb2FkT2JqZWN0OiBv
Ymo7Ci0gKHZvaWQpc2hhbGxvd1N0b3JlT2JqZWN0OiBvYmo7Ci0gKHZvaWQpbmFtZVJlY29yZDog
KHVuc2lnbmVkKXJlY29yZE51bWJlciBuYW1lOiAoY29uc3QgY2hhciAqKXJlY29yZE5hbWU7Ci0g
KHZvaWQpbnVtYmVyUmVjb3JkOiAodW5zaWduZWQpcmVjb3JkTnVtYmVyOwotICh2b2lkKXNlbGVj
dFJlY29yZDogKHVuc2lnbmVkKXJlY29yZE51bWJlcjsKCi0gKGNvbnN0IGNoYXIgKiopcmVhZFJv
d05hbWVzOwotICh2b2lkKXdyaXRlUm93TmFtZXM7Ci0gKHZvaWQpd3JpdGVMZXZlbHM7CgotICh2
b2lkKXN0b3JlQXR0cmlidXRlOiAoY29uc3QgY2hhciAqKWF0dHJpYnV0ZU5hbWUgdmFsdWU6IChj
b25zdCBjaGFyICopdmFsdWVTdHJpbmc7Ci0gKHZvaWQpaXRlcmF0ZUF0dHJpYnV0ZXM6IChpbnQg
KCopIChjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlKSlpdGVyYXRlRnVuYzsKLSAo
Y29uc3QgY2hhciAqKWdldEF0dHJpYnV0ZTogKGNvbnN0IGNoYXIgKilhdHRyaWJ1dGVOYW1lOwot
ICh2b2lkKWZsdXNoOwpAZW5kCgpAcHJvdG9jb2wgSERGNUNvbXBvdW5kVHlwZSA8Q3JlYXRlLCBE
cm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRQcm90b3R5cGU6IHByb3RvdHlw
ZTsKLSBfSV9Vc2luZzsKLSBnZXRQcm90b3R5cGU7CkBlbmQKCnR5cGVkZWYgdm9pZCAqSk9CSkVD
VDsKdHlwZWRlZiBjb25zdCB2b2lkICpDT01PQkpFQ1Q7CgpAcHJvdG9jb2wgRkFyZ3VtZW50cyA8
Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRMYW5ndWFnZTog
KGlkIDxTeW1ib2w+KWxhbmd1YWdlVHlwZTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNTQKCgoKLSBz
ZXRTZWxlY3RvcjogKFNFTClhU2VsOwotIHNldEphdmFTaWduYXR1cmU6IChjb25zdCBjaGFyICop
amF2YVNpZ25hdHVyZTsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0U2VsZWN0b3I6IChT
RUwpYVNlbDsKLSBhZGRBcmd1bWVudDogKHR5cGVzX3QgKil2YWx1ZSBvZlR5cGU6IChmY2FsbF90
eXBlX3QpdHlwZTsKLSBhZGRBcmd1bWVudDogKHZvaWQgKil2YWx1ZSBvZk9iakNUeXBlOiAoY2hh
cil0eXBlOwotIGFkZENoYXI6IChjaGFyKXZhbHVlOwotIGFkZEJvb2xlYW46IChCT09MKXZhbHVl
OwotIGFkZFVuc2lnbmVkQ2hhcjogKHVuc2lnbmVkIGNoYXIpdmFsdWU7Ci0gYWRkU2hvcnQ6IChz
aG9ydCl2YWx1ZTsKLSBhZGRVbnNpZ25lZFNob3J0OiAodW5zaWduZWQgc2hvcnQpdmFsdWU7Ci0g
YWRkSW50OiAoaW50KXZhbHVlOwotIGFkZFVuc2lnbmVkOiAodW5zaWduZWQpdmFsdWU7Ci0gYWRk
TG9uZzogKGxvbmcpdmFsdWU7Ci0gYWRkVW5zaWduZWRMb25nOiAodW5zaWduZWQgbG9uZyl2YWx1
ZTsKLSBhZGRMb25nTG9uZzogKGxvbmcgbG9uZyl2YWx1ZTsKLSBhZGRVbnNpZ25lZExvbmdMb25n
OiAodW5zaWduZWQgbG9uZyBsb25nKXZhbHVlOwotIGFkZEZsb2F0OiAoZmxvYXQpdmFsdWU7Ci0g
YWRkRG91YmxlOiAoZG91YmxlKXZhbHVlOwotIGFkZExvbmdEb3VibGU6IChsb25nIGRvdWJsZSl2
YWx1ZTsKLSBhZGRTdHJpbmc6IChjb25zdCBjaGFyICopdmFsdWU7Ci0gYWRkT2JqZWN0OiBvYmo7
Ci0gYWRkU2VsZWN0b3I6IChTRUwpYVNlbDsKLSBhZGRKYXZhT2JqZWN0OiAoSk9CSkVDVClvYmo7
Ci0gc2V0T2JqQ1JldHVyblR5cGU6IChjaGFyKXR5cGU7Ci0gc2V0UmV0dXJuVHlwZTogKGZjYWxs
X3R5cGVfdClyZXRUeXBlOwotIHNldEJvb2xlYW5SZXR1cm5UeXBlOwotIF9JX1VzaW5nOwotICh2
YWxfdClnZXRSZXRWYWw7Ci0gKGlkIDxTeW1ib2w+KWdldExhbmd1YWdlOwotICh2b2lkICopZ2V0
UmVzdWx0OwpAZW5kCgp0eXBlZGVmIGVudW0gY2FsbFR5cGVzIHsgY2NhbGwsIENPTWNhbGwsIEpT
Y2FsbCwgamF2YWNhbGwsIGphdmFzdGF0aWNjYWxsLCBvYmpjY2FsbCB9IGNhbGxfdDsKCkBwcm90
b2NvbCBGQ2FsbCA8Q3JlYXRlLCBEcm9wLCBDUkVBVEFCTEU+CgoKLSBfSV9DcmVhdGluZzsKKyBj
cmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgdGFyZ2V0OiBvYmoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdG9yOiAoU0VMKXNlbAogICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM6
IChpZCA8RkFyZ3VtZW50cz4pZmE7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHRhcmdldDog
b2JqCiAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kTmFtZTogKGNvbnN0IGNoYXIgKiltZXRo
b2ROYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50czogKGlkIDxGQXJndW1lbnRz
PilmYTsKLSBzZXRBcmd1bWVudHM6IGFyZ3M7Ci0gc2V0RnVuY3Rpb25Qb2ludGVyOiAoZnVuY190
KWZuOwotIHNldE1ldGhvZEZyb21TZWxlY3RvcjogKFNFTCltZXRob2QgaW5PYmplY3Q6IG9iamVj
dDsKLSBzZXRNZXRob2RGcm9tTmFtZTogKGNvbnN0IGNoYXIgKiltZXRob2ROYW1lIGluT2JqZWN0
OiBvYmplY3Q7Ci0gc2V0SmF2YU1ldGhvZEZyb21OYW1lOiAoY29uc3QgY2hhciAqKW1ldGhvZE5h
bWUgaW5PYmplY3Q6IChKT0JKRUNUKWpPYmo7Ci0gc2V0SmF2YU1ldGhvZEZyb21OYW1lOiAoY29u
c3QgY2hhciAqKW1ldGhvZE5hbWUgaW5DbGFzczogKGNvbnN0IGNoYXIgKiljbGFzc05hbWU7Ci0g
X0lfVXNpbmc7Ci0gKGNhbGxfdClnZXRDYWxsVHlwZTsKLSBnZXRBcmd1bWVudHM7Ci0gKHZvaWQp
cGVyZm9ybUNhbGw7Ci0gKHZvaWQgKilnZXRSZXN1bHQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNTUK
CgotIChyZXR2YWxfdClnZXRSZXRWYWw6IChyZXR2YWxfdClyZXRWYWwgYnVmOiAodHlwZXNfdCAq
KWJ1ZjsKLSAoZnVuY190KWdldEZ1bmN0aW9uUG9pbnRlcjsKZXh0ZXJuIHZvaWQgZGVmb2JqX2lu
aXRfamF2YV9jYWxsX3RhYmxlcyAodm9pZCAqam5pRW52KTsKZXh0ZXJuIHZvaWQgdXBkYXRlVGFy
Z2V0IChpZCBjYWxsLCBpZCB0YXJnZXQpOwpAZW5kCgpAcHJvdG9jb2wgU2VyaWFsaXphdGlvbgoK
CgotIF9JX0NyZWF0aW5nOwoKCi0gbGlzcEluQ3JlYXRlOiBleHByOwoKCi0gaGRmNUluQ3JlYXRl
OiAoaWQgPEhERjU+KWhkZjVPYmo7CgoKCmV4dGVybiBpZCBsaXNwSW4gKGlkIDxab25lPiBhWm9u
ZSwgaWQgZXhwcik7CgoKZXh0ZXJuIGlkIGhkZjVJbiAoaWQgPFpvbmU+IGFab25lLCBpZCA8SERG
NT4gaGRmNU9iaik7CgotIF9JX1NldHRpbmc7CgoKLSBsaXNwSW46IGV4cHI7CgoKLSBoZGY1SW46
IChpZCA8SERGNT4paGRmNU9iajsKCi0gX0lfVXNpbmc7CgotICh2b2lkKWxpc3BPdXRTaGFsbG93
OiBzdHJlYW07CgoKLSAodm9pZClsaXNwT3V0RGVlcDogc3RyZWFtOwoKCgotICh2b2lkKWxpc3BP
dXRWYXJzOiBzdHJlYW0gZGVlcDogKEJPT0wpZGVlcEZsYWc7CgoKLSAodm9pZCloZGY1T3V0U2hh
bGxvdzogKGlkIDxIREY1PiloZGY1b2JqOwoKCi0gKHZvaWQpaGRmNU91dERlZXA6IChpZCA8SERG
NT4paGRmNW9iajsKCi0gKHZvaWQpdXBkYXRlQXJjaGl2ZXI6IGFyY2hpdmVyOwoKCmV4dGVybiBC
T09MIGxpc3BJbkJvb2xlYW4gKGlkIGluZGV4KTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDU2CgoK
ZXh0ZXJuIGludCBsaXNwSW5JbnRlZ2VyIChpZCBpbmRleCk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIg
Kmxpc3BJblN0cmluZyAoaWQgaW5kZXgpOwoKCmV4dGVybiBpZCBsaXNwSW5LZXl3b3JkIChpZCBp
bmRleCk7CgpAZW5kCgoKZXh0ZXJuIGlkIDxBcmd1bWVudHM+IGFyZ3VtZW50czsKCgpleHRlcm4g
aWQgPEhERjVBcmNoaXZlcj4gaGRmNUFyY2hpdmVyOwoKCmV4dGVybiBpZCA8TGlzcEFyY2hpdmVy
PiBsaXNwQXJjaGl2ZXI7CgoKZXh0ZXJuIGlkIDxIREY1QXJjaGl2ZXI+IGhkZjVBcHBBcmNoaXZl
cjsKCgpleHRlcm4gaWQgPExpc3BBcmNoaXZlcj4gbGlzcEFwcEFyY2hpdmVyOwoKCmV4dGVybiBp
ZCA8U3ltYm9sPiB0X0J5dGVBcnJheSwgdF9MZWFmT2JqZWN0LCB0X1BvcHVsYXRpb25PYmplY3Q7
CgoKZXh0ZXJuIGlkIDxTeW1ib2w+IExhbmd1YWdlQ09NLCBMYW5ndWFnZUpTLCBMYW5ndWFnZUph
dmEsIExhbmd1YWdlT2JqYzsKCgoKCgoKZXh0ZXJuIHZvaWQgX29ial9mb3JtYXRJRFN0cmluZyAo
Y2hhciAqYnVmZmVyLCBpZCBhbk9iamVjdCk7CgoKCmV4dGVybiBDbGFzcyBvYmpjX2dldF9jbGFz
cyAoY29uc3QgY2hhciAqbmFtZSk7CgoKZXh0ZXJuIGlkIGRlZm9ial9sb29rdXBfdHlwZSAoY29u
c3QgY2hhciAqbmFtZSk7CgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmov
dHlwZXMuaCIgMQpleHRlcm4gdm9pZCAqX2RlZm9ial9bXTsKCmV4dGVybiBpZCBHZXROYW1lOwpl
eHRlcm4gaWQgRGVmaW5lZE9iamVjdDsKZXh0ZXJuIGlkIEN1c3RvbWl6ZTsKZXh0ZXJuIGlkIENy
ZWF0ZTsKZXh0ZXJuIGlkIERyb3A7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNTcKCgpleHRlcm4gaWQg
Wm9uZTsKZXh0ZXJuIGlkIERlZmluZWRDbGFzczsKZXh0ZXJuIGlkIENyZWF0ZWRDbGFzczsKZXh0
ZXJuIGlkIEJlaGF2aW9yUGhhc2U7CmV4dGVybiBpZCBDb3B5OwpleHRlcm4gaWQgR2V0T3duZXI7
CmV4dGVybiBpZCBTZXRJbml0aWFsVmFsdWU7CmV4dGVybiBpZCBTeW1ib2w7CmV4dGVybiBpZCBF
dmVudFR5cGU7CmV4dGVybiBpZCBXYXJuaW5nOwpleHRlcm4gaWQgRXJyb3I7CmV4dGVybiBpZCBB
cmd1bWVudHM7CmV4dGVybiBpZCBBcmNoaXZlcjsKZXh0ZXJuIGlkIExpc3BBcmNoaXZlcjsKZXh0
ZXJuIGlkIEhERjVBcmNoaXZlcjsKZXh0ZXJuIGlkIEhERjU7CmV4dGVybiBpZCBIREY1Q29tcG91
bmRUeXBlOwpleHRlcm4gaWQgRkFyZ3VtZW50czsKZXh0ZXJuIGlkIEZDYWxsOwpleHRlcm4gaWQg
U2VyaWFsaXphdGlvbjsKIyAxMjU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgi
IDIKCmV4dGVybiB2b2lkIGluaXREZWZvYmogKGlkIDxBcmd1bWVudHM+IGFyZ3VtZW50cyk7CgoK
ZXh0ZXJuIHZvaWQgX29ial9pbml0TW9kdWxlICh2b2lkICptb2R1bGUpOwoKCgoKCmV4dGVybiBp
ZCBfb2JqX2dsb2JhbFpvbmU7CgoKZXh0ZXJuIGlkIF9vYmpfc2NyYXRjaFpvbmU7CiMgMTI3OSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai5oIgpleHRlcm4gQk9PTCBfb2JqX2RlYnVn
OwoKCgpleHRlcm4gRklMRSAqX29ial94ZXJyb3I7CgpleHRlcm4gRklMRSAqX29ial94ZGVidWc7
CgoKZXh0ZXJuIHZvaWQgeHNldG5hbWUgKGlkIGFuT2JqZWN0LCBjb25zdCBjaGFyICpuYW1lKTsK
CgpleHRlcm4gdm9pZCB4cHJpbnQgKGlkIGFuT2JqZWN0KTsKCgpleHRlcm4gdm9pZCB4cHJpbnRp
ZCAoaWQgYW5PYmplY3QpOwoKCmV4dGVybiB2b2lkIHhmcHJpbnQgKGlkIGFuT2JqZWN0KTsKCgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAg
ICAgICAgICAgICBQYWdlICAgNTgKCgoKZXh0ZXJuIHZvaWQgeGZwcmludGlkIChpZCBhbk9iamVj
dCk7CgoKZXh0ZXJuIHZvaWQgeGV4ZWMgKGlkIGFuT2JqZWN0LCBjb25zdCBjaGFyICpuYW1lKTsK
CgpleHRlcm4gdm9pZCB4ZmV4ZWMgKGlkIGFuT2JqZWN0LCBjb25zdCBjaGFyICpuYW1lKTsKCgpl
eHRlcm4gaWQgbmFtZVRvT2JqZWN0IChjb25zdCBjaGFyICpuYW1lKTsKIyAxMzI1ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqLmgiCmV4dGVybiBjaGFyICp6c3RyZHVwIChpZCA8Wm9u
ZT4gYVpvbmUsIGNvbnN0IGNoYXIgKnN0cik7CiMgMjEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9vYmplY3RiYXNlLmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHku
aCIgMQojIDI2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKIyAxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
ZGVmb2JqLmgiIDEKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgi
IDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZXh0ZXJudmFyLmgiIDEKIyAxNCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiIDIKIyAyNCAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBwcm90b2NvbCBPZmZzZXRzCiMgNDIgIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKLSBhdE9mZnNl
dDogKHVuc2lnbmVkKW9mZnNldDsKCgoKLSBhdE9mZnNldDogKHVuc2lnbmVkKW9mZnNldCBwdXQ6
IGFuT2JqZWN0OwoKCi0gZ2V0Rmlyc3Q7CgoKLSBnZXRMYXN0OwpAZW5kCgpAcHJvdG9jb2wgRm9y
RWFjaAojIDc4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9V
c2luZzsKLSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxlY3RvcjsKLSAodm9pZClmb3JFYWNoOiAo
U0VMKWFTZWxlY3RvciA6IGFyZzE7Ci0gKHZvaWQpZm9yRWFjaDogKFNFTClhU2VsZWN0b3IgOiBh
cmcxIDogYXJnMjsKLSAodm9pZClmb3JFYWNoOiAoU0VMKWFTZWxlY3RvciA6IGFyZzEgOiBhcmcy
IDogYXJnMzsKCi0gKHZvaWQpZGVzY3JpYmVGb3JFYWNoOiBvdXRwdXRDaGFyU3RyZWFtOwotICh2
b2lkKWRlc2NyaWJlRm9yRWFjaElEOiBvdXRwdXRDaGFyU3RyZWFtOwoKQGVuZAoKQHByb3RvY29s
IEZvckVhY2hLZXkKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2Jz
ZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDU5CgoKCgoKLSBfSV9Vc2luZzsKLSAo
dm9pZClmb3JFYWNoS2V5OiAoU0VMKWFTZWxlY3RvcjsKLSAodm9pZClmb3JFYWNoS2V5OiAoU0VM
KWFTZWxlY3RvciA6IGFyZzE7Ci0gKHZvaWQpZm9yRWFjaEtleTogKFNFTClhU2VsZWN0b3IgOiBh
cmcxIDogYXJnMjsKLSAodm9pZClmb3JFYWNoS2V5OiAoU0VMKWFTZWxlY3RvciA6IGFyZzEgOiBh
cmcyIDogYXJnMzsKQGVuZAoKQHByb3RvY29sIEluZGV4IDxEZWZpbmVkT2JqZWN0LCBEcm9wLCBS
RVRVUk5BQkxFPgojIDE1NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgi
Ci0gX0lfVXNpbmc7CgoKLSBnZXRDb2xsZWN0aW9uOwoKCgoKCgotIG5leHQ7CgoKCgotIHByZXY7
CgoKCgotIGZpbmROZXh0OiBhbk9iamVjdDsKCgoKCi0gZmluZFByZXY6IGFuT2JqZWN0OwojIDE5
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCi0gZ2V0OwoKCgoKLSBw
dXQ6IGFuT2JqZWN0OwojIDIwOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gcmVtb3ZlOwojIDI1MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gKGlkIDxTeW1ib2w+KWdldExvYzsKIyAyNjcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9jb2xsZWN0aW9ucy5oIgotICh2b2lkKXNldExvYzogKGlkIDxTeW1ib2w+KWxvY1N5bWJvbDsK
IyAyODggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIChpbnQpZ2V0
T2Zmc2V0OwoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2
ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDYwCgoKCgoKCi0gc2V0T2Zmc2V0OiAodW5z
aWduZWQpb2Zmc2V0OwojIDMwOCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCi0gKGludCljb21wYXJlOiBhbkluZGV4OwojIDMyMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL2NvbGxlY3Rpb25zLmgiCmV4dGVybiBpZCA8U3ltYm9sPiBTdGFydCwgRW5kLCBCZXR3ZWVu
LCBSZW1vdmVkLCBNZW1iZXI7CgoKCgoKCgpleHRlcm4gaWQgPEVycm9yPiBPZmZzZXRPdXRPZlJh
bmdlLCBOb01lbWJlcnMsCiAgQWxyZWFkeUF0RW5kLCBBbHJlYWR5QXRTdGFydCwgSW52YWxpZElu
ZGV4TG9jLCBJbnZhbGlkTG9jU3ltYm9sOwoKQGVuZAoKQHByb3RvY29sIFBlcm11dGVkSW5kZXgg
PEluZGV4LCBSRVRVUk5BQkxFPgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q29sbGVjdGlvbjog
YUNvbGxlY3Rpb247Ci0gc2V0VW5pZm9ybVJhbmRvbTogcm5kOwotIF9JX1VzaW5nOwotIHJlc2h1
ZmZsZTsKQGVuZDsKCkBwcm90b2NvbCBDb2xsZWN0aW9uIDxDcmVhdGUsIFNldEluaXRpYWxWYWx1
ZSwgQ29weSwgRHJvcCwgT2Zmc2V0cywgRm9yRWFjaD4KIyA0MDcgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX0NyZWF0aW5nOwoKCgoKCgoKLSAodm9pZClzZXRS
ZXBsYWNlT25seTogKEJPT0wpcmVwbGFjZU9ubHk7CgotICh2b2lkKXNldEluZGV4RnJvbU1lbWJl
ckxvYzogKGludClieXRlT2Zmc2V0OwoKLSBfSV9Vc2luZzsKCgotIGNvcHk6IChpZCA8Wm9uZT4p
YVpvbmU7CgoKLSAoQk9PTClnZXRSZXBsYWNlT25seTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNjEK
CgoKCgoKLSAodW5zaWduZWQpZ2V0Q291bnQ7CiMgNDQwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvY29sbGVjdGlvbnMuaCIKLSAoQk9PTCljb250YWluczogYU1lbWJlcjsKCgoKCgoKLSByZW1v
dmU6IGFNZW1iZXI7CiMgNDU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMu
aCIKLSAodm9pZClyZW1vdmVBbGw7CgoKLSAodm9pZClkZWxldGVBbGw7CgoKLSAoQk9PTClhbGxT
YW1lQ2xhc3M7CgoKCgotIChpZCA8SW5kZXg+KWJlZ2luOiAoaWQgPFpvbmU+KWFab25lOwoKLSAo
aWQgPFBlcm11dGVkSW5kZXg+KWJlZ2luUGVybXV0ZWQ6IChpZCA8Wm9uZT4pYVpvbmU7CkBlbmQK
CgoKQHByb3RvY29sIERlZmF1bHRNZW1iZXIKIyA0ODggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9jb2xsZWN0aW9ucy5oIgotIF9JX1NldHRpbmc7Ci0gKHZvaWQpc2V0RGVmYXVsdE1lbWJlcjog
bWVtYmVyVmFsdWU7CgotIF9JX1VzaW5nOwotIGdldERlZmF1bHRNZW1iZXI7CkBlbmQKCkBwcm90
b2NvbCBNZW1iZXJCbG9jawojIDUzNyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rp
b25zLmgiCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldE1lbWJl
ckJsb2NrOiAoaWQgKiltZW1iZXJzIHNldENvdW50OiAodW5zaWduZWQpY291bnQ7CgotIF9JX1Nl
dHRpbmc7Ci0gKHZvaWQpc2V0TWVtYmVyQmxvY2s6IChpZCAqKW1lbWJlcnMgc2V0Q291bnQ6ICh1
bnNpZ25lZCljb3VudDsKCi0gX0lfVXNpbmc7Ci0gKHZvaWQgKilnZXRNZW1iZXJCbG9jazsKQGVu
ZAoKQHByb3RvY29sIEFycmF5IDxDb2xsZWN0aW9uLCBEZWZhdWx0TWVtYmVyLCBNZW1iZXJCbG9j
aywgQ1JFQVRBQkxFPgojIDU5OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25z
LmgiCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJt
Lm1pICAgICAgICAgICAgICBQYWdlICAgNjIKCgotIF9JX0NyZWF0aW5nOworIGNyZWF0ZTogKGlk
IDxab25lPilhWm9uZSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwoKLSBfSV9TZXR0aW5nOwoK
CgoKCgoKLSBzZXRDb3VudDogKHVuc2lnbmVkKWNvdW50OwpAZW5kCgpAcHJvdG9jb2wgTGlzdElu
ZGV4IDxJbmRleCwgUkVUVVJOQUJMRT4KIyA2NDAgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9j
b2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRBZnRlcjogYW5PYmplY3Q7CgoK
LSAodm9pZClhZGRCZWZvcmU6IGFuT2JqZWN0OwpAZW5kCgoKQHByb3RvY29sIExpc3QgPENvbGxl
Y3Rpb24sIENSRUFUQUJMRT4KIyA2NjkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0
aW9ucy5oIgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRGaXJzdDogYW5PYmplY3Q7CgoKLSAodm9p
ZClhZGRMYXN0OiBhbk9iamVjdDsKCgotIHJlbW92ZUZpcnN0OwoKCi0gcmVtb3ZlTGFzdDsKCgot
IChpZCA8TGlzdEluZGV4PilsaXN0QmVnaW46IChpZCA8Wm9uZT4pYVpvbmU7CkBlbmQKCgoKZXh0
ZXJuIGludCBjb21wYXJlSURzIChpZCwgaWQpOwoKCmV4dGVybiBpbnQgY29tcGFyZUludGVnZXJz
IChpZCwgaWQpOwoKCmV4dGVybiBpbnQgY29tcGFyZVVuc2lnbmVkSW50ZWdlcnMgKGlkLCBpZCk7
CgoKZXh0ZXJuIGludCBjb21wYXJlQ1N0cmluZ3MgKGlkLCBpZCk7CgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdl
ICAgNjMKCgoKQHByb3RvY29sIENvbXBhcmVGdW5jdGlvbgojIDcyMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCnR5cGVkZWYgaW50ICgqY29tcGFyZV90KSAoaWQsIGlk
KTsKCi0gX0lfQ3JlYXRpbmc7Ci0gc2V0Q29tcGFyZUZ1bmN0aW9uOiAoY29tcGFyZV90KWFGdW5j
dGlvbjsKLSBzZXRDb21wYXJlQ1N0cmluZ3M7Ci0gc2V0Q29tcGFyZUlEczsKLSBzZXRDb21wYXJl
SW50ZWdlcnM7Ci0gc2V0Q29tcGFyZVVuc2lnbmVkSW50ZWdlcnM7Ci0gX0lfVXNpbmc7Ci0gKGNv
bXBhcmVfdClnZXRDb21wYXJlRnVuY3Rpb247CkBlbmQKCkBwcm90b2NvbCBLZXllZENvbGxlY3Rp
b24gPENvbGxlY3Rpb24sIEZvckVhY2hLZXk+CiMgNzUwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKCi0gX0lfVXNpbmc7Ci0gY3JlYXRlSW5k
ZXg6IChpZCA8Wm9uZT4pYVpvbmUgZnJvbU1lbWJlcjogYW5PYmplY3Q7CgoKCgoKCi0gYXQ6IGFL
ZXk7CgoKCgoKCi0gcmVtb3ZlS2V5OiBhS2V5OwoKCgotIChCT09MKWNvbnRhaW5zS2V5OiBhS2V5
OwpAZW5kCgpAcHJvdG9jb2wgS2V5ZWRDb2xsZWN0aW9uSW5kZXggPEluZGV4PgojIDc4MyAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCkBlbmQKCgpAcHJvdG9jb2wgTWVt
YmVyU2xvdAojIDgxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zLmgiCnR5
cGVkZWYgc3RydWN0IG1lbWJlckRhdGEgeyB2b2lkICptZW1iZXJEYXRhWzJdOyB9IG1lbWJlcl90
OwoKCgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVy
U3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA2NAoKCnR5cGVkZWYgc3RydWN0IHsgdm9pZCAq
bWVtYmVyRGF0YVsyXTsgaWQgb3duZXI7IH0gZHVwbWVtYmVyX3Q7CkBlbmQKCkBwcm90b2NvbCBf
U2V0CgoKLSBfSV9Vc2luZzsKCi0gKEJPT0wpYWRkOiBhbk9iamVjdDsKIyA4MzkgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgpAZW5kCgpAcHJvdG9jb2wgU2V0IDxfU2V0
LCBLZXllZENvbGxlY3Rpb24sIENSRUFUQUJMRT4KIyA4NTcgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5nOwoKCgoKCi0gcmVwbGFjZTogYW5PYmplY3Q7
CkBlbmQKCkBwcm90b2NvbCBPcmRlcmVkU2V0IDxfU2V0LCBMaXN0LCBDUkVBVEFCTEU+CiMgODg2
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKQGVuZAoKQHByb3RvY29s
IE1hcEluZGV4IDxLZXllZENvbGxlY3Rpb25JbmRleCwgUkVUVVJOQUJMRT4KCgoKCi0gX0lfVXNp
bmc7CgoKCgotIHNldEtleTogYUtleTsKCgoKCi0gZ2V0S2V5OwoKCgoKCgotICh1bnNpZ25lZCBs
b25nKWdldEtleVZhbHVlOwoKCi0gbmV4dDogKGlkICopa2V5OwoKCi0gcHJldjogKGlkICopa2V5
OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5t
aSAgICAgICAgICAgICAgUGFnZSAgIDY1CgoKCgotIGdldDogKGlkICopa2V5OwpAZW5kCgoKQHBy
b3RvY29sIE1hcCA8S2V5ZWRDb2xsZWN0aW9uLCBDb21wYXJlRnVuY3Rpb24sIENSRUFUQUJMRT4K
IyA5MzggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9jb2xsZWN0aW9ucy5oIgotIF9JX1VzaW5n
OwoKCgoKLSAoQk9PTClhdDogYUtleSBpbnNlcnQ6IGFuT2JqZWN0OwoKCgoKLSBhdDogYUtleSBy
ZXBsYWNlOiBhbk9iamVjdDsKCgotIChpZCA8TWFwSW5kZXg+KW1hcEJlZ2luOiAoaWQgPFpvbmU+
KWFab25lOwpAZW5kCgoKQHByb3RvY29sIE91dHB1dFN0cmVhbSA8Q3JlYXRlLCBEcm9wLCBDUkVB
VEFCTEU+CiMgOTY0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBf
SV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0RmlsZVN0cmVhbTogKEZJ
TEUgKilmaWxlU3RyZWFtOwotIHNldEZpbGVTdHJlYW06IChGSUxFICopZmlsZVN0cmVhbTsKLSBz
ZXRFeHByRmxhZzogKEJPT0wpZXhwckZsYWc7Ci0gX0lfVXNpbmc7Ci0gKEZJTEUgKilnZXRGaWxl
U3RyZWFtOwotIGdldEV4cHI7CgoKLSAodm9pZCljYXRDOiAoY29uc3QgY2hhciAqKWNzdHJpbmc7
CgoKLSAodm9pZCljYXRCb29sZWFuOiAoQk9PTClib29sOwoKCi0gKHZvaWQpY2F0Q2hhcjogKGNo
YXIpY2g7CgoKLSAodm9pZCljYXRGbG9hdDogKGZsb2F0KWZsdDsKCgotICh2b2lkKWNhdERvdWJs
ZTogKGRvdWJsZSlkYmw7CgoKLSAodm9pZCljYXRMb25nRG91YmxlOiAobG9uZyBkb3VibGUpZGJs
OwoKCi0gKHZvaWQpY2F0SW50OiAoaW50KWk7CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAg
ICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDY2CgoKCi0g
KHZvaWQpY2F0VW5zaWduZWQ6ICh1bnNpZ25lZCl1bjsKCi0gKHZvaWQpY2F0U2hvcnQ6IChzaG9y
dClzaHQ7Ci0gKHZvaWQpY2F0VW5zaWduZWRTaG9ydDogKHVuc2lnbmVkIHNob3J0KXVzaHQ7Ci0g
KHZvaWQpY2F0TG9uZzogKGxvbmcpbG5nOwotICh2b2lkKWNhdFVuc2lnbmVkTG9uZzogKHVuc2ln
bmVkIGxvbmcpdWxuZzsKLSAodm9pZCljYXRMb25nTG9uZzogKGxvbmcgbG9uZylsbmdsbmc7Ci0g
KHZvaWQpY2F0VW5zaWduZWRMb25nTG9uZzogKHVuc2lnbmVkIGxvbmcgbG9uZyl1bG5nbG5nOwot
ICh2b2lkKWNhdFBvaW50ZXI6IChjb25zdCB2b2lkICopcHRyOwotICh2b2lkKWNhdExpdGVyYWw6
IChjb25zdCBjaGFyICopc3RyOwotICh2b2lkKWNhdFN0YXJ0RXhwcjsKLSAodm9pZCljYXRFbmRF
eHByOwotICh2b2lkKWNhdEtleXdvcmQ6IChjb25zdCBjaGFyICopa2V5d29yZDsKLSAodm9pZClj
YXRTeW1ib2w6IChjb25zdCBjaGFyICopc3ltYm9sOwotICh2b2lkKWNhdFN0cmluZzogKGNvbnN0
IGNoYXIgKilzdHI7Ci0gKHZvaWQpY2F0U2VwYXJhdG9yOwotICh2b2lkKWNhdEFycmF5UmFuazog
KHVuc2lnbmVkKXJhbms7Ci0gKHZvaWQpY2F0RW5kQXJyYXk7Ci0gKHZvaWQpY2F0VHlwZTogKGNv
bnN0IGNoYXIgKil0eXBlOwotICh2b2lkKWNhdENsYXNzOiAoQ2xhc3MpY2xhc3M7Ci0gKHZvaWQp
Y2F0U3RhcnRGdW5jdGlvbjogKGNvbnN0IGNoYXIgKilmdW5jdGlvbk5hbWU7Ci0gKHZvaWQpY2F0
RW5kRnVuY3Rpb247Ci0gKHZvaWQpY2F0U3RhcnRDb25zOwotICh2b2lkKWNhdEVuZENvbnM7Ci0g
KHZvaWQpY2F0U3RhcnRMaXN0OwotICh2b2lkKWNhdEVuZExpc3Q7Ci0gKHZvaWQpY2F0U3RhcnRR
dW90ZWRMaXN0OwotICh2b2lkKWNhdEVuZFF1b3RlZExpc3Q7Ci0gKHZvaWQpY2F0U3RhcnRQYXJz
ZTsKLSAodm9pZCljYXRFbmRQYXJzZTsKLSAodm9pZCljYXRTdGFydE1ha2VJbnN0YW5jZTogKGNv
bnN0IGNoYXIgKil0eXBlTmFtZTsKLSAodm9pZCljYXRFbmRNYWtlSW5zdGFuY2U7Ci0gKHZvaWQp
Y2F0U3RhcnRNYWtlQ2xhc3M6IChjb25zdCBjaGFyICopY2xhc3NOYW1lOwotICh2b2lkKWNhdEVu
ZE1ha2VDbGFzczsKLSAodm9pZCljYXRVbnNpZ25lZFBhaXI6ICh1bnNpZ25lZClhIDogKHVuc2ln
bmVkKWI7Ci0gKHZvaWQpY2F0TmlsOwpAZW5kCgpAcHJvdG9jb2wgSW5wdXRTdHJlYW0gPENyZWF0
ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKKyBjcmVhdGU6IChpZCA8Wm9u
ZT4pYVpvbmUgc2V0RmlsZVN0cmVhbTogKEZJTEUgKilmaWxlOworIGNyZWF0ZTogKGlkIDxab25l
PilhWm9uZSBzZXRFeHByOiBleHByOwotIHNldEV4cHI6IGV4cHI7Ci0gc2V0RmlsZVN0cmVhbTog
KEZJTEUgKilmaWxlU3RyZWFtOwotIF9JX1VzaW5nOwotIChGSUxFICopZ2V0RmlsZVN0cmVhbTsK
LSBnZXRFeHByOwpAZW5kCgoKZXh0ZXJuIGlkIDxTeW1ib2w+IEFyY2hpdmVyTGl0ZXJhbCwgQXJj
aGl2ZXJRdW90ZSwgQXJjaGl2ZXJFT0wsIEFyY2hpdmVyRG90OwoKCgoKCgoKMjAwMS0wOC0yNCAw
MToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAg
IDY3CgoKCkBwcm90b2NvbCBBcmNoaXZlcktleXdvcmQgPENyZWF0ZSwgRHJvcCwgUkVUVVJOQUJM
RT4KCgotIF9JX0NyZWF0aW5nOwotIHNldEtleXdvcmROYW1lOiAoY29uc3QgY2hhciAqKW5hbWU7
Ci0gX0lfVXNpbmc7Ci0gKGNvbnN0IGNoYXIgKilnZXRLZXl3b3JkTmFtZTsKLSAodm9pZClsaXNw
T3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKLSAodm9pZClsaXNwT3V0RGVl
cDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKQGVuZAoKQHByb3RvY29sIEFyY2hpdmVyQXJy
YXkgPENyZWF0ZSwgRHJvcCwgUkVUVVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwotIHNldEFycmF5
OiBhcnJheTsKLSBfSV9Vc2luZzsKLSAodm9pZCAqKWdldERhdGE7Ci0gKHVuc2lnbmVkKWdldFJh
bms7Ci0gKHVuc2lnbmVkICopZ2V0RGltczsKLSAoc2l6ZV90KWdldEVsZW1lbnRTaXplOwotICh1
bnNpZ25lZClnZXRFbGVtZW50Q291bnQ7Ci0gKGZjYWxsX3R5cGVfdClnZXRBcnJheVR5cGU7Ci0g
Y29udmVydFRvVHlwZTogKGNoYXIpZGVzdFR5cGUgZGVzdDogKHZvaWQgKilwdHI7Ci0gKHZvaWQp
bGlzcE91dFNoYWxsb3c6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpbGlzcE91
dERlZXA6IChpZCA8T3V0cHV0U3RyZWFtPilzdHJlYW07Ci0gKHZvaWQpZHJvcDsKQGVuZAoKQHBy
b3RvY29sIEFyY2hpdmVyVmFsdWUgPENyZWF0ZSwgRHJvcCwgUkVUVVJOQUJMRT4KCgotIF9JX0Ny
ZWF0aW5nOwotIHNldERvdWJsZTogKGRvdWJsZSl2YWw7Ci0gc2V0TG9uZ0RvdWJsZTogKGxvbmcg
ZG91YmxlKXZhbDsKLSBzZXRGbG9hdDogKGZsb2F0KXZhbDsKLSBzZXRMb25nTG9uZzogKGxvbmcg
bG9uZyl2YWw7Ci0gc2V0Q2hhcjogKGNoYXIpdmFsOwotIHNldEJvb2xlYW46IChCT09MKXZhbDsK
LSBzZXRDbGFzczogKENsYXNzKWNsYXNzOwotIHNldE5pbDsKLSBfSV9Vc2luZzsKLSAoZmNhbGxf
dHlwZV90KWdldFZhbHVlVHlwZTsKLSAoZG91YmxlKWdldERvdWJsZTsKLSAobG9uZyBkb3VibGUp
Z2V0TG9uZ0RvdWJsZTsKLSAoZmxvYXQpZ2V0RmxvYXQ7Ci0gKGxvbmcgbG9uZylnZXRMb25nTG9u
ZzsKLSAoaW50KWdldEludGVnZXI7Ci0gKHVuc2lnbmVkKWdldFVuc2lnbmVkOwotIChjaGFyKWdl
dENoYXI7Ci0gKEJPT0wpZ2V0Qm9vbGVhbjsKLSBnZXRPYmplY3Q7Ci0gKENsYXNzKWdldENsYXNz
OwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwotICh2
b2lkKWxpc3BPdXREZWVwOiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwoKCgoKCgoKMjAwMS0w
OC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAg
UGFnZSAgIDY4CgoKLSAodm9pZClkcm9wOwpAZW5kCgpAcHJvdG9jb2wgQXJjaGl2ZXJQYWlyIDxD
cmVhdGUsIERyb3AsIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsKLSBzZXRDYXI6IGNhcjsK
LSBzZXRDZHI6IGNkcjsKLSBzZXRDb25zRm9ybWF0RmxhZzogKEJPT0wpdGhlQ29uc0Zvcm1hdEZs
YWc7Ci0gX0lfVXNpbmc7Ci0gZ2V0Q2FyOwotIGdldENkcjsKLSAoQk9PTClnZXRDb25zRm9ybWF0
RmxhZzsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsK
LSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKQGVuZAoKQHBy
b3RvY29sIEFyY2hpdmVyTGlzdCA8TGlzdCwgUkVUVVJOQUJMRT4KCgotIF9JX0NyZWF0aW5nOwot
IF9JX1VzaW5nOwotICh2b2lkKWxpc3BPdXRTaGFsbG93OiAoaWQgPE91dHB1dFN0cmVhbT4pc3Ry
ZWFtOwotICh2b2lkKWxpc3BPdXREZWVwOiAoaWQgPE91dHB1dFN0cmVhbT4pc3RyZWFtOwpAZW5k
CgpAcHJvdG9jb2wgQXJjaGl2ZXJRdW90ZWQgPFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGluZzsK
LSBzZXRRdW90ZWRPYmplY3Q6IHZhbHVlOwotIF9JX1VzaW5nOwotIGdldFF1b3RlZE9iamVjdDsK
LSAodm9pZClsaXNwT3V0RGVlcDogKGlkIDxPdXRwdXRTdHJlYW0+KXN0cmVhbTsKQGVuZAoKCgpA
cHJvdG9jb2wgU3RyaW5nIDxDcmVhdGUsIERyb3AsIENvcHksIENSRUFUQUJMRT4KIyAxMTU1ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlvbnMuaCIKLSBfSV9DcmVhdGluZzsKKyBj
cmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgc2V0QzogKGNvbnN0IGNoYXIgKiljc3RyaW5nOwoKLSBf
SV9TZXR0aW5nOwotICh2b2lkKXNldEM6IChjb25zdCBjaGFyICopY3N0cmluZzsKCi0gX0lfVXNp
bmc7Ci0gKGNvbnN0IGNoYXIgKilnZXRDOwotICh2b2lkKWNhdEM6IChjb25zdCBjaGFyICopY3N0
cmluZzsKLSAodW5zaWduZWQpZ2V0Q291bnQ7CkBlbmQKCkBwcm90b2NvbCBMaXN0U2h1ZmZsZXIg
PENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgojIDExNzYgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9jb2xsZWN0aW9ucy5oIgotIF9JX0NyZWF0aW5nOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDY5CgoK
CgotIHNldFVuaWZvcm1SYW5kb206IGRpc3Q7CgoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25l
IHNldFVuaWZvcm1SYW5kb206IGRpc3Q7CgotIF9JX1VzaW5nOwoKLSBzaHVmZmxlV2hvbGVMaXN0
OiBsaXN0OwoKCgotIHNodWZmbGVQYXJ0aWFsTGlzdDogbGlzdCBOdW06ICh1bnNpZ25lZCludW07
CkBlbmQKCkBwcm90b2NvbCBQZXJtdXRhdGlvbkl0ZW0gPENyZWF0ZSwgUkVUVVJOQUJMRT4KCgoK
LSBfSV9DcmVhdGluZzsKLSBzZXRJdGVtOiBpdGVtOwotIHNldFBvc2l0aW9uOiAodW5zaWduZWQp
cG9zaXRpb247Ci0gX0lfVXNpbmc7Ci0gZ2V0SXRlbTsKLSAodW5zaWduZWQpZ2V0UG9zaXRpb247
CkBlbmQKCkBwcm90b2NvbCBQZXJtdXRhdGlvbiA8Q29sbGVjdGlvbiwgQ3JlYXRlLCBBcnJheSwg
Q1JFQVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRDb2xsZWN0aW9uOiAoaWQgPENv
bGxlY3Rpb24+KWNvbGxlY3Rpb247Ci0gc2V0TGFzdFBlcm11dGF0aW9uOiAoaWQgPFBlcm11dGF0
aW9uPilwZXJtdXRhdGlvbjsKLSBzZXRVbmlmb3JtUmFuZG9tOiBybmQ7CkBlbmQKCiMgMSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2NvbGxlY3Rpb25zL3R5cGVzLmgiIDEKZXh0ZXJuIHZvaWQg
Kl9jb2xsZWN0aW9uc19bXTsKCmV4dGVybiBpZCBPZmZzZXRzOwpleHRlcm4gaWQgRm9yRWFjaDsK
ZXh0ZXJuIGlkIEZvckVhY2hLZXk7CmV4dGVybiBpZCBJbmRleDsKZXh0ZXJuIGlkIFBlcm11dGVk
SW5kZXg7CmV4dGVybiBpZCBDb2xsZWN0aW9uOwpleHRlcm4gaWQgRGVmYXVsdE1lbWJlcjsKZXh0
ZXJuIGlkIE1lbWJlckJsb2NrOwpleHRlcm4gaWQgQXJyYXk7CmV4dGVybiBpZCBMaXN0SW5kZXg7
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1p
ICAgICAgICAgICAgICBQYWdlICAgNzAKCgpleHRlcm4gaWQgTGlzdDsKZXh0ZXJuIGlkIENvbXBh
cmVGdW5jdGlvbjsKZXh0ZXJuIGlkIEtleWVkQ29sbGVjdGlvbjsKZXh0ZXJuIGlkIEtleWVkQ29s
bGVjdGlvbkluZGV4OwpleHRlcm4gaWQgTWVtYmVyU2xvdDsKZXh0ZXJuIGlkIF9TZXQ7CmV4dGVy
biBpZCBTZXQ7CmV4dGVybiBpZCBPcmRlcmVkU2V0OwpleHRlcm4gaWQgTWFwSW5kZXg7CmV4dGVy
biBpZCBNYXA7CmV4dGVybiBpZCBPdXRwdXRTdHJlYW07CmV4dGVybiBpZCBJbnB1dFN0cmVhbTsK
ZXh0ZXJuIGlkIEFyY2hpdmVyS2V5d29yZDsKZXh0ZXJuIGlkIEFyY2hpdmVyQXJyYXk7CmV4dGVy
biBpZCBBcmNoaXZlclZhbHVlOwpleHRlcm4gaWQgQXJjaGl2ZXJQYWlyOwpleHRlcm4gaWQgQXJj
aGl2ZXJMaXN0OwpleHRlcm4gaWQgQXJjaGl2ZXJRdW90ZWQ7CmV4dGVybiBpZCBTdHJpbmc7CmV4
dGVybiBpZCBMaXN0U2h1ZmZsZXI7CmV4dGVybiBpZCBQZXJtdXRhdGlvbkl0ZW07CmV4dGVybiBp
ZCBQZXJtdXRhdGlvbjsKIyAxMjIxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvY29sbGVjdGlv
bnMuaCIgMgojIDI3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9leHRlcm52YXIuaCIgMQojIDI4ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMgoKQHByb3RvY29sIERlZmF1bHRPcmRlcgojIDc1
ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGluZzsKLSBf
SV9TZXR0aW5nOwotIHNldERlZmF1bHRPcmRlcjogKGlkIDxTeW1ib2w+KWFTeW1ib2w7Ci0gX0lf
VXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdldERlZmF1bHRPcmRlcjsKQGVuZAoKCkBwcm90b2NvbCBB
Y3Rpdml0eSA8RGVmaW5lZE9iamVjdCwgRHJvcCwgUkVUVVJOQUJMRT4KIyAxMjYgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwoKCgoKCi0gKGlkIDxTeW1i
b2w+KXJ1bjsKCgoKLSAodm9pZClzdG9wOwoKCgoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAg
ICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDcxCgoK
Ci0gKHZvaWQpdGVybWluYXRlOwoKCgoKLSAoaWQgPFN5bWJvbD4pbmV4dEFjdGlvbjsKCgotIChp
ZCA8U3ltYm9sPilzdGVwQWN0aW9uOwoKCgoKLSAoaWQgPFN5bWJvbD4pZ2V0U3RhdHVzOwojIDE2
NyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlkIDxTeW1ib2w+KWdl
dEhvbGRUeXBlOwoKCi0gZ2V0QWN0aW9uOwoKCi0gZ2V0QWN0aW9uVHlwZTsKCgotICh2b2lkKXNl
dE93bmVyQWN0aXZpdHk6IG93bmVyQWN0aXZpdHk7CgoKLSBnZXRPd25lckFjdGl2aXR5OwoKCi0g
Z2V0U3ViYWN0aXZpdGllczsKCgotIGdldENvbnRyb2xsaW5nQWN0aXZpdHk7CgoKLSBnZXRUb3BM
ZXZlbEFjdGl2aXR5OwoKCi0gZ2V0U3dhcm1BY3Rpdml0eTsKCgotIGdldFNjaGVkdWxlQWN0aXZp
dHk7CgoKLSBzZXRTZXJpYWxNb2RlOiAoQk9PTClzZXJpYWxNb2RlOwoKCi0gKEJPT0wpZ2V0U2Vy
aWFsTW9kZTsKCgotIChpZCA8QWN0aXZpdHk+KWdldEN1cnJlbnRTdWJhY3Rpdml0eTsKQGVuZAoK
CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1p
ICAgICAgICAgICAgICBQYWdlICAgNzIKCgpleHRlcm4gaWQgPFN5bWJvbD4gSW5pdGlhbGl6ZWQs
IFJ1bm5pbmcsIEhvbGRpbmcsIFJlbGVhc2VkLCBTdG9wcGVkLAogIFRlcm1pbmF0ZWQsIENvbXBs
ZXRlZDsKCkBwcm90b2NvbCBBY3Rpb24gPENyZWF0ZSwgRHJvcCwgR2V0T3duZXI+CiMgMjQyICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKLSAodm9pZClf
cGVyZm9ybUFjdGlvbl86IChpZCA8QWN0aXZpdHk+KWFjdGl2aXR5OwpAZW5kCgpAcHJvdG9jb2wg
QWN0aW9uQXJncwoKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSAodm9pZClzZXRBcmcxOiBhcmcxOwot
ICh2b2lkKXNldEFyZzI6IGFyZzI7Ci0gKHZvaWQpc2V0QXJnMzogYXJnMzsKLSBfSV9Vc2luZzsK
LSAodW5zaWduZWQpZ2V0TkFyZ3M7Ci0gZ2V0QXJnMTsKLSBnZXRBcmcyOwotIGdldEFyZzM7CkBl
bmQKCkBwcm90b2NvbCBGQWN0aW9uIDxBY3Rpb24sIFJFVFVSTkFCTEU+CgoKLSBfSV9DcmVhdGlu
ZzsKLSBzZXRDYWxsOiBmY2FsbDsKLSBfSV9TZXR0aW5nOwotIHNldEF1dG9Ecm9wOiAoQk9PTClh
dXRvRHJvcDsKLSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIEFjdGlvblRhcmdldAoKCi0gX0lf
Q3JlYXRpbmc7Ci0gKHZvaWQpc2V0VGFyZ2V0OiB0YXJnZXQ7Ci0gX0lfVXNpbmc7Ci0gZ2V0VGFy
Z2V0OwpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uU2VsZWN0b3IKCgotIF9JX1NldHRpbmc7Ci0gKHZv
aWQpc2V0TWVzc2FnZVNlbGVjdG9yOiAoU0VMKWFTZWw7Ci0gX0lfVXNpbmc7Ci0gKFNFTClnZXRN
ZXNzYWdlU2VsZWN0b3I7CkBlbmQKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgNzMKCgpAcHJvdG9jb2wg
QWN0aW9uVG8gPEFjdGlvbiwgQWN0aW9uVGFyZ2V0LCBBY3Rpb25TZWxlY3RvciwgQWN0aW9uQXJn
cywgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uRm9yRWFjaCA8QWN0aW9uVG8s
IERlZmF1bHRPcmRlciwgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uRm9yRWFj
aEhvbW9nZW5lb3VzIDxBY3Rpb24sIEFjdGlvblRhcmdldCwgQWN0aW9uU2VsZWN0b3IsIERlZmF1
bHRPcmRlciwgUkVUVVJOQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgRkFjdGlvbkZvckVhY2ggPEZB
Y3Rpb24sIEFjdGlvblRhcmdldCwgRGVmYXVsdE9yZGVyPgoKCkBlbmQKCkBwcm90b2NvbCBGQWN0
aW9uRm9yRWFjaEhldGVyb2dlbmVvdXMgPEZBY3Rpb25Gb3JFYWNoLCBSRVRVUk5BQkxFPgoKCkBl
bmQKCkBwcm90b2NvbCBGQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzIDxGQWN0aW9uRm9yRWFjaCwg
UkVUVVJOQUJMRT4KCgoKCgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2FsbCA8QWN0aW9uLCBBY3Rp
b25BcmdzLCBSRVRVUk5BQkxFPgoKCi0gX0lfQ3JlYXRpbmc7Ci0gKHZvaWQpc2V0RnVuY3Rpb25Q
b2ludGVyOiAoZnVuY190KWZwdHI7Ci0gX0lfVXNpbmc7Ci0gKGZ1bmNfdClnZXRGdW5jdGlvblBv
aW50ZXI7CkBlbmQKCkBwcm90b2NvbCBBY3Rpb25DaGFuZ2VkIDxBY3Rpb24sIFJFVFVSTkFCTEU+
CgoKQGVuZAoKQHByb3RvY29sIEZBY3Rpb25DcmVhdGluZwoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxG
QWN0aW9uPiljcmVhdGVGQWN0aW9uOiAoaWQgPEZDYWxsPiljYWxsOwpAZW5kCgpAcHJvdG9jb2wg
QWN0aW9uQ3JlYXRpbmdDYWxsCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAg
UHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDc0CgoKCgoKCgoKLSBfSV9V
c2luZzsKLSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0cjsK
LSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0ciA6IGFyZzE7
Ci0gKGlkIDxBY3Rpb25DYWxsPiljcmVhdGVBY3Rpb25DYWxsOiAoZnVuY190KWZwdHIgOiBhcmcx
IDogYXJnMjsKLSAoaWQgPEFjdGlvbkNhbGw+KWNyZWF0ZUFjdGlvbkNhbGw6IChmdW5jX3QpZnB0
ciA6IGFyZzEgOiBhcmcyIDogYXJnMzsKQGVuZAoKQHByb3RvY29sIEFjdGlvbkNyZWF0aW5nVG8K
IyAzODQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwot
IChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2Vs
OwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClh
U2VsIDogYXJnMTsKLSAoaWQgPEFjdGlvblRvPiljcmVhdGVBY3Rpb25UbzogdGFyZ2V0IG1lc3Nh
Z2U6IChTRUwpYVNlbCA6IGFyZzEgOiBhcmcyOwotIChpZCA8QWN0aW9uVG8+KWNyZWF0ZUFjdGlv
blRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMSA6IGFyZzIgOiBhcmczOwpAZW5k
CgpAcHJvdG9jb2wgQWN0aW9uQ3JlYXRpbmdGb3JFYWNoCiMgNDAyICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9Vc2luZzsKLSAoaWQgPEFjdGlvbkZvckVhY2hIb21v
Z2VuZW91cz4pY3JlYXRlQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOiB0YXJnZXQgbWVzc2FnZTog
KFNFTClhU2VsOwoKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRh
cmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7Ci0gKGlkIDxBY3Rpb25Gb3JFYWNoPiljcmVhdGVBY3Rp
b25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsIDogYXJnMTsKLSAoaWQgPEFjdGlv
bkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWwg
OiBhcmcxIDogYXJnMjsKLSAoaWQgPEFjdGlvbkZvckVhY2g+KWNyZWF0ZUFjdGlvbkZvckVhY2g6
IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWwgOiBhcmcxIDogYXJnMiA6IGFyZzM7CkBlbmQKCkBw
cm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSGV0ZXJvZ2VuZW91cwoKCgoKCi0gX0lfVXNp
bmc7Ci0gKGlkIDxGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM+KWNyZWF0ZUZBY3Rpb25Gb3JF
YWNoSGV0ZXJvZ2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CkBlbmQKCkBw
cm90b2NvbCBGQWN0aW9uQ3JlYXRpbmdGb3JFYWNoSG9tb2dlbmVvdXMKCgoKCgotIF9JX1VzaW5n
OwotIChpZCA8RkFjdGlvbkZvckVhY2hIb21vZ2VuZW91cz4pY3JlYXRlRkFjdGlvbkZvckVhY2hI
b21vZ2VuZW91czogdGFyZ2V0IGNhbGw6IChpZCA8RkNhbGw+KWNhbGw7CkBlbmQKCkBwcm90b2Nv
bCBBY3Rpb25DcmVhdGluZyA8RkFjdGlvbkNyZWF0aW5nLCBBY3Rpb25DcmVhdGluZ0NhbGwsIEFj
dGlvbkNyZWF0aW5nVG8sIEFjdGlvbkNyZWF0aW5nRm9yRWFjaCwgRkFjdGlvbkNyZWF0aW5nRm9y
RWFjaEhldGVyb2dlbmVvdXMsIEZBY3Rpb25DcmVhdGluZ0ZvckVhY2hIb21vZ2VuZW91cz4KIyA0
NjIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAg
ICAgICAgICAgUGFnZSAgIDc1CgoKCgoKCi0gY3JlYXRlQWN0aW9uOiBhbkFjdGlvblR5cGU7CgpA
ZW5kCgoKZXh0ZXJuIGlkIDxTeW1ib2w+IENvbmN1cnJlbnQsIFNlcXVlbnRpYWwsIFJhbmRvbWl6
ZWQ7CiMgNDkzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKdHlwZWRlZiB1
bnNpZ25lZCBsb25nIHRpbWV2YWxfdDsKCgoKQHByb3RvY29sIEFjdGl2aXR5SW5kZXggPEluZGV4
LCBSRVRVUk5BQkxFPgoKCi0gX0lfVXNpbmc7Ci0gKGlkIDxTeW1ib2w+KWdldEhvbGRUeXBlOwot
IChpZCA8QWN0aW9uPiluZXh0QWN0aW9uOiAoaWQgKilzdGF0dXM7CkBlbmQKCgpleHRlcm4gaWQg
PFN5bWJvbD4gSG9sZFN0YXJ0LCBIb2xkRW5kOwoKQHByb3RvY29sIEFjdGlvblR5cGUKIyA1MzEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgotIF9JX1VzaW5nOwojIDU1MSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gKGlkIDxBY3Rpdml0eT4pYWN0
aXZhdGVJbjogc3dhcm1Db250ZXh0OwpAZW5kCgpAcHJvdG9jb2wgU3luY2hyb25pemF0aW9uVHlw
ZQojIDU2OSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiCi0gX0lfQ3JlYXRp
bmc7Ci0gKHZvaWQpc2V0U3luY2hyb25pemF0aW9uVHlwZTogYVNjaGVkdWxlVHlwZTsKCi0gX0lf
VXNpbmc7Ci0gZ2V0U3luY2hyb25pemF0aW9uVHlwZTsKQGVuZAoKQHByb3RvY29sIEF1dG9Ecm9w
CiMgNTk2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVhdGlu
ZzsKLSBzZXRBdXRvRHJvcDogKEJPT0wpYXV0b0Ryb3A7Ci0gX0lfVXNpbmc7Ci0gKEJPT0wpZ2V0
QXV0b0Ryb3A7CkBlbmQKCkBwcm90b2NvbCBDb21wb3VuZEFjdGlvbiA8QWN0aW9uVHlwZSwgQ29s
bGVjdGlvbiwgQXV0b0Ryb3AsIERlZmF1bHRPcmRlcj4KIyA2MTMgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9hY3Rpdml0eS5oIgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uR3JvdXAgPENvbXBvdW5k
QWN0aW9uLCBBY3Rpb25DcmVhdGluZywgRGVmYXVsdE9yZGVyLCBDUkVBVEFCTEU+CiMgNjM0ICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6
MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA3
NgoKCkBlbmQKCkBwcm90b2NvbCBBY3Rpb25Db25jdXJyZW50IDxBY3Rpb24sIFJFVFVSTkFCTEU+
Ci0gX0lfVXNpbmc7CgoKLSAoaWQgPEFjdGlvbkdyb3VwPilnZXRDb25jdXJyZW50R3JvdXA7CkBl
bmQKCkBwcm90b2NvbCBSZWxhdGl2ZVRpbWUKCgoKCgoKLSBfSV9TZXR0aW5nOwotIHNldFJlbGF0
aXZlVGltZTogKEJPT0wpcmVsYXRpdmVUaW1lOwotIF9JX1VzaW5nOwotIChCT09MKWdldFJlbGF0
aXZlVGltZTsKQGVuZAoKQHByb3RvY29sIFJlcGVhdEludGVydmFsCiMgNjcxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwotIHNldFJlcGVhdEludGVy
dmFsOiAodGltZXZhbF90KXJlcGVhdEludGVydmFsOwotIF9JX1VzaW5nOwotICh0aW1ldmFsX3Qp
Z2V0UmVwZWF0SW50ZXJ2YWw7CkBlbmQKCkBwcm90b2NvbCBDb25jdXJyZW50R3JvdXBUeXBlCiMg
NzA2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwot
ICh2b2lkKXNldENvbmN1cnJlbnRHcm91cFR5cGU6IGdyb3VwVHlwZTsKLSBfSV9Vc2luZzsKLSBn
ZXRDb25jdXJyZW50R3JvdXBUeXBlOwpAZW5kCgpAcHJvdG9jb2wgU2luZ2xldG9uR3JvdXBzCiMg
NzI4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9TZXR0aW5nOwot
ICh2b2lkKXNldFNpbmdsZXRvbkdyb3VwczogKEJPT0wpc2luZ2xldG9uR3JvdXBzOwotIF9JX1Vz
aW5nOwotIChCT09MKWdldFNpbmdsZXRvbkdyb3VwczsKQGVuZAoKQHByb3RvY29sIFNjaGVkdWxl
IDxNYXAsIENvbXBvdW5kQWN0aW9uLCBBY3Rpb25DcmVhdGluZywgUmVsYXRpdmVUaW1lLCBSZXBl
YXRJbnRlcnZhbCwgQ29uY3VycmVudEdyb3VwVHlwZSwgU2luZ2xldG9uR3JvdXBzLCBDUkVBVEFC
TEU+CiMgNzYzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9DcmVh
dGluZzsKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFJlcGVhdEludGVydmFsOiAodGlt
ZXZhbF90KXJwdEludGVydmFsOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldEF1dG9E
cm9wOiAoQk9PTClhdXRvRHJvcDsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDc3CgoKCi0gc2V0S2Vl
cEVtcHR5RmxhZzogKEJPT0wpa2VlcEVtcHR5RmxhZzsKLSBfSV9Vc2luZzsKLSBhdDogKHRpbWV2
YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbjogYW5BY3Rpb25UeXBlOwoKLSAoaWQgPEZBY3Rpb24+KWF0
OiAodGltZXZhbF90KXRWYWwgY3JlYXRlRkFjdGlvbjogKGlkIDxGQ2FsbD4pY2FsbDsKLSAoaWQg
PEFjdGlvbkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNf
dClmcHRyOwotIChpZCA8QWN0aW9uQ2FsbD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rp
b25DYWxsOiAoZnVuY190KWZwdHI6YXJnMTsKLSAoaWQgPEFjdGlvbkNhbGw+KWF0OiAodGltZXZh
bF90KXRWYWwgY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNfdClmcHRyOmFyZzE6YXJnMjsKLSAoaWQg
PEFjdGlvbkNhbGw+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uQ2FsbDogKGZ1bmNf
dClmcHRyOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0
VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOwotIChpZCA8QWN0
aW9uVG8+KWF0OiAodGltZXZhbF90KXRWYWwgY3JlYXRlQWN0aW9uVG86IHRhcmdldCBtZXNzYWdl
OiAoU0VMKWFTZWw6YXJnMTsKLSAoaWQgPEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNy
ZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjsKLSAoaWQg
PEFjdGlvblRvPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvblRvOiB0YXJnZXQgbWVz
c2FnZTogKFNFTClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEFjdGlvbkZvckVhY2hIb21v
Z2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoSG9tb2dlbmVv
dXM6IHRhcmdldCBtZXNzYWdlOiAoU0VMKWFTZWw7CgotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6
ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNF
TClhU2VsOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVB
Y3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNFTClhU2VsOmFyZzE7Ci0gKGlkIDxBY3Rp
b25Gb3JFYWNoPilhdDogKHRpbWV2YWxfdCl0VmFsIGNyZWF0ZUFjdGlvbkZvckVhY2g6IHRhcmdl
dCBtZXNzYWdlOiAoU0VMKWFTZWw6YXJnMTphcmcyOwotIChpZCA8QWN0aW9uRm9yRWFjaD4pYXQ6
ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVBY3Rpb25Gb3JFYWNoOiB0YXJnZXQgbWVzc2FnZTogKFNF
TClhU2VsOmFyZzE6YXJnMjphcmczOwoKLSAoaWQgPEZBY3Rpb25Gb3JFYWNoSGV0ZXJvZ2VuZW91
cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM6
IHRhcmdldCBjYWxsOiAoaWQgPEZDYWxsPiljYWxsOwotIChpZCA8RkFjdGlvbkZvckVhY2hIb21v
Z2VuZW91cz4pYXQ6ICh0aW1ldmFsX3QpdFZhbCBjcmVhdGVGQWN0aW9uRm9yRWFjaEhvbW9nZW5l
b3VzOiB0YXJnZXQgY2FsbDogKGlkIDxGQ2FsbD4pY2FsbDsKCgoKLSByZW1vdmU6IGFuQWN0aW9u
OwoKCi0gKGlkIDxBY3Rpb25Hcm91cD4paW5zZXJ0R3JvdXA6ICh0aW1ldmFsX3QpdFZhbDsKQGVu
ZAoKQHByb3RvY29sIFNjaGVkdWxlQWN0aXZpdHkgPEFjdGl2aXR5LCBSRVRVUk5BQkxFPgoKCi0g
X0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotICh0aW1ldmFsX3QpZ2V0Q3VycmVudFRpbWU7CgoK
LSBzdGVwVW50aWw6ICh0aW1ldmFsX3QpdFZhbDsKQGVuZAoKQHByb3RvY29sIFN3YXJtQWN0aXZp
dHkgPFNjaGVkdWxlQWN0aXZpdHksIFJFVFVSTkFCTEU+CgoKCi0gX0lfVXNpbmc7CgotIGdldFN3
YXJtOwoKLSAoaWQgPFNjaGVkdWxlPilnZXRTeW5jaHJvbml6YXRpb25TY2hlZHVsZTsKQGVuZAoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAg
ICAgICAgICAgICAgUGFnZSAgIDc4CgoKCkBwcm90b2NvbCBGb3JFYWNoQWN0aXZpdHkgPEFjdGl2
aXR5LCBSRVRVUk5BQkxFPgoKCgotIF9JX1VzaW5nOwotIGdldEN1cnJlbnRNZW1iZXI7CkBlbmQK
CkBwcm90b2NvbCBTd2FybVByb2Nlc3MgPEFjdGlvblR5cGUsIFpvbmUsIFN5bmNocm9uaXphdGlv
blR5cGU+CiMgODUwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIKLSBfSV9D
cmVhdGluZzsKCgoKCgoKCi0gc2V0SW50ZXJuYWxab25lVHlwZTogYVpvbmVUeXBlOwoKLSBfSV9V
c2luZzsKCgoKCgotIGdldEludGVybmFsWm9uZTsKCgoKCgotIChpZCA8U3dhcm1BY3Rpdml0eT4p
Z2V0QWN0aXZpdHk7CkBlbmQKIyA5MjQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0
eS5oIgpAcHJvdG9jb2wgR2V0U3ViYWN0aXZpdHlBY3Rpb24KCgoKLSBfSV9Vc2luZzsKLSBfZ2V0
U3ViYWN0aXZpdHlBY3Rpb25fOwpAZW5kCgoKCgoKZXh0ZXJuIGlkIF9hY3Rpdml0eV9jdXJyZW50
OwoKCgpleHRlcm4gaWQgX2FjdGl2aXR5X2NvbnRleHRfZXJyb3IgKGNvbnN0IGNoYXIgKm1hY3Jv
TmFtZSk7CgoKQHByb3RvY29sIENvbmN1cnJlbnRHcm91cCA8QWN0aW9uR3JvdXAsIFJFVFVSTkFC
TEU+CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJt
Lm1pICAgICAgICAgICAgICBQYWdlICAgNzkKCgoKCi0gX0lfVXNpbmc7Ci0gKHZvaWQpX3NldEFj
dGlvbkNvbmN1cnJlbnRfOiBhY3Rpb247Ci0gX2dldEVtcHR5QWN0aW9uQ29uY3VycmVudF87CkBl
bmQKCkBwcm90b2NvbCBDb25jdXJyZW50U2NoZWR1bGUgPENvbmN1cnJlbnRHcm91cCwgU2NoZWR1
bGUsIENSRUFUQUJMRT4KCgpAZW5kCgpAcHJvdG9jb2wgQWN0aXZhdGlvbk9yZGVyIDxBY3Rpb25H
cm91cCwgUkVUVVJOQUJMRT4KCgotIF9JX1VzaW5nOwoKLSAodm9pZClhZGRMYXN0OiBtZXJnZUFj
dGlvbjsKCgoKLSByZW1vdmU6IG1lcmdlQWN0aW9uOwoKQGVuZAoKCmV4dGVybiBpZCA8RXJyb3I+
IEludmFsaWRTd2FybVpvbmU7CgoKCmV4dGVybiBpZCBfYWN0aXZpdHlfem9uZTsKIyA5ODUgIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5oIgpleHRlcm4gQk9PTCAoKl9hY3Rpdml0
eV90cmFjZSkgKGlkKTsKIyA5OTggIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS5o
IgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9hY3Rpdml0eS90eXBlcy5oIiAxCmV4dGVy
biB2b2lkICpfYWN0aXZpdHlfW107CgpleHRlcm4gaWQgRGVmYXVsdE9yZGVyOwpleHRlcm4gaWQg
QWN0aXZpdHk7CmV4dGVybiBpZCBBY3Rpb247CmV4dGVybiBpZCBBY3Rpb25BcmdzOwpleHRlcm4g
aWQgRkFjdGlvbjsKZXh0ZXJuIGlkIEFjdGlvblRhcmdldDsKZXh0ZXJuIGlkIEFjdGlvblNlbGVj
dG9yOwpleHRlcm4gaWQgQWN0aW9uVG87CmV4dGVybiBpZCBBY3Rpb25Gb3JFYWNoOwpleHRlcm4g
aWQgQWN0aW9uRm9yRWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgRkFjdGlvbkZvckVhY2g7CmV4
dGVybiBpZCBGQWN0aW9uRm9yRWFjaEhldGVyb2dlbmVvdXM7CmV4dGVybiBpZCBGQWN0aW9uRm9y
RWFjaEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgQWN0aW9uQ2FsbDsKZXh0ZXJuIGlkIEFjdGlvbkNo
YW5nZWQ7CmV4dGVybiBpZCBGQWN0aW9uQ3JlYXRpbmc7CmV4dGVybiBpZCBBY3Rpb25DcmVhdGlu
Z0NhbGw7CmV4dGVybiBpZCBBY3Rpb25DcmVhdGluZ1RvOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRp
bmdGb3JFYWNoOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2
ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDgwCgoKZXh0ZXJuIGlkIEZBY3Rpb25DcmVh
dGluZ0ZvckVhY2hIZXRlcm9nZW5lb3VzOwpleHRlcm4gaWQgRkFjdGlvbkNyZWF0aW5nRm9yRWFj
aEhvbW9nZW5lb3VzOwpleHRlcm4gaWQgQWN0aW9uQ3JlYXRpbmc7CmV4dGVybiBpZCBBY3Rpdml0
eUluZGV4OwpleHRlcm4gaWQgQWN0aW9uVHlwZTsKZXh0ZXJuIGlkIFN5bmNocm9uaXphdGlvblR5
cGU7CmV4dGVybiBpZCBBdXRvRHJvcDsKZXh0ZXJuIGlkIENvbXBvdW5kQWN0aW9uOwpleHRlcm4g
aWQgQWN0aW9uR3JvdXA7CmV4dGVybiBpZCBBY3Rpb25Db25jdXJyZW50OwpleHRlcm4gaWQgUmVs
YXRpdmVUaW1lOwpleHRlcm4gaWQgUmVwZWF0SW50ZXJ2YWw7CmV4dGVybiBpZCBDb25jdXJyZW50
R3JvdXBUeXBlOwpleHRlcm4gaWQgU2luZ2xldG9uR3JvdXBzOwpleHRlcm4gaWQgU2NoZWR1bGU7
CmV4dGVybiBpZCBTY2hlZHVsZUFjdGl2aXR5OwpleHRlcm4gaWQgU3dhcm1BY3Rpdml0eTsKZXh0
ZXJuIGlkIEZvckVhY2hBY3Rpdml0eTsKZXh0ZXJuIGlkIFN3YXJtUHJvY2VzczsKZXh0ZXJuIGlk
IEdldFN1YmFjdGl2aXR5QWN0aW9uOwpleHRlcm4gaWQgQ29uY3VycmVudEdyb3VwOwpleHRlcm4g
aWQgQ29uY3VycmVudFNjaGVkdWxlOwpleHRlcm4gaWQgQWN0aXZhdGlvbk9yZGVyOwojIDk5OSAi
L3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5LmgiIDIKIyAyMiAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL29iamVjdGJhc2UuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVk
ZS9leHRlcm52YXIuaCIgMQojIDIzICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFz
ZS5oIiAyCgpAcHJvdG9jb2wgU3dhcm1PYmplY3QgPENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxFPgoj
IDM5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIgotIF9JX1VzaW5nOwoK
CgotIGdldFByb2JlTWFwOwoKCgotIGdldENvbXBsZXRlUHJvYmVNYXA7CgoKCi0gZ2V0UHJvYmVG
b3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyaWFibGU7CgoKCi0gZ2V0UHJvYmVGb3JNZXNz
YWdlOiAoY29uc3QgY2hhciAqKWFNZXNzYWdlOwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVDb25maWcK
CgoKCgotIF9JX1VzaW5nOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBs
T2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDgxCgoKLSBzZXRPYmplY3RUb05v
dGlmeTogYW5PYmplY3Q7Ci0gZ2V0T2JqZWN0VG9Ob3RpZnk7CkBlbmQKCkBwcm90b2NvbCBQcm9i
ZSA8U3dhcm1PYmplY3QsIFByb2JlQ29uZmlnPgojIDgxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvb2JqZWN0YmFzZS5oIgotIF9JX0NyZWF0aW5nOwoKCi0gc2V0UHJvYmVkQ2xhc3M6IChDbGFz
cyljbGFzczsKCi0gc2V0UHJvYmVkT2JqZWN0OiBvYmplY3Q7Ci0gX0lfU2V0dGluZzsKCgoKLSBz
ZXRTYWZldHk7CgoKCgotIHVuc2V0U2FmZXR5OwoKLSBfSV9Vc2luZzsKCgoKCgotIGNsb25lOiAo
aWQgPFpvbmU+KWFab25lOwoKCgotIChDbGFzcylnZXRQcm9iZWRDbGFzczsKCgoKCi0gKGNvbnN0
IGNoYXIgKilnZXRQcm9iZWRUeXBlOwpAZW5kCgpAcHJvdG9jb2wgVmFyUHJvYmUgPFByb2JlLCBD
UkVBVEFCTEU+CgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgoKCgotIHNldFByb2JlZFZhcmlhYmxlOiAo
Y29uc3QgY2hhciAqKWFWYXJpYWJsZTsKCi0gX0lfU2V0dGluZzsKCgoKCgoKCjIwMDEtMDgtMjQg
MDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2Ug
ICA4MgoKCgoKCgoKCgotIHNldE5vbkludGVyYWN0aXZlOwoKCgoKCgotIHNldFN0cmluZ1JldHVy
blR5cGU6IHJldHVyblR5cGU7CgoKCi0gc2V0RmxvYXRGb3JtYXQ6IChjb25zdCBjaGFyICopZm9y
bWF0OwoKLSBfSV9Vc2luZzsKCgotIChjb25zdCBjaGFyICopZ2V0UHJvYmVkVmFyaWFibGU7CgoK
Ci0gKEJPT0wpZ2V0SW50ZXJhY3RpdmVGbGFnOwoKCi0gKHZvaWQgKilwcm9iZVJhdzogYW5PYmpl
Y3Q7CgoKCi0gKHZvaWQgKilwcm9iZUFzUG9pbnRlcjogYW5PYmplY3Q7CgoKLSBwcm9iZU9iamVj
dDogYW5PYmplY3Q7CgoKCi0gKGludClwcm9iZUFzSW50OiBhbk9iamVjdDsKCgoKLSAoZG91Ymxl
KXByb2JlQXNEb3VibGU6IGFuT2JqZWN0OwoKCgotIChjb25zdCBjaGFyICopcHJvYmVBc1N0cmlu
ZzogYW5PYmplY3QgQnVmZmVyOiAoY2hhciAqKWJ1ZmZlcjsKCgoKLSAoaWQgPFN0cmluZz4pcHJv
YmVBc1N0cmluZzogYW5PYmplY3Q7CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAg
ICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA4MwoKCgoKCgotIChj
b25zdCBjaGFyICopcHJvYmVBc1N0cmluZzogYW5PYmplY3QKICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXI6IChjaGFyICopYnVmCiAgICAgICAgICAgIHdpdGhGdWxsUHJlY2lzaW9uOiAoQk9P
TClwcmVjaXNpb247CgoKLSAodW5zaWduZWQpZ2V0UmFuazsKCgotIChjb25zdCBjaGFyICopZ2V0
QmFzZVR5cGU7CgoKCi0gKHVuc2lnbmVkICopZ2V0RGltczsKCgoKLSBpdGVyYXRlQXNEb3VibGU6
IGFuT2JqZWN0IHVzaW5nOiAodm9pZCAoKikgKHVuc2lnbmVkIHJhbmssIHVuc2lnbmVkICp2ZWMs
IGRvdWJsZSB2YWwpKWZ1bmM7CgoKCi0gaXRlcmF0ZUFzSW50ZWdlcjogYW5PYmplY3QgdXNpbmc6
ICh2b2lkICgqKSAodW5zaWduZWQgcmFuaywgdW5zaWduZWQgKnZlYywgaW50IHZhbCkpZnVuYzsK
CgoKLSAodm9pZClzZXREYXRhOiBhbk9iamVjdCBUbzogKHZvaWQgKiluZXdWYWx1ZTsKCgoKCgoK
Ci0gKEJPT0wpc2V0RGF0YTogYW5PYmplY3QgVG9TdHJpbmc6IChjb25zdCBjaGFyICopczsKCgoK
LSAodm9pZClzZXREYXRhOiBhbk9iamVjdCBUb0RvdWJsZTogKGRvdWJsZSl2YWw7CgpleHRlcm4g
aWQgPFN5bWJvbD4gRGVmYXVsdFN0cmluZywgQ2hhclN0cmluZywgSW50U3RyaW5nOwpAZW5kCgpA
cHJvdG9jb2wgTWVzc2FnZVByb2JlIDxQcm9iZSwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVh
dGluZzsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJT
d2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDg0CgoKLSBzZXRQcm9iZWRTZWxlY3RvcjogKFNF
TClhU2VsOwoKCgoKCi0gc2V0UHJvYmVkTWV0aG9kTmFtZTogKGNvbnN0IGNoYXIgKiltZXRob2RO
YW1lOwoKCisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNldFByb2JlZFNlbGVjdG9yOiAoU0VM
KWFTZWw7CgotIF9JX1NldHRpbmc7CgoKCgotIHNldEhpZGVSZXN1bHQ6IChCT09MKXZhbDsKCi0g
X0lfVXNpbmc7CgoKLSAoQk9PTClpc1Jlc3VsdElkOwoKCgotIChCT09MKWlzQXJndW1lbnRJZDog
KHVuc2lnbmVkKXdoaWNoOwoKCgotIChjb25zdCBjaGFyICopZ2V0UHJvYmVkTWVzc2FnZTsKCi0g
KHVuc2lnbmVkKWdldEFyZ0NvdW50OwoKCi0gKHZhbF90KWdldEFyZzogKHVuc2lnbmVkKXdoaWNo
OwoKCgotIChjb25zdCBjaGFyICopZ2V0QXJnTmFtZTogKHVuc2lnbmVkKXdoaWNoOwoKCi0gKEJP
T0wpZ2V0SGlkZVJlc3VsdDsKCgoKLSBzZXRBcmc6ICh1bnNpZ25lZCl3aGljaCBUb1N0cmluZzog
KGNvbnN0IGNoYXIgKil3aGF0OwoKCgoKCi0gc2V0QXJnOiAodW5zaWduZWQpd2hpY2ggVG9VbnNp
Z25lZDogKHVuc2lnbmVkKXg7CgoKCi0gKHZhbF90KWR5bmFtaWNDYWxsT246IHRhcmdldDsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAg
ICAgICAgICAgIFBhZ2UgICA4NQoKCgoKCgotIChkb3VibGUpZG91YmxlRHluYW1pY0NhbGxPbjog
dGFyZ2V0OwoKCgoKLSAobG9uZylsb25nRHluYW1pY0NhbGxPbjogdGFyZ2V0OwoKCgoKLSAoY29u
c3QgY2hhciAqKXN0cmluZ0R5bmFtaWNDYWxsT246IHRhcmdldDsKCgoKCi0gb2JqZWN0RHluYW1p
Y0NhbGxPbjogdGFyZ2V0OwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVNYXAgPFN3YXJtT2JqZWN0LCBQ
cm9iZUNvbmZpZywgQ1JFQVRBQkxFPgojIDMzMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29i
amVjdGJhc2UuaCIKLSBfSV9DcmVhdGluZzsKCgoKLSBzZXRQcm9iZWRDbGFzczogKENsYXNzKWNs
YXNzOwoKLSBzZXRQcm9iZWRPYmplY3Q6IG9iamVjdDsKLSBfSV9Vc2luZzsKCi0gKHVuc2lnbmVk
KWdldENvdW50OwoKCgotIChDbGFzcylnZXRQcm9iZWRDbGFzczsKCgoKCi0gYWRkUHJvYmU6IChp
ZCA8UHJvYmU+KWFQcm9iZTsKCgoKCi0gYWRkUHJvYmVNYXA6IGFQcm9iZU1hcDsKCgoKCgotIGRy
b3BQcm9iZUZvclZhcmlhYmxlOiAoY29uc3QgY2hhciAqKWFWYXJpYWJsZTsKCgoKCgoKCgoKMjAw
MS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAg
ICAgUGFnZSAgIDg2CgoKCgotIGRyb3BQcm9iZUZvck1lc3NhZ2U6IChjb25zdCBjaGFyICopYU1l
c3NhZ2U7CgoKCgoKLSBkcm9wUHJvYmVNYXA6IGFQcm9iZU1hcDsKCgoKLSAoaWQgPEluZGV4Pili
ZWdpbjogKGlkIDxab25lPilhWm9uZTsKCgoKCgoKLSBjbG9uZTogKGlkIDxab25lPilhWm9uZTsK
CkBlbmQKCkBwcm90b2NvbCBTd2FybSA8U3dhcm1Qcm9jZXNzLCBDUkVBVEFCTEU+CgoKCgoKLSBf
SV9Vc2luZzsKCgotIGJ1aWxkT2JqZWN0czsKCgotIGJ1aWxkQWN0aW9uczsKIyA0MDggIi91c3Iv
bG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiCi0gKGlkIDxBY3Rpdml0eT4pYWN0aXZh
dGVJbjogc3dhcm1Db250ZXh0OwoKCgotIChpZCA8UHJvYmVNYXA+KWdldFByb2JlTWFwOwoKCi0g
KGlkIDxQcm9iZU1hcD4pZ2V0Q29tcGxldGVQcm9iZU1hcDsKCgotIChpZCA8VmFyUHJvYmU+KWdl
dFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwpAZW5kCgpAcHJvdG9j
b2wgRGVmYXVsdFByb2JlTWFwIDxQcm9iZU1hcCwgQ1JFQVRBQkxFPgoKCgoKCgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAg
ICBQYWdlICAgODcKCgoKCkBlbmQKCkBwcm90b2NvbCBDdXN0b21Qcm9iZU1hcCA8UHJvYmVNYXAs
IENSRUFUQUJMRT4KIyA0NDMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgi
Ci0gX0lfQ3JlYXRpbmc7CgoKCgoKKyBjcmVhdGU6IChpZCA8Wm9uZT4pYVpvbmUgZm9yQ2xhc3M6
IChDbGFzcylhQ2xhc3Mgd2l0aElkZW50aWZpZXJzOiAoY29uc3QgY2hhciAqKXZhcnMsIC4uLjsK
LSBfSV9TZXR0aW5nOwoKCi0gYWRkUHJvYmVzRm9yQ2xhc3M6IChDbGFzcykgYUNsYXNzCiAgICB3
aXRoSWRlbnRpZmllcnM6IChjb25zdCBjaGFyICopdmFycywgLi4uOwotIF9JX1VzaW5nOwpAZW5k
CgpAcHJvdG9jb2wgRW1wdHlQcm9iZU1hcCA8Q3VzdG9tUHJvYmVNYXAsIENSRUFUQUJMRT4KCgoK
Ci0gX0lfQ3JlYXRpbmc7CgorIGNyZWF0ZTogKGlkIDxab25lPilhWm9uZSBmb3JDbGFzczogKENs
YXNzKWFDbGFzczsKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlUHJvYmVNYXAgPFByb2JlTWFwLCBD
UkVBVEFCTEU+CgoKCgoKCgpAZW5kCgpAcHJvdG9jb2wgQ29tcGxldGVWYXJNYXAgPFByb2JlTWFw
LCBDUkVBVEFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29sIFByb2JlTGlicmFyeSA8Q3JlYXRlLCBE
cm9wLCBQcm9iZUNvbmZpZywgQ1JFQVRBQkxFPgojIDQ5OCAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamVjdGJhc2UuaCIKLSBfSV9Vc2luZzsKIyA1MDcgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmplY3RiYXNlLmgiCi0gc2V0RGlzcGxheVByZWNpc2lvbjogKHVuc2lnbmVkKW5TaWdE
aXNwbGF5OwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZl
clN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgODgKCgoKLSAodW5zaWduZWQpZ2V0RGlzcGxh
eVByZWNpc2lvbjsKCgoKCgoKCi0gc2V0U2F2ZWRQcmVjaXNpb246ICh1bnNpZ25lZCluU2lnU2F2
ZWQ7CgoKCi0gKHVuc2lnbmVkKWdldFNhdmVkUHJlY2lzaW9uOwoKCgotIChCT09MKWlzUHJvYmVN
YXBEZWZpbmVkRm9yOiAoQ2xhc3MpYUNsYXNzOwotIChCT09MKWlzUHJvYmVNYXBEZWZpbmVkRm9y
T2JqZWN0OiBhbk9iamVjdDsKCgoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcEZvcjog
KENsYXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRQcm9iZU1hcEZvck9iamVjdDogYW5P
YmplY3Q7CgoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVByb2JlTWFwRm9yOiAoQ2xh
c3MpYUNsYXNzOwotIChpZCA8UHJvYmVNYXA+KWdldENvbXBsZXRlUHJvYmVNYXBGb3JPYmplY3Q6
IGFuT2JqZWN0OwoKCgoKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVZhck1hcEZvcjogKENs
YXNzKWFDbGFzczsKLSAoaWQgPFByb2JlTWFwPilnZXRDb21wbGV0ZVZhck1hcEZvck9iamVjdDog
YW5PYmplY3Q7CgoKCgoKCi0gKGlkIDxWYXJQcm9iZT4pZ2V0UHJvYmVGb3JWYXJpYWJsZTogKGNv
bnN0IGNoYXIgKilhVmFyIGluQ2xhc3M6IChDbGFzcylhQ2xhc3M7Ci0gKGlkIDxWYXJQcm9iZT4p
Z2V0UHJvYmVGb3JWYXJpYWJsZTogKGNvbnN0IGNoYXIgKilhVmFyIGluT2JqZWN0OiBhbk9iamVj
dDsKCgoKCgoKLSAoaWQgPE1lc3NhZ2VQcm9iZT4pZ2V0UHJvYmVGb3JNZXNzYWdlOiAoY29uc3Qg
Y2hhciAqKWFNZXNzYWdlIGluQ2xhc3M6IChDbGFzcylhQ2xhc3M7Ci0gKGlkIDxNZXNzYWdlUHJv
YmU+KWdldFByb2JlRm9yTWVzc2FnZTogKGNvbnN0IGNoYXIgKilhTWVzc2FnZSBpbk9iamVjdDog
YW5PYmplY3Q7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZl
clN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgODkKCgoKCgoKLSBzZXRQcm9iZU1hcDogKGlk
IDxQcm9iZU1hcD4pYU1hcCBGb3I6IChDbGFzcylhQ2xhc3M7Ci0gc2V0UHJvYmVNYXA6IChpZCA8
UHJvYmVNYXA+KWFNYXAgRm9yT2JqZWN0OiBhbk9iamVjdDsKCkBlbmQKCgpleHRlcm4gaWQgPFBy
b2JlTGlicmFyeT4gcHJvYmVMaWJyYXJ5OwoKQHByb3RvY29sIEFjdGl2aXR5Q29udHJvbCA8U3dh
cm1PYmplY3QsIENSRUFUQUJMRT4KIyA1OTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpl
Y3RiYXNlLmgiCi0gX0lfQ3JlYXRpbmc7CgotIF9JX1VzaW5nOwoKCgoKCi0gKHZvaWQpYXR0YWNo
VG9BY3Rpdml0eTogKGlkIDxTY2hlZHVsZUFjdGl2aXR5PilhbkFjdGl2aXR5OwoKCgoKCgoKLSAo
aWQgPFN5bWJvbD4pcnVuQWN0aXZpdHk7CgoKCgoKCi0gKGlkIDxTeW1ib2w+KXN0b3BBY3Rpdml0
eTsKCgoKCgoKCi0gKGlkIDxTeW1ib2w+KW5leHRBY3Rpb247CgoKCi0gKGlkIDxTeW1ib2w+KXN0
ZXBBY3Rpb247CgoKCgoKLSAoaWQgPFN5bWJvbD4pc3RlcFVudGlsOiAodGltZXZhbF90KXN0b3BU
aW1lOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2Fy
bS5taSAgICAgICAgICAgICAgUGFnZSAgIDkwCgoKCgoKCgotICh2b2lkKXVwZGF0ZVN0YXRlVmFy
OwoKCi0gKGlkIDxTeW1ib2w+KWdldFN0YXR1czsKCgotICh2b2lkKXRlcm1pbmF0ZTsKCgotIChp
ZCA8U2NoZWR1bGVBY3Rpdml0eT4pZ2V0QWN0aXZpdHk7CkBlbmQKCkBjbGFzcyBQcm9iZTsKQGNs
YXNzIFZhclByb2JlOwpAY2xhc3MgTWVzc2FnZVByb2JlOwpAY2xhc3MgUHJvYmVNYXA7CkBjbGFz
cyBEZWZhdWx0UHJvYmVNYXA7CkBjbGFzcyBDdXN0b21Qcm9iZU1hcDsKQGNsYXNzIEVtcHR5UHJv
YmVNYXA7CkBjbGFzcyBDb21wbGV0ZVByb2JlTWFwOwpAY2xhc3MgQ29tcGxldGVWYXJNYXA7CkBj
bGFzcyBQcm9iZUxpYnJhcnk7CkBjbGFzcyBBY3Rpdml0eUNvbnRyb2w7CkBjbGFzcyBTd2FybTsK
QGNsYXNzIFN3YXJtT2JqZWN0OwoKCmV4dGVybiBjb25zdCBjaGFyICpzd2FybV92ZXJzaW9uOwoj
IDcgIlBwbE9ic2VydmVyU3dhcm0uaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9z
aW10b29sc2d1aS9HVUlTd2FybS5oIiAxCgoKCgoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1
ZGUvc2ltdG9vbHNndWkuaCIgMQoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqZWN0YmFzZS5oIiAxCiMgOSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzZ3Vp
LmgiIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkuaCIgMQojIDEwICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHNndWkuaCIgMgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9ndWkuaCIgMQoKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDkxCgoKCgojIDEg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgiIDEKIyA3ICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvZ3VpLmgiIDIKIyAzMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2d1
aS5oIgpAcHJvdG9jb2wgV2lkZ2V0IDxDcmVhdGUsIERyb3A+CiMgMzkgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9ndWkuaCIKLSBfSV9DcmVhdGluZzsKCgoKCisgY3JlYXRlUGFyZW50OiBwYXJl
bnQ7CgoKLSBzZXRQYXJlbnQ6IHBhcmVudDsKCgotIChjb25zdCBjaGFyICopbWFrZVdpZGdldE5h
bWVGb3I6IHdpZGdldDsKCgotIHNldFdpZGdldE5hbWVGcm9tUGFyZW50OiAoaWQgPFdpZGdldD4p
cGFyZW50OwoKCi0gc2V0V2lkZ2V0TmFtZUZyb21QYXJlbnROYW1lOiAoY29uc3QgY2hhciAqKXBh
cmVudFdpZGdldE5hbWU7Ci0gX0lfVXNpbmc7CgoKCi0gKHZvaWQpcGFjazsKCi0gKHZvaWQpcGFj
a0ZpbGw7Ci0gKHZvaWQpcGFja0JlZm9yZUFuZEZpbGxMZWZ0OiB3aWRnZXQgZXhwYW5kOiAoQk9P
TClleHBhbmRGbGFnOwotICh2b2lkKXBhY2tGaWxsTGVmdDogKEJPT0wpZXhwYW5kRmxhZzsKLSAo
dm9pZClwYWNrVG9SaWdodCA6IHdpZGdldDsKLSAodm9pZClwYWNrRm9yZ2V0QW5kRXhwYW5kOwoK
Ci0gKHZvaWQpc2V0QWN0aXZlRmxhZzogKEJPT0wpYWN0aXZlRmxhZzsKCgotIHNldFdpZHRoOiAo
dW5zaWduZWQpd2lkdGg7CgoKLSBzZXRIZWlnaHQ6ICh1bnNpZ25lZCloZWlnaHQ7CgoKLSBzZXRX
aWR0aDogKHVuc2lnbmVkKXdpZHRoIEhlaWdodDogKHVuc2lnbmVkKWhlaWdodDsKCgotIHNldFg6
IChpbnQpeCBZOiAoaW50KXk7CgoKLSAodm9pZClzZXRXaW5kb3dUaXRsZTogKGNvbnN0IGNoYXIg
Kil0aXRsZTsKCgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2
ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDkyCgoKLSBnZXRQYXJlbnQ7CgoKLSBnZXRU
b3BMZXZlbDsKCgotIChjb25zdCBjaGFyICopZ2V0V2lkZ2V0TmFtZTsKCgotICh1bnNpZ25lZCln
ZXRIZWlnaHQ7CgoKLSAodW5zaWduZWQpZ2V0V2lkdGg7CgoKLSAoaW50KWdldFg7CgoKLSAoaW50
KWdldFk7CgotIChjb25zdCBjaGFyICopZ2V0V2luZG93R2VvbWV0cnk7Ci0gKHZvaWQpc2V0V2lu
ZG93R2VvbWV0cnk6IChjb25zdCBjaGFyICopczsKCgotICh2b2lkKWVuYWJsZURlc3Ryb3lOb3Rp
ZmljYXRpb246IG5vdGlmaWNhdGlvblRhcmdldAogICAgICAgICAgICAgICBub3RpZmljYXRpb25N
ZXRob2Q6IChTRUwpZGVzdHJveU5vdGlmaWNhdGlvbk1ldGhvZDsKCgotICh2b2lkKWRpc2FibGVE
ZXN0cm95Tm90aWZpY2F0aW9uOwoKLSAoQk9PTClnZXREZXN0cm95ZWRGbGFnOwpAZW5kCgoKQHBy
b3RvY29sIFdpbmRvd0dlb21ldHJ5UmVjb3JkIDxTZXJpYWxpemF0aW9uLCBDcmVhdGUsIERyb3A+
CgoKCgotIF9JX1VzaW5nOwoKLSBzZXRYOiAoaW50KXggWTogKGludCl5OwoKCi0gc2V0V2lkdGg6
ICh1bnNpZ25lZCl3IEhlaWdodDogKHVuc2lnbmVkKWg7CgoKLSAoQk9PTClnZXRTaXplRmxhZzsK
CgotIChCT09MKWdldFBvc2l0aW9uRmxhZzsKCgotICh1bnNpZ25lZClnZXRXaWR0aDsKCgoKCgoK
CgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAg
ICAgICAgICAgUGFnZSAgIDkzCgoKLSAodW5zaWduZWQpZ2V0SGVpZ2h0OwoKCi0gKGludClnZXRY
OwoKCi0gKGludClnZXRZOwpAZW5kCgpAcHJvdG9jb2wgQXJjaGl2ZWRHZW9tZXRyeVdpZGdldCA8
V2lkZ2V0PgoKCgoKCi0gX0lfQ3JlYXRpbmc7CisgY3JlYXRlOiAoaWQgPFpvbmU+KWFab25lIHNl
dFdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lOwoKCi0gc2V0V2lu
ZG93R2VvbWV0cnlSZWNvcmROYW1lOiAoY29uc3QgY2hhciAqKXJlY29yZE5hbWU7CgoKLSBzZXRT
YXZlU2l6ZUZsYWc6IChCT09MKXNhdmVTaXplRmxhZzsKCi0gbG9hZFdpbmRvd0dlb21ldHJ5UmVj
b3JkOwotIHJlZ2lzdGVyQW5kTG9hZDsKLSB1cGRhdGVTaXplOwotIF9JX1VzaW5nOwotICh2b2lk
KXVwZGF0ZUFyY2hpdmVyOiBhcmNoaXZlcjsKQGVuZAoKQHByb3RvY29sIEZyYW1lIDxBcmNoaXZl
ZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+CgoKCgoKCgotIF9JX0NyZWF0aW5nOwoKLSBzZXRC
b3JkZXJXaWR0aDogKGludCl3aWR0aDsKCgotIHNldFJlbGllZkZsYWc6IChCT09MKXJlbGllZkZs
YWc7Ci0gX0lfVXNpbmc7CgotICh2b2lkKXdpdGhkcmF3OwoKCi0gKHZvaWQpZGVpY29uaWZ5OwpA
ZW5kCgpAcHJvdG9jb2wgQ2FudmFzIDxBcmNoaXZlZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+
CgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0u
bWkgICAgICAgICAgICAgIFBhZ2UgICA5NAoKCgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoK
LSBhZGRXaWRnZXQ6IHdpZGdldCBYOiAoaW50KXggWTogKGludCl5IGNlbnRlckZsYWc6IChCT09M
KWNlbnRlckZsYWc7CgoKLSByZW1vdmVXaWRnZXQ6IHdpZGdldDsKCgotIGNoZWNrR2VvbWV0cnk6
IGZyYW1lOwpAZW5kCgpAcHJvdG9jb2wgUHJvYmVDYW52YXMgPENhbnZhcywgQ1JFQVRBQkxFPgoK
CgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0SG9yaXpvbnRhbFNjcm9sbGJhckZsYWc6IChCT09MKWhv
cml6b250YWxTY3JvbGJhckZsYWc7CkBlbmQKCkBwcm90b2NvbCBHcmFwaEVsZW1lbnQgPENyZWF0
ZSwgRHJvcCwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRPd25lckdyYXBoOiBv
d25lckdyYXBoOwoKKyBjcmVhdGVPd25lckdyYXBoOiBvd25lckdyYXBoOwotIF9JX1VzaW5nOwoK
LSAodm9pZClzZXRMYWJlbDogKGNvbnN0IGNoYXIgKilsYWJlbDsKCgotICh2b2lkKXNldENvbG9y
OiAoY29uc3QgY2hhciAqKWNvbG9yTmFtZTsKCgotICh2b2lkKXNldERhc2hlczogKGludClkYXNo
ZXNWYWw7CgoKLSAodm9pZClzZXRTeW1ib2w6IChjb25zdCBjaGFyICopc3ltYm9sOwoKCi0gKHZv
aWQpc2V0U3ltYm9sU2l6ZTogKHVuc2lnbmVkKXNpemU7CgoKLSAodm9pZClhZGRYOiAoZG91Ymxl
KXggWTogKGRvdWJsZSl5OwoKCi0gKHZvaWQpcmVzZXREYXRhOwoKCi0gc2V0V2lkdGg6ICh1bnNp
Z25lZCl3OwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJT
d2FybS5taSAgICAgICAgICAgICAgUGFnZSAgIDk1CgoKQGVuZAoKQHByb3RvY29sIEdyYXBoIDxB
cmNoaXZlZEdlb21ldHJ5V2lkZ2V0LCBDUkVBVEFCTEU+CiMgMjY3ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvZ3VpLmgiCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotIHNldFRpdGxlOiAo
Y29uc3QgY2hhciAqKXRpdGxlOwoKLSBzZXRBeGlzTGFiZWxzWDogKGNvbnN0IGNoYXIgKil4bCBZ
OiAoY29uc3QgY2hhciAqKXlsOwoKLSAoaWQgPEdyYXBoRWxlbWVudD4pY3JlYXRlRWxlbWVudDsK
Ci0gKHZvaWQpc2V0U2NhbGVNb2RlWDogKEJPT0wpeHMgWTogKEJPT0wpeXM7CgotICh2b2lkKXNl
dFJhbmdlc1hNaW46IChkb3VibGUpbWlueCBNYXg6KGRvdWJsZSltYXh4OwoKLSAodm9pZClzZXRS
YW5nZXNZTWluOiAoZG91YmxlKW1pbnkgTWF4Oihkb3VibGUpbWF4eTsKCi0gKHZvaWQpc2V0UmFu
Z2VzWE1pbjogKGRvdWJsZSltaW54IE1heDooZG91YmxlKW1heHggWU1pbjogKGRvdWJsZSltaW55
IE1heDogKGRvdWJsZSltYXh5OwpAZW5kCgoKQHByb3RvY29sIEhpc3RvZ3JhbSA8QXJjaGl2ZWRH
ZW9tZXRyeVdpZGdldCwgQ1JFQVRBQkxFPgoKCgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0Qmlu
Q291bnQ6ICh1bnNpZ25lZCluOwotIF9JX1VzaW5nOwoKCi0gKHZvaWQpc2V0Q29sb3JzOiAoY29u
c3QgY2hhciAqIGNvbnN0ICopYyBjb3VudDogKHVuc2lnbmVkKWNvdW50OwoKCgotICh2b2lkKXNl
dExhYmVsczogKGNvbnN0IGNoYXIgKiBjb25zdCAqKWwgY291bnQ6ICh1bnNpZ25lZCljb3VudDsK
CgotIHNldFRpdGxlOiAoY29uc3QgY2hhciAqKXRpdGxlOwoKCi0gKHZvaWQpc2V0QmFyV2lkdGg6
IChkb3VibGUpc3RlcDsKCgoKLSAodm9pZClzZXRYYXhpc01pbjogKGRvdWJsZSltaW4gbWF4OiAo
ZG91YmxlKW1heCBzdGVwOiAoZG91YmxlKXN0ZXA7CgoKLSAodm9pZClzZXRYYXhpc01pbjogKGRv
dWJsZSltaW4gbWF4OiAoZG91YmxlKW1heCBzdGVwOiAoZG91YmxlKXN0ZXAgcHJlY2lzaW9uOiAo
dW5zaWduZWQpcHJlY2lzaW9uOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
IFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA5NgoKCgotIHNldEF4aXNM
YWJlbHNYOiAoY29uc3QgY2hhciAqKXhsIFk6IChjb25zdCBjaGFyICopeWw7CgoKLSAodm9pZClz
ZXRBY3RpdmVPdXRsaWVyVGV4dDogKHVuc2lnbmVkKW91dGxpZXJzIGNvdW50OiAodW5zaWduZWQp
Y291bnQ7CgoKLSAodm9pZCloaWRlTGVnZW5kOwoKCi0gKHZvaWQpZHJhd0hpc3RvZ3JhbVdpdGhJ
bnQ6IChpbnQgKilwb2ludHM7CgoKLSAodm9pZClkcmF3SGlzdG9ncmFtV2l0aERvdWJsZTogKGRv
dWJsZSAqKXBvaW50czsKCgotICh2b2lkKWRyYXdIaXN0b2dyYW1XaXRoSW50OiAoaW50ICopcG9p
bnRzIGF0TG9jYXRpb25zOiAoZG91YmxlICopbG9jYXRpb25zOwoKCi0gKHZvaWQpZHJhd0hpc3Rv
Z3JhbVdpdGhEb3VibGU6IChkb3VibGUgKilwb2ludHMgYXRMb2NhdGlvbnM6IChkb3VibGUgKils
b2NhdGlvbnM7CgotICh2b2lkKXNldHVwWm9vbVN0YWNrOwotICh2b2lkKXNldHVwQWN0aXZlT3V0
bGllck1hcmtlcjsKLSAodm9pZClzZXR1cEFjdGl2ZUl0ZW1JbmZvOwpAZW5kCgpAcHJvdG9jb2wg
TGFiZWwgPFdpZGdldCwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoK
LSBzZXRUZXh0OiAoY29uc3QgY2hhciAqKXRleHQ7CkBlbmQKCkBwcm90b2NvbCBDbGFzc0Rpc3Bs
YXlMYWJlbCA8TGFiZWwsIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsK
QGVuZAoKQHByb3RvY29sIFZhclByb2JlTGFiZWwgPExhYmVsLCBDUkVBVEFCTEU+CgoKCi0gX0lf
Q3JlYXRpbmc7CkBlbmQKCkBwcm90b2NvbCBDb21wbGV0ZVByb2JlRGlzcGxheUxhYmVsIDxMYWJl
bCwgQ1JFQVRBQkxFPgoKCgoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBw
bE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgICA5NwoKCgotIF9JX0NyZWF0aW5n
OwoKLSBzZXRUYXJnZXRXaWRnZXQ6IHRhcmdldFdpZGdldDsKCgotIHNldFByb2JlZE9iamVjdDog
cHJvYmVkT2JqZWN0OwotIF9JX1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgQnV0dG9uIDxXaWRnZXQs
IENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gc2V0VGV4dDogKGNv
bnN0IGNoYXIgKil0ZXh0OwoKCi0gKHZvaWQpc2V0QnV0dG9uVGFyZ2V0OiB0YXJnZXQgbWV0aG9k
OiAoU0VMKW1ldGhvZDsKQGVuZAoKQHByb3RvY29sIENsYXNzRGlzcGxheUhpZGVCdXR0b24gPEJ1
dHRvbiwgQ1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKLSBzZXRTdWJXaWRnZXQ6IHN1Yldp
ZGdldDsKLSBzZXRVc2VyOiB1c2VyOwotIHNldE93bmVyOiBvd25lcjsKLSBfSV9Vc2luZzsKQGVu
ZAoKQHByb3RvY29sIFNpbXBsZVByb2JlRGlzcGxheUhpZGVCdXR0b24gPEJ1dHRvbiwgQ1JFQVRB
QkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKLSBzZXRQcm9iZURpc3BsYXk6IHByb2JlRGlzcGxheTsK
QGVuZAoKQHByb3RvY29sIFN1cGVyQnV0dG9uIDxCdXR0b24sIENSRUFUQUJMRT4KCgoKLSBfSV9D
cmVhdGluZzsKLSBzZXRTdXBlcldpZGdldDogKGlkIDxXaWRnZXQ+KXN1cGVyV2lkZ2V0OwotIHNl
dE93bmVyOiAoaWQgPFdpZGdldD4pb3duZXI7Ci0gc2V0VXNlcjogdXNlcjsKLSBfSV9Vc2luZzsK
QGVuZAoKQHByb3RvY29sIElucHV0V2lkZ2V0IDxXaWRnZXQ+CgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAg
OTgKCgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKGNvbnN0IGNoYXIgKilnZXRW
YWx1ZTsKCgoKLSAodm9pZClzZXRWYWx1ZTogKGNvbnN0IGNoYXIgKil2OwoKCi0gKHZvaWQpbGlu
a1ZhcmlhYmxlSW50OiAoaW50ICopcDsKCgotICh2b2lkKWxpbmtWYXJpYWJsZURvdWJsZTogKGRv
dWJsZSAqKXA7CgoKLSAodm9pZClsaW5rVmFyaWFibGVCb29sZWFuOiAodW5zaWduZWQgKilwOwpA
ZW5kCgpAcHJvdG9jb2wgRW50cnkgPElucHV0V2lkZ2V0LCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3Jl
YXRpbmc7Ci0gX0lfVXNpbmc7CgotIHNldEhlaWdodDogKHVuc2lnbmVkKWg7CkBlbmQKCkBwcm90
b2NvbCBNZXNzYWdlUHJvYmVFbnRyeSA8RW50cnksIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGlu
ZzsKCi0gc2V0SWRGbGFnOiAoQk9PTClpZEZsYWc7CgoKLSBzZXRBcmc6IChpbnQpYXJnOwotIF9J
X1VzaW5nOwpAZW5kCgpAcHJvdG9jb2wgVmFyUHJvYmVFbnRyeSA8RW50cnksIENSRUFUQUJMRT4K
CgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0SW50ZXJhY3RpdmVGbGFnOiAoQk9PTClpbnRlcmFjdGl2
ZUZsYWc7CgoKLSBzZXRPd25lcjogb3duZXI7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAg
ICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAgOTkKCgoKCi0g
c2V0VmFyUHJvYmU6IHZhclByb2JlOwotIF9JX1VzaW5nOwotIGdldFZhclByb2JlOwpAZW5kCgpA
cHJvdG9jb2wgQnV0dG9uUGFuZWwgPEZyYW1lLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7
Ci0gX0lfVXNpbmc7CgotICh2b2lkKXNldEJ1dHRvblRhcmdldDogdGFyZ2V0OwoKCi0gKHZvaWQp
YWRkQnV0dG9uTmFtZTogKGNvbnN0IGNoYXIgKiluYW1lIHRhcmdldDogdGFyZ2V0IG1ldGhvZDog
KFNFTClzZWw7CgoKLSAodm9pZClhZGRCdXR0b25OYW1lOiAoY29uc3QgY2hhciAqKW5hbWUgbWV0
aG9kOiAoU0VMKXNlbDsKQGVuZAoKQHByb3RvY29sIEZvcm0gPFdpZGdldCwgQ1JFQVRBQkxFPgoK
CgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5nOwoKLSAodm9pZClzZXRFbnRyeVdpZHRoOiAodW5z
aWduZWQpZXc7CgoKLSAodm9pZClhZGRMaW5lTmFtZTogKGNvbnN0IGNoYXIgKiluIEJvb2xlYW46
ICh1bnNpZ25lZCAqKXA7CgoKLSAodm9pZClhZGRMaW5lTmFtZTogKGNvbnN0IGNoYXIgKiluIElu
dDogKGludCAqKXA7CgoKLSAodm9pZClhZGRMaW5lTmFtZTogKGNvbnN0IGNoYXIgKiluIERvdWJs
ZTogKGRvdWJsZSAqKXA7CkBlbmQKCkBwcm90b2NvbCBDaGVja0J1dHRvbiA8SW5wdXRXaWRnZXQs
IENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKEJPT0wpZ2V0Qm9v
bFZhbHVlOwoKCi0gc2V0Qm9vbFZhbHVlOiAoQk9PTCl2OwpAZW5kCgp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgQ29sb3I7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNl
cnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMDAKCgp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgUGl4ZWxWYWx1ZTsKCkBwcm90b2NvbCBDb2xvcm1hcCA8Q3JlYXRlLCBDUkVBVEFCTEU+CgoK
CgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKFBpeGVsVmFsdWUgKiltYXA7CgoKLSAo
UGl4ZWxWYWx1ZSlibGFjazsKCgotIChQaXhlbFZhbHVlKXdoaXRlOwoKCgotIChCT09MKXNldENv
bG9yOiAoQ29sb3IpYyBUb1JlZDogKGRvdWJsZSlyIEdyZWVuOiAoZG91YmxlKWcgQmx1ZTogKGRv
dWJsZSliOwoKCi0gKEJPT0wpc2V0Q29sb3I6IChDb2xvciljIFRvTmFtZTogKGNvbnN0IGNoYXIg
Kiljb2xvck5hbWU7CgoKLSAoQk9PTClzZXRDb2xvcjogKENvbG9yKWMgVG9HcmV5OiAoZG91Ymxl
KWc7CgoKLSAodm9pZCl1bnNldENvbG9yOiAoQ29sb3IpYzsKQGVuZAoKQGNsYXNzIFJhc3RlcjsK
CkBwcm90b2NvbCBEcmF3ZXIKCgoKCi0gX0lfVXNpbmc7Ci0gKHZvaWQpZHJhd1g6IChpbnQpeCBZ
OiAoaW50KXk7CkBlbmQKCkBwcm90b2NvbCBSYXN0ZXIgPEFyY2hpdmVkR2VvbWV0cnlXaWRnZXQs
IENSRUFUQUJMRT4KCgoKCgoKCi0gX0lfQ3JlYXRpbmc7Ci0gX0lfVXNpbmc7CgotIHNldENvbG9y
bWFwOiAoaWQgPENvbG9ybWFwPiljOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAg
ICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgMTAxCgoKCgotICh2b2lk
KWRyYXdQb2ludFg6IChpbnQpeCBZOiAoaW50KXkgQ29sb3I6IChDb2xvciljOwoKCi0gKHZvaWQp
ZHJhd1NlbGY7CgoKLSAodm9pZClzZXRCdXR0b246IChpbnQpbiBDbGllbnQ6IGMgTWVzc2FnZTog
KFNFTClzZWw7CgoKLSAodm9pZClmaWxsUmVjdGFuZ2xlWDA6IChpbnQpeDAgWTA6IChpbnQpeTAg
WDE6IChpbnQpeDEgWTE6IChpbnQpeTEgQ29sb3I6IChDb2xvciljb2xvcjsKCgotICh2b2lkKWVs
bGlwc2VYMDogKGludCl4MCBZMDogKGludCl5MCBYMTogKGludCl4MSBZMTogKGludCl5MQogICAg
ICAgICAgICBXaWR0aDogKHVuc2lnbmVkKXBlbldpZHRoIENvbG9yOiAoQ29sb3IpYzsKCgotICh2
b2lkKWxpbmVYMDogKGludCl4MCBZMDogKGludCl5MCBYMTogKGludCl4MSBZMTogKGludCl5MQog
ICAgICAgICBXaWR0aDogKHVuc2lnbmVkKXBlbldpZHRoIENvbG9yOiAoQ29sb3IpYzsKCgotICh2
b2lkKXJlY3RhbmdsZVgwOiAoaW50KXgwIFkwOiAoaW50KXkwIFgxOiAoaW50KXgxIFkxOiAoaW50
KXkxCiAgICAgICAgICAgICAgV2lkdGg6ICh1bnNpZ25lZClwZW5XaWR0aCBDb2xvcjogKENvbG9y
KWM7CgoKLSAodm9pZClkcmF3OiAoaWQgPERyYXdlcj4pZHJhd2VyIFg6IChpbnQpeCBZOiAoaW50
KXk7CgoKLSAodm9pZCllcmFzZTsKQGVuZAoKQHByb3RvY29sIFpvb21SYXN0ZXIgPFJhc3Rlciwg
Q1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKHZvaWQpaW5jcmVh
c2Vab29tOwoKCi0gKHZvaWQpZGVjcmVhc2Vab29tOwoKCi0gKHVuc2lnbmVkKWdldFpvb21GYWN0
b3I7CgoKLSBzZXRab29tRmFjdG9yOiAodW5zaWduZWQpejsKCgotICh2b2lkKWhhbmRsZUNvbmZp
Z3VyZVdpZHRoOiAodW5zaWduZWQpbmV3V2lkdGggSGVpZ2h0OiAodW5zaWduZWQpbmV3SGVpZ2h0
OwpAZW5kCgpAcHJvdG9jb2wgUGl4bWFwIDxEcmF3ZXIsIENyZWF0ZSwgRHJvcCwgQ1JFQVRBQkxF
PgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5t
aSAgICAgICAgICAgICAgUGFnZSAgMTAyCgoKCgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldEZpbGU6
IChjb25zdCBjaGFyICopZmlsZW5hbWU7CgoKLSBzZXREaXJlY3Rvcnk6IChjb25zdCBjaGFyICop
cGF0aDsKCgotIHNldFdpZGdldDogKGlkIDxXaWRnZXQ+KXdpZGdldDsKCgoKLSBzZXREZWNvcmF0
aW9uc0ZsYWc6IChCT09MKWRlY29yYXRpb25zRmxhZzsKLSBfSV9Vc2luZzsKCgotICh2b2lkKXNl
dFJhc3RlcjogKGlkIDxSYXN0ZXI+KXJhc3RlcjsKCgotICh1bnNpZ25lZClnZXRXaWR0aDsKCgot
ICh1bnNpZ25lZClnZXRIZWlnaHQ7CgoKLSAodm9pZClzYXZlOiAoY29uc3QgY2hhciAqKWZpbGVu
YW1lOwpAZW5kCgpAcHJvdG9jb2wgQ2FudmFzQWJzdHJhY3RJdGVtIDxDcmVhdGUsIERyb3A+CgoK
Ci0gX0lfQ3JlYXRpbmc7CgotICh2b2lkKWNyZWF0ZUl0ZW07CgoKLSAodm9pZCljcmVhdGVCaW5k
aW5nczsKCgotIHNldENhbnZhczogKGlkIDxDYW52YXM+KWNhbnZhczsKLSBfSV9Vc2luZzsKCi0g
KHZvaWQpc2V0VGFyZ2V0SWQ6IHRhcmdldDsKCgotICh2b2lkKXNldENsaWNrU2VsOiAoU0VMKXNl
bDsKCgotICh2b2lkKXNldE1vdmVTZWw6IChTRUwpc2VsOwoKCgoKCgoKCgoyMDAxLTA4LTI0IDAx
OjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAx
MDMKCgotICh2b2lkKXNldFBvc3RNb3ZlU2VsOiAoU0VMKXNlbDsKCgotICh2b2lkKWNsaWNrZWQ7
CgoKLSAodm9pZClpbml0aWF0ZU1vdmVYOiAobG9uZylkZWx0YVggWTogKGxvbmcpZGVsdGFZOwoK
Ci0gKGlkIDxDYW52YXM+KWdldENhbnZhczsKQGVuZAoKQHByb3RvY29sIENhbnZhc0l0ZW0gPENh
bnZhc0Fic3RyYWN0SXRlbSwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwotIF9JX1VzaW5n
OwpAZW5kCgpAcHJvdG9jb2wgQ29tcG9zaXRlSXRlbSA8Q2FudmFzQWJzdHJhY3RJdGVtPgoKCgoK
LSBfSV9DcmVhdGluZzsKLSBfSV9Vc2luZzsKCi0gKHZvaWQpbW92ZVg6IChsb25nKWRlbHRhWCBZ
OiAobG9uZylkZWx0YVk7CkBlbmQKCkBwcm90b2NvbCBOb2RlSXRlbSA8Q29tcG9zaXRlSXRlbSwg
Q1JFQVRBQkxFPgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0U3RyaW5nOiAoY29uc3QgY2hhciAq
KWxhYmVsOwoKCi0gc2V0Rm9udDogKGNvbnN0IGNoYXIgKilmb250OwoKCi0gc2V0WDogKGludCl4
IFk6IChpbnQpeTsKLSBfSV9Vc2luZzsKCi0gKHZvaWQpcmVzZXRTdHJpbmc6IChjb25zdCBjaGFy
ICopc3RyaW5nOwoKCi0gKGludClnZXRYOwoKCi0gKGludClnZXRZOwoKCgoKCgoKCgoyMDAxLTA4
LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQ
YWdlICAxMDQKCgotICh2b2lkKXNldENvbG9yOiAoY29uc3QgY2hhciAqKWFDb2xvcjsKCgotICh2
b2lkKXNldEJvcmRlckNvbG9yOiAoY29uc3QgY2hhciAqKWFDb2xvcjsKCgotICh2b2lkKXNldEJv
cmRlcldpZHRoOiAoaW50KWFWYWw7CgoKLSAodm9pZCljcmVhdGVUZXh0OwoKCi0gKHZvaWQpY3Jl
YXRlUGFkZGVkVGV4dDsKQGVuZAoKQHByb3RvY29sIExpbmtJdGVtIDxDb21wb3NpdGVJdGVtLCBD
UkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldEZyb206IChpZCA8Tm9kZUl0ZW0+KWZy
b207CgoKLSBzZXRUbzogKGlkIDxOb2RlSXRlbT4pdG87CgoKLSBzZXREaXJlY3RlZEZsYWc6IChC
T09MKWRpcmVjdGVkRmxhZzsKLSBfSV9Vc2luZzsKCi0gKHZvaWQpc2V0Q29sb3I6IChjb25zdCBj
aGFyICopYUNvbG9yOwoKCi0gKHZvaWQpdXBkYXRlOwpAZW5kCgpAcHJvdG9jb2wgU2NoZWR1bGVJ
dGVtIDxDb21wb3NpdGVJdGVtLCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldFNj
aGVkdWxlOiBzY2hlZHVsZTsKCgotIHNldFN0ZXA6ICh1bnNpZ25lZClzdGVwOwoKCi0gc2V0WDog
KGludCl4IFk6IChpbnQpeTsKLSBfSV9Vc2luZzsKCi0gKHZvaWQpdXBkYXRlOwoKCi0gKHZvaWQp
YXQ6ICh0aW1ldmFsX3QpdHZhbCBvd25lcjogb3duZXIgd2lkZ2V0OiB3aWRnZXQgeDogKGludClz
b3VyY2VYIHk6IChpbnQpc291cmNlWTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAg
ICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMDUKCgoKLSAodm9p
ZCl0cmlnZ2VyOiB3aWRnZXQgWDogKGludCl4IFk6IChpbnQpeTsKQGVuZAoKQHByb3RvY29sIE92
YWxOb2RlSXRlbSA8Tm9kZUl0ZW0sIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsKQGVuZAoK
QHByb3RvY29sIFJlY3RhbmdsZU5vZGVJdGVtIDxOb2RlSXRlbSwgQ1JFQVRBQkxFPgoKCgotIF9J
X0NyZWF0aW5nOwpAZW5kCgpAcHJvdG9jb2wgVGV4dEl0ZW0gPENhbnZhc0l0ZW0sIENSRUFUQUJM
RT4KCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0WDogKGludCl4IFk6IChpbnQpeTsKCgotIHNldFRl
eHQ6IChjb25zdCBjaGFyICopdGV4dDsKCgotIHNldEZvbnQ6IChjb25zdCBjaGFyICopZm9udDsK
CgotIHNldENlbnRlckZsYWc6IChCT09MKWNlbnRlckZsYWc7Ci0gX0lfVXNpbmc7CkBlbmQKCkBw
cm90b2NvbCBDaXJjbGUgPENhbnZhc0l0ZW0sIENSRUFUQUJMRT4KCgoKLSBfSV9DcmVhdGluZzsK
Ci0gc2V0WDogKGludCl4IFk6IChpbnQpeTsKCgotIHNldFJhZGl1czogKHVuc2lnbmVkKXI7Ci0g
X0lfVXNpbmc7CkBlbmQKCkBwcm90b2NvbCBSZWN0YW5nbGUgPENhbnZhc0l0ZW0sIENSRUFUQUJM
RT4KCgoKLSBfSV9DcmVhdGluZzsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAg
ICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMDYKCgotIHNldFRYOiAo
aW50KXR4IFRZOiAoaW50KXR5IExYOiAoaW50KWx4IExZOiAoaW50KWx5OwpAZW5kCgpAcHJvdG9j
b2wgTGluZSA8Q2FudmFzSXRlbSwgQ1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwoKLSBzZXRU
WDogKGludCl0eCBUWTogKGludCl0eSBMWDogKGludClseCBMWTogKGludClseTsKQGVuZAojIDkx
NSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2d1aS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS90a29iamMvY29tbW9uLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5j
bHVkZS9vYmpjL29iamMuaCIgMQojIDcgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS90a29iamMv
Y29tbW9uLmgiIDIKCnZvaWQgdGtvYmpjX2RyYWdBbmREcm9wIChpZCBzb3VyY2UsIGlkIG9iamVj
dCk7CnZvaWQgdGtvYmpjX2RyYWdBbmREcm9wQXJnIChpZCBzb3VyY2UsIGlkIG9iamVjdCwgaW50
IGFyZyk7CnZvaWQgdGtvYmpjX2RyYWdBbmREcm9wVGFyZ2V0IChpZCB0YXJnZXQsIGlkIG9iamVj
dCk7CgppbnQgdGtvYmpjX2RvT25lRXZlbnRTeW5jICh2b2lkKTsKaW50IHRrb2JqY19kb09uZUV2
ZW50QXN5bmMgKHZvaWQpOwoKdm9pZCB0a29iamNfYmluZEJ1dHRvbjNUb1NwYXduIChpZCB3aWRn
ZXQsIGlkIHNlbGYsIGludCBmb2N1c0ZsYWcpOwp2b2lkIHRrb2JqY19iaW5kQnV0dG9uM1RvQXJn
U3Bhd24gKGlkIHdpZGdldCwgaWQgc2VsZiwgaW50IHdoaWNoKTsKCnZvaWQgdGtvYmpjX3JpbmdC
ZWxsICh2b2lkKTsKCmlkIHRrb2JqY19kcmFnX2FuZF9kcm9wX29iamVjdCAodm9pZCk7Cgp2b2lk
IHRrb2JqY19jb25maWd1cmVTcGVjaWFsQml0bWFwIChpZCB3aWRnZXQpOwoKdm9pZCB0a29iamNf
dXBkYXRlICh2b2lkKTsKdm9pZCB0a29iamNfcmVsZWFzZUFuZFVwZGF0ZSAodm9pZCk7CnZvaWQg
dGtvYmpjX3VwZGF0ZUlkbGVUYXNrcyAoaW50IGhvbGQpOwoKY29uc3QgY2hhciAqdGtvYmpjX2R5
bmFtaWNFdmFsIChjb25zdCBjaGFyICpjbWQpOwoKdm9pZCB0a29iamNfZm9jdXMgKGlkIHdpZGdl
dCk7Cgp2b2lkIHRrb2JqY19tYWtlRnJhbWUgKGlkIHdpZGdldCk7CnZvaWQgdGtvYmpjX3BhY2sg
KGlkIHdpZGdldCk7Cgpjb25zdCBjaGFyICp0a29iamNfY3JlYXRlVGV4dCAoaWQgYVpvbmUsIGlk
IHdpZGdldCwgaW50IHgsIGludCB5LCBjb25zdCBjaGFyICp0ZXh0LCBjb25zdCBjaGFyICpmb250
LCBCT09MIGNlbnRlckZsYWcpOwojIDkxNiAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2d1aS5o
IiAyCmV4dGVybiB2b2lkIGluaXRUa09iamMgKGlkIGFyZ3VtZW50cyk7CiMgOTM3ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZ3VpLmgiCkBjbGFzcyBCdXR0b247CkBjbGFzcyBCdXR0b25QYW5l
bDsKQGNsYXNzIENoZWNrQnV0dG9uOwpAY2xhc3MgQ2xhc3NEaXNwbGF5SGlkZUJ1dHRvbjsKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAg
ICAgICAgICAgIFBhZ2UgIDEwNwoKCkBjbGFzcyBDbGFzc0Rpc3BsYXlMYWJlbDsKQGNsYXNzIENs
YXNzRGlzcGxheVdpZGdldDsKQGNsYXNzIENvbXBsZXRlUHJvYmVEaXNwbGF5TGFiZWw7CkBjbGFz
cyBGb3JtOwpAY2xhc3MgRnJhbWU7CkBjbGFzcyBMYWJlbDsKQGNsYXNzIE1lc3NhZ2VQcm9iZUVu
dHJ5OwpAY2xhc3MgUHJvYmVDYW52YXM7CkBjbGFzcyBTaW1wbGVQcm9iZURpc3BsYXlIaWRlQnV0
dG9uOwpAY2xhc3MgU3VwZXJCdXR0b247CkBjbGFzcyBWYXJQcm9iZUVudHJ5OwpAY2xhc3MgVmFy
UHJvYmVMYWJlbDsKQGNsYXNzIFdpZGdldDsKCkBjbGFzcyBDb2xvcm1hcDsKQGNsYXNzIEVudHJ5
OwpAY2xhc3MgR3JhcGg7CkBjbGFzcyBDYW52YXM7CkBjbGFzcyBDYW52YXNJdGVtOwpAY2xhc3Mg
SGlzdG9ncmFtOwpAY2xhc3MgTGlua0l0ZW07CkBjbGFzcyBPdmFsTm9kZUl0ZW07CkBjbGFzcyBQ
aXhtYXA7CkBjbGFzcyBSZWN0YW5nbGVOb2RlSXRlbTsKQGNsYXNzIFJhc3RlcjsKQGNsYXNzIFpv
b21SYXN0ZXI7CgpAY2xhc3MgQ2lyY2xlOwpAY2xhc3MgTGluZTsKQGNsYXNzIE5vZGVJdGVtOwpA
Y2xhc3MgUmVjdGFuZ2xlOwpAY2xhc3MgU2NoZWR1bGVJdGVtOwpAY2xhc3MgVGV4dEl0ZW07CiMg
MTEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29sc2d1aS5oIiAyCiMgMSAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL2V4dGVybnZhci5oIiAxCiMgMTIgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9zaW10b29sc2d1aS5oIiAyCgpAcHJvdG9jb2wgV2luZG93R2VvbWV0cnlSZWNvcmRO
YW1lCgoKCgoKLSBfSV9DcmVhdGluZzsKCgoKLSBzZXRXaW5kb3dHZW9tZXRyeVJlY29yZE5hbWU6
IChjb25zdCBjaGFyICopd2luZG93R2VvbWV0cnlSZWNvcmROYW1lOwoKLSBzZXRTYXZlU2l6ZUZs
YWc6IChCT09MKXNhdmVTaXplRmxhZzsKCgoKCgpAZW5kCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMDgK
CgoKQHByb3RvY29sIENvbXBvc2l0ZVdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZSA8V2luZG93R2Vv
bWV0cnlSZWNvcmROYW1lPgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0V2luZG93R2VvbWV0cnlS
ZWNvcmROYW1lRm9yQ29tcG9uZW50OiAoY29uc3QgY2hhciAqKWNvbXBvbmVudE5hbWUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6IHdpZGdldDsKCgoKCgoKCkBlbmQK
CgpAcHJvdG9jb2wgQ29udHJvbFBhbmVsIDxTd2FybU9iamVjdCwgUkVUVVJOQUJMRT4KCgoKCgot
IF9JX0NyZWF0aW5nOwoKLSBfSV9Vc2luZzsKCgoKLSAoaWQgPFN5bWJvbD4pZ2V0U3RhdGU7Cgot
IHNldFN0YXRlOiAoaWQgPFN5bWJvbD4pczsKCi0gc3RhcnRJbkFjdGl2aXR5OiAoaWQgPFN3YXJt
QWN0aXZpdHk+KWFjdGl2aXR5SUQ7CgoKLSBzZXRTdGF0ZVJ1bm5pbmc7CgoKCgoKLSBzZXRTdGF0
ZVN0b3BwZWQ7CgoKLSBzZXRTdGF0ZVN0ZXBwaW5nOwoKCi0gc2V0U3RhdGVRdWl0OwoKCi0gc2V0
U3RhdGVOZXh0VGltZTsKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxP
YnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMDkKCgoKLSBzZXRTdGF0ZVNhdmU7
CgpAZW5kCgpAcHJvdG9jb2wgQWN0aW9uQ2FjaGUgPENvbXBvc2l0ZVdpbmRvd0dlb21ldHJ5UmVj
b3JkTmFtZSwgU3dhcm1PYmplY3QsIFJFVFVSTkFCTEU+CgoKCgoKLSBfSV9DcmVhdGluZzsKLSBz
ZXRDb250cm9sUGFuZWw6IChpZCA8Q29udHJvbFBhbmVsPiljcDsKLSBjcmVhdGVQcm9jQ3RybDsK
Ci0gX0lfVXNpbmc7Ci0gc2V0U2NoZWR1bGVDb250ZXh0OiAoaWQgPFN3YXJtPiljb250ZXh0Owot
IGluc2VydEFjdGlvbjogYWN0aW9uSG9sZGVyOwotIGRlbGl2ZXJBY3Rpb25zOwotIHNlbmRBY3Rp
b25PZlR5cGU6IChpZCA8U3ltYm9sPil0eXBlIHRvRXhlY3V0ZTogKGNvbnN0IGNoYXIgKiljbWQ7
Ci0gc2VuZFN0YXJ0QWN0aW9uOwotIHNlbmRTdG9wQWN0aW9uOwotIHNlbmRTdGVwQWN0aW9uOwot
IHNlbmROZXh0QWN0aW9uOwotIHNlbmRRdWl0QWN0aW9uOwotIHZlcmlmeUFjdGlvbnM7CgotIGdl
dFBhbmVsOwoKCgoKCgotIGRvVGtFdmVudHM7Ci0gd2FpdEZvckNvbnRyb2xFdmVudDsKQGVuZAoK
CmV4dGVybiBpZCA8U3ltYm9sPiBDb250cm9sLCBQcm9iaW5nLCBTcGF0aWFsOwoKCmV4dGVybiBp
ZCA8U3ltYm9sPiBJbnZhbGlkQWN0aW9uVHlwZSwgQWN0aW9uVHlwZU5vdEltcGxlbWVudGVkOwoK
CkBwcm90b2NvbCBDb21tb25Qcm9iZURpc3BsYXkgPFN3YXJtT2JqZWN0LCBXaW5kb3dHZW9tZXRy
eVJlY29yZE5hbWU+CgoKCi0gX0lfVXNpbmc7CgoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIx
ICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMTAK
CgoKLSAodm9pZCl1cGRhdGU7CgotIChCT09MKWdldE1hcmtlZEZvckRyb3BGbGFnOwotIGdldFRv
cExldmVsOwpAZW5kCgpAcHJvdG9jb2wgU2luZ2xlUHJvYmVEaXNwbGF5IDxDb21tb25Qcm9iZURp
c3BsYXk+CgoKCi0gX0lfQ3JlYXRpbmc7CgotIHNldFByb2JlZE9iamVjdDogYW5PYmplY3Q7Cgot
IF9JX1VzaW5nOwoKLSBnZXRQcm9iZWRPYmplY3Q7CkBlbmQKCkBwcm90b2NvbCBTaW1wbGVQcm9i
ZURpc3BsYXkgPFNpbmdsZVByb2JlRGlzcGxheSwgUkVUVVJOQUJMRT4KCgoKLSBfSV9DcmVhdGlu
ZzsKCi0gc2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+KXByb2JlTWFwOwotIF9JX1VzaW5nOwpA
ZW5kCgpAcHJvdG9jb2wgUHJvYmVEaXNwbGF5IDxTaW5nbGVQcm9iZURpc3BsYXksIENSRUFUQUJM
RT4KCgoKCgotIF9JX0NyZWF0aW5nOwoKCgoKCi0gc2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+
KXByb2JlTWFwOwoKLSBfSV9Vc2luZzsKQGVuZAoKQHByb3RvY29sIENvbXBsZXRlUHJvYmVEaXNw
bGF5IDxTaW5nbGVQcm9iZURpc3BsYXksIFJFVFVSTkFCTEU+CgoKCgoKQGVuZAoKQHByb3RvY29s
IE11bHRpVmFyUHJvYmVEaXNwbGF5IDxDb21tb25Qcm9iZURpc3BsYXksIENSRUFUQUJMRT4KCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAg
ICAgICAgICAgIFBhZ2UgIDExMQoKCgoKCgoKLSBfSV9DcmVhdGluZzsKCi0gc2V0T2JqZWN0TGlz
dDogKGlkIDxMaXN0PilvYmplY3RMaXN0OwoKCi0gc2V0UHJvYmVNYXA6IChpZCA8UHJvYmVNYXA+
KXByb2JlTWFwOwoKCi0gc2V0T2JqZWN0TmFtZVNlbGVjdG9yOiAoU0VMKW9iamVjdE5hbWVTZWxl
Y3RvcjsKCi0gX0lfVXNpbmc7CkBlbmQKCgpAcHJvdG9jb2wgUHJvYmVEaXNwbGF5TWFuYWdlciA8
U3dhcm1PYmplY3QsIENSRUFUQUJMRT4KCgoKCgotIF9JX1VzaW5nOwotIChCT09MKWdldERyb3BJ
bW1lZGlhdGVseUZsYWc7CgotIChpZCA8UHJvYmVEaXNwbGF5PiljcmVhdGVQcm9iZURpc3BsYXlG
b3I6IGFuT2JqZWN0OwoKLSAoaWQgPFByb2JlRGlzcGxheT4pY3JlYXRlQXJjaGl2ZWRQcm9iZURp
c3BsYXlGb3I6IGFuT2JqZWN0IHZhcmlhYmxlTmFtZTogKGNvbnN0IGNoYXIgKil2YXJpYWJsZU5h
bWU7CgotIChpZCA8UHJvYmVEaXNwbGF5PiljcmVhdGVEZWZhdWx0UHJvYmVEaXNwbGF5Rm9yOiBh
bk9iamVjdDsKCi0gKGlkIDxQcm9iZURpc3BsYXk+KWNyZWF0ZUFyY2hpdmVkRGVmYXVsdFByb2Jl
RGlzcGxheUZvcjogYW5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVOYW1lOiAoY29uc3QgY2hhciAqKXZhcmlhYmxlTmFtZTsKCi0gKGlk
IDxDb21wbGV0ZVByb2JlRGlzcGxheT4pY3JlYXRlQ29tcGxldGVQcm9iZURpc3BsYXlGb3I6IGFu
T2JqZWN0OwoKLSAoaWQgPENvbXBsZXRlUHJvYmVEaXNwbGF5PiljcmVhdGVBcmNoaXZlZENvbXBs
ZXRlUHJvYmVEaXNwbGF5Rm9yOiBhbk9iamVjdCB2YXJpYWJsZU5hbWU6IChjb25zdCBjaGFyICop
dmFyaWFibGVOYW1lOwoKCi0gYWRkUHJvYmVEaXNwbGF5OiAoaWQgPENvbW1vblByb2JlRGlzcGxh
eT4pcHJvYmVEaXNwbGF5OwoKCi0gcmVtb3ZlUHJvYmVEaXNwbGF5OiAoaWQgPENvbW1vblByb2Jl
RGlzcGxheT4pcHJvYmVEaXNwbGF5OwoKCi0gZHJvcFByb2JlRGlzcGxheXNGb3I6IGFuT2JqZWN0
OwoKCgotICh2b2lkKXVwZGF0ZTsKCi0gc2V0RHJvcEltbWVkaWF0ZWx5RmxhZzogKEJPT0wpZHJv
cEltbWVkaWF0ZUZsYWc7CiMgMjc0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHNn
dWkuaCIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dh
cm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDExMgoKCmV4dGVybiBpZCA8UHJvYmVEaXNwbGF5PiBf
Y3JlYXRlUHJvYmVEaXNwbGF5IChpZCBvYmopOwpleHRlcm4gaWQgPENvbXBsZXRlUHJvYmVEaXNw
bGF5PiBfY3JlYXRlQ29tcGxldGVQcm9iZURpc3BsYXkgKGlkIG9iaik7CgpleHRlcm4gaWQgPFBy
b2JlRGlzcGxheT4gY3JlYXRlQXJjaGl2ZWRQcm9iZURpc3BsYXlOYW1lZCAoaWQgb2JqLCBjb25z
dCBjaGFyICpuYW1lKTsKZXh0ZXJuIGlkIDxDb21wbGV0ZVByb2JlRGlzcGxheT4gY3JlYXRlQXJj
aGl2ZWRDb21wbGV0ZVByb2JlRGlzcGxheU5hbWVkIChpZCBvYmosIGNvbnN0IGNoYXIgKm5hbWUp
OwoKZXh0ZXJuIGNvbnN0IGNoYXIgKmJ1aWxkV2luZG93R2VvbWV0cnlSZWNvcmROYW1lIChjb25z
dCBjaGFyICpiYXNlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpjb21wb25lbnROYW1lKTsKQGVuZAoKQHByb3RvY29sIEdV
SUNvbXBvc2l0ZSA8Q29tcG9zaXRlV2luZG93R2VvbWV0cnlSZWNvcmROYW1lPgoKCgotIF9JX1Vz
aW5nOwotICh2b2lkKWVuYWJsZURlc3Ryb3lOb3RpZmljYXRpb246IG5vdGlmaWNhdGlvblRhcmdl
dAogICAgICAgICAgICAgICBub3RpZmljYXRpb25NZXRob2Q6IChTRUwpbm90aWZpY2F0aW9uTWV0
aG9kOwotICh2b2lkKWRpc2FibGVEZXN0cm95Tm90aWZpY2F0aW9uOwpAZW5kCgpAcHJvdG9jb2wg
R1VJU3dhcm0gPFN3YXJtLCBXaW5kb3dHZW9tZXRyeVJlY29yZE5hbWUsIENSRUFUQUJMRT4KIyAz
MTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29sc2d1aS5oIgotIF9JX1VzaW5nOwoK
CgoKLSBnbzsKCi0gKGlkIDxBY3Rpb25DYWNoZT4pZ2V0QWN0aW9uQ2FjaGU7Ci0gKGlkIDxDb250
cm9sUGFuZWw+KWdldENvbnRyb2xQYW5lbDsKQGVuZAoKQHByb3RvY29sIE1lc3NhZ2VQcm9iZVdp
ZGdldCA8Q1JFQVRBQkxFPgoKCgotIF9JX0NyZWF0aW5nOwotIHNldFBhcmVudDogKGlkIDxGcmFt
ZT4pcGFyZW50OwotIHNldE9iamVjdDogb2JqZWN0OwotIHNldFByb2JlOiAoaWQgPFByb2JlPilw
cm9iZTsKCi0gX0lfVXNpbmc7Ci0gKHZvaWQpcGFjazsKQGVuZAoKQHByb3RvY29sIE11bHRpVmFy
UHJvYmVXaWRnZXQgPFN3YXJtT2JqZWN0LCBDUkVBVEFCTEU+CgoKCi0gX0lfQ3JlYXRpbmc7Ci0g
c2V0UGFyZW50OiAoaWQgPEZyYW1lPilwYXJlbnQ7CgoKLSBzZXRGaWVsZExhYmVsaW5nRmxhZzog
KEJPT0wpbGFiZWxpbmdGbGFnOwoKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAg
IFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDExMwoKCi0gc2V0T2JqZWN0
TmFtZVNlbGVjdG9yOiAoU0VMKW9iamVjdE5hbWVTZWxlY3RvcjsKCi0gc2V0T2JqZWN0TGlzdDog
KGlkIDxMaXN0PilvYmplY3RMaXN0OwoKLSBzZXRQcm9iZU1hcDogKGlkIDxQcm9iZU1hcD4pcHJv
YmVNYXA7CgotIF9JX1VzaW5nOwotICh2b2lkKXVwZGF0ZTsKLSAodm9pZClwYWNrOwpAZW5kCgoK
ZXh0ZXJuIGlkIDxQcm9iZURpc3BsYXlNYW5hZ2VyPiBwcm9iZURpc3BsYXlNYW5hZ2VyOwoKCmV4
dGVybiBpZCA8U3ltYm9sPiBDb250cm9sU3RhdGVSdW5uaW5nLCBDb250cm9sU3RhdGVTdG9wcGVk
LAogIENvbnRyb2xTdGF0ZVN0ZXBwaW5nLCBDb250cm9sU3RhdGVOZXh0VGltZSwgQ29udHJvbFN0
YXRlUXVpdDsKCgpleHRlcm4gdm9pZCBpbml0U2ltdG9vbHNHVUkgKHZvaWQpOwoKQGNsYXNzIENv
bnRyb2xQYW5lbDsKQGNsYXNzIEFjdGlvbkNhY2hlOwpAY2xhc3MgUHJvYmVEaXNwbGF5OwpAY2xh
c3MgU2luZ2xlUHJvYmVEaXNwbGF5OwpAY2xhc3MgU2ltcGxlUHJvYmVEaXNwbGF5OwpAY2xhc3Mg
Q29tcGxldGVQcm9iZURpc3BsYXk7CkBjbGFzcyBHVUlDb21wb3NpdGU7CkBjbGFzcyBNdWx0aVZh
clByb2JlRGlzcGxheTsKQGNsYXNzIFByb2JlRGlzcGxheU1hbmFnZXI7CkBjbGFzcyBHVUlTd2Fy
bTsKQGNsYXNzIE1lc3NhZ2VQcm9iZVdpZGdldDsKQGNsYXNzIE11bHRpVmFyUHJvYmVXaWRnZXQ7
CiMgNyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL3NpbXRvb2xzZ3VpL0dVSVN3YXJtLmgiIDIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2FybS5oIiAxCgoKCgoK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS5oIiAxCiMgNyAiL3Vzci9s
b2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm0uaCIgMgojIDEgIi91c3IvbG9jYWwv
c3dhcm0vaW5jbHVkZS9hY3Rpdml0eS9Td2FybVByb2Nlc3MuaCIgMQojIDEyICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvU3dhcm1Qcm9jZXNzLmgiCiMgMSAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2FjdGl2aXR5L1hBY3Rpdml0eS5oIiAxCiMgMTIgIi91c3IvbG9jYWwvc3dh
cm0vaW5jbHVkZS9hY3Rpdml0eS9YQWN0aXZpdHkuaCIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2lu
Y2x1ZGUvZGVmb2JqL0NyZWF0ZS5oIiAxCiMgMTIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9k
ZWZvYmovQ3JlYXRlLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0
b21pemUuaCIgMQojIDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6
ZS5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmQ2xhc3MuaCIgMQoj
IDEyICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiCiMgMSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvT2JqZWN0LmgiIDEKIyAxMyAiL3Vzci9sb2NhbC9z
d2FybS9pbmNsdWRlL2RlZm9iai9EZWZDbGFzcy5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMQojIDM0ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqYy9vYmpjLWFwaS5oIgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBs
T2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgMTE0CgoKIyAxICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLmgiIDEKIyAzNSAiL3Vzci9sb2NhbC9zd2FybS9pbmNs
dWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpj
L2hhc2guaCIgMQojIDM2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5o
IiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiIDEKIyA0MSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvb2JqYy5oIiAxCiMgNDIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpj
L3Roci5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvZXh0ZXJudmFyLmgi
IDEKIyA0MyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiIDIKCgoKCmV4dGVy
biBpbnQgX19vYmpjX3RocmVhZF9leGl0X3N0YXR1czsKIyA1OSAiL3Vzci9sb2NhbC9zd2FybS9p
bmNsdWRlL29iamMvdGhyLmgiCnR5cGVkZWYgdm9pZCAqIG9iamNfdGhyZWFkX3Q7CgoKc3RydWN0
IG9iamNfbXV0ZXgKewogIHZvbGF0aWxlIG9iamNfdGhyZWFkX3Qgb3duZXI7CiAgdm9sYXRpbGUg
aW50IGRlcHRoOwogIHZvaWQgKiBiYWNrZW5kOwp9Owp0eXBlZGVmIHN0cnVjdCBvYmpjX211dGV4
ICpvYmpjX211dGV4X3Q7CgoKc3RydWN0IG9iamNfY29uZGl0aW9uCnsKICB2b2lkICogYmFja2Vu
ZDsKfTsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19jb25kaXRpb24gKm9iamNfY29uZGl0aW9uX3Q7CgoK
b2JqY19tdXRleF90IG9iamNfbXV0ZXhfYWxsb2NhdGUodm9pZCk7CmludCBvYmpjX211dGV4X2Rl
YWxsb2NhdGUob2JqY19tdXRleF90IG11dGV4KTsKaW50IG9iamNfbXV0ZXhfbG9jayhvYmpjX211
dGV4X3QgbXV0ZXgpOwppbnQgb2JqY19tdXRleF91bmxvY2sob2JqY19tdXRleF90IG11dGV4KTsK
aW50IG9iamNfbXV0ZXhfdHJ5bG9jayhvYmpjX211dGV4X3QgbXV0ZXgpOwoKCm9iamNfY29uZGl0
aW9uX3Qgb2JqY19jb25kaXRpb25fYWxsb2NhdGUodm9pZCk7CmludCBvYmpjX2NvbmRpdGlvbl9k
ZWFsbG9jYXRlKG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKaW50IG9iamNfY29uZGl0aW9u
X3dhaXQob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24sIG9iamNfbXV0ZXhfdCBtdXRleCk7Cmlu
dCBvYmpjX2NvbmRpdGlvbl9zaWduYWwob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQg
b2JqY19jb25kaXRpb25fYnJvYWRjYXN0KG9iamNfY29uZGl0aW9uX3QgY29uZGl0aW9uKTsKCgpv
YmpjX3RocmVhZF90IG9iamNfdGhyZWFkX2RldGFjaChTRUwgc2VsZWN0b3IsIGlkIG9iamVjdCwg
aWQgYXJndW1lbnQpOwp2b2lkIG9iamNfdGhyZWFkX3lpZWxkKHZvaWQpOwppbnQgb2JqY190aHJl
YWRfZXhpdCh2b2lkKTsKaW50IG9iamNfdGhyZWFkX3NldF9wcmlvcml0eShpbnQgcHJpb3JpdHkp
OwppbnQgb2JqY190aHJlYWRfZ2V0X3ByaW9yaXR5KHZvaWQpOwp2b2lkICogb2JqY190aHJlYWRf
Z2V0X2RhdGEodm9pZCk7CmludCBvYmpjX3RocmVhZF9zZXRfZGF0YSh2b2lkICp2YWx1ZSk7CgoK
CgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAg
ICAgICAgICAgICBQYWdlICAxMTUKCgpvYmpjX3RocmVhZF90IG9iamNfdGhyZWFkX2lkKHZvaWQp
OwojIDExMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvdGhyLmgiCnR5cGVkZWYgdm9p
ZCAoKm9iamNfdGhyZWFkX2NhbGxiYWNrKSgpOwpvYmpjX3RocmVhZF9jYWxsYmFjayBvYmpjX3Nl
dF90aHJlYWRfY2FsbGJhY2sob2JqY190aHJlYWRfY2FsbGJhY2sgZnVuYyk7CgoKaW50IF9fb2Jq
Y19pbml0X3RocmVhZF9zeXN0ZW0odm9pZCk7CmludCBfX29iamNfZmluaV90aHJlYWRfc3lzdGVt
KHZvaWQpOwoKCmludCBfX29iamNfbXV0ZXhfYWxsb2NhdGUob2JqY19tdXRleF90IG11dGV4KTsK
aW50IF9fb2JqY19tdXRleF9kZWFsbG9jYXRlKG9iamNfbXV0ZXhfdCBtdXRleCk7CmludCBfX29i
amNfbXV0ZXhfbG9jayhvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX211dGV4X3RyeWxv
Y2sob2JqY19tdXRleF90IG11dGV4KTsKaW50IF9fb2JqY19tdXRleF91bmxvY2sob2JqY19tdXRl
eF90IG11dGV4KTsKCgppbnQgX19vYmpjX2NvbmRpdGlvbl9hbGxvY2F0ZShvYmpjX2NvbmRpdGlv
bl90IGNvbmRpdGlvbik7CmludCBfX29iamNfY29uZGl0aW9uX2RlYWxsb2NhdGUob2JqY19jb25k
aXRpb25fdCBjb25kaXRpb24pOwppbnQgX19vYmpjX2NvbmRpdGlvbl93YWl0KG9iamNfY29uZGl0
aW9uX3QgY29uZGl0aW9uLCBvYmpjX211dGV4X3QgbXV0ZXgpOwppbnQgX19vYmpjX2NvbmRpdGlv
bl9icm9hZGNhc3Qob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwppbnQgX19vYmpjX2NvbmRp
dGlvbl9zaWduYWwob2JqY19jb25kaXRpb25fdCBjb25kaXRpb24pOwoKCm9iamNfdGhyZWFkX3Qg
X19vYmpjX3RocmVhZF9kZXRhY2godm9pZCAoKmZ1bmMpKHZvaWQgKmFyZyksIHZvaWQgKmFyZyk7
CmludCBfX29iamNfdGhyZWFkX3NldF9wcmlvcml0eShpbnQgcHJpb3JpdHkpOwppbnQgX19vYmpj
X3RocmVhZF9nZXRfcHJpb3JpdHkodm9pZCk7CnZvaWQgX19vYmpjX3RocmVhZF95aWVsZCh2b2lk
KTsKaW50IF9fb2JqY190aHJlYWRfZXhpdCh2b2lkKTsKb2JqY190aHJlYWRfdCBfX29iamNfdGhy
ZWFkX2lkKHZvaWQpOwppbnQgX19vYmpjX3RocmVhZF9zZXRfZGF0YSh2b2lkICp2YWx1ZSk7CnZv
aWQgKiBfX29iamNfdGhyZWFkX2dldF9kYXRhKHZvaWQpOwojIDM3ICIvdXNyL2xvY2FsL3N3YXJt
L2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9nY2MzL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiMgMzggIi91
c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKIyAxICIvdXNyL2xvY2Fs
L2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcu
aCIgMSAzCiMgMTEwICIvdXNyL2xvY2FsL2djYzMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xp
c3Q7CiMgMzkgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiIDIKCiMg
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvZXh0ZXJudmFyLmgiIDEKIyA0MSAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamMvb2JqYy1hcGkuaCIgMgojIDUwICIvdXNyL2xvY2Fs
L3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3Jp
cHRpb24KewogICAgU0VMIG5hbWU7CiAgICBjaGFyICp0eXBlczsKfTsKIyAxMDYgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCmV4dGVybiB2b2lkIG9iamNfZXJyb3Ig
KGlkIG9iamVjdCwgaW50IGNvZGUsIGNvbnN0IGNoYXIqIGZtdCwgLi4uKTsKZXh0ZXJuIHZvaWQg
b2JqY192ZXJyb3IgKGlkIG9iamVjdCwgaW50IGNvZGUsIGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlz
dCBhcCk7CnR5cGVkZWYgQk9PTCAoKm9iamNfZXJyb3JfaGFuZGxlcikgKGlkLCBpbnQgY29kZSwg
Y29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKTsKb2JqY19lcnJvcl9oYW5kbGVyIG9iamNfc2V0
X2Vycm9yX2hhbmRsZXIgKG9iamNfZXJyb3JfaGFuZGxlciBmdW5jKTsKIyAxNDcgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9vYmpjL29iamMtYXBpLmgiCnN0cnVjdCBvYmpjX3N0YXRpY19pbnN0
YW5jZXMKewoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJT
d2FybS5taSAgICAgICAgICAgICAgUGFnZSAgMTE2CgoKICBjaGFyICpjbGFzc19uYW1lOwogIGlk
IGluc3RhbmNlc1swXTsKfTsKIyAxNjIgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmpjL29i
amMtYXBpLmgiCnR5cGVkZWYgc3RydWN0IG9iamNfc3ltdGFiIHsKICB1bnNpZ25lZCBsb25nIHNl
bF9yZWZfY250OwogIFNFTCByZWZzOwogIHVuc2lnbmVkIHNob3J0IGNsc19kZWZfY250OwoKICB1
bnNpZ25lZCBzaG9ydCBjYXRfZGVmX2NudDsKCgoKICB2b2lkICpkZWZzWzFdOwoKCgoKCn0gU3lt
dGFiLCAqU3ltdGFiX3Q7CiMgMTg5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpj
LWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX21vZHVsZSB7CiAgdW5zaWduZWQgbG9uZyB2ZXJz
aW9uOwogIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICBjb25zdCBjaGFyKiBuYW1lOwoKCgogIFN5bXRh
Yl90IHN5bXRhYjsKCgoKCgp9IE1vZHVsZSwgKk1vZHVsZV90OwoKCgoKCgp0eXBlZGVmIHN0cnVj
dCBvYmpjX2l2YXIqIEl2YXJfdDsKdHlwZWRlZiBzdHJ1Y3Qgb2JqY19pdmFyX2xpc3QgewogIGlu
dCBpdmFyX2NvdW50OwoKCgoKICBzdHJ1Y3Qgb2JqY19pdmFyIHsKICAgIGNvbnN0IGNoYXIqIGl2
YXJfbmFtZTsKCgogICAgY29uc3QgY2hhciogaXZhcl90eXBlOwoKCiAgICBpbnQgaXZhcl9vZmZz
ZXQ7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJt
Lm1pICAgICAgICAgICAgICBQYWdlICAxMTcKCgoKCgogIH0gaXZhcl9saXN0WzFdOwoKfSBJdmFy
TGlzdCwgKkl2YXJMaXN0X3Q7CiMgMjQwICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9v
YmpjLWFwaS5oIgpzdHJ1Y3Qgb2JqY19tZXRob2QgewogIFNFTCBtZXRob2RfbmFtZTsKCgoKCgog
IGNvbnN0IGNoYXIqIG1ldGhvZF90eXBlczsKCgogIElNUCBtZXRob2RfaW1wOwoKfTsKCnR5cGVk
ZWYgc3RydWN0IG9iamNfbWV0aG9kIE1ldGhvZDsKCnR5cGVkZWYgTWV0aG9kKiBNZXRob2RfdDsK
dHlwZWRlZiBzdHJ1Y3Qgb2JqY19tZXRob2RfbGlzdCB7CiAgc3RydWN0IG9iamNfbWV0aG9kX2xp
c3QqIG1ldGhvZF9uZXh0OwoKCiAgaW50IG1ldGhvZF9jb3VudDsKCiAgc3RydWN0IG9iamNfbWV0
aG9kIG1ldGhvZF9saXN0WzFdOwoKfSBNZXRob2RMaXN0LCAqTWV0aG9kTGlzdF90OwoKc3RydWN0
IG9iamNfcHJvdG9jb2xfbGlzdCB7CiAgc3RydWN0IG9iamNfcHJvdG9jb2xfbGlzdCAqbmV4dDsK
ICBpbnQgY291bnQ7CiAgUHJvdG9jb2wgKmxpc3RbMV07Cn07CiMgMzI0ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgp0eXBlZGVmIHN0cnVjdCBvYmpjX2NhdGVnb3J5
IHsKICBjb25zdCBjaGFyKiBjYXRlZ29yeV9uYW1lOwoKCiAgY29uc3QgY2hhciogY2xhc3NfbmFt
ZTsKCiAgTWV0aG9kTGlzdF90IGluc3RhbmNlX21ldGhvZHM7CgoKCiAgTWV0aG9kTGlzdF90IGNs
YXNzX21ldGhvZHM7CgoKCiAgc3RydWN0IG9iamNfcHJvdG9jb2xfbGlzdCAqcHJvdG9jb2xzOwoK
CgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkg
ICAgICAgICAgICAgIFBhZ2UgIDExOAoKCn0gQ2F0ZWdvcnksICpDYXRlZ29yeV90OwoKCgoKCgp0
eXBlZGVmIHN0cnVjdCBvYmpjX3N1cGVyIHsKICBpZCBzZWxmOwoKICBDbGFzcyBjbGFzczsKfSBT
dXBlciwgKlN1cGVyX3Q7CgpJTVAgb2JqY19tc2dfbG9va3VwX3N1cGVyKFN1cGVyX3Qgc3VwZXIs
IFNFTCBzZWwpOwoKCnJldHZhbF90IG9iamNfbXNnX3NlbmR2KGlkLCBTRUwsIGFyZ2xpc3RfdCk7
CiMgMzY3ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpleHRlcm4g
Q2xhc3MgKCpfb2JqY19sb29rdXBfY2xhc3MpIChjb25zdCBjaGFyICpuYW1lKTsKCgoKCgoKCmV4
dGVybiB2b2lkICgqX29iamNfbG9hZF9jYWxsYmFjaykgKENsYXNzIGNsYXNzLCBDYXRlZ29yeSog
Y2F0ZWdvcnkpOwoKCgoKZXh0ZXJuIGlkICgqX29iamNfb2JqZWN0X2FsbG9jKSAoQ2xhc3MgY2xh
c3MpOwpleHRlcm4gaWQgKCpfb2JqY19vYmplY3RfY29weSkgKGlkIG9iamVjdCk7CmV4dGVybiBp
ZCAoKl9vYmpjX29iamVjdF9kaXNwb3NlKSAoaWQgb2JqZWN0KTsKCgoKCgoKCnZvaWQgKm9iamNf
bWFsbG9jIChzaXplX3Qgc2l6ZSk7Cgp2b2lkICpvYmpjX2F0b21pY19tYWxsb2MgKHNpemVfdCBz
aXplKTsKCnZvaWQgKm9iamNfdmFsbG9jIChzaXplX3Qgc2l6ZSk7Cgp2b2lkICpvYmpjX3JlYWxs
b2MgKHZvaWQgKm1lbSwgc2l6ZV90IHNpemUpOwoKdm9pZCAqb2JqY19jYWxsb2MgKHNpemVfdCBu
ZWxlbSwgc2l6ZV90IHNpemUpOwoKdm9pZCBvYmpjX2ZyZWUgKHZvaWQgKm1lbSk7CiMgNDEyICIv
dXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqYy9vYmpjLWFwaS5oIgpleHRlcm4gdm9pZCAqKCpf
b2JqY19tYWxsb2MpIChzaXplX3QpOwpleHRlcm4gdm9pZCAqKCpfb2JqY19hdG9taWNfbWFsbG9j
KSAoc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKigqX29iamNfdmFsbG9jKSAoc2l6ZV90KTsKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAg
ICAgICAgIFBhZ2UgIDExOQoKCmV4dGVybiB2b2lkICooKl9vYmpjX3JlYWxsb2MpICh2b2lkICos
IHNpemVfdCk7CmV4dGVybiB2b2lkICooKl9vYmpjX2NhbGxvYykgKHNpemVfdCwgc2l6ZV90KTsK
ZXh0ZXJuIHZvaWQgKCpfb2JqY19mcmVlKSAodm9pZCAqKTsKCk1ldGhvZF90IGNsYXNzX2dldF9j
bGFzc19tZXRob2QgKE1ldGFDbGFzcyBjbGFzcywgU0VMIGFTZWwpOwoKTWV0aG9kX3QgY2xhc3Nf
Z2V0X2luc3RhbmNlX21ldGhvZCAoQ2xhc3MgY2xhc3MsIFNFTCBhU2VsKTsKCkNsYXNzIGNsYXNz
X3Bvc2VfYXMgKENsYXNzIGltcG9zdG9yLCBDbGFzcyBzdXBlcmNsYXNzKTsKCkNsYXNzIG9iamNf
Z2V0X2NsYXNzIChjb25zdCBjaGFyICpuYW1lKTsKCkNsYXNzIG9iamNfbG9va3VwX2NsYXNzIChj
b25zdCBjaGFyICpuYW1lKTsKCkNsYXNzIG9iamNfbmV4dF9jbGFzcyAodm9pZCAqKmVudW1fc3Rh
dGUpOwoKY29uc3QgY2hhciAqc2VsX2dldF9uYW1lIChTRUwgc2VsZWN0b3IpOwoKY29uc3QgY2hh
ciAqc2VsX2dldF90eXBlIChTRUwgc2VsZWN0b3IpOwoKU0VMIHNlbF9nZXRfdWlkIChjb25zdCBj
aGFyICpuYW1lKTsKClNFTCBzZWxfZ2V0X2FueV91aWQgKGNvbnN0IGNoYXIgKm5hbWUpOwoKU0VM
IHNlbF9nZXRfYW55X3R5cGVkX3VpZCAoY29uc3QgY2hhciAqbmFtZSk7CgpTRUwgc2VsX2dldF90
eXBlZF91aWQgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIqKTsKClNFTCBzZWxfcmVnaXN0
ZXJfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7CgpTRUwgc2VsX3JlZ2lzdGVyX3R5cGVkX25hbWUg
KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIqdHlwZSk7CgoKQk9PTCBzZWxfaXNfbWFwcGVk
IChTRUwgYVNlbCk7CgpleHRlcm4gaWQgY2xhc3NfY3JlYXRlX2luc3RhbmNlIChDbGFzcyBjbGFz
cyk7CgpzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgpjbGFzc19nZXRfY2xhc3NfbmFtZSAoQ2xh
c3MgY2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkg
PT0gMHgxTCkpP2NsYXNzLT5uYW1lOigoY2xhc3M9PShDbGFzcykwKT8iTmlsIjowKTsKfQoKc3Rh
dGljIGlubGluZSBsb25nCmNsYXNzX2dldF9pbnN0YW5jZV9zaXplIChDbGFzcyBjbGFzcykKewog
IHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkgPyBj
bGFzcy0+aW5zdGFuY2Vfc2l6ZSA6IDA7Cn0KCnN0YXRpYyBpbmxpbmUgTWV0YUNsYXNzCmNsYXNz
X2dldF9tZXRhX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNs
YXNzKS0+aW5mbykgJiAweDFMKSA9PSAweDFMKSkgPyBjbGFzcy0+Y2xhc3NfcG9pbnRlciA6IChD
bGFzcykwOwp9CgpzdGF0aWMgaW5saW5lIENsYXNzCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAg
ICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMjAKCgpj
bGFzc19nZXRfc3VwZXJfY2xhc3MgKENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYo
KCgoY2xhc3MpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKSA/IGNsYXNzLT5zdXBlcl9jbGFzcyA6
IChDbGFzcykwOwp9CgpzdGF0aWMgaW5saW5lIGludApjbGFzc19nZXRfdmVyc2lvbiAoQ2xhc3Mg
Y2xhc3MpCnsKICByZXR1cm4gKChjbGFzcykmJigoKChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0g
MHgxTCkpID8gY2xhc3MtPnZlcnNpb24gOiAtMTsKfQoKc3RhdGljIGlubGluZSBCT09MCmNsYXNz
X2lzX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+
aW5mbykgJiAweDFMKSA9PSAweDFMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApjbGFzc19pc19t
ZXRhX2NsYXNzIChDbGFzcyBjbGFzcykKewogIHJldHVybiAoKGNsYXNzKSYmKCgoKGNsYXNzKS0+
aW5mbykgJiAweDJMKSA9PSAweDJMKSk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQKY2xhc3Nfc2V0
X3ZlcnNpb24gKENsYXNzIGNsYXNzLCBsb25nIHZlcnNpb24pCnsKICBpZiAoKChjbGFzcykmJigo
KChjbGFzcyktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpKQogICAgY2xhc3MtPnZlcnNpb24gPSB2
ZXJzaW9uOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgKgpjbGFzc19nZXRfZ2Nfb2JqZWN0X3R5cGUg
KENsYXNzIGNsYXNzKQp7CiAgcmV0dXJuICgoY2xhc3MpJiYoKCgoY2xhc3MpLT5pbmZvKSAmIDB4
MUwpID09IDB4MUwpKSA/IGNsYXNzLT5nY19vYmplY3RfdHlwZSA6ICgodm9pZCAqKTApOwp9CgoK
ZXh0ZXJuIHZvaWQgY2xhc3NfaXZhcl9zZXRfZ2NpbnZpc2libGUgKENsYXNzIGNsYXNzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogaXZhcm5hbWUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGdjSW52aXNpYmxl
KTsKCnN0YXRpYyBpbmxpbmUgSU1QCm1ldGhvZF9nZXRfaW1wIChNZXRob2RfdCBtZXRob2QpCnsK
ICByZXR1cm4gKG1ldGhvZCAhPSAoTWV0aG9kX3QpMCkgPyBtZXRob2QtPm1ldGhvZF9pbXAgOiAo
SU1QKSAwOwp9CgpJTVAgZ2V0X2ltcCAoQ2xhc3MgY2xhc3MsIFNFTCBzZWwpOwoKCgoKCgoKCgoK
CgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAg
ICAgICAgICAgIFBhZ2UgIDEyMQoKCmlkIG9iamVjdF9jb3B5IChpZCBvYmplY3QpOwoKaWQgb2Jq
ZWN0X2Rpc3Bvc2UgKGlkIG9iamVjdCk7CgpzdGF0aWMgaW5saW5lIENsYXNzCm9iamVjdF9nZXRf
Y2xhc3MgKGlkIG9iamVjdCkKewogIHJldHVybiAoKG9iamVjdCAhPSAoaWQpMCkKICAgICAgICAg
ID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikt
PmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9p
bnRlcgogICAgICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0
LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSkKICAgICAgICAgICAgICAg
ID8gKENsYXNzKSBvYmplY3QKICAgICAgICAgICAgICAgIDogKENsYXNzKTApKQogICAgICAgICAg
OiAoQ2xhc3MpMCk7Cn0KCnN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCm9iamVjdF9nZXRfY2xh
c3NfbmFtZSAoaWQgb2JqZWN0KQp7CiAgcmV0dXJuICgob2JqZWN0IT0oaWQpMCkgPyAoKChvYmpl
Y3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAw
eDFMKSA9PSAweDFMKSkKICAgICAgICAgICAgICAgICAgICAgICAgID8gb2JqZWN0LT5jbGFzc19w
b2ludGVyLT5uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICA6ICgoQ2xhc3MpIG9iamVjdCkt
Pm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgOiJOaWwiKTsKfQoKc3RhdGljIGlubGluZSBN
ZXRhQ2xhc3MKb2JqZWN0X2dldF9tZXRhX2NsYXNzKGlkIG9iamVjdCkKewogIHJldHVybiAoKG9i
amVjdCE9KGlkKTApID8gKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+Y2xh
c3NfcG9pbnRlciktPmluZm8pICYgMHgxTCkgPT0gMHgxTCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyLT5jbGFzc19wb2ludGVyCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogKCgob2JqZWN0LT5jbGFzc19wb2ludGVyKSYmKCgoKG9iamVjdC0+
Y2xhc3NfcG9pbnRlciktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID8gb2JqZWN0LT5jbGFzc19wb2ludGVyCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDooQ2xhc3MpMCkpCiAgICAgICAgICA6IChDbGFzcykwKTsKfQoKc3RhdGljIGlu
bGluZSBDbGFzcwpvYmplY3RfZ2V0X3N1cGVyX2NsYXNzIChpZCBvYmplY3QpCnsKICByZXR1cm4g
KChvYmplY3QhPShpZCkwKSA/ICgoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3Qt
PmNsYXNzX3BvaW50ZXIpLT5pbmZvKSAmIDB4MUwpID09IDB4MUwpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICA/IG9iamVjdC0+Y2xhc3NfcG9pbnRlci0+c3VwZXJfY2xhc3MKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpJiYoKCgob2JqZWN0
LT5jbGFzc19wb2ludGVyKS0+aW5mbykgJiAweDJMKSA9PSAweDJMKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPygoQ2xhc3MpIG9iamVjdCktPnN1cGVyX2NsYXNzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDogKENsYXNzKTApKQogICAgICAgICAgOiAoQ2xhc3MpMCk7Cn0KCnN0
YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfY2xhc3MgKGlkIG9iamVjdCkKewogIHJldHVybiAo
KChDbGFzcykgb2JqZWN0KSYmKCgoKChDbGFzcykgb2JqZWN0KS0+aW5mbykgJiAweDFMKSA9PSAw
eDFMKSk7Cn0KCnN0YXRpYyBpbmxpbmUgQk9PTApvYmplY3RfaXNfaW5zdGFuY2UoaWQgb2JqZWN0
KQp7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJt
Lm1pICAgICAgICAgICAgICBQYWdlICAxMjIKCgogIHJldHVybiAob2JqZWN0ICE9IChpZCkwKSAm
JiAoKG9iamVjdC0+Y2xhc3NfcG9pbnRlcikmJigoKChvYmplY3QtPmNsYXNzX3BvaW50ZXIpLT5p
bmZvKSAmIDB4MUwpID09IDB4MUwpKTsKfQoKc3RhdGljIGlubGluZSBCT09MCm9iamVjdF9pc19t
ZXRhX2NsYXNzIChpZCBvYmplY3QpCnsKICByZXR1cm4gKCgoQ2xhc3MpIG9iamVjdCkmJigoKCgo
Q2xhc3MpIG9iamVjdCktPmluZm8pICYgMHgyTCkgPT0gMHgyTCkpOwp9CgpzdHJ1Y3Qgc2FycmF5
KiBvYmpjX2dldF91bmluc3RhbGxlZF9kdGFibGUgKHZvaWQpOwojIDE0ICIvdXNyL2xvY2FsL3N3
YXJtL2luY2x1ZGUvZGVmb2JqL0RlZkNsYXNzLmgiIDIKCgoKCnR5cGVkZWYgc3RydWN0IGNsYXNz
RGF0YSAqY2xhc3NEYXRhX3Q7CnR5cGVkZWYgc3RydWN0IG1ldGhvZERlZnMgKm1ldGhvZERlZnNf
dDsKCgoKCkBpbnRlcmZhY2UgQ2xhc3NfczogT2JqZWN0CnsKQHB1YmxpYwogIENsYXNzX3MgKnN1
cGVyY2xhc3M7CiAgY29uc3QgY2hhciAqbmFtZTsKICBsb25nIHZlcnNpb247CiAgdW5zaWduZWQg
bG9uZyBpbmZvOwogIGxvbmcgaW5zdGFuY2VTaXplOwogIHZvaWQgKml2YXJMaXN0OwogIHZvaWQg
Km1ldGhvZExpc3Q7CiAgc3RydWN0IHNhcnJheSAqZHRhYmxlOwp9CgoKQGVuZAoKCgoKZXh0ZXJu
IGNsYXNzRGF0YV90IF9vYmpfZ2V0Q2xhc3NEYXRhIChDbGFzc19zICpjbGFzcyk7CgoKCgp2b2lk
IF9vYmpfaW5pdE1ldGhvZEludGVyZmFjZXMgKENsYXNzX3MgKmNsYXNzKTsKCgoKCgoKCkBpbnRl
cmZhY2UgQ3JlYXRlZENsYXNzX3M6IENsYXNzX3MKewpAcHVibGljCgoKCgoKCgoyMDAxLTA4LTI0
IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdl
ICAxMjMKCgogIENsYXNzX3MgKmRlZmluaW5nQ2xhc3M7CiAgaWQgbWV0YW9iamVjdHM7Cn0KCisg
Y3JlYXRlQmVnaW46IGFab25lOwotIHNldE5hbWU6IChjb25zdCBjaGFyICopY2xhc3NOYW1lOwot
IHNldENsYXNzOiBhQ2xhc3M7Ci0gc2V0U3VwZXJjbGFzczogYUNsYXNzOwotIHNldERlZmluaW5n
Q2xhc3M6IGFDbGFzczsKLSBhdDogKFNFTClhU2VsIGFkZE1ldGhvZDogKElNUClhTWV0aG9kOwot
IGxpc3BJbkNyZWF0ZTogZXhwcjsKLSBoZGY1SW5DcmVhdGU6IGV4cHI7Ci0gY3JlYXRlRW5kOwot
ICh2b2lkKWhkZjVPdXRTaGFsbG93OiBzdHJlYW07Ci0gKHZvaWQpbGlzcE91dFNoYWxsb3c6IHN0
cmVhbTsKQGVuZAoKQGludGVyZmFjZSBCZWhhdmlvclBoYXNlX3M6IENyZWF0ZWRDbGFzc19zCnsK
QHB1YmxpYwogIENsYXNzX3MgKm5leHRQaGFzZTsKICBpZCBmaWxsZXI7CiAgaWQgbW9yZWZpbGxl
cjsKfQoKLSAodm9pZClzZXROZXh0UGhhc2U6IGFCZWhhdmlvclBoYXNlOwpAZW5kCgoKCgoKCgpz
dHJ1Y3QgY2xhc3NEYXRhIHsKICBpZCAqY2xhc3NJRDsKICBpZCBvd25lcjsKICBpZCB0eXBlSW1w
bGVtZW50ZWQ7CiAgQmVoYXZpb3JQaGFzZV9zICppbml0aWFsUGhhc2U7CiAgaWQgbWV0YW9iamVj
dHM7Cn07CgoKCgpzdHJ1Y3QgbWV0aG9kRGVmcyB7CiAgbWV0aG9kRGVmc190IG5leHQ7CiAgaWQg
aW50ZXJmYWNlSUQ7CiAgTWV0aG9kX3QgZmlyc3RFbnRyeTsKICBpbnQgY291bnQ7Cn07CiMgMTMg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovQ3VzdG9taXplLmgiIDIKIyAxICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0RlZk9iamVjdC5oIiAxCiMgMTMgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiCiMgMSAiL3Vzci9sb2NhbC9zd2Fy
bS9pbmNsdWRlL2RlZm9iai5oIiAxCiMgMTQgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovRGVmT2JqZWN0LmgiIDIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBw
bE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDEyNAoKCgojIDEgIi91c3IvbG9j
YWwvc3dhcm0vaW5jbHVkZS9zd2FybWNvbmZpZy5oIiAxCiMgMTYgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0LmgiIDIKCkBjbGFzcyBPYmplY3RFbnRyeTsKCgpAaW50
ZXJmYWNlIE9iamVjdF9zOiBPYmplY3QgPERlZmluZWRDbGFzcywgU2VyaWFsaXphdGlvbiwgR2V0
TmFtZT4KewpAcHVibGljCgoKICB1bnNpZ25lZCB6Yml0czsKICBPYmplY3RFbnRyeSAqZm9yZWln
bkVudHJ5Owp9CiMgNDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmovRGVmT2JqZWN0
LmgiCi0gKGNvbnN0IGNoYXIgKilnZXROYW1lOworIChCT09MKXJlc3BvbmRzVG86IChTRUwpYVNl
bDsKLSAoQk9PTClyZXNwb25kc1RvOiAoU0VMKWFTZWw7CisgKEJPT0wpY29uZm9ybXNUbzogKFBy
b3RvY29sICopYVByb3RvY29sOworIGdldENsYXNzOwotIGdldENsYXNzOwotIGdldFpvbmU7Ci0g
KHZvaWQpZHJvcEFsbG9jYXRpb25zOiAoQk9PTCljb21wb25lbnRBbGxvYzsKLSAodm9pZClkcm9w
OwotIChyZWZfdClhZGRSZWY6IChub3RpZnlfdClub3RpZnlGdW5jdGlvbiB3aXRoQXJndW1lbnQ6
ICh2b2lkICopYXJnOzsKLSAodm9pZClyZW1vdmVSZWY6IChyZWZfdClyZWZWYWw7CisgZ2V0U3Vw
ZXJjbGFzczsKKyAoQk9PTClpc1N1YmNsYXNzOiBhQ2xhc3M7CisgKHZvaWQpc2V0VHlwZUltcGxl
bWVudGVkOiBhVHlwZTsKKyBnZXRUeXBlSW1wbGVtZW50ZWQ7CisgZ2V0T3duZXI7CisgKElNUCln
ZXRNZXRob2RGb3I6IChTRUwpYVNlbDsKKyBnZXREZWZpbmluZ0NsYXNzOworIGdldE5leHRQaGFz
ZTsKKyBzZWxmOwotIGdldFR5cGU7Ci0gKGludCljb21wYXJlOiBhbk9iamVjdDsKLSBwZXJmb3Jt
OiAoU0VMKWFTZWw7Ci0gcGVyZm9ybTogKFNFTClhU2VsIHdpdGg6IGFuT2JqZWN0MTsKLSBwZXJm
b3JtOiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqZWN0MjsKLSBwZXJmb3Jt
OiAoU0VMKWFTZWwgd2l0aDogYW5PYmplY3QxIHdpdGg6IGFuT2JqZWN0MiB3aXRoOiBhbk9iamVj
dDM7Ci0gKHZvaWQpc2V0RGlzcGxheU5hbWU6IChjb25zdCBjaGFyICopYU5hbWU7Ci0gKGNvbnN0
IGNoYXIgKilnZXREaXNwbGF5TmFtZTsKLSAoY29uc3QgY2hhciAqKWdldE9iamVjdE5hbWU7Ci0g
KGNvbnN0IGNoYXIgKilnZXRUeXBlTmFtZTsKLSAodm9pZClkZXNjcmliZTogb3V0cHV0Q2hhclN0
cmVhbTsKLSAodm9pZClkZXNjcmliZUlEOiBvdXRwdXRDaGFyU3RyZWFtOwotICh2b2lkKXhwcmlu
dDsKLSAodm9pZCl4cHJpbnRpZDsKLSAodm9pZCl4ZnByaW50OwotICh2b2lkKXhmcHJpbnRpZDsK
LSBsaXNwSW5DcmVhdGU6IGV4cHI7Ci0gbGlzcEluOiBleHByOwotIGhkZjVJbkNyZWF0ZTogZXhw
cjsKLSBoZGY1SW46IGV4cHI7CgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQ
cGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMjUKCgotICh2b2lkKWxpc3BP
dXRWYXJzOiBzdHJlYW0gZGVlcDogKEJPT0wpZGVlcEZsYWc7Ci0gKHZvaWQpbGlzcE91dERlZXA6
IHN0cmVhbTsKLSAodm9pZClsaXNwT3V0U2hhbGxvdzogc3RyZWFtOwotICh2b2lkKWhkZjVPdXRE
ZWVwOiBoZGY1b2JqOwotICh2b2lkKWhkZjVPdXRTaGFsbG93OiBoZGY1b2JqOwotICh2b2lkKXVw
ZGF0ZUFyY2hpdmVyOiBhcmNoaXZlcjsKQGVuZAoKZXh0ZXJuIGlkIGxpc3BJbiAoaWQgYVpvbmUs
IGlkIGV4cHIpOwoKZXh0ZXJuIEJPT0wgbGlzcEluQm9vbGVhbiAoaWQgaW5kZXgpOwpleHRlcm4g
aW50IGxpc3BJbkludGVnZXIgKGlkIGluZGV4KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmxpc3BJblN0
cmluZyAoaWQgaW5kZXgpOwpleHRlcm4gaWQgbGlzcEluS2V5d29yZCAoaWQgaW5kZXgpOwojIDEy
MSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9EZWZPYmplY3QuaCIKZXh0ZXJuIElN
UCBnZXRfaW1wIChDbGFzcyBjbGFzcywgU0VMIHNlbCk7CgoKCgpleHRlcm4gQk9PTCByZXNwb25k
c1RvIChpZCBhbk9iamVjdCwgU0VMIGFTZWwpOwoKCgoKCmV4dGVybiBJTVAgZ2V0TWV0aG9kRm9y
IChpZCBhbk9iamVjdCwgU0VMIGFTZWwpOwojIDE1NCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRl
L2RlZm9iai9EZWZPYmplY3QuaCIKdHlwZWRlZiBzdHJ1Y3QgbWFwYWxsb2MgKm1hcGFsbG9jX3Q7
CgpzdHJ1Y3QgbWFwYWxsb2MgewogIHZvaWQgKCptYXBwaW5nRnVuY3Rpb24pIChtYXBhbGxvY190
IG1hcGFsbG9jLCBCT09MIG9iamVjdEFsbG9jYXRpb24pOwogIHZvaWQgKmFsbG9jOwogIGlkIDxT
eW1ib2w+IGRlc2NyaXB0b3I7CiAgaWQgem9uZTsKICBzaXplX3Qgc2l6ZTsKfTsKIyAxNCAiL3Vz
ci9sb2NhbC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIgMgojIDI0ICIvdXNyL2xv
Y2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIgpleHRlcm4gaWQgQ3JlYXRpbmcs
IFNldHRpbmcsIFVzaW5nLCBDcmVhdGluZ09ubHksIFVzaW5nT25seTsKCgoKCkBpbnRlcmZhY2Ug
Q3VzdG9taXplX3M6IE9iamVjdF9zCgorIGN1c3RvbWl6ZUJlZ2luOiBhWm9uZTsKLSBjdXN0b21p
emVFbmQ7Ci0gY3VzdG9taXplQ29weTogYVpvbmU7CisgY3VzdG9taXplQmVnaW5FbmQ6IGFab25l
OwotIF9zZXRDcmVhdGVCeV86IChDbGFzcylzdWJjbGFzcyBtZXNzYWdlOiAoU0VMKW1lc3NhZ2VT
ZWxlY3RvciB0bzogYW5PYmplY3Q7Ci0gKHZvaWQpX3NldENyZWF0ZUJ5Q29weV87Ci0gKHZvaWQp
X3NldENyZWF0ZUJ5TWVzc2FnZV86IChTRUwpbWVzc2FnZVNlbGVjdG9yIHRvOiBhbk9iamVjdDsK
LSAodm9pZClfc2V0Q3JlYXRlQnlNZXNzYWdlXzogKFNFTCltZXNzYWdlU2VsZWN0b3IgdG9Db3B5
OiBhbk9iamVjdDsKLSAodm9pZClfc2V0UmVjdXN0b21pemVfOiBhbk9iamVjdDsKKyAodm9pZClz
ZXRUeXBlSW1wbGVtZW50ZWQ6IGFUeXBlOwoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAg
ICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgMTI2CgoKQGVuZAoj
IDU2ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvZGVmb2JqL0N1c3RvbWl6ZS5oIgpleHRlcm4g
aW5saW5lIEJPT0wKX29ial9jdXN0b21pemUgKGlkIGFuT2JqZWN0KQp7CiAgcmV0dXJuICgoKihD
bGFzcyAqKShhbk9iamVjdCkpLT5pbmZvICYgMHgyMDApICE9IDA7Cn0KIyA4MiAiL3Vzci9sb2Nh
bC9zd2FybS9pbmNsdWRlL2RlZm9iai9DdXN0b21pemUuaCIKQGludGVyZmFjZSBDcmVhdGVCeV9j
OiBPYmplY3Rfcwp7CkBwdWJsaWMKICBpZCBpbXBsZW1lbnRlZFR5cGU7CiAgaWQgY3JlYXRlUmVj
ZWl2ZXI7CiAgU0VMIGNyZWF0ZU1lc3NhZ2U7CiAgSU1QIGNyZWF0ZU1ldGhvZDsKICBpZCByZWN1
c3RvbWl6ZTsKfQoKLSBjcmVhdGVCZWdpbjogYVpvbmU7Ci0gY3VzdG9taXplQmVnaW46IGFab25l
OwotICh2b2lkKW1hcEFsbG9jYXRpb25zOiAobWFwYWxsb2NfdCltYXBhbGxvYzsKQGVuZAoKQGlu
dGVyZmFjZSBDcmVhdGVfYnljb3B5OiBDcmVhdGVCeV9jCgotIGNyZWF0ZTogYVpvbmU7CkBlbmQK
CkBpbnRlcmZhY2UgQ3JlYXRlX2J5c2VuZDogQ3JlYXRlQnlfYwoKLSBjcmVhdGU6IGFab25lOwpA
ZW5kCgpAaW50ZXJmYWNlIENyZWF0ZV9ieWJvdGg6IENyZWF0ZUJ5X2MKCi0gY3JlYXRlOiBhWm9u
ZTsKQGVuZAoKCgoKZXh0ZXJuIGlubGluZSBDbGFzcwpnZXROZXh0UGhhc2UgKGlkIGFDbGFzcykK
ewogIHJldHVybiAoQ2xhc3MpICgoQmVoYXZpb3JQaGFzZV9zICopIGFDbGFzcyktPm5leHRQaGFz
ZTsKfQoKCgoKZXh0ZXJuIGlubGluZSB2b2lkCnNldE5leHRQaGFzZSAoaWQgYW5PYmplY3QpCnsK
ICAqKENsYXNzICopIGFuT2JqZWN0ID0gKENsYXNzKSAoKihCZWhhdmlvclBoYXNlX3MgKiopIGFu
T2JqZWN0KS0+bmV4dFBoYXNlOwp9CiMgMTMgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZv
YmovQ3JlYXRlLmgiIDIKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9i
c2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDEyNwoKCgoKCgpAaW50ZXJmYWNlIENy
ZWF0ZURyb3BfczogQ3VzdG9taXplX3MKCisgY3JlYXRlOiBhWm9uZTsKKyBjcmVhdGVCZWdpbjog
YVpvbmU7Ci0gY3JlYXRlRW5kOwpAZW5kCgpAaW50ZXJmYWNlIENyZWF0ZURyb3A6IENyZWF0ZURy
b3BfcwoKLSBjcmVhdGVFbmQ7CkBlbmQKIyAxMyAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2Fj
dGl2aXR5L1hBY3Rpdml0eS5oIiAyCiMgMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2
aXR5LmgiIDEKIyAxNCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL2FjdGl2aXR5L1hBY3Rpdml0
eS5oIiAyCgoKCgpAaW50ZXJmYWNlIEFjdGl2aXR5X2M6IE9iamVjdF9zIDxBY3Rpdml0eT4KewpA
cHVibGljCiAgQWN0aXZpdHlfYyAqb3duZXJBY3Rpdml0eTsKICBpZCA8QWN0aW9uPiB0b3BMZXZl
bEFjdGlvbjsKICBpZCA8U3ltYm9sPiBzdGF0dXM7CiAgbWVtYmVyX3QgYWN0aXZpdHlSZWZzOwoK
ICBBY3Rpdml0eV9jICpyZWdpc3RlcmVkT3duZXJBY3Rpdml0eTsKICBpZCBhY3Rpdml0eVNldDsK
ICBtZW1iZXJfdCBhY3Rpdml0eVNldFJlZnM7CgogIGlkIDxBY3Rpdml0eUluZGV4PiBjdXJyZW50
SW5kZXg7CgogIEFjdGl2aXR5X2MgKmN1cnJlbnRTdWJhY3Rpdml0eTsKICBCT09MICgqYnJlYWtG
dW5jdGlvbikgKGlkKTsKICBCT09MIGtlZXBFbXB0eUZsYWc7Cn0KCi0gKGlkIDxTeW1ib2w+KXJ1
bjsKLSAoaWQgPFN5bWJvbD4pX3J1bl87Ci0gKHZvaWQpdGVybWluYXRlOwotICh2b2lkKXN0b3A7
Ci0gKGlkIDxTeW1ib2w+KW5leHRBY3Rpb247Ci0gKGlkIDxTeW1ib2w+KXN0ZXBBY3Rpb247Ci0g
KGlkIDxTeW1ib2w+KWdldFN0YXR1czsKLSAoaWQgPFN5bWJvbD4pZ2V0SG9sZFR5cGU7Ci0gZ2V0
QWN0aW9uVHlwZTsKLSAoaWQgPEFjdGlvbj4pZ2V0QWN0aW9uOwotIF9nZXRTdWJhY3Rpdml0eUFj
dGlvbl87Ci0gKHZvaWQpc2V0T3duZXJBY3Rpdml0eTogKGlkIDxTd2FybUFjdGl2aXR5PilhU3dh
cm1BY3Rpdml0eTsKLSAoaWQgPEFjdGl2aXR5PilnZXRPd25lckFjdGl2aXR5OwotIChpZCA8QWN0
aXZpdHk+KWdldENvbnRyb2xsaW5nQWN0aXZpdHk7Ci0gKGlkIDxBY3Rpdml0eT4pZ2V0VG9wTGV2
ZWxBY3Rpdml0eTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2Vy
dmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDEyOAoKCi0gKGlkIDxTd2FybUFjdGl2aXR5
PilnZXRTd2FybUFjdGl2aXR5OwotIChpZCA8U2NoZWR1bGVBY3Rpdml0eT4pZ2V0U2NoZWR1bGVB
Y3Rpdml0eTsKLSBnZXRTdWJhY3Rpdml0aWVzOwotICh2b2lkKXNldFNlcmlhbE1vZGU6IChCT09M
KXNlcmlhbE1vZGU7Ci0gKEJPT0wpZ2V0U2VyaWFsTW9kZTsKLSBzZXRLZWVwRW1wdHlGbGFnOiAo
Qk9PTClrZWVwRW1wdHlGbGFnOwotIChpZCA8QWN0aXZpdHk+KWdldEN1cnJlbnRTdWJhY3Rpdml0
eTsKLSAodm9pZCltYXBBbGxvY2F0aW9uczogKG1hcGFsbG9jX3QpbWFwYWxsb2M7Ci0gKHZvaWQp
ZHJvcDsKLSAodm9pZClkZXNjcmliZTogb3V0cHV0Q2hhclN0cmVhbTsKQGVuZAojIDEzICIvdXNy
L2xvY2FsL3N3YXJtL2luY2x1ZGUvYWN0aXZpdHkvU3dhcm1Qcm9jZXNzLmgiIDIKCkBjbGFzcyBT
d2FybUFjdGl2aXR5X2MsIFNjaGVkdWxlQWN0aXZpdHlfYzsKCkBpbnRlcmZhY2UgQ1N3YXJtUHJv
Y2VzczogQ3JlYXRlRHJvcF9zIDxTd2FybVByb2Nlc3M+CnsKQHB1YmxpYwogIGlkIGludGVybmFs
Wm9uZTsKICBpZCBzeW5jVHlwZTsKICBTd2FybUFjdGl2aXR5X2MgKmFjdGl2aXR5Owp9CgotIChz
aXplX3QpZ2V0UGFnZVNpemU7Ci0gYWxsb2NJVmFyczogYUNsYXNzOwotIGNvcHlJVmFyczogYW5P
YmplY3Q7Ci0gKHZvaWQpZnJlZUlWYXJzOiBhbk9iamVjdDsKLSBhbGxvY0lWYXJzQ29tcG9uZW50
OiBhQ2xhc3M7Ci0gY29weUlWYXJzQ29tcG9uZW50OiBhbk9iamVjdDsKLSAodm9pZClmcmVlSVZh
cnNDb21wb25lbnQ6IGFuT2JqZWN0OwotIGdldENvbXBvbmVudFpvbmU7Ci0gKHZvaWQgKilhbGxv
YzogKHNpemVfdClzaXplOwotICh2b2lkKWZyZWU6ICh2b2lkICopIGFCbG9jazsKLSAodm9pZCAq
KWFsbG9jQmxvY2s6IChzaXplX3Qpc2l6ZTsKLSAodm9pZClmcmVlQmxvY2s6ICh2b2lkICopYUJs
b2NrIGJsb2NrU2l6ZTogKHNpemVfdClzaXplOwotIGdldFBvcHVsYXRpb247Ci0gKHZvaWQpIGRl
c2NyaWJlRm9yRWFjaElEOiAoaWQpIG91dHB1dENoYXJTdHJlYW07Ci0gKHZvaWQpIGRlc2NyaWJl
Rm9yRWFjaDogKGlkKSBvdXRwdXRDaGFyU3RyZWFtOwotIChCT09MKWdldFN0YWNrZWRTdWJ6b25l
czsKLSBnZXRSZWNsYWltUG9saWN5OwoKCisgY3JlYXRlQmVnaW46IGFab25lOwotICh2b2lkKXNl
dFN5bmNocm9uaXphdGlvblR5cGU6IGFTY2hlZHVsZVR5cGU7Ci0gKHZvaWQpc2V0SW50ZXJuYWxa
b25lVHlwZTogaW50ZXJuYWxab25lVHlwZTsKLSAodm9pZClzZXRJbnRlcm5hbFRpbWVNdWx0aXBs
aWVyOiAodGltZXZhbF90KWludGVybmFsVGltZU11bHRpcGxpZXI7Ci0gKHZvaWQpc2V0UGFnZVNp
emU6IChzaXplX3QpcGFnZVNpemU7Ci0gY3JlYXRlRW5kOwotICh0aW1ldmFsX3QpZ2V0SW50ZXJu
YWxUaW1lTXVsdGlwbGllcjsKLSBnZXRJbnRlcm5hbFpvbmU7Ci0gKGlkIDxTd2FybUFjdGl2aXR5
PilnZXRBY3Rpdml0eTsKLSAoaWQgPFN3YXJtQWN0aXZpdHk+KWdldFN3YXJtQWN0aXZpdHk7Ci0g
Z2V0U3luY2hyb25pemF0aW9uVHlwZTsKLSBhY3RpdmF0ZTsKLSBhY3RpdmF0ZTogYW5BY3Rpb25U
eXBlOwotIGF0OiAodGltZXZhbF90KXRWYWwgYWN0aXZhdGU6IGFuQWN0aW9uVHlwZTsKCgoKCgoK
CjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBwbE9ic2VydmVyU3dhcm0ubWkgICAgICAg
ICAgICAgIFBhZ2UgIDEyOQoKCi0gYXQ6IChpbnQpdGltZWJhc2UgOiAodGltZXZhbF90KXRWYWwg
YWN0aXZhdGU6IGFuQWN0aW9uVHlwZTsKLSAoaWQgPEFjdGl2aXR5PilhY3RpdmF0ZUluOiBzd2Fy
bUNvbnRleHQ7Ci0gKHZvaWQpbWFwQWxsb2NhdGlvbnM6IChtYXBhbGxvY190KW1hcGFsbG9jOwot
ICh2b2lkKV9wZXJmb3JtUGxhbl87CkBlbmQKIyA4ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUv
b2JqZWN0YmFzZS9Td2FybS5oIiAyCgpAaW50ZXJmYWNlIFN3YXJtOiBDU3dhcm1Qcm9jZXNzIDxT
d2FybT4Kewp9CgoKLSBidWlsZE9iamVjdHM7Ci0gYnVpbGRBY3Rpb25zOwotIGFjdGl2YXRlSW46
IHN3YXJtQ29udGV4dDsKCgoKLSBnZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwot
IGdldFByb2JlRm9yVmFyaWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwoKQGVuZAojIDgg
Ii91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9zaW10b29sc2d1aS9HVUlTd2FybS5oIiAyCgoKCgoK
CgpAaW50ZXJmYWNlIEdVSVN3YXJtOiBTd2FybSA8R1VJU3dhcm0+CnsKICBpZCA8Q29udHJvbFBh
bmVsPiBjb250cm9sUGFuZWw7CiAgaWQgPEFjdGlvbkNhY2hlPiBhY3Rpb25DYWNoZTsKICBjb25z
dCBjaGFyICpiYXNlV2luZG93R2VvbWV0cnlSZWNvcmROYW1lOwogIEJPT0wgc2F2ZVNpemVGbGFn
Owp9CgotIHNldFdpbmRvd0dlb21ldHJ5UmVjb3JkTmFtZTogKGNvbnN0IGNoYXIgKil3aW5kb3dH
ZW9tZXRyeVJlY29yZE5hbWU7Ci0gc2V0U2F2ZVNpemVGbGFnOiAoQk9PTClzYXZlU2l6ZUZsYWc7
Ci0gc2V0V2luZG93R2VvbWV0cnlSZWNvcmROYW1lRm9yQ29tcG9uZW50OiAoY29uc3QgY2hhciAq
KWNvbXBvbmVudE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQ6
IGFXaWRnZXQ7Ci0gKGlkIDxBY3Rpb25DYWNoZT4pZ2V0QWN0aW9uQ2FjaGU7Ci0gKGlkIDxDb250
cm9sUGFuZWw+KWdldENvbnRyb2xQYW5lbDsKLSBidWlsZE9iamVjdHM7Ci0gZ287Ci0gKHZvaWQp
ZHJvcDsKQGVuZAojIDggIlBwbE9ic2VydmVyU3dhcm0uaCIgMgojIDEgIlBwbE1vZGVsU3dhcm0u
aCIgMQoKCgoKCgoKCgoKCgoyMDAxLTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZl
clN3YXJtLm1pICAgICAgICAgICAgICBQYWdlICAxMzAKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0v
aW5jbHVkZS9vYmplY3RiYXNlL1N3YXJtLmgiIDEKIyA3ICJQcGxNb2RlbFN3YXJtLmgiIDIKIyAx
ICJDb3VudGVyLmgiIDEKCgoKCgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3Ri
YXNlL1N3YXJtT2JqZWN0LmgiIDEKIyA5ICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0
YmFzZS9Td2FybU9iamVjdC5oIgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9kZWZvYmov
Q3JlYXRlLmgiIDEKIyAxMCAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dh
cm1PYmplY3QuaCIgMgojIDEgIi91c3IvbG9jYWwvc3dhcm0vaW5jbHVkZS9vYmplY3RiYXNlLmgi
IDEKIyAxMSAiL3Vzci9sb2NhbC9zd2FybS9pbmNsdWRlL29iamVjdGJhc2UvU3dhcm1PYmplY3Qu
aCIgMgoKQGludGVyZmFjZSBTd2FybU9iamVjdDogQ3JlYXRlRHJvcCA8U3dhcm1PYmplY3Q+CnsK
fQoKLSBnZXRQcm9iZU1hcDsKLSBnZXRDb21wbGV0ZVByb2JlTWFwOwotIGdldFByb2JlRm9yVmFy
aWFibGU6IChjb25zdCBjaGFyICopYVZhcmlhYmxlOwotIGdldFByb2JlRm9yTWVzc2FnZTogKGNv
bnN0IGNoYXIgKilhTWVzc2FnZTsKLSAodm9pZClldmVudE9jY3VycmVkT246IGFuT2JqZWN0CiAg
ICAgICAgICAgICAgICAgICAgdmlhOiBhUHJvYmUKICAgICAgICAgIHdpdGhQcm9iZVR5cGU6IChj
b25zdCBjaGFyICopYVByb2JlVHlwZQogICAgICAgICAgICAgICAgICAgICBvbjogKGNvbnN0IGNo
YXIgKilwcm9iZWRFbGVtZW50CiAgICAgICAgICAgICAgICAgb2ZUeXBlOiAoY2hhcilkYXRhVHlw
ZQogICAgICAgICAgICAgICB3aXRoRGF0YTogKHZvaWQgKilkYXRhOwpAZW5kCiMgNyAiQ291bnRl
ci5oIiAyCgoKCkBpbnRlcmZhY2UgQ291bnRlcjogU3dhcm1PYmplY3QKewogIGludCB2YWx1ZTsK
ICBpbnQgaW5jcjsKfQoKLSBzdGVwOwotIHNldEluY3I6IChpbnQpIG47Ci0gcHJpbnQ7CgpAZW5k
CiMgOCAiUHBsTW9kZWxTd2FybS5oIiAyCiMgMSAiUGVyc29uLmgiIDEKIyA5ICJQZXJzb24uaCIK
IyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvb2JqZWN0YmFzZS9Td2FybU9iamVjdC5oIiAx
CiMgMTAgIlBlcnNvbi5oIiAyCgoKdHlwZWRlZiBlbnVtIHsKICBudWxsID0gMCwKICBoZWxsbyA9
IDEsCn0gdG9waWNfdHlwZTsKCgoKCgoKCjIwMDEtMDgtMjQgMDE6MjEgICAgICAgICAgICAgIFBw
bE9ic2VydmVyU3dhcm0ubWkgICAgICAgICAgICAgIFBhZ2UgIDEzMQoKCgoKCgpAaW50ZXJmYWNl
IFBlcnNvbjogU3dhcm1PYmplY3QKewogIGlkIHdvcmxkOwogIGZsb2F0IHRvcGljc1syXTsKICBp
bnQgdmFsdWU7CiAgaWQgbmFtZTsKfQoKCi0gc3RlcDsKCgotIHNldFdvcmxkOiBsOwoKCi0gc2V0
UGVyc29uOiBuIFRvcGljX2FycmF5OiAoZmxvYXQgKil0OwoKCi0gKGNvbnN0IGNoYXIgKilnZXRO
YW1lOwoKCi0gcHJpbnQ7CgoKLSBzcGVhazogKHRvcGljX3R5cGUpIHRvcGljIFRvUGVyc29uOiAo
aWQpdGFyZ2V0OwoKCi0gbG9vazsKCkBlbmQKIyA5ICJQcGxNb2RlbFN3YXJtLmgiIDIKCkBpbnRl
cmZhY2UgUHBsTW9kZWxTd2FybTogU3dhcm0KewoKICBpbnQgaW5jcmVtZW50OwoKCgogIGludCBu
dW1QcGw7CgogIGlkIHBwbExpc3Q7CgogIGlkIG1vZGVsQWN0aW9uczsKICBpZCBtb2RlbFNjaGVk
dWxlOwoKCiAgQ291bnRlciAqY291bnRlcjsKfQoKCi0gKENvdW50ZXIgKilnZXRDb3VudGVyOwoK
CgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2JzZXJ2ZXJTd2FybS5taSAg
ICAgICAgICAgICAgUGFnZSAgMTMyCgoKCisgY3JlYXRlQmVnaW46IGFab25lOwotIGNyZWF0ZUVu
ZDsKLSBidWlsZE9iamVjdHM7Ci0gYnVpbGRBY3Rpb25zOwotIGFjdGl2YXRlSW46IChpZCkgc3dh
cm1Db250ZXh0OwoKQGVuZAojIDkgIlBwbE9ic2VydmVyU3dhcm0uaCIgMgoKCkBpbnRlcmZhY2Ug
UHBsT2JzZXJ2ZXJTd2FybTogR1VJU3dhcm0KewogIGludCBkaXNwbGF5RnJlcXVlbmN5OwoKICBp
ZCBkaXNwbGF5QWN0aW9uczsKICBpZCBkaXNwbGF5U2NoZWR1bGU7CgoKICBQcGxNb2RlbFN3YXJt
KiBwcGxNb2RlbFN3YXJtOwoKICBDb3VudGVyKiBvYnNlcnZlZENvdW50ZXI7Cn0KCisgY3JlYXRl
QmVnaW46IGFab25lOwotIGNyZWF0ZUVuZDsKLSBidWlsZE9iamVjdHM7Ci0gYnVpbGRBY3Rpb25z
OwotIGFjdGl2YXRlSW46IHN3YXJtQ29udGV4dDsKCkBlbmQKIyA3ICJQcGxPYnNlcnZlclN3YXJt
Lm0iIDIKIyAxICIvdXNyL2xvY2FsL3N3YXJtL2luY2x1ZGUvc2ltdG9vbHNndWkuaCIgMQojIDgg
IlBwbE9ic2VydmVyU3dhcm0ubSIgMgoKCkBpbXBsZW1lbnRhdGlvbiBQcGxPYnNlcnZlclN3YXJt
CgorIGNyZWF0ZUJlZ2luOiBhWm9uZQp7CiAgUHBsT2JzZXJ2ZXJTd2FybSAqIG9iajsKICBpZCA8
UHJvYmVNYXA+IHByb2JlTWFwOwoKICBvYmogPSBbc3VwZXIgY3JlYXRlQmVnaW46IGFab25lXTsK
CgogIG9iai0+ZGlzcGxheUZyZXF1ZW5jeSA9IDE7CgogIHByb2JlTWFwID0gW0VtcHR5UHJvYmVN
YXAgY3JlYXRlQmVnaW46IGFab25lXTsKICBbcHJvYmVNYXAgc2V0UHJvYmVkQ2xhc3M6IFtzZWxm
IGNsYXNzXV07CiAgcHJvYmVNYXAgPSBbcHJvYmVNYXAgY3JlYXRlRW5kXTsKCgogIFtwcm9iZU1h
cCBhZGRQcm9iZTogW3Byb2JlTGlicmFyeSBnZXRQcm9iZUZvclZhcmlhYmxlOiAiZGlzcGxheUZy
ZXF1ZW5jeSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5DbGFzczogW3Nl
bGYgY2xhc3NdXV07CgoKCgoKCgoKMjAwMS0wOC0yNCAwMToyMSAgICAgICAgICAgICAgUHBsT2Jz
ZXJ2ZXJTd2FybS5taSAgICAgICAgICAgICAgUGFnZSAgMTMzCgoKICBbcHJvYmVMaWJyYXJ5IHNl
dFByb2JlTWFwOiBwcm9iZU1hcCBGb3I6IFtzZWxmIGNsYXNzXV07CgogIHJldHVybiBvYmo7Cn0K
CgotIGNyZWF0ZUVuZAp7CiAgcmV0dXJuIFtzdXBlciBjcmVhdGVFbmRdOwp9CgotIGJ1aWxkT2Jq
ZWN0cwp7CiAgaWQgbW9kZWxab25lOwoKICBbc3VwZXIgYnVpbGRPYmplY3RzXTsKCgogIG1vZGVs
Wm9uZSA9IFtab25lIGNyZWF0ZTogW3NlbGYgZ2V0Wm9uZV1dOwoKICBwcGxNb2RlbFN3YXJtID0g
W1BwbE1vZGVsU3dhcm0gY3JlYXRlOiBtb2RlbFpvbmVdOwoKCiAgX2NyZWF0ZVByb2JlRGlzcGxh
eShwcGxNb2RlbFN3YXJtKTsKCiAgX2NyZWF0ZVByb2JlRGlzcGxheShzZWxmKTsKCgogIFthY3Rp
b25DYWNoZSB3YWl0Rm9yQ29udHJvbEV2ZW50XTsKCiAgaWYgKFtjb250cm9sUGFuZWwgZ2V0U3Rh
dGVdID09IENvbnRyb2xTdGF0ZVF1aXQpCiAgICByZXR1cm4gc2VsZjsKCgogIFtwcGxNb2RlbFN3
YXJtIGJ1aWxkT2JqZWN0c107CgoKICBvYnNlcnZlZENvdW50ZXIgPSBbcHBsTW9kZWxTd2FybSBn
ZXRDb3VudGVyXTsKCiAgcmV0dXJuIHNlbGY7Cn0KCi0gYnVpbGRBY3Rpb25zCnsKCiAgW3N1cGVy
IGJ1aWxkQWN0aW9uc107CgoKICBbcHBsTW9kZWxTd2FybSBidWlsZEFjdGlvbnNdOwoKCiAgZGlz
cGxheUFjdGlvbnMgPSBbQWN0aW9uR3JvdXAgY3JlYXRlOiBbc2VsZiBnZXRab25lXV07CgogIFtk
aXNwbGF5QWN0aW9ucyBjcmVhdGVBY3Rpb25Ubzogb2JzZXJ2ZWRDb3VudGVyIG1lc3NhZ2U6IEBz
ZWxlY3RvciAocHJpbnQpXTsKCiAgW2Rpc3BsYXlBY3Rpb25zIGNyZWF0ZUFjdGlvblRvOiBwcm9i
ZURpc3BsYXlNYW5hZ2VyIG1lc3NhZ2U6IEBzZWxlY3RvciAodXBkYXRlKV07CgoKCgoKCgoyMDAx
LTA4LTI0IDAxOjIxICAgICAgICAgICAgICBQcGxPYnNlcnZlclN3YXJtLm1pICAgICAgICAgICAg
ICBQYWdlICAxMzQKCgoKICBbZGlzcGxheUFjdGlvbnMgY3JlYXRlQWN0aW9uVG86IGFjdGlvbkNh
Y2hlIG1lc3NhZ2U6IEBzZWxlY3RvciAoZG9Ua0V2ZW50cyldOwoKCiAgZGlzcGxheVNjaGVkdWxl
ID0gW1NjaGVkdWxlIGNyZWF0ZUJlZ2luOiBbc2VsZiBnZXRab25lXV07CiAgW2Rpc3BsYXlTY2hl
ZHVsZSBzZXRSZXBlYXRJbnRlcnZhbDogZGlzcGxheUZyZXF1ZW5jeV07CiAgZGlzcGxheVNjaGVk
dWxlID0gW2Rpc3BsYXlTY2hlZHVsZSBjcmVhdGVFbmRdOwogIFtkaXNwbGF5U2NoZWR1bGUgYXQ6
IDAgY3JlYXRlQWN0aW9uOiBkaXNwbGF5QWN0aW9uc107CgogIHJldHVybiBzZWxmOwp9CgotIGFj
dGl2YXRlSW46IHN3YXJtQ29udGV4dAp7CgogIFtzdXBlciBhY3RpdmF0ZUluOiBzd2FybUNvbnRl
eHRdOwoKCiAgW3BwbE1vZGVsU3dhcm0gYWN0aXZhdGVJbjogc2VsZl07CgogIFtkaXNwbGF5U2No
ZWR1bGUgYWN0aXZhdGVJbjogc2VsZl07CgogIHJldHVybiBbc2VsZiBnZXRTd2FybUFjdGl2aXR5
XTsKfQoKQGVuZAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-07-02 13:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-02  6:58 objc/4110: Error messages like bug 666, that was never resolved sayle
  -- strict thread matches above, loose matches on Subject: below --
2001-08-24  0:56 jones.peter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).